ODDR的使用错误

在设计32路200Mbps单端数字I/O输出时,遇到ODDR使用问题,错误提示为ODDR的输出未能加入OLOGIC组件。原因是ODDR输出不能通过逻辑内部。解决方法是通过IOBUF分离双向dio数据,当T为高时输入,为低时输出,成功解决MAP过程中的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在做一块数字IO卡,IO卡的功能包括32路单端数字I/O输出。

32路单端I/O的数据速率为200Mbps,利用100MHz时钟,使用ODDR实现此功能。ODDR能实现双倍时钟的数据速率。在时钟上升沿输出一个数据,在时钟下降沿输出另一个数据。ODDR的工作模式有2种:同沿和不同沿。同沿方式通过延迟一个时钟,能节省时钟和CLB资源,提高性能。

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/Resettype: "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

   );

我的使用方法为:

wire[63:0] do32;

wire[31:0]    do_o;

wiredo_clk_sel;

wire[31:0]    do_en;

genvar  dq_o;

generate

             for(dq_o= 0; dq_o < 32; dq_o = dq_o+1) begin: gen_do

                                     ODDR #(

                                                                .DDR_CLK_EDGE("SAME_EDGE"),

                                 &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值