Jump to content

    
Sign in to follow this  
seo_guru

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

Recommended Posts

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

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

 

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

Edited by seo_guru

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
Доброго времени суток!

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this