|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看
f$ W- t6 n6 b' g雖然不是控制memory,但瞭解memory行為有助於你控制memory3 V( g, X* V! I% G
) ], L* C" ~6 Q3 M- q: yThe following segment of Verilog code defines the behavior of a Xilinx" @$ O( O, u$ v6 i
single-port block RAM.
D; {1 }( o$ W- t' W# l
1 V, g: ~* W2 h0 N: u1 k xmodule RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);7 K) Q* n% X9 h' q- y" z
output[3:0] data_out;7 \1 F+ n( s( }+ L
input [7:0] ADDR;
1 L! }3 m& G0 A" v7 f* J; r; {input [3:0] data_in;
8 H9 Z: z7 L r& n+ r- L! b% yinput EN, CLK, WE, RST;
0 q0 W4 B' D" _reg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;
$ H% j& {5 m# preg [3:0] data_out;) o2 d. z. i6 ?% w5 z
always@(posedge CLK)
7 [& b; e/ d5 `! Vif(EN); A9 ^8 {9 B$ k; X+ E0 A$ D4 H+ z, e
if(RST == 1)0 y I% [4 \0 ~' m+ D3 M+ e
data_out <= 0;' @( I3 p4 B' H4 q
else; t/ n! r% O, F( }
begin4 |! x, `: _& `
if(WE == 1)
, S$ U3 Q- {1 W! Y; I, Ydata_out <= data_in;
) K( I& ^* A6 Nelse+ a1 H+ o9 G2 l7 }" y
data_out <= mem[ADDR];
( A6 x W( ?* L# n6 H# lend& l1 _5 C- q4 ?6 D. V, b
always @(posedge CLK)9 q: f$ g/ L8 z# ~0 m, m$ L# [
if (EN && WE) mem[ADDR] = data_in;8 [$ m+ M0 M3 S4 q8 d ]
endmodule |
評分
-
查看全部評分
|