Применение языка VHDL при проектировании специализированных СБИС. Ивченко В.Г. - 28 стр.

UptoLike

Составители: 

29
MRQ управляет входами выбора микросхем ROM. Выход компонента TMR c именем Done переходит в
состояние 1 через 175 нс после переключения MRint из нуля в единицу и вновь переключается в нуль, как
только MRint отключается. Таким образом, запрос на шину задерживается на 175 нс после готовности линий
адреса. Done сохраняет BusReq в нуле до тех пор, пока не будет получен ответ BusAck от арбитра шины.
Шинный сигнал BusAck инвертируется и затем его конъюнкция с Done порождает сигнал Enable.
Это вызывает установку DataRdy в нуль и в то же самое время делает доступными тристабильные выходы
элемента DBR. Выходы DBR будут доступны до тех пор, пока BusAсk не переключится в единицу.
2.2.1. Объявление архитектуры для шинного интерфейса
Объявление архитектуры для описываемого шинного интерфейса показано на рис. 7. Архитектура DataFlow
компонента Businterface объявляет три внутриплатных сигнала Done, Enable и MRint. Константа Zs объявляется
и инициализируется, как массив высокоимпедансных логических состояний шириной в байт, Es соответствует
массиву значений "ошибка".
Каждое устройство, отмеченное на схеме, представляется предложением параллельного назначения сигналов
(concurrent signal assignment) в разделе предложений DataFlow, которое задает значения выхода после обработки
значений выходов других устройств. В некоторых случаях для модификации поведения устройства
используются управляющие сигналы. Символ "<=" служит для назначения сигналов.
architecture DataFlow of Businterface is
signal Done, Enable, MRint: wbit;
constant Zs:byte:="ZZZZZZZZ";
constant Es:byte:="EEEEEEEE";
begin
RDY: DataRdy <= not Enable after 5ns;
MRQ: MR <= not MRint after 5ns;
ACK: Enable <= Done and not BusAck after 5ns;
REQ: BusReq <= not(Done and BusAck) after 5ns;
TMR: Done <= MRint and MRint'delayed(175ns);
DEC: Mrint <=
MemReq and
not AnyOf(ABus(16 to 18) xor Board_id)
after 5ns;
DBR: with Enable select
Dbus <= Data after 9ns when '1',
Zs after 7ns when '0',
Es when others;
ABR: block (MRint = '0')
begin
Addr <= guarded ABus(0 to 15) after 12ns;
end block;
end DataFlow;
Рис. 7. Архитектура для шинного интерфейса
Все параллельные назначения действуют параллельно и порядок, в котором они записаны, не имеет
значения. Для демонстрации различных форм параллельного назначения сигналов детально рассмотрим каждое
из устройств. Первое предложение в архитектуре DataFlow для Businterface соответствует драйверу шины RDY.
Целью присваивания является порт DataRdy. Сигнал, который появляется справа, определяет, что DataRdy будет
все время равняться инверсии внутреннего сигнала Enable, но он будет задержан относительно изменений
Enable на 5 нс c целью учета задержки прохождения через буфер. Аналогично драйвер MRQ представляется
простым присвоением сигнала, переводящим порт MR в состояние, равное инвертированному значению MRint.
Вентиль ACK генерирует внутриплатный сигнал Enable. Вентиль REQ генерирует выход BusReq. В этих
случаях сигнал справа отражает логику в схеме. Сигнал Done генерируется одновибратором TMR. Выражение
для сигнала использует сигнал MRint'Delayed (175 ns), как точную варьируемую во времени копию MRint c
задержкой 175 нс. 'Delayed является предопределенным атрибутом любого сигнала. Другие предопределенные
атрибуты могут быть использованы для ссылки на предыдущее значение сигнала или для фиксации переднего
или заднего фронта импульса.
DEC устанавливает на MRint значение сигнала, полученное после обработки шинного сигнала MemReq и
части разрядов (с 16 по 18) адресной шины Abus. Board_id является константой класса, чье значение
окончательно определяется конкретизацией компонента Businterface в архитектуре платы памяти. AnyOf -
функция, объявленная в пакете Defs, которая возвращает значение типа MVL, равное '1', если в ее аргументе
установлен любой бит, и возвращает '0' в противном случае.
Тристабильный драйвер DBR реализован при помощи другого вида предложения параллельного назначения
сигналов, называемого выборочным (selected) назначением сигналов. В предложении имеется два переключения
(waveforms), но только одно из них влияет на DBus в данное время. Выбор осуществляется при помощи
значения сигнала Enable. Когда Enable равен '1', на выходах устанавливается значение сигнала Data,