Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003) (1095892), страница 36
Текст из файла (страница 36)
4.7 временным диаграммам. Присваивание значений сигналу разными процессами, параллельными операторами Рассмотрим, что будет происходить, если одному и тому же сигналу будут присваиваться значения в различных процессах. Пусть в одном процессе (ГВ /лава 4 выходному сигналу присваивается значение суммы входных сигналов с задержкой на ! нс., а в другом — значение разности с задержкой на 2 нс. Программа представлена в листинге 4.(0. , Листинг 4.10 епсаеу а1и2 Ев рова (а,Ьиап Епеедетг снопе Епиедеп); еп4( епеаиу а1и2; аясиасеосияе Ьеьаиаот оЕ а1и2 Ев ЬедЕп р1ия: рассеяв(а,Ь) Ьедап г(< = а ~ Ь аеаев 1 пя; епо ряооевв р1ияг пипия: ряооевв(а,Ь) Ьедап г(< = а-Ь аЕаев 2 пя; епб ряооевв палия; епо аяоиасеоаияе ЬеЬатвог; Результат работы модели представлен на рис.
4.8. Рис. 4.8. Временная диаграмма работы устройства, описанного я листинге 4.10 В ПрОцЕССЕ р1ия уетаиаВЛИВастея ЗаДЕРжКа ПрИСВаИВаНИя ЗНаЧЕНИя СИГНаЛу в ! нс., в то время как в процессе пгпия, запускаемом при событиях изменения тех же сигналов, — задержка в 2 нс. Сигнал имеет два источника, поскольку присваивание г) выполняется в обоих процессах. Однако на выходе мы видим только результат работы второго процесса, т.
к. в нем событие планируется на более позднее время (т. е. второй процесс стирает результат, полученный в первом процессе). ~юектирование на ИзО! 179 1спольаование списка чувствительности процесса (атрибутов сигналов. (ромоделируем Р-триггер, срабатывающий по переднему фронту тактового ипульса. Пусть триггер имеет асинхронный сигнал сброса — с1. Ьссмотрим альтернативные варианты поведенческого описания такого ()иггера.
Первый вариант описания представлен в листинге 4.11. Пветвиг 4.11 ве зеве.ясв 1одзс 1164.е11з ве зеее.пизззегас яец.е11; пыьу 6сг 1в озс (ез Ьп ясц и1од1сз с1)<з ап яьв зз1одз.сз с1з 1п яе6 с1сдз.сз с(: 1попс ясв и1одтс; пс(: опе яеи с1одзс); яа епЕЫу Йсг; ясьзееоеше Ьеияузог ов цсс ав едзп езес: ркооевв (с1) Ьедзп зв с1 = '1' ЕЬеп д< = '0'; пс(< = '1'; еп6 1Е; еп6 ряооевв геяеез есрсе1 з рпооевв (с1К, с() Ьедгп зв с1К'еззепе еп6 с1)з = '1' янезам д< = цз е1ве д< = д; еп6 1вз епа рпооевв оиерсе1; езрсе2: рпооевв (д) Ьедзп пс(< = пос дд еп6 ряосевв осерос2; аа еясЬ4еесеппе пенал.огз )то описание содержит три процесса.
тво Глава 4 Первый процесс гевес предназначен для сброса триггера. В списке чувствительности процесса присутствует сигнал с1, — процесс гевес активизируетСя Прн ИЗМЕНЕНИИ СИГНаЛа о1. ТЕЛО ПрсцЕССа гевее СОСтаВЛяЕт ОПЕратОр 1И С ЕдИНСтВЕННОй СЕКцИЕй Е)ьео, КОтОрая ВЫПОЛНяЕтСя, ЕСЛИ с1 = '1'.
ТаКНИ образом, сброс триггера происходит по восходящему фронту сигнала с1. Второй процесс — процесс оосрос1, используется для определения значения прямого выхода триггера. В списке чувствительности этого процесси ПРИСУтетВУЮт СИГНаЛЫ о1К И с), — ИХ ИЗМЕНЕНИЕ ПРИВОДИТ К аКтИВИЗаЦИИ процесса. Тело процесса ооерос1 составляет единственный оператор дв. В условнои выражении этого оператора присутствует атрибут сигнала о1х — атрибут ечеое. КОНСТРУКЦИЯ с1)с'еоеоо еос) с1)с = 1 ПРИНИМаЕт ЗНаЧЕНИЕ Еввь при приходе восходящего фронта тактового импульса.
В этот момент времени в триггер записывается значение его входа. ПрсцЕСС ооероС1 таКжЕ аКтИВИЗИруЕтея Прн ИЗМЕНЕНИИ СИГНаЛа С). ОдиаКО, если это изменение происходит в момент времени, не соответствующий переднему фронту тактового импульса, то выполняется ветвь езве оператори 1г — с)< = с) (триггер сохраняет свое прежнее значение). Обратите внимание, в этой конструкции происходит чтение выходного порта ч.
Для того чтобы эта конструкция могла быть выполнена, сигнал с) должен использоваться в режиме зооое. Вообще, в данной конструкции можно и не исполь. зовать ветвь езве, работать она будет точно также. Однако использовании подобных конструкций может облегчать понимание логики работы модели. Поскольку изменение только сигнала с) не влияет на значение выходного СИГНаЛа, ИСКЛЮЧЕНИЕ ЕГО ИЗ СПИСКа ЧуВСтВИтЕЛЬНОСтИ ПрсцЕССа ооерос1 НС повлияет на логику работы прооцесса. Включение таких сигналов в списои чувствительности используется только для облегчения понимания логики работы процесса, поскольку указывается, что на их базе определяются зни.
чения выходных сигналов. Если сигнал ст исключить из списка чувствительности процесса оисрос1, ти условие в операторе 1в может быть упрощено, что представлено листин-, гом 4.)2. ~ 'Листинг 4.1й оисрос1: рвоаевв (о1)с) Ьея1п М о1)с = '1' Етьеп с)< = ГН еед Ы; етии рвооевв ооориС1; 'ровигирование ив МНР(. 1одобно тому, как это было рассмотрено для процесса опсрсе1 (листинг (.11), триггеру будет присваиваться новое значение только по восходящему )ренту тактового импульса. Здесь восходящий фронт выявляется тем, что, с иной стороны — если сработал процесс оперпь1, то было событие измене(ия значения сигнала (это только сигнал с1и) из списка чувствительности листинг 4.12); с другой стороны, — йй с1и = '1' дает условие, что сигнал ли равен 'Г. Таким образом, с1и изменился и стал равен Т, что и является (ередним фронтом тактового импульса. ;рстнй ПрОцЕСС опкрпк2 ПрЕдНаЗНаЧЕН дпя ОПрЕдЕЛЕНИя ЗНаЧЕНИя ИНВЕрСНО- о выхода триггера.
Этот процесс активизируется при изменении прямого ~ыхода триггера. Конструкция и<(< = пос ян также может быть выполнена ельке в том случае, если порт ч используется в режиме йпопе. 1ийствия, выполняемые в трех процессах, можно совместить в один (лисинг 4.13). йистйнг4.1$':. 1)~~,' -~ " .,","".." ','"~" .'",,"',.
',"'-'.„' ":.'.-'-,.:.:" ' ',~)~"-'. ф:.,~;.:;;~~';:: "~'.: .'$~~ ссМевсесве Ьеиао1ох2 ой <)ск 1в ~11оисрисв: ркосевв(с1, с1И) Ьадйп 1й с1 = '1' апа с1'асепе ЕЬвп с(< = '0'; пя< = '1'; впа Ай; 1й с1И = '1' апс с1И'ечепк Еьвп с(< = еб по< = пос о впа йй; сит рвосввв а11оиериев; ва акоьйсвссисв Ьаьас1ок2; 1ри таком описании сигнал <( не используется в правой части оператора (рисваивания, поэтому, в отличие от предыдущего варианта, этот порт ст в ВКЛарацИИ впсйсу <)Ск МОГ бЫ ИМЕТЬ рЕжИМ оис. )кесто списка чувствительности может быть использован оператор вазе, ио продемонстрировано листингом 4.14.
ссьхивскпвв Ьеьатйокэ ой дек йв вихп .еаегп ркосевв (с1) Ъадйп йй с1 = '1' Еьвп Ч< = '0'; пс(< = '1'; впо йй; ваа рвосввв казак; икрисв: ркосввв Ьвяйп 1Вг Глава1 ос< = все гн ывхв оовхЗ с1Х'емеле еквт с1к = еквЗ рассеяв ос ерове; ~на вхсьхеесеиее селатп'.охЗ; Список чувствительности в описании процесса ооеросв не указан. Значит, по умолчанию, процесс срабатывает при изменении любого из его входны1 сигналов.
Конструкция ывае вое1з приостанавливает выполнение процесса до вы. полнения условия, задающего передний фронт импульса. К этому момент) процессом смеросе уже выполнены последовательные операторы присваи. ВаНИя ЗНаЧЕНИй СИГНаЛаМ Ч< = юз; И пс< = оов а;. ОдНаКО, КаК МЫ ПОяеия. ли в предыдущем разделе, новые значению фактически присваиваются сигналу только в момент завершения процесса, а оно отложено до моменп прихода переднего (восходящего) фронта импульса сигнала сзж Если событие уже произошло в момент срабатывания процесса, то условие ывье овезз истинно, и процесс завершится без приостановки. Временная диаграмма работы триггера (для всех вариантов) представлена ню рис.
4.9. Рис. 4.9. Временная диаграмма рабаты триггера, варианты описания которого, приведены в листингах 4.11 — 4.14 Использование пакетов При моделировании устройств на высоких уровнях абстракции нередкю возникает необходимость в создании новых типов. Например, они могуг использоваться для описания входных и выходных сигналов моделируемьп объектов.
Ясно, что такое описание необходимо выполнять до декларативной части еве1е1г объекта моделирования. Однако в структуре модели места для него не предусмотрено. Такие описания необходимо включать н пакеты. П оенти ование на МНО(. (вз Кроме того, в пакетах удобно размещать процедуры и функции, часто используемые различными объектами моделирования. Промоделируем, например, элемент памяти конечного автомата, который МОжЕт НаХОДИтЬСЯ В ОДНОМ ИЗ СЛЕДУЮЩИХ СОСтОЯНИй: 1с(1е,еогх, Ьагс( есог(с, еггог. Опишем новый тип аппо всвое и поместим это описание в пакете епсо раск. Пусть файл, в котором находится этот пакет, называется рас((1.чпо. Текст приведен в листинге 4.15.
-;Литое~юг 4ЛВ рес(песе аппо расх ав гуре аппо агапе ав (1с11е, сеогх, Ьагс( сепг(с, еггог(с епб аисо рас(с; Текст модели, использующей введенный тип, может иметь следующий вид (листинг 4.6). Листннг,"4.16 -;; пве рас(с1. аппо рас(с. а11; епелпу е1 (песе Ав ропп (ьпвсаге: 1п аппо ягаге; опевсаге: ьпссс арго агапе; с1(с: 1п Ььг); епа епМЕу е1 слепи егсвлсесппге Ьеьачьог ог е1 песе З.в Ьедьп ргосевв ( о1(с ( Ьеаьп лг с1(с'ечепп епс( о1К = '1' ЕЬеп опсвгасе< = ьпвсаге; е1ве оисвсаге< = оисвгасе; епс( 1г; епа ргосавв; епа агсьасесепге Ьеьачьог; Использование секции а1ве в данном примере не обязательно.