Здравствуйте. Помогите разобраться с логикой работы VHDL...Что-то вообще я её не понимаю...почитал...вроде всё логично, а начинаю делать - вообще никак...
Вот например:
На вход схемы приходит сигнал IRDYn, я его сразу же передаю на выход схемы RST:
RST<=IRDYn;
Сигнал выходит с задержкой на целый такт...Там, конечно, говориться про дельто-задержку...но не настолько же... Как мне сразу передать на выход данные?
Или вот ещё:
Создаю компонент, который будет сравнивать приходящий адрес (ADR1) и содержание BAR в конфигурационном пространстве для PCI:
ARCHITECTURE behavior OF ADR_CMP IS
begin
process(ADR1)
begin
if (ADR1 = BAR) then --Если адрес совпадает, то разрешаем доступ
ADREN<='1';
else
ADREN<='0'; ---Если нет - то нет...
end if;
end process;
end behavior;
В программе пишу:
SET_SIGNALS: process(ADREN)
begin
if (ADREN='1') then --Если разрешён доступ, то выставляем соответствующие сигналы
DEVSELn<='0';
TRDYn<='0';
DIREN_in<='1'; --Открытие буферных элементов для входнях сигналов
else
DEVSELn<='1';
TRDYn<='1';
DIREN_in<='0';
end if;
end process SET_SIGNALS;
Так вот, если в DIREN_in писать '1', то адрес не совпадает...но он же (DIREN_in) выставляется после того, как адрес определился...непонятно...
P.S. DIREN_in так же изменяет направление передачи данных с двунаправленой шины AD, по которой в фазе адреса приходит тот самый адрес, а в фазе данных должны уходить данные....Может поэтому глючит...