Перейти к содержанию
    

VHDL, 2 задачи; структурное, потоковое, поведенческое проектирования

Доброго времени суток!

Есть 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;

 

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

Изменено пользователем seo_guru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даже стесняюсь спросить.....

Для проверки на четность нечетность может бит 0 использовать.....

А то от приведенных конструкций у синтезаторов может крышу снести ....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток!

Есть 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;

 

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

 

Задача 2

Поведенческое

F <= '0' when N = "1111" else '1';

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...