Hallo, guten Tag. Ich habe hier von Lothar Miller dieses Duale-Bram mit 1024 Byte. In der Portzuweisung steht: Awr : in STD_LOGIC_VECTOR (Addrbreite-1 downto 0); Ard : in STD_LOGIC_VECTOR (Addrbreite-1 downto 0); Din : in STD_LOGIC_VECTOR (Wortbreite-1 downto 0); Im Pinplaner beim Quartus 2 stehen die jetzt drin für mein DE0-Board. Was wird den Pins dann zugewiesen bei euch um diese Awr,Ard und Din zu bestimmen ? Ich könnte es verstehen wenn ich die hier hinsetze ohne "in". architecture BlockRAM of RAM is ...... ...... ...... Danke. Gruss
1 | library IEEE; |
2 | use IEEE.STD_LOGIC_1164.ALL; |
3 | use IEEE.NUMERIC_STD.ALL; |
4 | |
5 | entity RAM is |
6 | Generic ( |
7 | Addrbreite : natural := 10; |
8 | Wortbreite : natural := 10 |
9 | );
|
10 | Port ( clk : in STD_LOGIC; |
11 | Write : in STD_LOGIC; |
12 | Awr : in STD_LOGIC_VECTOR (Addrbreite-1 downto 0); |
13 | Ard : in STD_LOGIC_VECTOR (Addrbreite-1 downto 0); |
14 | Din : in STD_LOGIC_VECTOR (Wortbreite-1 downto 0); |
15 | Dout : out STD_LOGIC_VECTOR (Wortbreite-1 downto 0) |
16 | );
|
17 | end RAM; |
18 | |
19 | architecture BlockRAM of RAM is |
20 | |
21 | type speicher is array(0 to (2**Addrbreite)-1) of STD_LOGIC_VECTOR(Wortbreite-1 downto 0); |
22 | signal memory : speicher; |
23 | |
24 | begin
|
25 | process(clk) |
26 | begin
|
27 | if rising_edge(clk) then |
28 | if (Write='1') then |
29 | memory(to_integer(unsigned(Awr))) <= Din; |
30 | end if; |
31 | dout <= memory(to_integer(unsigned(Ard))); |
32 | end if; |
33 | end process; |
34 | end BlockRAM; |