首页 > 编程知识 正文

xilinxfpga开发实例,xilinx kintex7

时间:2023-05-04 23:52:57 阅读:53948 作者:224

记录背景:最近,为了实现GMIItoRGMII的功能,需要调用ODDR原语。

ODDR:dedicateddualdatarate(DDR )输出寄存器

如果通过ODDR将双向的单端数据汇总为一条路输出,在上边缘同时输出数据,在上边缘输出a电路的下边缘输出输出b电路的双向输入信号始终为1、始终为0,则输出的信号实际上是输入的时钟信号。

的Verilog语句如下:

1//oddr 3360 outputdoubledatarateoutputregisterwithset, reset2//andclockenable.3//7series4//xilinxhdlllanguagetemment version 2017.456 oddr # (7. DDR _ clk _ edge ) ) opopopor ) opposite_edge ) or ' same _ edge '8. ining//initialvalueofq :1 ' b0or1' B19.Sr type (' sync ' )/set/ret 1-bit DDR output12 .C(C (,/1-bitclockinput13.ce ),//1-bitclockenableinput14.D1 ),/1- bb but///1-bitdad 920//endofoddr _ inst instantiation

模式说明:

OPPOSITE_EDGE模式:

在此模式下,使用时钟沿以两倍的吞吐量从FPGA逻辑捕获数据。 该结构与virtex-6的实现相比相似。 这两个输出都提供给IOB的数据输入或三态控制输入。

SAME_EDGE模式:

在此模式下,数据在同一时钟沿从传递到IOB。 在同一时钟沿将数据发送到IOB可以避免时间冲突,用户可以使用最小的寄存器执行更高的DDR频率来延迟寄存器,而不是使用CLB寄存器。

注意:

1、set和reset不能同时设置;

2、重置ODDR原语需要约12个时钟,第一次输入的数据可能有问题(母测量),[由于公司网络,无法上传图像],但母测量是的。

修改代码之前:

wire oddr_do_test; ODDR_testoddr_test(.clk(tx_clk )、 rst )、 ce )至rst )、 di _ p (tx _ en ).di _ n (tx _ een ) )

添加以下代码:

wire oddr_do_test; reg [5:0]tx_en_d; reg [5:0]tx_er_d; always@(posedgetx_clk ) begin tx_en_d={tx_en_d[4:0],tx_en}; tx_er_d={tx_er_d[4:0],tx_er}; endoDDR_testoddr_test(.clk )、 rst )、 ce(rst )、 di _ p (tx _ en _ d )5)、 di

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。