[FPGA]

SPARTAN-6 MCB关于同步的问题

[复制链接]
2387|30
手机看帖
扫描二维码
随时随地手机跟帖
haitaox| | 2013-11-21 12:43 | 显示全部楼层
读写时钟不同源,那么读写的速度就会不一样,时间长了就会有多一帧或者少一帧的问题

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-21 14:23 | 显示全部楼层
haitaox 发表于 2013-11-21 12:43
读写时钟不同源,那么读写的速度就会不一样,时间长了就会有多一帧或者少一帧的问题 ...

是的,但是整帧整帧的丢是不会影响显示效果的,现在是图像有点问题,用逻辑分析仪查看了下数据,有些行的数据出错了,不知道为什么会出现这种情况

使用特权

评论回复
haitaox| | 2013-11-24 21:17 | 显示全部楼层
我估计是读写发生在同一行了
举个例子,写的时钟比读的时钟快。那么写就会追上读,当读写发生在同一帧的时候,这一帧看起来就是断裂的。

使用特权

评论回复
GoldSunMonkey| | 2013-11-24 22:11 | 显示全部楼层
DDR一般都是相同时钟,另外你控制好节奏,不应该有此问题。

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-25 11:31 | 显示全部楼层
haitaox 发表于 2013-11-24 21:17
我估计是读写发生在同一行了
举个例子,写的时钟比读的时钟快。那么写就会追上读,当读写发生在同一帧的时 ...

是会发生这种情况,我现在在添加追赶处理,当写追上读的时候,将上帧的数据丢弃,在上帧的地址空间写该帧,读追上写时,重复读上帧的数据,希望能解决问题。

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-25 11:34 | 显示全部楼层
GoldSunMonkey 发表于 2013-11-24 22:11
DDR一般都是相同时钟,另外你控制好节奏,不应该有此问题。

继续研究代码....看哪里时序有错没

使用特权

评论回复
haitaox| | 2013-11-25 12:38 | 显示全部楼层
用ddr做帧缓存处理,一定要注意帧追赶的问题,这里面细细研究起来还是有挺多内容的

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-25 15:20 | 显示全部楼层
haitaox 发表于 2013-11-25 12:38
用ddr做帧缓存处理,一定要注意帧追赶的问题,这里面细细研究起来还是有挺多内容的 ...

请问下你接触过帧同步吗?我能和你私下聊聊吗?

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-25 15:21 | 显示全部楼层
GoldSunMonkey 发表于 2013-11-24 22:11
DDR一般都是相同时钟,另外你控制好节奏,不应该有此问题。

只用MCB能做到跨时钟域间的同步吗?还需不需要再外加fifo缓存呢?

使用特权

评论回复
GoldSunMonkey| | 2013-11-25 16:16 | 显示全部楼层
zhuxinyu2008 发表于 2013-11-25 15:21
只用MCB能做到跨时钟域间的同步吗?还需不需要再外加fifo缓存呢?

你可以自己缓存啊。根据需求啊

使用特权

评论回复
ococ| | 2013-11-25 16:38 | 显示全部楼层
1.DDR2操作时钟与视频输出时钟是否处理正确?
2.帧读取是否完整。帧缓存内有几帧图像数据?

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-25 17:13 | 显示全部楼层
ococ 发表于 2013-11-25 16:38
1.DDR2操作时钟与视频输出时钟是否处理正确?
2.帧读取是否完整。帧缓存内有几帧图像数据? ...

1. 系统中用到了两个时钟clk0和clk1,clk0是提取自输入的原始视频的时钟,clk1是最终视频输出的时钟。MCB每个端口都有数据fifo,写端口的fifo,写入时钟为clk0;读端口的fifo,读出时钟为clk1。fifo和ddr2之间的时钟为4clk1。额。。。。不知道我讲清楚了吗?有问题吗?
2.一开始只存一帧,不考虑追赶问题,现在考虑追赶,存了3帧

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-25 17:14 | 显示全部楼层
GoldSunMonkey 发表于 2013-11-25 16:16
你可以自己缓存啊。根据需求啊

现在想加缓存,但不知道是不是必需要加

使用特权

评论回复
ococ| | 2013-11-26 08:38 | 显示全部楼层
zhuxinyu2008 发表于 2013-11-25 17:13
1. 系统中用到了两个时钟clk0和clk1,clk0是提取自输入的原始视频的时钟,clk1是最终视频输出的时钟。MCB ...

很清楚了。
1.你监控一下MCB fifo的空满信号,看是不是有数据的溢出或读空。一般我使用DDR2做缓存都会在MCB之外在加一个缓存,保存一行图像数据,图像输出时钟也就是你的clk1来读取外部缓存,并在适当的时候从MCB中读取数据到外部缓存。
2.3帧图像做缓冲是足够的。关键是你判断的方式。可以在开始读取新一帧数据时判断当前正在写哪一个缓存帧,把缓存帧定义为帧1,帧2,帧3,循环写入。开始读取新一帧时候如果当前正在写入帧2,则读取帧1,如果正在写入帧1则读取帧3。处理好的话肉眼感觉不到丢帧或重复读取一帧。

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-26 10:39 | 显示全部楼层
ococ 发表于 2013-11-26 08:38
很清楚了。
1.你监控一下MCB fifo的空满信号,看是不是有数据的溢出或读空。一般我使用DDR2做缓存都会在M ...

1.我监控了空满信号的,没有问题,现在我没有在MCB外另加缓存,所以在考虑是不是必须要加才能解决同步的问题
2.我存3帧的处理方式就如你所说的

使用特权

评论回复
zhuxinyu2008|  楼主 | 2013-11-26 10:59 | 显示全部楼层
ococ 发表于 2013-11-26 08:38
很清楚了。
1.你监控一下MCB fifo的空满信号,看是不是有数据的溢出或读空。一般我使用DDR2做缓存都会在M ...

方便加我QQ聊吗?1913310367:)

使用特权

评论回复
ococ| | 2013-11-26 11:07 | 显示全部楼层
zhuxinyu2008 发表于 2013-11-26 10:59
方便加我QQ聊吗?1913310367

公司上不了Q~~

使用特权

评论回复
白马王子1| | 2013-11-26 11:18 | 显示全部楼层
重装下

使用特权

评论回复
ococ| | 2013-11-26 11:24 | 显示全部楼层
zhuxinyu2008 发表于 2013-11-26 10:39
1.我监控了空满信号的,没有问题,现在我没有在MCB外另加缓存,所以在考虑是不是必须要加才能解决同步的 ...

cmd_clk用的哪个时钟呢?

使用特权

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

本版积分规则

15

主题

82

帖子

0

粉丝