Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003) (1095892), страница 49
Текст из файла (страница 49)
В данном разделе мы проиллюстрируем другой стиль формализованного описания — прямое моделирование временных диаграмм, безотносительно к тому, кто, какое устройство в структуре системы с заданной шиной их формирует. Спецификация транзакции шины РС! (рис. 5.!) в данном примере программируется в несколько упрощенном виде. Как и на рисунке, модель строится для 32-разрядной шины, при использовании 32-разрядных адресов, для команд шины "чтение". Считается, что ведущее устройство — быстрое, и не вносит задержек, дополнительных тактов в фазах данных при выполнении транзакции. Программа-спецификация на ЧНО!. приведена в листинге 5.!.
Глава 5 гвО ';"'ЛИСтИНГЕЛ ', ° '. '; -, - ' ". " ";- ".'"," .'' ° о"':,1 ': -- описание пакета (должно быть выполнено а отдельном файле) рао)саде рс1 С 1в аура асс Сцзе 1в актау (ров1Мтв галде <>) оЕ 1паедег 11Ьгагу Ееее! пве Ееее.всб 1одас 1164.а11) чвв рс1 С.рсф С.а11; впг1ау РС1 Сгапвасгаопв 1в депвг1с (Р: 1павдвг) -- тактовая частота шины РС1 йе1аус а3ше) -- типовая задержка изменения сигнала -- после фронта сигнала тактироаания сабс)г Ьо14, сбаса Ьо14: а)юае) — времена выдержки сигнала адреса и сигнала даннык (после тактирования) Ьугез со4ес вс4 1одас чесгог (3 6оепао 0); — позиционный код байтов на шине данных И): — Ьугез собе(1)='1' — байт используется для передачи — Ьугев собе(1)='0' — байт не используется для передачи юогбв с ровШче) — число слов в транзакции Сагдег бе1аув: асс Сфше(1 ао юогбв)с --задержка обрашений -- к ведомому устр-ву, в нс РС1ссппапбс вс4 1одгс чессог (3 4оепао 0) — код команды шины РС1 епа РС1 Сгапвасгфопз) агоЫ.Сеоачге геа4 Сгапвасгфопв ой РС1 Сгапвасгйопв 1в Сура Ьцв бага 1в ('Л','()','Х'); оопвеапа Сац: Иле:=32 пв; --1/Р ; оопваапа Сацг, геа1:=32; --1/Р; в1аанс1 с1)с: вгб 1одас:= '0'; в1впа1 РЕХМЕ, 1Е))у, тдру, 1В()у, ))ЕЧЯЕЕ: БС4.
1одас: = ' 1 '; в1РВюа1 ДЬ: Ьцв бага:='Х'; в1дпа1 С ВЕ: вг4. 1одйс чессог (3 4оепао 0):="ХХХХ"; — контрольные сигналы для отладки в1дпа1 и: 1паедвг; в1дпа1 1: паачга1:=1; в1зща1 1авгбага: Еоо1вап: =сгце; Практика применения МН01 Ьед1п РС1 С1Кз ргооевв (с1)с) -- временная диагразаса сигнала С1)с Ьед1п 1Е с1)с='1' ЬЬеп с1)с<='0' адаег Сац/2з е1ве с1)с<='1' адаег Сац/2з ЕЗЪЙ РГООеев РС1 С1)сз РС1 Ргащез ргооевв — временная диаграмма сигнала РЕИ1ЕМ Ьед1п — начинаем транзакцию после первого же момента тактирования ма1В ипв11 г1в1пд едде (С1)с)з — с1)сО РвдЕЕ<='О' айаег йе1ауз маАЬ опв11-г1взпд ес)де (С1)с)з — пропускаем такт фазы адреса — дерзим сигнал РЕЛМЕ='0' до начала последней Фазы данных; — процесс РС1 Ргаше знает число передаваемых в транзакции слов, могбз 11 могбв>1 ЬЬезз Рог 2' 1п 1 Ьо (мозбв-1) 1оор — цикл по Фазам данных маЫ опМ1 (г1в1пд ес)де (С1)с) апС( ТЕ1>У='0')з -- последний такт -- текущей Фазы данных — перед первым тактом последней Фазы данных РВАИЕ<='1' адаег с)е1ауз — ждем конца последней Фазы данных мЫЬ опМ1 (г1в)пд ес)де (С1)с) атзо ТЯВУ='О')з ези1 ргооевв РС1 Ргаше; мза розовев РС1 Ргаще; РС1 М): ргооевв — временная диаграмма сигналов по шине АЭ Ьедап ма1Ь мпМ1 (РРдМЕ='0'); -- обнаружено начало транзакции дб < 'д'з -- Фаза адреса ма1Ь ппМ1 гавзпд ес)де(С1)с) ' ма1Ь Рог пас)с)г Ьо1<); -- Фазы данных 1авсс)атас=йа1ве; с)апа рлавев: 1оор с1ос)св Ьп с)апарлавез 1оор 1Е (ТЕОР='О') ЬЬеп гвг Глава 5 маЫ шъе11 тз.вз.пд едде(С1)с); 11 (РВАИЕ='1') тЬеп 1авсдата<=отнес — последняя Фаза данных еззд 1йз ма1В йот сдата Ьо1й; еиът с1ос)св ъл датарЬаяе; -- конец текущей Фазы данных е1ве епд 1оор с1ос)ся з.п датарЬавез азат дата рЬаяея мЬеп 1автдатаз -- конец текущей транзакции епд 1оор дата рлаяев; АЮ<='Х'з епй ртооевв РС1 Апз РС1 С ВЕ: ртооевв — временная лиаграъз<а сигналов по шине С/Ве() чвтЪеЪ1е 1авсдатаз Ьоо1еаззз Ьед1п мат опМ1 1а11ъпд едде(РЯАИЕ); С ВЕ <<РС1сопвщпдз -- в Фазе адреса — команда ма1В шзт11 тз.взлд едде(С1)с) з ма1В Вот таддт Ьо1дз 1ав ода та з мйа1яе; дата рЬаяевз 1оор С ВЕ<=Ьутев соде; -- в Фазе данных — код задействованных -- байтов шины АЭ с1ос)св ъп с)атарЬавез 1оор 1Е (ТНРУ='0') ВЬеп ма1т опШ.
тъвъпд ейде(С1)с); 1Е (РКАИЕ='1') ВЬЕП 1аятдатаз=ттцЕЗ --ПОСЛЕдияя Фава даННЫХ епд Ыз маат Рот адата Ьо1дз еи1В с1ос)св ъп датарЬаве; — конец текущей Фазы данных е1ве майт шз ТВ)Жз епд 1Е) епд 1оор с1ос)ся 1п датарЬаяез еиъв дата РЬаяев мЬеп 1автйатаз — конец текущей транзакции апд 1оор дата рЬаяеяз 7рактикв применения МН01 Ябб : ВЕ<="Х)С(Х" / юо Ржооевв РС1 С ВЕ; -- временная диаграмма сигнала 1ВОУ() )С1 1В))У: рхооевв Ьедйп <айа опа11 РВВИЕ'еъепо; цй йаШпд е<)де(РВАИЕ) Ваап <айа ппп11 гйвйпд воде(С1)<); )Воу <в'0' айпек де1ау; е1ве <айе ипп11 (г).вйпд е<)де(С1)<) вхх$ ТВ))у='0'); )ВОУ < '1' айаек <)е1ау; еьвй 1й; вх) ржооевв РС1 1ВОу< -- временная диаграьв<а сигнала ТВОУ() ~01 ТВОу: ржооевв <аг1аЪ1е 11 йппедек; ак)йп <айа опв11 йа111пд е<)де(ЕВШИЕ); — ждем начала транзакции — после момента тактирования Фазы адреса вайа ппШ гйвйпд е<)де(С1)<); — входим в цикл формирования сигнала ТВПУ готовности — ведомого устройства для фаз данных (1:=1; (<=11; 5аса РЬавев: 1оор -- цикл, пока РВАИЕ не покажет конец транзакции (й 11>0 ВЬап 1й сагдес де1аув(11) >Санг Мьеп -- тогда Фаза данных — несколько тактов )ВРУ<='1' айзек <)е1ау," — устанавливаем признак неготовности — ведомого устройства и</йагдеп ое1аув(11)/Сац; ьечега1 с1ос)<в: йок )< йп 1 ао и+1 1оор ваШ цпМ1 г).вйпд е<)де(С1)<); ех) 1оор вечега1 с1ос)<в; е1ве п<=0; а1ве йй ьагдес <)е1аув(1) >Садк Ваап ТЮУ<='1' айзек <)е1ау; п<ыгагдеп <)е1аув (1) /Сац; Глава 1 веуега1 с1ос)<в2: Еог )< 1л 1 ао и+1 1оор иа1в лпМ1 г1в1пд ес)де(С1х) ) елд 1оор вечега1 с1оскв2; в1ае п<=О; проверяем, не была ли текущая Фаза данных последней 1Т (РВРЛЕ='1') ВЬеп — конец транзакции 11:=О) 1<=11; ТИ)Х<='1' айеы с)е1ау) евАв 1оор с)аса РЬавев; в1ве Н 11=ыогс)в Впво 11:=1) 1<=11) в1вв 11:=11а1; 1<=11," впл И) -- переходим к следующей Фазе данных епа 1оор с)ага рпавев; — транзакция завершена епб распеве РС1 ТРАХ; Рс1 ()ечЯЯЬ: ргоовве — временная диаграьи<а сигнала Оечяе),й лвд1л маем опе11 Тгаше'еуепг; Ы Та111пд ес)де(РЯБЫЕ) В)ыпь ыаЫ оле11 г1в1пд ес)де(С1)<) ) ПЕЧЯЕ1 < 'О' айеы с)е1ау; в1ае вам ипг11 (г1я1пд ес)де(С1)<) апо ТРА)Х='О'); 0ЕуяЕ( <е'1' аяеы с)е1ау; Епб Ы) ю1(( ргооеее РС1 ВЕЧЯЕ1 ~ епЯ ыоМВеселгв геаб Сгапвасгуопв; впМеу сенс 1е епа еле1еу Севг) ысп1ееоеигв Гевг1 ой Севг 1в ооаролепе РС1 Сгапвассуопв Та депег1с (Р: 1леедвг; ТВ))Х<='О' айвег с)е1ау) ыа1В иле11 г1в1пд ес)де — устанавливаем готовность на следующий такт (С1)<); — держим готовность до моыента тактирования трактика применения МНО1 265 с?е1ау: взлез Саз?с?т Ьо1с?, Сс?аяа Ьо1сп Еззвез Ьуеея сос?ез Ь?С чесеок (3 ззоипво О); иотс?в: Ззовьв1чвз СатдеС с?е1аувз асс С?зве(1 Ео иотдв) з РС1совпапс?з вес? 1ояьс чесеот (3 зтовпво О) ); впз? савкзопвпв РС1 Стапвассьопв; звд?п зу СеяС: РС1 Скапяасезопя явпвв1о вар (Р=>33, с?е1ау=> 5 пв, вас?с?т Ьо1с?=>15 пв, Сс?аеа Ьо1с?=> 20 пв, ЬуСея сос?е=>"1111", иозз?в=>4, Сатдее с?е1аув=>(20,20,40,20), РС1сопътазк?=> 0110", — команда шины РС1 "чтение памяти" взв аваЫ.евсвчвв Сеяе1? () этой программе мы строим отдельный процесс для формирования каждой зз заданных на рисунке временных диаграмм.
Взаимодействие процессов использует только те сигналы, которые определены стандартом шины РС! и зрисутствуют на рисунке. ОПИСаННЫЕ В арХИтЕКтурНОМ ТЕЛЕ СИГНаЛЫ п, з, ?аяпс?апа, С ТОЧКИ ЗрЕНИя ЛО- 0(ки работы программы, вполне могли бы быть описаны и как переменные. Однако определение их как сигналов удобно лля анализа и отладки програмчы, поскольку изменения сигналов мы можем легко отслеживать на временных диаграммах, а переменные на временные диаграммы не выводятся.
Процесс Рст с?к формирует последовательность тактовых импульсов шины РСП Процесс Рст и» соответствует временной диаграмме сигналов по шине АР. Полное выполнение процесса соответствует одной транзакции, формированию временной диаграммы сигналов по шине АР в ходе выполнения одной транзакции. Запускается процесс по событию изменения сигналов Рвлмв, типу, с?х.
Запустившись, процесс Рст лп останавливается в ожидании перехода сигназа Рвлмв из 'Г в 'О'. При обнаружении ниспадающего фронта сигнала Рвлмв, процесс продолжает работу. Начинается Фаза адреса — на шину АР выставляется адрес ведомого устройства (на диаграмме адрес на шине АР обозначается буквой 'А'). Адрес держится на шине до очередного восходящего 2бб глава ь фронта сигнала тактирования с1к и далее — на время выдержки сигналь адреса (параметр настройки садах ьс1сз).
На этом Фаза адреса заканчивается, и начинается Фаза данных, возможно, первая из нескольких. В Фазе данных на шине могут находиться значения пересылаемых данны или неопределенные значения, что указывается управляющим сигналоя таох шины РСь: если тапх=о, то на шине — данные (на диаграмме обозначаем "вл), если таох~о, то на шине неопределенные значения (на диаграмме обозначаем "х"). Фаза данных может занимать 1 такт или может быть растянута на несколько тактов (для того чтобы дождаться поступления данньп на шину). Как это принято на синхронных шинах, проверка значений всеь сигналов производится в моменты тактирования. На шине РС! — это момент восходящего фронта тактового импульса на линии С!)~.