ВУЗ:
Составители:
35
end if;
end loop;
Addr<=addr_temp;
MRint<='1';
wait for 175 ns;
BusReq<='0' after 5ns;
wait until BusAck='0';
BusReq<='1' after 5ns;
DBus<=Data after 9 ns;
DataRdy<='0' after 5 ns;
wait until MemReq /='0' or ABus(16 to 18) /=
Board_id;
MRint<='0';
DBus<= Zs after 7ns;
DataRdy<='1' after 5 ns;
end process;
end Behavior;
Рис. 14. Поведенческое описание устройства
Объявление интерфейса для платы памяти MemoryBoard совпадает с объявлением, описанным с помощью
структурного стиля, различаются только определения архитектуры.
В объявлениях архитектуры Behavior вводятся три локальных сигнала - скалярный сигнал целого типа Addr,
сигнал Data массивного типа byte, и скалярный сигнал MRint перечислимого типа bit.
Операторная часть архитектуры содержит два процесса, начинающихся с ключевого слова process и
заканчивающихся выражением end process.
Процесс с меткой Memory содержит описание выборки значения одного из элементов массива
ROM_Contents и назначения этого значения сигналу массивного типа Data. Данное назначение происходит
каждый раз, когда сигнал MRint принимает значение '1'. Массив ROM_Contents является одномерным массивом
элементов типа byte и отображает данные, хранимые в ПЗУ.
Процесс Control последовательно описывает события, отражающие работу платы памяти. Когда
моделирование начинается в момент времени t=0, процесс приостанавливается на первом операторе wait до тех
пор, пока часть адреса Abus(16 to 18) не будет соответствовать константе Board_id и не поступит запрос на
использование памяти MemReq. При достижении этого условия с помощью оператора цикла loop выполняется
преобразование адреса на Abus в целое число, которое присваивается переменной addr_temp, а затем
назначается сигналу Addr. Подобное преобразование выполнялось с помощью функции IntVal в разделе,
посвященном динамическим объектам. После этого сигнал MRint принимает значение '1', что отслеживается
процессом Memory, который выполняет выборку соответствующего элемента памяти. Следующий оператор
wait вводит паузу длиной 175 нс, необходимую для ожидания готовности данных от ПЗУ. После паузы сигнал
BusReq принимает значение '0'. Как видно, в данном примере можно обойтись без внутреннего сигнала Done,
введенного в потоковом описании архитектуры DataFlow. Далее на следующем операторе wait ожидается
подтверждение BusAck. Когда этот сигнал примет значение '0', сигнал BusReq сбрасывает активный низкий
уровень, а порту Dbus назначается содержимое сигнала Data. При этом порту DataRdy назначается активный
уровень '0'.
Следующий оператор wait приостанавливает процесс до момента, когда плата памяти станет неактивной. В
этом состоянии сигнал MRint сбрасывается в неактивное состояние, порт Dbus переходит в третье состояние, а
порт DataRdy устанавливается в '1'. Устройство находится в состоянии ожидания следующего цикла доступа.
3. МОДЕЛИРОВАНИЕ В VHDL
Одной из основных возможностей языка VHDL является наличие развитых средств моделирования ВС.
Генерация тестов и возможность моделирования систем с выявлением и анализом неисправностей обеспечивает
выполнение верификации разработок на различных этапах маршрута проектирования.
Двa вaжныx пpинципa oпpeдeляют мoдeлиpoвaние нa VHDL. Вo-пepвыx, измeнeниe знaчeний cигнaлa вceгдa
вызывaeт выпoлнeниe всех нaзнaчeний cигнaлa в проекте, вcлeдcтвиe чeгo измeняютcя знaчeния цeлeй,
yчacтвyющиx в этиx нaзнaчeнияx. Этo, в cвoю oчepeдь, вызывaeт дoпoлнитeльныe измeнeния. Тaким oбpaзoм, в
peзyльтaтe пoлyчaeтcя пocлeдoвaтeльнocть coбытий. Oднoвpeмeннo мoжeт пoявлятьcя мнoгo нeзaвиcимыx
пocлeдoвaтeльнocтeй coбытий. Вo-втopыx, измeнeния мoгyт ocyщecтвлятьcя пocлe нeкoтopoй зaдepжки.
Сначала рассмотрим несколько понятий, необходимых для организации моделирования в VHDL.
3.1. Временные диаграммы
В пpaвoй чacти пapaллeльнoгo или пocлeдoвaтeльнoгo нaзнaчeния cигнaлa имeeтcя oднa или бoлee
вpeмeнныx диaгpaмм (waveforms), кaждaя из кoтopыx пpeдcтaвляeтcя cпиcкoм элeмeнтoв вpeмeнныx диaгpaмм,
paздeлeнныx зaпятыми. В кaждoм из элeмeнтoв диаграммы oпpeдeляeтcя знaчeниe cигнaлa и зaдepжкa, чepeз
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »