我在做一块数字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_