• 0回复贴,共1

Xilinx 7系列FPGA中IDDR的介绍(一)

只看楼主收藏回复

欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇主要讨论Xilinx 7系列FPGA中IDDR的介绍(一)。
大多数数字电路内部只能处理SDR(单倍的时钟速率)的信号,但是很多的接口要求都是DDR的信号,那么FPGA是如何处理的呢?

SDR:单倍数据速率(一个周期只传输一个bit/只在一个边沿采样)。
DDR:双倍数据速率(一个周期传输两个bit/上下边沿都采样)。
本篇文章只讨论,当输入接口为DDR时,FPGA内部如何处理。
上述中提到,FPGA内部也只能处理SDR的信号,无法处理DDR信号。为了解决这个问题,FPGA厂商在FPGA的接口处放置了一块能够将DDR信号转换为SDR信号的电路功能模块:IDDR。
IDDR:在7系列设备的ILOGIC block中有专属的registers来实现input double-data-rate(IDDR) registers,将输入的上下边沿 DDR 信号,转换成两位单边沿 SDR 信号。

在Xilinx 7系列的FPGA开发时,如果想要使用IDDR,可以直接例化IDDR的原语即可。
// IDDR: Input Double Data Rate Input Register with Set, Reset
// and Clock Enable.
// 7 Series
// Xilinx HDL Libraries Guide, version 14.7
IDDR #(.DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE", "SAME_EDGE"// or "SAME_EDGE_PIPELINED"
.INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1
.INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1
.SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC")
IDDR_inst (
.Q1(Q1), // 1-bit output for positive edge of clock
.Q2(Q2), // 1-bit output for negative edge of clock
.C(C), // 1-bit clock input
.CE(CE), // 1-bit clock enable input
.D(D), // 1-bit DDR data input
.R(R), // 1-bit reset
.S(S) // 1-bit set);// End of IDDR_inst instantiation
IDDR共有三种模式:
OPPOSITE_EDGE模式对应的波形如下:

上升沿采样后,立刻输出到Q1;下降沿采样后,立刻输出到Q2;
SAME_EDGE模式对应的波形如下:

上升沿采样后,立刻输出到Q1;下降沿采样后,等到下一个上升沿,输出到Q2.
SAME_EDGE_PIPELINED模式对应的波形如下:

上升沿和下降沿采样的数据都等到下一个上升沿输出。
各位小伙伴可以按照自己的需求去配置模式。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!


IP属地:辽宁1楼2024-10-21 17:58回复