Сравнение двух битовых векторов без логической логики - PullRequest
0 голосов
/ 10 сентября 2018

Допустим, я хочу написать 2-битный компаратор в VHDL.

Есть вектор a и вектор b.

Работает ли сравнение векторов типа

(a=b)

При таком подходе:

library ieee;

entity comp is port(
a,b: in bit_vector(1 downto 0);
a_eq_b; out bit);

architecture behav of comp is
   begin
   a_eq_b <= '1' when (a=b) 
           else '0';
end of behav;

работает?Или я должен был бы получить minterms через таблицу истинности и сделать это с булевой логикой?

cheers

EDIT1:

library ieee;

entity comp is port(
a,b: in bit_vector(1 downto 0);
a_eq_b: out bit);
end comp;

architecture behav of comp is
  begin
  a_eq_b <= a=b;
end behav;

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Если вы используете vhdl 2008, вы можете использовать соответствующие операторы отношения, так как они возвращают тип источника (бит или std_ulogic), а не логическое значение.

a_eq_b <= (a ?= b);

эквивалентно

a_eq_b <= a <= '1' when a = b else '0';
0 голосов
/ 10 сентября 2018

Изменить 1 : Да, вы можете напрямую сравнивать два типа массивов одного типа.

Ниже приведен тестовый стенд и его результат для описания VHDL.

Форма волны

imagecomp entity">

tb.v

 library IEEE;

 entity tb is
 end tb;

 architecture behav of tb is
   signal a : bit_vector(1 downto 0) := "00";
   signal b : bit_vector(1 downto 0) := "00";
   signal a_eq_b : bit;
 begin
   dut: entity work.comp port map (a=>a, b=>b, a_eq_b=>a_eq_b );
   stimulus: process
   begin
     wait for 10 ns;
     a <= "01";
     wait for 10 ns;
     b <= "01";
     wait for 10 ns;
     a <= "10";
     wait for 10 ns;
     b <= "11";
     wait for 10 ns;
     b <= "10";
     wait;
   end process stimulus;

 end behav;

Редактировать 2 : вы можете использовать оператор = для управления вашим выходным присваиванием: a_eq_b1 <= '1' when (a = b) else '0';, но вы не можете напрямую присвоить результат из оператора равенства =, который возвращает логическое значение, bit.

Дайте мне знать, если вы ищете что-то конкретное, поскольку ваш вопрос требует только "сработает или нет".

...