Hallo, warum befinden sich die beiden Integer in der Entity:: write_address: IN integer RANGE 0 to 31; read_address: IN integer RANGE 0 to 31; Ich habe ja nicht so viele Schalter am DE-1 um die Adressen zu Testen. Kann man die auch irgendwie als Signal in der "ARCHITECTURE rtl OF sram1 IS" ansprechen um dieses SRAM zu beschreiben/lesen? Danke. Gruss
1 | LIBRARY ieee; |
2 | USE ieee.std_logic_1164.ALL; |
3 | |
4 | ENTITY sram1 IS |
5 | PORT
|
6 | (
|
7 | clock: IN std_logic; |
8 | data: IN std_logic_vector (31 DOWNTO 0); |
9 | write_address: IN integer RANGE 0 to 31; |
10 | read_address: IN integer RANGE 0 to 31; |
11 | we: IN std_logic; |
12 | q: OUT std_logic_vector (31 DOWNTO 0) |
13 | );
|
14 | END sram1; |
15 | |
16 | ARCHITECTURE rtl OF sram1 IS |
17 | TYPE mem IS ARRAY(0 TO 31) OF std_logic_vector(31 DOWNTO 0); |
18 | SIGNAL ram_block : mem; |
19 | |
20 | BEGIN
|
21 | PROCESS (clock) |
22 | BEGIN
|
23 | IF (clock'event AND clock = '1') THEN |
24 | IF (we = '1') THEN |
25 | ram_block(write_address) <= data; |
26 | END IF; |
27 | q <= ram_block(read_address); |
28 | END IF; |
29 | END PROCESS; |
30 | END rtl; |