Lydon 发表于 2014-5-25 23:11:06

异步FIFO写入数据问题 DVI控制时序

现在遇到一个问题:DVI视频信号中的DE信号和像素数据是与像素时钟同步的,DE的上升沿和第一个像素数据的边沿是对齐的(见图)。如果不用行场同步信号去计数获得有效像素数据的起始边沿,而是利用DE信号,用异步FIFO作为解码接收缓存,由于FIFO的写请求与数据写入有一个时钟周期的延时,将DE作为写请求信号,必然会导致起码第一个数据的丢失问题。这个问题如何解决,怎么做第一个数据才不会丢失呢?

zkf0100007 发表于 2014-5-26 09:26:32

DE是你自己产生的么,如果是,你可以生成一个比DE快一个周期的信号不就行了么

Lydon 发表于 2014-5-26 10:27:52

zkf0100007 发表于 2014-5-26 09:26
DE是你自己产生的么,如果是,你可以生成一个比DE快一个周期的信号不就行了么 ...

DE信号不是自己产生的,是DVI解码芯片。

Fourier00 发表于 2014-5-26 14:02:53

.数据也延迟一拍

zkf0100007 发表于 2014-5-26 14:48:41

楼上正解,不提前DE就延迟数据,效果是一样的

蓝色风暴@FPGA 发表于 2014-5-26 15:29:00

“由于FIFO的写请求与数据写入有一个时钟周期的延时”
这话什么意思?

Lydon 发表于 2014-5-26 18:24:26

蓝色风暴@FPGA 发表于 2014-5-26 15:29
“由于FIFO的写请求与数据写入有一个时钟周期的延时”
这话什么意思?

异步FIFO的写时钟上升沿如果恰好与写请求上升沿对齐,这个时候准备好的数据在下一个时钟周期才能写入FIFO。而我现在想用DE做写请求信号,这个时候的DE和数据是在同一个时钟沿出现,那么第一个数据会丢失

蓝色风暴@FPGA 发表于 2014-5-27 09:51:09

Lydon 发表于 2014-5-26 18:24
异步FIFO的写时钟上升沿如果恰好与写请求上升沿对齐,这个时候准备好的数据在下一个时钟周期才能写入FIFO ...

还是没明白,既然DE与数据是对齐的,那么有多少个DE,就能写多少个数据进FIFO

Lydon 发表于 2014-5-27 10:20:41

蓝色风暴@FPGA 发表于 2014-5-27 09:51
还是没明白,既然DE与数据是对齐的,那么有多少个DE,就能写多少个数据进FIFO ...

写入时钟wrclk的每个上升沿会判断写入请求信号wrreq是否有效,若是有效则FIFO会相应的锁存当前的写入数据data。从基本时序上分析,wrclk的上升沿需要对准wrreq和data的中央,这是外部传输过来的源信号必须满足的基本关系。而当前写入时钟wrclk的上升沿对准的是写入请求信号wrreq(也就是DE)的上升沿,那么只有在下一个时钟上升沿才能把数据写入,此时已经是第二个像素数据了

Lydon 发表于 2014-5-27 10:26:09

Fourier00 发表于 2014-5-26 14:02
.数据也延迟一拍

数据延迟怎么做好呢?

蓝色风暴@FPGA 发表于 2014-5-27 10:31:18

Lydon 发表于 2014-5-27 10:20
写入时钟wrclk的每个上升沿会判断写入请求信号wrreq是否有效,若是有效则FIFO会相应的锁存当前的写入数据 ...

“而当前写入时钟wrclk的上升沿对准的是写入请求信号wrreq(也就是DE)的上升沿”
这只能说明你的输入源有问题,或者你可以用下降沿

zkf0100007 发表于 2014-5-27 16:50:01

Lydon 发表于 2014-5-27 10:26 数据延迟怎么做好呢?

用寄存器就可以
页: [1]
查看完整版本: 异步FIFO写入数据问题 DVI控制时序