一水寒

【再说FPGA】Verilog生成语句以及Xilinx原语的使用示例

0
阅读(6310)
 

最近做QDR II SRAM控制器,要用到xilinx的原语IDDR,我的数据输入输出是18位的,又用到Generate将一位输入输出IDDR扩成18,以前没用过generate,也不太熟悉,现在已熟悉其应用场合及其用法,不多解释,看如下代码实例,一目便了然:  

module SRAM_IDDR_RD_DATA_18(Q1,Q2,C,CE,D );
output [17:0] Q1,Q2;
input C;
input CE;
input [17:0] D; 

parameter NUM = 18; 

wire R;
wire S;
assign R = 1'b0;
assign S = 1'b0; 

genvar i;
generate
  for(i = 0; i < NUM; i = i + 1)
  begin: IDDR_18
 IDDR #(
 .DDR_CLK_EDGE("SAME_EDGE_PIPELINED"),
 .INIT_Q1(1'b0), 
 .INIT_Q2(1'b0), 
 .SRTYPE("SYNC") ) 
IDDR_inst ( .Q1(Q1[i]), 
       .Q2(Q2[i]), 
       .C(C), 
       .CE(CE), 
       .D(D[i]), 
       .R(R), 
       .S(S));
   end
endgenerate 

endmodule