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模式即可。


各位小伙伴可以按照自己的需求去配置模式和连接对应的接口信息。
  本篇内容中有部分资源来源于网络,如有侵权,请联系作者。

 

   如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!

posted on 2024-10-30 08:24  郝旭帅电子设计团队  阅读(22)  评论(0编辑  收藏  举报

导航