|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看$ L1 `4 Q5 r; q6 i& h& ?
雖然不是控制memory,但瞭解memory行為有助於你控制memory
8 j R, }, J5 S+ P* [% b# R" C* o- @/ @8 N3 ?/ B
The following segment of Verilog code defines the behavior of a Xilinx6 e T1 x5 h" j( K
single-port block RAM.2 _2 u, ~& m. N; W
8 a+ e! d7 b1 A5 D+ q) C5 y& B X8 ?module RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);3 n1 m- {/ I; R% K& k) s
output[3:0] data_out;: @3 l$ V) q p: Y1 _
input [7:0] ADDR;
9 Z. ^, b ~' W1 v6 w1 M8 L9 Ninput [3:0] data_in;9 N7 I8 t9 s f
input EN, CLK, WE, RST;
# {+ ~3 e2 l+ q" R# f' s" U- lreg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;
3 ] a9 n* {( S/ S2 q, m1 C/ preg [3:0] data_out;3 G. f# d! v3 ]
always@(posedge CLK)
' g& K4 e4 M/ ^: ]6 oif(EN)
: O% A" q2 \4 _) e: r9 rif(RST == 1) l2 g F9 a3 t+ }& [, h* I) g
data_out <= 0;
2 I. A5 k# H: O8 G/ Q Uelse8 x Z( ?% t* W9 {! W
begin
1 Y6 \' m4 d- I; zif(WE == 1)- x- b5 [$ a# D
data_out <= data_in;/ w" |) \* {/ D9 O& A; K: p% o5 \/ g( l, e
else! e6 k$ F' }6 @! }
data_out <= mem[ADDR];
- K* x1 H% Z/ |* x4 z4 ?end
5 W4 ]) c- s0 U- A1 Oalways @(posedge CLK)4 G% o! d7 C5 C. q; N
if (EN && WE) mem[ADDR] = data_in;7 {8 I) `1 K9 ^( `' z
endmodule |
評分
-
查看全部評分
|