|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看
% Z5 |" }( z8 Q/ @& z! s雖然不是控制memory,但瞭解memory行為有助於你控制memory
0 B" m' W! @. _, \
! ?3 Z/ i* r6 WThe following segment of Verilog code defines the behavior of a Xilinx+ S) \8 i# I) q4 k5 U1 V) k
single-port block RAM.
, d0 u, r. i' l3 `7 ^. |! V* D% O0 w2 \5 J
module RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);4 ^% A/ b% w/ ]/ ]3 o2 _
output[3:0] data_out;/ X9 f4 x& H ]8 S- R5 [: q* P, q
input [7:0] ADDR;4 T% n( N4 P7 x3 w* |! C7 I2 V6 B
input [3:0] data_in;: F' u T# K" f/ P7 m; I
input EN, CLK, WE, RST;
* D2 ^. }7 w& L; R& v9 s* x: Jreg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;
; S5 U0 ~$ d) J9 ^5 V! o, Q y9 D, dreg [3:0] data_out;7 k% F9 y7 ^6 P9 J
always@(posedge CLK)
: k y& b. S2 O9 h5 `* i0 P" Eif(EN)9 |& K. C! W) r/ Q3 z4 {8 C
if(RST == 1)
4 F9 O+ X. }: X( Tdata_out <= 0;
" t- K4 {4 A; C) \8 E' U& ]" Lelse
c1 q/ X/ T( wbegin
; k. u3 Q/ c, I$ O+ X4 w. Eif(WE == 1), J9 Y/ N" `9 @5 g! Z& y1 C
data_out <= data_in;
9 I6 ], ]* g+ ?! K3 a! f% Relse
* J: o: o7 i/ Y3 ddata_out <= mem[ADDR];5 E: U! {8 O7 J& L7 j0 a- n& `
end
9 D* I/ g0 T, f0 ~always @(posedge CLK)" {; g4 [+ ~8 H* Z
if (EN && WE) mem[ADDR] = data_in;# J! _4 w! Z) z* ]
endmodule |
評分
-
查看全部評分
|