|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看
% s A6 L; B- F雖然不是控制memory,但瞭解memory行為有助於你控制memory
! S8 p4 F7 e9 o E, b
% ^ q$ S- U* y) FThe following segment of Verilog code defines the behavior of a Xilinx+ G* u2 v$ H6 I% J+ f$ A3 {
single-port block RAM.- r" H U; K" x& P
- _; F$ N: P, `- Z! V* Zmodule RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);4 @, v2 J: |+ Y o# H$ f% w
output[3:0] data_out;
, _6 O& l6 \' ninput [7:0] ADDR;. P0 k0 r9 [0 g9 d* T) Q3 B4 g
input [3:0] data_in;3 J4 q: l$ }( o9 E9 h
input EN, CLK, WE, RST;
+ m, k7 @0 {' Zreg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;" T8 F' Y* n; G4 e* ^
reg [3:0] data_out;9 N2 o+ n2 v. V
always@(posedge CLK)
( S# q4 n) }7 j% {0 H2 Xif(EN)
, z$ p) n6 n; A# ]if(RST == 1)8 T- M d5 Y9 ?$ d* r" v
data_out <= 0;2 o& U m! ~& m5 n# @" J
else
) F. t, G5 f7 Z7 ?begin& V- i/ B' G" x( z+ V5 y
if(WE == 1)# z! Z& y& L+ o( E3 n' ?3 L8 t
data_out <= data_in;
R# V3 D& C, f e/ felse0 i. R- G. g/ H1 {+ [& x5 `
data_out <= mem[ADDR];
& }3 t$ l+ l6 Bend0 w. D$ U1 R# z
always @(posedge CLK)
1 M8 A$ a& O# Cif (EN && WE) mem[ADDR] = data_in;
" ?- d5 K% _3 \' ~( Q- y, iendmodule |
評分
-
查看全部評分
|