LatticeECP/EC and LatticeXP
Lattice Semiconductor
DDR Usage Guide
10-22
IDDRXB
UL1
(.D(ddrin[1]),
.ECLK(dqsbuf),
.SCLK(clk),
.CE(vcc_net),
.DDRCLK-
POL(ddrclkpol_sig),
.LSR(reset), .QA(datain_p[1]), .QB(datain_n[1]));
IDDRXB
UL2
(.D(ddrin[2]),
.ECLK(dqsbuf),
.SCLK(clk),
.CE(vcc_net),
.DDRCLK-
POL(ddrclkpol_sig),
.LSR(reset), .QA(datain_p[2]), .QB(datain_n[2]));
IDDRXB
UL3
(.D(ddrin[3]),
.ECLK(dqsbuf),
.SCLK(clk),
.CE(vcc_net),
.DDRCLK-
POL(ddrclkpol_sig),
.LSR(reset), .QA(datain_p[3]), .QB(datain_n[3]));
IDDRXB
UL4
(.D(ddrin[4]),
.ECLK(dqsbuf),
.SCLK(clk),
.CE(vcc_net),
.DDRCLK-
POL(ddrclkpol_sig),
.LSR(reset), .QA(datain_p[4]), .QB(datain_n[4]));
IDDRXB
UL5
(.D(ddrin[5]),
.ECLK(dqsbuf),
.SCLK(clk),
.CE(vcc_net),
.DDRCLK-
POL(ddrclkpol_sig),
.LSR(reset), .QA(datain_p[5]), .QB(datain_n[5]));
IDDRXB
UL6
(.D(ddrin[6]),
.ECLK(dqsbuf),
.SCLK(clk),
.CE(vcc_net),
.DDRCLK-
POL(ddrclkpol_sig),
.LSR(reset), .QA(datain_p[6]), .QB(datain_n[6]));
IDDRXB
UL7
(.D(ddrin[7]),
.ECLK(dqsbuf),
.SCLK(clk),
.CE(vcc_net),
.DDRCLK-
POL(ddrclkpol_sig),
.LSR(reset), .QA(datain_p[7]), .QB(datain_n[7]));
//----------------------------------------------------------------------------------------
//----TRISTATE Instantiations-------------------------------------------------------------
// DDR Trisate for data, DQ
ODDRXB T0 (.DA(datatri_p[0]), .DB(datatri_n[0]), .LSR(reset), .CLK(~clk), .Q(tridata[0]));
ODDRXB T1 (.DA(datatri_p[1]), .DB(datatri_n[1]), .LSR(reset), .CLK(~clk), .Q(tridata[1]));
ODDRXB T2 (.DA(datatri_p[2]), .DB(datatri_n[2]), .LSR(reset), .CLK(~clk), .Q(tridata[2]));
ODDRXB T3 (.DA(datatri_p[3]), .DB(datatri_n[3]), .LSR(reset), .CLK(~clk), .Q(tridata[3]));
ODDRXB T4 (.DA(datatri_p[4]), .DB(datatri_n[4]), .LSR(reset), .CLK(~clk), .Q(tridata[4]));
ODDRXB T5 (.DA(datatri_p[5]), .DB(datatri_n[5]), .LSR(reset), .CLK(~clk), .Q(tridata[5]));
ODDRXB T6 (.DA(datatri_p[6]), .DB(datatri_n[6]), .LSR(reset), .CLK(~clk), .Q(tridata[6]));
ODDRXB T7 (.DA(datatri_p[7]), .DB(datatri_n[7]), .LSR(reset), .CLK(~clk), .Q(tridata[7]));
// DDR Trisate for strobe, DQS
ODDRXB T8 (.DA(dqstri_p), .DB(dqstri_n), .LSR(reset), .CLK(clk90), .Q(tridqs));
//-----------------------------------------------------------------------------------------
-
//-----------DQ
output---------------------------------------------------------------------
-
ODDRXB O0 (.DA(dataout_p[0]), .DB(dataout_n[0]), .LSR(reset), .CLK(~clk), .Q(ddrout[0]));
ODDRXB O1 (.DA(dataout_p[1]), .DB(dataout_n[1]), .LSR(reset), .CLK(~clk), .Q(ddrout[1]));
ODDRXB O2 (.DA(dataout_p[2]), .DB(dataout_n[2]), .LSR(reset), .CLK(~clk), .Q(ddrout[2]));
ODDRXB O3 (.DA(dataout_p[3]), .DB(dataout_n[3]), .LSR(reset), .CLK(~clk), .Q(ddrout[3]));
ODDRXB O4 (.DA(dataout_p[4]), .DB(dataout_n[4]), .LSR(reset), .CLK(~clk), .Q(ddrout[4]));
ODDRXB O5 (.DA(dataout_p[5]), .DB(dataout_n[5]), .LSR(reset), .CLK(~clk), .Q(ddrout[5]));
ODDRXB O6 (.DA(dataout_p[6]), .DB(dataout_n[6]), .LSR(reset), .CLK(~clk), .Q(ddrout[6]));
ODDRXB O7 (.DA(dataout_p[7]), .DB(dataout_n[7]), .LSR(reset), .CLK(~clk), .Q(ddrout[7]));