Hallo, guten Tag.
Ich möchte bitte dieses RAM als Modul einbauen, um die Inputs
(address,data,cs,we,oe)
nicht vom DE1-Pin zu steuern sondern von wire oder reg.
Habe schon einige Versuche gemacht, aber das RAM wird dann nicht von den
"Total memory bits"
im "Flow Summary" angezeigt, da steht denn "0" als verbrauch drin statt
zb 65000 .
Das RAM wird aber im RTL-Viewer als Bild erstellt.
Was für eine Lösung gibt es dafür?
Danke.
Gruss
1 | module ram_sp_sr_sw (
|
2 | clk , // Clock Input
|
3 | address , // Address Input
|
4 | data , // Data bi-directional
|
5 | cs , // Chip Select
|
6 | we , // Write Enable/Read Enable
|
7 | oe // Output Enable
|
8 | );
|
9 |
|
10 | parameter DATA_WIDTH = 8 ;
|
11 | parameter ADDR_WIDTH = 13 ;
|
12 | parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
13 |
|
14 | //--------------Input Ports-----------------------
|
15 | input clk ;
|
16 | input [ADDR_WIDTH-1:0] address ;
|
17 | input cs ;
|
18 | input we ;
|
19 | input oe ;
|
20 |
|
21 | //--------------Inout Ports-----------------------
|
22 | inout [DATA_WIDTH-1:0] data ;
|
23 |
|
24 | //--------------Internal variables----------------
|
25 | reg [DATA_WIDTH-1:0] data_out ;
|
26 | reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
27 | reg oe_r;
|
28 |
|
29 | //--------------Code Starts Here------------------
|
30 |
|
31 | // Tri-State Buffer control
|
32 | // output : When we = 0, oe = 1, cs = 1
|
33 | assign data = (cs && oe && !we) ? data_out : 8'bz;
|
34 |
|
35 | // Memory Write Block
|
36 | // Write Operation : When we = 1, cs = 1
|
37 | always @ (posedge clk)
|
38 | begin : MEM_WRITE
|
39 | if ( cs && we ) begin
|
40 | mem[address] = data;
|
41 | end
|
42 | end
|
43 |
|
44 | // Memory Read Block
|
45 | // Read Operation : When we = 0, oe = 1, cs = 1
|
46 | always @ (posedge clk)
|
47 | begin : MEM_READ
|
48 | if (cs && !we && oe) begin
|
49 | data_out = mem[address];
|
50 | oe_r = 1;
|
51 | end else begin
|
52 | oe_r = 0;
|
53 | end
|
54 | end
|
55 |
|
56 | endmodule
|
Dieses ist dann der Start, welches das Modul dann die Variablen usw
übergibt:
1 | module ram_sp_sr_sw_modul(
|
2 | input clk,
|
3 | );
|
4 |
|
5 | ....address
|
6 | ....data
|
7 | ....cs
|
8 | ....we
|
9 | ....oe
|
10 |
|
11 | ram_sp_sr_sw U(
|
12 | .clk(clk),
|
13 | .data(data),
|
14 | .address(address),
|
15 | .cs(cs),
|
16 | .we(we),
|
17 | .oe(oe)
|
18 | );
|
19 | endmodule
|