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

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

Ответ:

Отправлено serega 31 мая 2008 г. 17:23
В ответ на: Кто может помочь с проектированием вроде бы простого блока на VHDL ? парюсь, нормально не получается, плохо знаком с VHDL.. отправлено sergoserg 31 мая 2008 г. 15:56

вот мой вариант пока без учета знака i-го входа, но он работает крайне плохо. почему?? может кто-нить подскажет как лучше сделать, в чем проблема :

LIBRARY ieee, work;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_signed.all;
USE ieee.numeric_bit.all;
use work.vv.all;

-- Entity Declaration

ENTITY Modul IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
din : IN in_array;
dout : OUT out_array;
clk : IN BIT
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END Modul;


-- Architecture Body

ARCHITECTURE modul_block_architecture OF Modul IS
Type data_type is array (natural range 0 to 31)
of STD_LOGIC_VECTOR(5 downto 0);
signal data: out_array;


function min(a, b: STD_LOGIC_VECTOR ) return STD_LOGIC_VECTOR is
variable tmp: boolean;
begin

tmp:= a <= b;
if tmp then
return a;
else
return b;
end if;
end;

BEGIN

Process(clk)
variable i: integer range 0 to 31;
begin

if rising_edge(clk) then
FOR i IN 0 TO 31 loop
data(i) <= abs(din(i));
END loop;

end if;

end process;



Process(clk)
variable a: data_type;
variable i,j: integer range 0 to 31;
begin
For i in 0 to 31 loop
a(i):= "011111";
for j in 0 to 31 loop
next when j=i;
a(i):= min(a(i), data(j));
end loop;
dout(i)<= a(i);
end loop;
end process;


END modul_block_architecture;


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

Ответы


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

Сообщение:

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

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

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

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