|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看' m. a+ t/ A9 l1 ?- ]9 a7 S
雖然不是控制memory,但瞭解memory行為有助於你控制memory
9 R ]6 R( @% W9 v0 m1 }3 d. v& e4 a/ f3 P( W
The following segment of Verilog code defines the behavior of a Xilinx
; ^& T& P3 h& v W) fsingle-port block RAM.
8 N+ F% b0 r. m6 D' K- i, F( r3 U6 c6 K
module RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);6 U; W8 X) q" e8 v) [9 a8 e, M
output[3:0] data_out;8 q4 A1 i+ F2 m: ?
input [7:0] ADDR;
4 Y+ q' U" ~' {% G1 I# M+ finput [3:0] data_in;5 q' S: S2 W6 Y# }6 x) [
input EN, CLK, WE, RST;
4 z) t$ U2 @2 H" E7 Jreg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;
: S) }+ Q, ^: e5 E& @reg [3:0] data_out;
, j' v; x' e2 u d. Ealways@(posedge CLK)
0 o: i Z4 p2 L% a' l: }if(EN)+ a& E9 n( o9 _3 @
if(RST == 1)
9 i* T8 V# I0 g7 `data_out <= 0;; W9 A- \; ]2 b& @- x
else
1 a) O6 f9 H$ n9 q4 I: wbegin/ B- P- V: m/ O1 {" {9 f) Y
if(WE == 1). O: g1 H; t- \3 G5 E2 D+ e+ P' z
data_out <= data_in;
, r e3 f( P0 s; D8 M" U2 }else
: {. s4 ~5 ?6 |) m/ V5 idata_out <= mem[ADDR];1 y$ F# B( O/ G( x7 Y
end5 C, Z& e8 L: C3 u
always @(posedge CLK)
4 r: s# u# [( c: x0 @. Z8 Xif (EN && WE) mem[ADDR] = data_in;
8 ~# k" s% [/ ^4 G& y/ Kendmodule |
評分
-
查看全部評分
|