|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看
+ T6 ]0 w w: o8 M雖然不是控制memory,但瞭解memory行為有助於你控制memory4 k1 a8 D @: h$ E* V3 X
8 T/ C" q }6 f% E6 ^% j" I5 k4 i* d
The following segment of Verilog code defines the behavior of a Xilinx6 V g* b) Y) k7 F3 Z" O
single-port block RAM.
; T- X6 z) _. c4 Z- }/ o) ]
4 T/ ]+ @2 I9 b- c$ q2 ~module RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);2 _& `/ r9 h1 R$ Q3 P
output[3:0] data_out;
% L l$ N3 R& Ninput [7:0] ADDR;
9 w% R7 A- P% L) { einput [3:0] data_in;
4 i5 @% D: X* einput EN, CLK, WE, RST;! v% _1 [7 ]- o X) u4 q# k5 k
reg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;
0 V2 m; Q! N' K( t& {! jreg [3:0] data_out;9 X4 K5 c3 P3 V) R6 K) V
always@(posedge CLK)
$ W! |) e+ D# H2 a) Uif(EN)0 f: |- [ Y& w* A# @% @9 Q
if(RST == 1)
7 H* T- U+ O: x0 o4 Q; Kdata_out <= 0;
8 z6 M: x: c8 v1 }else' y6 W* Q, L5 w; V- b
begin! j0 I/ Y/ r' y9 A: C Y5 `
if(WE == 1)
1 k1 b# S0 F) c& V! f: Sdata_out <= data_in;
, u9 m4 D4 [; {% Belse3 |1 c$ ~' E% f/ A# r# U
data_out <= mem[ADDR];
& D& |9 u, q8 yend l9 m3 H; t( E/ \3 w
always @(posedge CLK)
* w( b8 P. R9 K/ ~$ ~if (EN && WE) mem[ADDR] = data_in;3 \0 m( Q0 {. T$ C
endmodule |
評分
-
查看全部評分
|