Hallo
ich bin ein FPGA Neuling und habe mir ein Nexys4 zum rumbasteln gekauft.
Jetzt habe ich das Problem, dass bei meinem Project der interne BRAM
nicht mehr ausreicht. Da das Board, wie auch das Nexys3, einen 128Mb
großen Cellram (Pseudo Stratic RAM) hat, wollte ich darauf ausweichen.
Das größte Problem ist, dass ich aus den Manuals nicht schlau werde bzw.
nicht verstehe, wie ich so einen SRAM ansteuere. Ich habe mich schon
durch verschiedene Tutorials und Vorlesungen gelesen doch nicht das
richtige gefunden.
Mein jetziger code sieht so aus
1 | module ram # ( parameter ADDRBITS=10 ) (
|
2 | address,
|
3 | clock,
|
4 | data,
|
5 | wren,
|
6 | q);
|
7 |
|
8 | input [ADDRBITS-1:0] address;
|
9 | input clock;
|
10 | input [255:0] data;
|
11 | input wren;
|
12 | output [255:0] q;
|
13 |
|
14 | //synthesis attribute ram_style of store is block
|
15 | reg [255:0] store [(2 << (ADDRBITS-1))-1:0];
|
16 | reg[ADDRBITS-1:0] raddr_reg;
|
17 |
|
18 | always @ (posedge clock)
|
19 | begin
|
20 | raddr_reg <= address;
|
21 | if (wren)
|
22 | store[address] <= data;
|
23 | end
|
24 |
|
25 | assign q = store[raddr_reg];
|
26 |
|
27 | endmodule
|
und damit klappt auch alles nur dass der Speicherplatz dann nicht
ausreicht.
So spreche ich das Modul an:
1 | ram ram1 (ram_addr, ram_clk, ram1_din, ram_wren, ram1_dout);
|
Jetzt zu dem, was ich für sram gefunden habe:
1 | module sram_model(
|
2 | input [9:0] addr,
|
3 | inout [7:0] data,
|
4 | input oe_n,
|
5 | input we_n
|
6 | );
|
7 |
|
8 |
|
9 | reg [7:0] sram[0:1023];
|
10 |
|
11 | always @ (posedge we_n)
|
12 | sram[addr] = data;
|
13 |
|
14 | assign data = (oe_n == 0) ? sram[addr] : 8'bz;
|
15 |
|
16 | endmodule
|
Wie kann ich das ansprechen?
Jetzt zu meinem Problem:
wenn ich das jetzt richtig verstehe kann ich ja nur ein 8Bit wort über
data einlesen bzw. herausbekommen. Aber eine Zelle von dem Ram soll
8Mbit haben. Vielleicht verstehe ich auch die Grundlagen eines solchen
RAM noch nicht.
Die komplizierten Sachen wie asynchrone/synchrone/burst Ansteuerung habe
ich mir noch nicht angeschaut.