пытаются имитировать Verilog поведения относительно битовых операций (что означает - операцию, которая работает на все биты вектора и выход 1 битого ответVHDL операции побитовых на векторе
пример:.
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
...
signal vect : std_logic_vector (length -1 downto 0);
signal ans : std_logic;
signal addin : std_logic;
когда Vect = все '0' я буду хотеть анс быть '1' (ни)
при Vect = все '1' я буду хотеть анс быть '1' (и)
когда Vect = даже num '1' я хочу анс быть «1» (XOR) и т.д.
я сделал следующие функции (только один показан здесь):
function vand (vect :std_logic_vector) return std_logic is
variable temp : std_logic;
begin
temp := '1';
for I in (vect'length -1) downto 0 loop
temp := temp and vect(I);
end loop;
return temp;
end;
эта функция должна дать «И» на всех битах. , вот, сюда приходят мои вопросы:
a. есть ли более простой способ сделать такие операции?
b. Я использую Vand так, как это if Vand(vect & addin) = '1' do something...
, но когда vect является «0H», а addin - «H», условие заполнено, и я понятия не имею, почему. может кто-нибудь подумать, почему этот вид операции проблематичен? функция ведет себя в других случаях, но здесь я протестировал ее для быстрого иммунитета и получил это нежелательное поведение.
редактировать
я не знаю длину вектора «Vect» или «вектор VECT & надстройки».
редактировать 2
решить вторую проблему, создав функцию Vand(vect : std_logic_vector; b: std_logic)
юга, который использует оригинальную Vand
(и нашел ошибку в моем Vnor по пути). все еще надеясь на лучшее решение, чем эти две функции.
Пробовал найти, например, 'or_reduce' в моем локальном numeric_std, но может найти только что-нибудь в Synopsys std_logic_misc; любое предложение о том, где искать? –
@MortenZdk - я не смог найти никаких логических операторов сокращения в http://standards.ieee.org/downloads/1076/1076.2-1996/ или http://standards.ieee.org/downloads/1076/1076-2008/(Дополнительный материал IEEE-SA). Я нашел их в библиотеках Synopsys ghdl, в частности std_logic_misc. Их также можно найти в Дэвиде Бишопсе, где предлагаются математические расширения (http://www.vhdl.org/fphdl/), http://www.vhdl.org/fphdl/numeric_std_additions.vhdl, http: //www.vhdl. org/fphdl/numeric_std_additions.html (Руководство пользователя). Предлагается для VHDL-201X. – user1155120
@Koontz: Спасибо за отзыв и ссылки IEEE :-) –