在ISE11版本中,基于SRL16的分布式RAM不再支持V5、S6和V6等器件,但是SRL16是所有XIlinx器件都支持的,并且在设计中应用非常频繁,因此可通过调用原语的方法来调用SRL16E甚至SRL32E来实现原来ISE分布式RAM IP核的设计。下面给出一段示例代码。
module s2p_8channels_srl16(
a, d, clk, we, qspo
);
input [3:0] a;
input [4:0] d;
input clk;
input we;
output [4:0] qspo;
SRL16E #(
.INIT(16'h0000) // Initial Value of Shift Register
) SRL16_inst_1 (
.Q(qspo[0]), // SRL data output
.A0(a[0]), // Select[0] input
.A1(a[1]), // Select[1] input
.A2(a[2]), // Select[2] input
.A3(a[3]), // Select[3] input
.CE(we),
.CLK(clk), // Clock input
.D(d[0]) // SRL data input
);
SRL16E #(
.INIT(16'h0000) // Initial Value of Shift Register
) SRL16_inst_2 (
.Q(qspo[1]), // SRL data output
.A0(a[0]), // Select[0] input
.A1(a[1]), // Select[1] input
.A2(a[2]), // Select[2] input
.A3(a[3]), // Select[3] input
.CE(we),
.CLK(clk), // Clock input
.D(d[1]) // SRL data input
); |