Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
вот мой вариант пока без учета знака 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;
Составить ответ | Вернуться на конференцию
Ответы