Hallo, ich habe eine Cyclone II FPGA und möchte das RAM ( mit dem
one-port Ram von Altera )ansprechen und wieder auslesen.
1 | LIBRARY ieee;
|
2 | USE ieee.std_logic_1164.all;
|
3 | USE IEEE.numeric_std.ALL;
|
4 | use IEEE.STD_LOGIC_ARITH.ALL;
|
5 | use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
6 |
|
7 |
|
8 | -- Entity Declaration
|
9 |
|
10 | ENTITY block_name IS
|
11 | -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
|
12 | -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
|
13 | PORT
|
14 | (
|
15 | clock : IN STD_LOGIC;
|
16 | resultim : IN STD_LOGIC_VECTOR(23 downto 0);
|
17 | ausgang2 : OUT STD_LOGIC_VECTOR(31 downto 0);
|
18 | summe : out std_logic_vector ( 11 downto 0 );
|
19 | adresse : buffer std_logic_vector (11 downto 0);
|
20 | speicher : in Std_logic_vector (31 downto 0);
|
21 | writeenable : out std_logic
|
22 | );
|
23 | -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
|
24 |
|
25 | END block_name;
|
26 |
|
27 |
|
28 | -- Architecture Body
|
29 |
|
30 | ARCHITECTURE aufsummiererimaginaerteil_architecture OF block_name IS
|
31 | signal zaehler : natural range 0 to 12;
|
32 |
|
33 | BEGIN
|
34 | writeenable <= '1';
|
35 | process (clock )
|
36 | begin
|
37 | If clock = '1' and clock'event then
|
38 |
|
39 | if zaehler = 12 then
|
40 | zaehler <= 0;
|
41 | else zaehler <= zaehler + 1;
|
42 | end if;
|
43 |
|
44 | ausgang2 <= resultim + speicher;
|
45 |
|
46 | case zaehler is
|
47 | when 0 => adresse <= "000000000000";
|
48 | when 1 => adresse <= "000000001000";
|
49 | when 2 => adresse <= adresse + "1000";
|
50 | when 3 => adresse <= adresse + "1000";
|
51 | when 4 => adresse <= adresse + "1000";
|
52 | when 5 => adresse <= adresse + "1000";
|
53 | when 6 => adresse <= adresse + "1000";
|
54 | when 7 => adresse <= adresse + "1000";
|
55 | when 8 => adresse <= adresse + "1000";
|
56 | when 9 => adresse <= adresse + "1000";
|
57 | when 10 => adresse <= adresse + "1000";
|
58 | when 11 => adresse <= adresse + "1000";
|
59 | when 12 => adresse <= adresse + "1000";
|
60 | end case;
|
61 | end if;
|
62 | end process;
|
63 | END aufsummiererimaginaerteil_architecture;
|
dabei sind read und write-Adresse gleich, leider wird nur aus der
allersten Adresse gelesen( Speicher gibt den Wert aus dem Ram an). liegt
das am Code oder am Baustein, wie muss ich ihn dann einstellen, damit er
den wert der aktuellen Adrese liest? MfG