// ddr2_dq¤ÎIOB¤ò¥×¥ê¥ß¥Æ¥£¥Ö¤Ç¥¤¥ó¥¹¥¿¥ó¥·¥¨¡¼¥·¥ç¥ó
generate
genvar i;
for (i=DDR2_DATA_WIDTH-1; i>=0; i=i-1) begin: WRDATA_INOUT
ODDR #( // data output DDR
.DDR_CLK_EDGE("OPPOSITE_EDGE"), // SAME_EDGE¥â¡¼¥É¤Ë¤¹¤ë¤ÈMAP¤Ç¥¨¥é¡¼¡£ISE9.2iSP4
.INIT(1'b0),
.SRTYPE("ASYNC")
) WRDATA_DDR2_OUT (
.Q(ddr2_out[i]),
.C(clk),
.CE(dqs_enable_3d[i/8]),
.D1(wrdata_3d[i]),
.D2(wrdata_4d_half[i]),
.R(reset),
.S(1'b0)
);
ODDR #( // data tristate enable
.DDR_CLK_EDGE("OPPOSITE_EDGE"),
.INIT(1'b1),
.SRTYPE("ASYNC")
) WRDATA_DDR2_TRI (
.Q(out_tri[i]),
.C(clk),
.CE(1'b1),
.D1(dq_tri_d0[i/8]), // DQS¤¬0¤Ë¤Ê¤ëºÇ½é¤Î¥¯¥í¥Ã¥¯¤Ç1¤Ê¤Î¤Ç¡¢°ìÈֺǽé¤ÎȾ¥¯¥í¥Ã¥¯¤À¤±¥Ç¥£¥¹¥¨¡¼¥Ö¥ë
.D2(dq_tri_d1[i/8]),
.R(reset),
.S(1'b0)
);
IDELAY #(
.IOBDELAY_TYPE("FIXED"),
.IOBDELAY_VALUE(0)
) RDDATA_DDR2_IDELAY (
.O(ddr2_dq_idelay[i]),
.I(ddr2_dq_in[i]),
.C(1'b0),
.CE(1'b0),
.INC(1'b0),
.RST(1'b0)
);
IDDR #( // input DDR
.DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), // °ÌÁꤢ¤ï¤»¤Þ¤ÇIOB¤ÎDFF¤Ç¹Ô¤¦
.INIT_Q1(1'b0),
.INIT_Q2(1'b0),
.SRTYPE("ASYNC")
) RDDATA_DDR2_IN (
.Q1(dq_fall_1d[i]),
.Q2(dq_rise_1d[i]),
.C(clkx),
.CE(1'b1),
.D(ddr2_dq_idelay[i]),
.R(reset),
.S(1'b0)
);
IOBUF DDD2_DQ_BUF (
.O(ddr2_dq_in[i]),
.IO(ddr2_dq[i]),
.I(ddr2_out[i]),
.T(out_tri[i])
);
end
endgenerate
IDELAYCTRL WRDATA_IDELAYCTRL (
.RDY(),
.REFCLK(clk),
.RST(reset)
);





.
|
FPGA¤ÎÉô²°¤Ø¤è¤¦¤³¤½¡ª ²¿¤«¥Ö¥í¥°¤Ëµ»ö¤Ë´Ø¤¹¤ë¼ÁÌ䤬¤¢¤ê¤Þ¤·¤¿¤é¡¢abcd_marsee101@mail.goo.ne.jp ¤«¤é adcd_ ¤ò½ü¤¤¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ë¡¢¤´Ï¢Íí¤¯¤À¤µ¤¤¡£ FPGA¤ÎÉô²°¤ÎÍÍѤȻפï¤ì¤ë¥³¥ó¥Æ¥ó¥Ä¤Î¤Þ¤È¤á¥µ¥¤¥È¤òºî¤ê¤Þ¤·¤¿¡£¤´ÍøÍѤ¯¤À¤µ¤¤¡£ http://marsee101.web.fc2.com/index.html |