|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看
0 T* ^* ~* n( U8 ^: x雖然不是控制memory,但瞭解memory行為有助於你控制memory
" G. S! M* r8 D/ C( A1 M8 Z8 y4 M: N) `3 ?7 e7 J% B, O4 t6 O
The following segment of Verilog code defines the behavior of a Xilinx" x7 K0 T! o8 Y# Z3 ~3 Z- ^
single-port block RAM.- e9 W; {" Z1 c" @" S r0 }
0 i8 `# `- ?( e& f5 H- p7 ~module RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);* `6 S0 e% J/ J8 u% A* d& J8 C
output[3:0] data_out;/ R# n' K" f6 e a
input [7:0] ADDR;
& @+ v% C2 L! b+ y0 }2 `1 L0 ]: ginput [3:0] data_in;
4 l; @ x G# e: n/ L* V3 einput EN, CLK, WE, RST;
+ ^9 Q8 b7 C1 T7 Vreg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;9 P2 Q1 o+ Q5 A- `7 _) k$ h
reg [3:0] data_out;) g( F2 V) v+ G! n# _ Q
always@(posedge CLK)
' W' P) k; N5 E+ z$ K. W/ Qif(EN)
8 K- k" |4 B) B' @if(RST == 1)
) B1 [5 J/ \, ?* i) x4 n0 ?: \9 {data_out <= 0;# R- h! [, f) z/ h9 Y7 t# e
else+ E8 M. T) b. |2 x4 S/ b
begin$ |3 \& i1 C$ R; Q7 w. b+ x
if(WE == 1)
" u$ Q" C5 k" F* Z; U# gdata_out <= data_in;
; _0 R1 X9 l# ]( |( Zelse
; C, w+ [- i0 S5 n R$ `data_out <= mem[ADDR];
! O |' N- `/ }5 p3 Wend
& l. a# [4 W( Z* N4 walways @(posedge CLK)
( ?( s, r0 e. }7 D; c% y; D7 v$ h+ G5 \if (EN && WE) mem[ADDR] = data_in;
0 Q; h" [9 V& C; _7 P. l: e1 \* Yendmodule |
評分
-
查看全部評分
|