hallo,
ich hab mal noch ein bischen weiter gespielt. wirklich weiter gekommen
bin ich aber nicht.
meine plattform ist ein FLEX10KA (EPF10K100A...).
dieser code
1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 | use ieee.std_logic_unsigned.all;
|
4 |
|
5 | entity ramtest is
|
6 | port(
|
7 | signal clk, wr : in std_logic;
|
8 | signal waddr,raddr : in std_logic_vector(7 downto 0);
|
9 | signal outdata : out std_logic_vector(7 downto 0);
|
10 | signal indata:in std_logic_vector(7 downto 0));
|
11 | end entity;
|
12 |
|
13 | architecture arch of ramtest is
|
14 | subtype sample_memword_t is std_logic_vector(7 downto 0);
|
15 | type sample_mem_t is array(0 to 255) of sample_memword_t;
|
16 | signal mem : sample_mem_t;
|
17 | begin
|
18 | process(clk,raddr)
|
19 | variable adv:integer range 0 to 255;
|
20 | begin
|
21 | adv:=conv_integer(waddr);
|
22 | if wr = '1' then
|
23 | if rising_edge(clk) then
|
24 | mem(adv)<=indata;
|
25 | end if;
|
26 | else
|
27 | null;
|
28 | end if;
|
29 | adv:=conv_integer(raddr);
|
30 | outdata<=mem(adv);
|
31 | end process;
|
32 | end arch;
|
sollte doch eigendlich ein RAM in einem der EAB's erzeugen? (würde auch
genau in einen rein passen) tut er aber nicht. er bildet das ram aus
knapp 3700 LE's. es macht auch keinen unterschied ob ich die
ein/ausgänge registered mache oder nicht. immer das selbe. das ram
landet in den LE's.
welche option muss ich denn setzen oder wie muss ich den code schreiben
damit es hin haut?
@serioussam
mit dem code funktioniert es auch nicht. das ram wird dabei auch in den
LE's erzeugt. zumindest bei mir. egal ob ich cyclone oder flex10k als
zielplattform auswähle.
gruß sunny