|
控制memory使用verilog
從Synplify Pro reference manual節錄一些single-port RAM的verilog code,你可以參考看看
1 f# ?' R( x- ]3 X9 N$ C雖然不是控制memory,但瞭解memory行為有助於你控制memory
6 s: D" A! p( [# W# b: ^" w. s) k7 D8 h9 u. z! a
The following segment of Verilog code defines the behavior of a Xilinx$ s- `* i E) r* X0 t* K+ O& p4 Q
single-port block RAM.# { O2 ?; t% \' v0 o1 c# R8 }
3 p: f% f' ~- I* ^3 J
module RAMB4_S4 (data_out, ADDR, data_in, EN, CLK, WE, RST);& R6 W. w2 U; h2 Z
output[3:0] data_out;
1 n$ x; J( x2 W5 v' R. vinput [7:0] ADDR;
, k3 {$ A3 ^4 ?7 M0 [1 Kinput [3:0] data_in; q1 [$ H4 \2 H z# d, J: D
input EN, CLK, WE, RST;5 y. L/ u" j. o3 f0 y# g% a P( J) a
reg [3:0] mem [255:0] /*synthesis syn_ramstyle="block_ram"*/;
; ~1 ^2 b- }$ breg [3:0] data_out;# |& R0 L2 o0 w& E
always@(posedge CLK)! f3 T. g2 L8 E2 d
if(EN)
& M7 A! U% X% I& P- Hif(RST == 1)
5 ?- L" f+ D% e: |7 ]) Fdata_out <= 0;* s: ]% {1 a( }1 v
else& s+ k% B% L- Q0 [: N, w
begin3 G) ], L% v/ G3 F, D1 @) t, Y
if(WE == 1)4 S; j L8 q+ d+ l4 h& C4 N5 T
data_out <= data_in;2 f: J' M% c/ G' o' o* b' ^+ w
else
( q \9 e8 L# Z! g }1 O4 Xdata_out <= mem[ADDR];
1 i9 X* ]9 k8 _' _end# g" a; H e9 E+ p3 M
always @(posedge CLK)" f; O: O4 ^$ T1 ^3 o
if (EN && WE) mem[ADDR] = data_in;
7 j1 ^. V) `: ?( u3 mendmodule |
評分
-
查看全部評分
|