打印
[CPLD]

用xilinx sparan3遇到的视频图像缓存问题

[复制链接]
4507|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yongliw|  楼主 | 2011-1-4 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正在给一个视频显示程序添加缓存模块控制,对应的硬件是CCD采集的信号经SAA7113模数转换后再利用SAA7121数模转换,然后在LCD屏上

显示。现在问题是SAA7113给出的信号是符合ITU656标准的PAL信号,同时SAA7121要求的输入信号也是ITU656标准的PAL信号,但该标准信

号每行的有效像素个数是1440,每个像素是8位,如果用双口RAM来缓存两行数据就需要最少22.5Kbit,但spartan以及virtex系列的fpga

中的双口RAM只有18Kbit,因此似乎没法用双口RAM来缓存图像数据,是这样吗?如果我用裁剪图像的方法来减小图像对缓存的要求,那裁

剪后的图像如何恢复为SAA7121要求的符合ITU656标准的PAL信号?哪位知道我应该怎么来解决这个问题,还望不吝赐教,先谢过了

相关帖子

沙发
mr.king| | 2011-1-4 12:13 | 只看该作者
本帖最后由 mr.king 于 2011-1-4 12:20 编辑

IP自动用两个BLOCKRAM构成

使用特权

评论回复
板凳
amini| | 2011-1-4 17:58 | 只看该作者
我是菜鸟,就是来学习的。顶。

使用特权

评论回复
地板
明天我还来| | 2011-1-4 19:25 | 只看该作者
:D

使用特权

评论回复
5
sleepybear| | 2011-1-4 21:57 | 只看该作者
PAL制一行像素数为720,亚采样格式为4:2:2,数据按照Cb-Y-Cr-Y-Cb-Y-Cr-Y-……的顺序排列,相当于一行有720*2=1440个数据。656标准内是10bit的数据位宽。你用的是8bit的,一个Y和一个C(Cb和Cr交替)拼成一个16bit,一行只有720个16bit数据,一行只占16*720的存储单元,一个18K的Block RAM是18*1024,足够缓存一行了。

使用特权

评论回复
6
xwj| | 2011-1-4 22:36 | 只看该作者
1、ITU656的数据速率并不高,应该采用外扩SRAM、SDRAM来缓存,而不需要双口RAM;
2、PAL制式是隔行信号,要想性能好达到标准的720*576的分辨率的话,必须用帧缓存 缓存一帧信号。当然,你要只用720*288的奇数场或偶数场也行。


To LS:

spartan以及virtex系列的fpga中的双口RAM只有18Kbit,注意是位,而不是18k字节

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
SuperX-man + 2
7
sleepybear| | 2011-1-4 22:49 | 只看该作者
本帖最后由 sleepybear 于 2011-1-4 22:58 编辑

没错啊。18Kbit:深度1K是1024,位宽为18bit,也就是18*1024。楼主显然说的是缓存一行的数据量,只需16bit/pixel*720pixels/line,18Kbit足够了。涉及到场/帧缓存,则需要外扩RAM的。
也有36Kbit的,别的不知道,V5里有,可以拆成两个18Kbit来用。

使用特权

评论回复
8
diny| | 2011-1-5 16:39 | 只看该作者
路过的。

使用特权

评论回复
9
bairan168| | 2011-1-6 09:44 | 只看该作者
看贴回贴是美德。

使用特权

评论回复
10
yongliw|  楼主 | 2011-1-8 14:54 | 只看该作者
5# sleepybear 谢谢,谢谢。不过看你说的一个Y就是8bit,难道不是一个像素8bit吗?还有我在SDRAM里缓存采集到的8bit图像不拼接成16bit,直接缓存到SDRAM里能行吗?

使用特权

评论回复
11
yongliw|  楼主 | 2011-1-8 14:59 | 只看该作者
6# xwj 感谢回帖。按照你说的意思,是不是在SDRAM里必须要缓存一帧图像也就是576行,才可以使得缓存后的图像在再次输出时满足ITU656标准的PAL制式信号?如果考虑到SDRAM的大小我只是乒乓操作缓存4行图像,能行吗?

使用特权

评论回复
12
sleepybear| | 2011-1-9 12:59 | 只看该作者
本帖最后由 sleepybear 于 2011-1-9 17:11 编辑

656标准是个式结构。不知道你缓存的目的是什么。如果仅仅是“路过”,只要时钟、同步各方面有保证,直接把输入流接到输出流都可以(相关同步信号也是)。整帧的缓存往往是为了同步输入与输出之间的偏差(两个之间的时钟不同源),或者除了输入、输出之外,还有第三方用途。出于某些目的,可能是缓存若干帧,做成一个帧队列。
只是不明白你缓存图像的目的是什么。
一个像素除了Y还有C啊。4:2:2的亚采样格式,相当于2个Y配1个Cb和1个Cr,等同于1个像素有1个Y和1个C数据。数据都是10bit的,只是可以截取为8bit(兼容早期8bit的设备),在数据内容上有一些规定。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
SuperX-man + 2
13
yongliw|  楼主 | 2011-1-10 14:57 | 只看该作者
12# sleepybear 好,谢谢了,我再研究研究

使用特权

评论回复
14
linas| | 2011-1-20 15:35 | 只看该作者
学习学习。

使用特权

评论回复
15
foreverly| | 2011-1-26 19:52 | 只看该作者
围观了。

使用特权

评论回复
16
小云001| | 2011-3-24 22:45 | 只看该作者
路过学习

使用特权

评论回复
17
coreduo| | 2011-3-25 11:49 | 只看该作者
90%以上的做法,fpga外接一片sdram。
双口ram没人用的。

使用特权

评论回复
18
爱在2012| | 2011-3-30 10:45 | 只看该作者
:$

使用特权

评论回复
19
七叶一枝花| | 2011-4-17 21:09 | 只看该作者
学习的路过。。。

使用特权

评论回复
20
wahahaabc| | 2011-4-18 15:55 | 只看该作者
656标准是个流式结构。不知道你缓存的目的是什么。如果仅仅是“路过”,只要时钟、同步各方面有保证,直接把输入流接到输出流都可以(相关同步信号也是)。整帧的缓存往往是为了同步输入与输出之间的偏差(两个之间 ...
sleepybear 发表于 2011-1-9 12:59

good

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

17

帖子

1

粉丝