Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Языки описания аппаратуры (VHDL и др.)

Непонятки с ActiveHDL 7.2

Отправлено Мартовский Котяра 31 декабря 2006 г. 14:09


Народ, решил я крякнуть сабж (не знал что микстура уже придумана). С ограничением в 10us разобрался быстро. А при попытке убить 5 мегабайт на проект, напоролся на следующую хрень...
Написал такой проектик (чтобы переполнить ограничение по памяти):

------------------------ram.vhd---------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_unsigned.all;

entity ram is
port(
we : in STD_LOGIC;
clk : in STD_LOGIC;
di : in STD_LOGIC_VECTOR(31 downto 0);
a : in STD_LOGIC_VECTOR(19 downto 0);
do : out STD_LOGIC_VECTOR(31 downto 0)
);
end ram;

--}} End of automatically maintained section

architecture ram of ram is
type membuf is array (0 to 65535) of std_logic_vector(31 downto 0);
signal buf : membuf;

begin

process(clk)
variable addr : integer;
begin
if clk'event and clk='1' then
addr:=Conv_integer(a);
if we='1' then
buf(addr)<=di;
do<=X"00000000";
else
do<=buf(addr);
end if;
end if;
end process;

end ram;

------------------------ram_TB.vhd------------------------------------
library ieee;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_1164.all;

-- Add your library and packages declaration here ...

entity ram_tb is
end ram_tb;

architecture TB_ARCHITECTURE of ram_tb is
-- Component declaration of the tested unit
component ram
port(
we : in std_logic;
clk : in std_logic;
di : in std_logic_vector(31 downto 0);
a : in std_logic_vector(19 downto 0);
do : out std_logic_vector(31 downto 0) );
end component;

-- Stimulus signals - signals mapped to the input and inout ports of tested entity
signal we : std_logic;
signal clk : std_logic;
signal di : std_logic_vector(31 downto 0);
signal a : std_logic_vector(19 downto 0);
-- Observed signals - signals mapped to the output ports of tested entity
signal do : std_logic_vector(31 downto 0);

-- Add your code here ...
signal cnt : std_logic_vector(31 downto 0);
-- signal data : std_logic_vector(7 downto 0);
signal rst : std_logic;

begin

-- Unit Under Test port map
UUT : ram
port map (
we => we,
clk => clk,
di => di,
a => a,
do => do
);

-- Add your stimulus here ...
process
begin
clk<='1'; wait for 50ns;
clk<='0'; wait for 50ns;
end process;

process(rst, clk)
begin
if rst='1' then cnt<=X"00000000";
else
if clk'event and clk='1' then
cnt<=cnt+1;
end if;
end if;
end process;

a(19)<='0';
a(18 downto 0)<=cnt(18 downto 0);
we<=not cnt(19);
di<=cnt;

process
begin
rst<='1';
wait for 10ns;
rst<='0';
wait;
end process;



end TB_ARCHITECTURE;

configuration TESTBENCH_FOR_ram of ram_tb is
for TB_ARCHITECTURE
for UUT : ram
use entity work.ram(ram);
end for;
end for;
end TESTBENCH_FOR_ram;
----------------------------------------------------------------------

При запуске симуляции в ActiveHDL 7.2, памяти на всё это безобразие выделяется чуть меньше 10 мегабайт. В то же время ActiveHDL 6.3 выделяет 347 мегабайт. Разница в 35 раз !!! В те же 35 раз разница в скорости. Не в пользу 7.2 к сожалению. В то же время проект, которым я занимаюсь на работе (кусок достаточно сложной железки на Virtex 2) прекрасно загрузился в симулятор (уже timing model !), заняв около 32 мегабайт, что вполне разумно, и был просимулирован за вполне разумное время. Памяти выделяется чуть меньше чем это делает 6.3, а считает примерно с одинаковой скоростью. Это конечно не может не радовать. Но как тогда быть с первым проектом, где моделировалась чудовищная RAM ??? Короче не понимаю я толком, работает у меня оно или нет... Очень прошу, попытайтесь этот проект прогнать у себя. И если у кого есть волшебная таблетка, прошу, поделитесь ! А то после того как aldec перестал давать полные 20-дневные лицензии, борьба с ним сильно осложнилась...


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите 6 на два:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru