Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разное (электроника) > VHDL, 2 задачи; структурное, потоковое, поведенчес


Автор: seoguru 29.9.2013, 11:49
Доброго времени суток!
Есть 2 задачи, нужно "решить" на всех видах проектирования:
  1. Определитель четности \ нечетности чисел
  2. 4-х входовый И-НЕ

Почитал Уэйкерли Дж.Ф., получились следующие варианты:

Задача 1:
Код
library IEEE;
use IEEE.std_logic_1164.all;

entity ex1 is 
port ( N: in STD_LOGIC_VECTOR (3 downto 0);
        F: out STD_LOGIC; )
end ex1;

Потоковое проектирование:
Код
architecture potok1_arch of ex1 is
begin
 with CONV_INTEGER(N) select
 F <= '1' when 0|2|4|6|8|10|12|14,
         '0' when others;
end potok1_arch;


Поведенческое проектирование:
Код
architecture poved1_arch of ex1 is
begin
 process(N)
  variable NI:INTEGER;
 begin
  NI:=CONV_INTEGER(N);
  if NI mod2=0 then F <= '1';
  else F<='0';
  end if;
 end process;
end poved1_arch;


Структурное проектирование:
Код
В процессе, но особо идей нет, возможно ли вообще такое написать на структурном?



Задача 2:
Код
library IEEE;
use IEEE.std_logic_1164.all;

entity ex2 is 
port ( N: in STD_LOGIC_VECTOR (3 downto 0);
        F: out STD_LOGIC; )
end ex2;

Потоковое проектирование:
Код
architecture potok2_arch of ex2 is
signal N0, N1, N2, N3: STD_LOGIC;
begin
 N0 <= not N(0);
 N1 <= not N(1);
 N2 <= not N(2);
 N3 <= not N(3);
 F <= N0 or N1 or N2 or N3;
end potok2_arch;


Поведенческое проектирование:
Код
architecture poved2_arch of ex2 is
begin
 process(N)
  variable N0, N1, N2, N3: STD_LOGIC;
 begin
  N0:=not N(0);
  N1:=not N(1);
  N2:=not N(2);
  N3:=not N(3);
  F <= N0 or N1 or N2 or N3;
 end process;
end poved2_arch;


Структурное проектирование:
Код
architecture strukt2_arch of ex2 is
signal N3_L, N2_L, N1_L, N0_L:STD_LOGIC;
component INV port (I: in STD_LOGIC; O: out STD_LOGIC); end component;
component OR4 port (I0,I1,I2,I3: in STD_LOGIC; O: out STD_LOGIC); end component;
begin
 U1: INV port map (N(3),N3_L);
 U2: INV port map (N(2),N2_L);
 U3: INV port map (N(1),N1_L);
 U4: INV port map (N(0),N0_L);
 U5: OR4 port map (N3_L, N2_L, N1_L, N0_L, F);
end strukt2_arch;


Прошу проверить корректность кода и подсказать что исправить, если есть ошибки. Заранее спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)