大家有没有用过OSERDES,Xilinx官方的代码为什么在时钟信号输出后面加上ODDR?
是啊,好像是作为SDR来接收的吧?我最近也在看这个,大家可以讨论讨论,我的QQ405965767
我以前这么做时的考虑时,因为数据线也要经过ODDR的,时钟也这么做,可以让时钟和数据经过同样的结构单元出去,这样它们的时延信息等都是一致的,如果有很大的环境温度变化的影响,它们输出的时间差也能保持恒定,有利于设计稳定。
//------------------------------------------------------------------------
// GMII Transmitter Clock Management
//------------------------------------------------------------------------
// Instantiate a DDR output register. This is a good way to drive
// GMII_TX_CLK since the clock-to-PAD delay will be the same as that for
// data driven from IOB Ouput flip-flops eg GMII_TXD[7:0].
ODDR gmii_tx_clk_oddr (
.Q(GMII_TX_CLK),
.C(TX_CLK),
.CE(1'b1),
.D1(1'b0),
.D2(1'b1),
.R(RESET),
.S(1'b0)
);
这位仁兄说的非常正确,上边是我从xilinx一个ip里边找到的。
哦,谢谢大家!
都是高手啊~时钟问题是首要的
都是高手啊~时钟问题是首要的
由这个我想引申的问一下,如果一个设计里面使用了ODDR以后,那么修改设计进行不同次综合实现,由ODDR输出的信号到PAD的时延会改变吗?
同样的问题对IDDR。
henhao,meiqianle
学习一下!
我是这么理解的:
对于时钟使用IDDR或者是ODDR,我认为是数据应用到了DDR模块而言。
在输出DDR数据的时候,同时把时钟作为一个副本传出,这样可以获得跟数据同样的延时。
ODDR到pad之间是一个独立的延时,由专门的delay模块控制的,可以通过ucf或者代码中设置。
学习了
我的理解是如果你用ODDR,就是想保证从FF的输出到IO这段延时基本固定起来,基本不受环境的影响,尤其是DDR接口的,用ODDR可以使得随路时钟和数据在输出时是同步的;而对于输出时钟而言,如果芯片资源多的话,可以考虑输入时钟上ibuffg,占用芯片的全局布线资源,这样使得时钟可以在芯片内部到各个FF的延时基本一致,对于时序方便有很大的便利!
