|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看
# k7 e3 X3 d: R/ j: K8 `( M雖然不是控制memory,但瞭解memory行為有助於你控制memory* G! R2 }8 z7 B* _% H% q9 G
3 [% _0 D( U' s }9 W9 e: Q9 @6 [
The following segment of Verilog code defines the behavior of a Xilinx$ Y$ @0 I; ]: L0 m4 t( v
single-port block RAM./ C) G1 X* u8 R
/ _9 W! g8 R U+ g1 cmodule RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);
$ }& t" w( h# F. Soutput[3:0] data_out;* L3 |; X o5 U0 V
input [7:0] ADDR;% N" U/ w% W- j& i3 h1 _4 m+ k
input [3:0] data_in;3 |4 X, Q h% ~( o
input EN, CLK, WE, RST;; R" N+ z2 f; l0 u! M8 U
reg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;' j$ \8 P& I& Q* N! o, Q% @) v! f
reg [3:0] data_out;* h5 c. f) B0 Q) t3 ]5 I) X; {8 v
always@(posedge CLK)
' T4 P. y& ~/ Y5 cif(EN)* _$ K& q7 H$ s+ O* L1 ?+ X
if(RST == 1)2 n+ z$ Z8 q* R
data_out <= 0;. A+ d8 Q0 C* ?
else, J2 ]$ j& |: b% N; H z0 |' A
begin; v/ Q9 G1 A1 i* c
if(WE == 1)
# d. j! ?% y. C- ~% O! Hdata_out <= data_in;
. D3 z5 M3 n4 y7 _else9 G6 q, b# j _
data_out <= mem[ADDR];1 |0 _' u: N' x5 ?
end
- m+ R' a* ^9 b0 D' {always @(posedge CLK)
5 y4 I5 D) N! g8 j$ O3 a v! Zif (EN && WE) mem[ADDR] = data_in;
3 i$ `2 s+ `; ^3 W% y, ~6 hendmodule |
評分
-
查看全部評分
|