Xilinx 7系列FPGA中ODDR的介绍(一)
欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇主要讨论Xilinx 7系列FPGA中ODDR的介绍(一)。
大多数数字电路内部只能处理SDR(单倍的时钟速率)的信号,但是很多的接口要求都是DDR的信号,那么FPGA是如何处理的呢?
SDR:单倍数据速率(一个周期只传输一个bit/只在一个边沿采样)。
DDR:双倍数据速率(一个周期传输两个bit/上下边沿都采样)。
本篇文章只讨论,当输出接口为DDR时,FPGA内部如何处理。
上述中提到,FPGA内部也只能处理SDR的信号,无法输出DDR信号。为了解决这个问题,FPGA厂商在FPGA的接口处放置了一块能够将SDR信号转换为DDR信号的电路功能模块:ODDR。
ODDR:在7系列设备的OLOGIC block中有专属的registers来实现output double-data-rate(ODDR) registers,将输入的两位单边沿 SDR 信号,转换成一位双边沿 DDR 信号。
在Xilinx 7系列的FPGA开发时,如果想要使用ODDR,可以直接例化ODDR的原语即可。
// ODDR: Output Double Data Rate Output Register with Set, Reset // and Clock Enable. // 7 Series // Xilinx HDL Libraries Guide, version 14.7 ODDR #( .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE" .INIT(1'b0), // Initial value of Q: 1'b0 or 1'b1 .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC" ) ODDR_inst ( .Q(Q), // 1-bit DDR output .C(C), // 1-bit clock input .CE(CE), // 1-bit clock enable input .D1(D1), // 1-bit data input (positive edge) .D2(D2), // 1-bit data input (negative edge) .R(R), // 1-bit reset .S(S) // 1-bit set ); // End of ODDR_inst instantiation
ODDR共有两种模式:
OPPOSITE_EDGE模式对应的波形如下:
上升沿采样D1后,立刻输出到Q;下降沿采样D2后,立刻输出到Q;
SAME_EDGE模式对应的波形如下:
上升沿采样D1和D2后,立刻将D1输出到Q;下降沿后,将D2输出到Q。
上述两种模式只是在采样SDR信号的位置不同。一般来说,我们给予的SDR信号是与C同步的,所以一般建议选择SAME_EDGE模式即可。
各位小伙伴可以按照自己的需求去配置模式和连接对应的接口信息。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!