|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看6 Z& Y2 f' c7 n& _
雖然不是控制memory,但瞭解memory行為有助於你控制memory
- `, Y$ D8 ] x# z6 x& ~% g1 Z" k4 c# R+ Q3 p* J$ Y2 E$ P
The following segment of Verilog code defines the behavior of a Xilinx
7 V; N2 a7 s/ k3 {8 v$ Rsingle-port block RAM.
0 p0 A' \" C7 { u, z* t, X& _# M9 H0 J" ^
module RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);% W2 E/ b9 P& W$ s! D; \0 c6 c' b, g
output[3:0] data_out;- r; t4 v$ E5 n3 P. s6 a: z8 I5 a% C
input [7:0] ADDR;
( `3 ^. A- h0 ^& Pinput [3:0] data_in;5 g1 [! g( Z+ ^* N9 [; C- ?
input EN, CLK, WE, RST;
; O4 y. q6 o7 Q+ X! S' Mreg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;
( T; z( ]; E% c$ w. ereg [3:0] data_out;
) y! q& R/ U+ N; palways@(posedge CLK)
& k$ J4 Q5 @: b$ U6 c+ h) pif(EN)
( c! e8 }0 s2 G' y3 I) j! nif(RST == 1)
# o+ Q7 O c' A' }data_out <= 0;
, Y5 i! k( G. W% melse
3 }8 o! S% D: E1 Ibegin
! M8 Y1 J& {% q: [2 N2 t7 uif(WE == 1)* Q5 o( P/ W( o4 j% ]8 X* j8 m
data_out <= data_in;3 S& E+ @( l8 d S# [
else+ ^; C% r1 _ a
data_out <= mem[ADDR];
$ o$ Y) g$ b. j, f/ B! aend, P7 j1 I% k2 F
always @(posedge CLK)
# h, p2 G# \: j7 A$ S4 }1 ^if (EN && WE) mem[ADDR] = data_in;8 e! W p1 ^" W0 D
endmodule |
評分
-
查看全部評分
|