Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003) (1095892), страница 31
Текст из файла (страница 31)
ПОСЛЕ тО Ся КаК ОХраНяЕМЫй СИГНаЛ ВНОВЬ ПрИМЕт ЗНаЧЕНИЕ Ссяя, пяп дяея Ьпя ПОЛуЧИт значение из буфера с задержкой 4 нс. Для того чтобы действие декларации отсоединения распространялось на всс ~ охраняемые сигналы данного типа, в декларации указывается ключевое ело- ~ во а11. В таком случае декларация должна стоять после описания всех сигналов этого типа. Для того чтобы действие декларации отсоединения распространялось на всс сигналы данного типа, которые еще не декларированы, необходимо исполь- ЗОВатЬ КЛЮЧЕВОЕ СЛОВО есьепя. ДЕКЛарацня ОтСОЕдИНЕНИя, ВКЛЮЧаЮщая В СЕбя это слово, должна стоять последней в списке описаний (деклараций) блока.
базовые конструкции моделей на языке ((НО1 147 Вложенность блоков и организация иерархической структуры модели Полный синтаксис описания блока имеет следующий вид: Ыос)с 1аЬе1с Ь1ос)с( (статс(ес) ехртевяаоп) ) [1а] [депетас (депетас ьптетеасе 11ят) с (депет1с ясар (депет1с аввосьатьоп 11яс); ) ] [роте (роте аптеттасе 11ят); [роте псар (ротс аввостасаоп 1).яс) с] ) (Ь1ос)с с(ес1ататьссе 1сие) Ьедап (сопспттепс всасеспепся) еса Ь1ос)с (Ь1ос)с 1аЬе1]; Декларативная часть позволяет описать объекты, которые будут использоваться только внутри блока, которому она принадлежит.
В декларативной части блока описываются любые типы объектов, которые могут присутствовать в декларативной части архитектурного тела. Все объекты, видимые внутри того архитектурного тела, к которому принадлежит блок, видимы внутри б~ока. Сами описания блоков располагаются внутри архитектурного тела. Блок может содержать внутри себя другие блоки. Правила видимости' для вложенных блоков такие же, как и для вложенных процедур. Вложение блоков друг в друга позволяет создавать иерархические структуры моделей, однако на практике вложенность блоков используется редко.
Как правило, для декомпозиции проекта и описания иерархической структуры объекта используется механизм компонентов. Для организации обобщенного описания блоков используются конструкции депетдс и депет1с веер. Первая из них, депет1с, служит лля описания объектов, значения которых задаются во второй конструкции, в депетас асар. Аналогично, конструкции роте и роте зеар служат для декларации портов и связывания входных и выходных сигналов блока с внешним миром. Пример приведен в листинге 3.37.
! Листинг 3.37 етсъ1сесспте соптт1ссес) от ехаяср1е ептату 1в сопвсапс яад се1с)енс роя1с1ссес=16; в1дпа1 я1,яа,язс Ььт ссесеот (О Ео в1д се1с)ть-1)с в1аяса1 ве1с Ьас) (48 Глава 3 Ьед1п пкзхз Ыос1с депег1с (сзЫтнз ровгк1че)з депегас азер (>зЫЬЬ=>яад еЫсЫ; роге ( йО,д1з 1п ЫС честог(0 Ко сс1йтЬ-1)з уз опе ЫК частот (О Ео зггйСЬ-1)З ве1з 1п Ык) з роте ппр(дО=>я1, й1=>в2, у=>яз,яе1=>яе1); сопвгапг кето: ЫС честот(0 Ео еЫтЬ-1)з=(отззегв=>'0') в1япза1 дасей йО,датей 61з Ыт чессот (О Ко еЫтЬ-1) з Ьедап датей сЮ<=дО ззнеп яе1='0 ' е1ве кето; дакей д1<=й1 епеп ве1='1' е1ае кетоз у<=дасед сЮ ог датей 61з епй Ь1ос)с пкзхз епй агсЬЫесепге сопстзчейз Конфигурирование обьектов, содержащих блоки Конфигурирование блоков подобно конфигурированию компонентов.
Когда пишется конфигурационная декларация для архитектурного тела, содержащего блоки, она должна отражать структуру блоков. Декларация архитектурного тела в этом случае имеет следующий синтаксис; сопк1дпгак1оп соптгдитасгоп пазпе ок ептз.еу пате 1в Ыос)с сопбгдптасз.оп епй [с~заадогаМоп] [соптгдитат1оп папзе) з Секция ыосх сопагдптатзоп ИМЕЕТ Здесь сЛедующий сИнтакСис: Ест (атсЫСестите паве ] Ыос)с 1аЬе1) (Ыос)с сопт1дптасгоп кот сопзропепк врес1тгсак1оп [Ыпс11пд 1пй1сат).оп;] [Ыос)с соптгдптасгоп) епй Еогз) епй кот ИЗ СИНтаКСИСа КОНСтруКцИИ ВИДНО, ЧтО СЕКЦИИ Ыос)с сопайдптат1оп МОГут вкладываться друг в прута. В листинге 3.38 приведена в качестве примера модель интегральной схемы, которая определяет задержки на входах и выходах.
5азовые конструкции моделей на яэыке ))Н01 )49 ~П 'е,ю~," .. „.,","';;,;2-":-:;,,".-;К °,;",', ';;.'-,",," т,' дз) ',- "' .;„,;,, -,'ф...зз,, — Деклараиия объекта моделирования сзгсидг езг1гу сдгси1с 1в депег1с (1праб де1ау, оисрас) бе1ауз бе1ау 1епдсЬ)з рога (зп1, 1п2, 1пЗз 1п ЬЫ) оис1, оиг2з оиг ЬЫ) з апй епв1пу сз.гсидгз — описание архитектуры ю1сп рас) с)е1аув для объекта с1гсшг агсИГесвиге и1СЬ рас) с)е1аув ог с1гсизг 1в ссзропепг виЬс1гсшл 1в ропп (а, Ьз )л ЬЫз у1,у2з оип Ъ1П) з епо ссавипзапп виьсзгсшгз в1дпа1 с)е1 зп1, с)е1 1п2, с)е1 1пЗз Ь1гз в1дпа1 ип<)е1 оис1,ип<)е1 оис2з Ъ1пз )ад)л зприс де1аувз Ь1ос)< дв Ъед1п де1 1п1<=зп1 аггел 1прад <)а1ауз з)е1 зп2<=1п2 аггел 1прад ба1ауз с)е1 1пЗ«=1пЗ аггег 1праб <)а1ауз езв1 Ь1ос)< 1прис <)е1аувз 1ипсс1опа11суз Ьдос)< 1в в1дпа1 зпсеппебдагез Ь1пз Ьед1п се111з с<вздипзепв виЬс1гси1С рога пар (с)е1 зп1, <)е1 ).п2, ипс)е1 оиг1,1псегпза61аге) з се112 з с<взрспепг виЬс1гсшл рога аар (1псеппес)1ате, <)е1 )пЗ, ипс)е1 оис2,орел); епзЗ Ьдос)< йипсг1опа11су) оитрил де1аувз Ь1ос)< 1в Ъед1п оил1<=оп<)е1ауеб оии1 агвег оиира<) бе1ауз оис2<=ипбе1ауес) оии2 агпаг посрами бе1ауз епб Ьдос)< оигрис бе1аув; ез6 агсМПесгиге юзЬЬ рад бе1аувз (50 Глава З -- Декларация конфигурации Ен11 для объекта с1гси1С сопЕ1япгас?оп Еи11 оЕ с?гсшг 1в -- для архитектурного описания ае1сь рад.
де1аув" Еог и?СЬ рад де1аув -- лля блока "Еопсс?опа1?оу" Еог Еопсс?опа1?су -- задаем конфигурацию, область действия которой — данный блок Еог а11: воЬсагси?С ива епс1ву иогк.геа1 виЬс1гси?с(ьав?с) епд Еог; епд Еог; епд Еог; епд сопЕ1япгав?оп Ео11; В ЭТОМ ПрИМЕрЕ арХИтЕКтурНОЕ ТЕЛО и?СЬ рад де?аув ОбЪЕКта с?гсо1? включает в себя блок (прш де!ауз, моделирующий входную задержку, блох ощрц( ()е!ауз, моделирующий выходную задержку, блок (цпс(]опа]](у, моделирующий основную функцию объекта. Конфигурационная декларация связывает компоненты воьс?гсо?с блока еопсс?опа? еу (все компоненты, а?1, их там два — се?11 и сещг) с объектами геа? вньс?гон?с, с архитектурой Ьавйс из библиотеки мог]с. Конструкция еог и?сь рад де?аув указывает имя архитектурного тела, конфигурирование которого выполняется; конструкция еог еспсс?опа??гу определяет, в рамках какого блока будет действительна эта конфигурация. Декларируемая конфигурация еощ не содержит конфигурационных спецификаций для двух других блоков модели, поскольку в их состав компоненты не входят.
Подпрограммы В полном соответствии с классической терминологией языков программирования, в языке ННР/ процедуры и функции объединяются общим термином — подпрограмма. Процедуры Описание процедуры. Описание процедуры имеет следующий синтаксис: ргоседпге пате ((рагаиесег ?псегеасе 11вг)] 1е (виьргодгаи дес1агаг?уе рагг) Базовые конструкции моделей на языке ИЧОс Ьед1п 757 (яес(пепе].а1 яеаеезяепе) азу [ргосеаиге1 [папе] з Декларативная часть процедуры виьргодг с]ес1агасххие рагс может включать в себя описание типов, подтипов, констант и подпрограмм, которые в дальнейшем могут использоваться только внутри этой процедуры. Эти описания являются локальными. Сигналы не могут быть описаны как локальные данные подпрограмм.
Например, описание процедуры может быть таким, как представлено в лис- тинге 3.39. Листинг 3.39 ргооеаиге анегаде яаязр1ея 1в зтаг1аь1е соеа1з геа1:=О.сз Ъедхп аввегг яаязр1ея'1епдсЬ > 0 веззегхеу Газ1ихе; хог хпс]ех з.п яапр1ея'газзде 1оор Соеа1згьоеа1+яаязр1ея(1пс]ех)з епа 1оор; аявадез=еоСа1/геа1(яалр1ея'1епдСЬ)з впа ргооеаиге аззегаде яатр1еяз Листинг 3.40 ргосеаиге оо аг1СЬ ор (орз 1п гипс соое) ьв зтаг1аЬ1е геяи1ез зпгедегз Обратите внимание на условие в операторе аввеге.
В условии указано зна- ЧЕНИЕ ВЕЛИЧИНЫ яаззр1ея'1епдСЬ. ЕСЛИ ЭтО ЗНаЧЕНИЕ ПОЛОжИтЕЛЬНΠ— ОНО рассматривается как правильное, в противном случае возникает ошибка УРОВНЯ хах1иге. Тело процелуры может содержать вызовы других подпрограмм. Список параметров. Если в процедуре имеется список параметров, то его описание имеет следующий синтаксис: ([ еопвеапе ] гагхаьзе ] вхдпа1 ] ыепсххгег (,...) : [зп ) оие ) зпоие] яиЬСуре 1пд1сас1оп [з=ясасхс ехргеяя1оп])(,...) Для каждого параметра может задаваться: класс данного (константа, переменная, сигнал); имя, под которым он будет использоваться в процедуре; зид ('и ] оие ] хпоие), тип и, возможно, начальное значение. Пример приведен в листинге 3.40. Глава 3 саве ор 1в еиеп айй => кевв1С :=ор1+ор2; еиеп воЬСкасс => кевс1Е :=ор1-ор2; епй саве; йевс<авево1с асеев Трй; епй рхосейпве йо акьеь ор; Параметрам процедуры могут присваиваться значения по умолчанию. Значения по умолчанию могут присваиваться только параметрам, константам или переменным вида ап (но не сигналам!).
В качестве формальных параметров процедур могут использоваться неограниченные массивы. Это позволяет расширить область применения процедур за счет того, что фактические параметры при вызове смогут принимать более широкий диапазон значений. Соответствующие фактические параметры должны быть массивами с заданным диапазоном, тип их элементов должен совпадать с типом элементов неограниченного массива — формального параметра.
Суммарная информация о параметрах процедур. Итак, описание каждого формального параметра может иметь пять аспектов: [з класс объекта (константа, переменная, сигнал); [з имя формального параметра; [] вид (1п, опе, ьпопе), указывающий направление обмена между процедурой и вызвавшим ее объектом, а также возможность модификации значения этого параметра внутри процедуры; 0 тип или подтип формального параметра; 0 значение по умолчанию.
Олераглор веепвп. Оператор используется для завершения процедуры, до того как она будет полностью выполнена. Действие этого оператора по отношению к процедуре сходно с действием оператора апас по отношению к циклу. Оператор веепвп имеет следующий синтаксис: [1аЬе1: ] веесвп; Например: ьв кевее; ='1' СЬеп вессвп; епй ЬЯ; Вызов процедуры Вызов процедуры имеет следующий синтаксис: [1аЬе1:]папе[(ракапесек 11вт)]; Базовые конст унции моделей на языке ИНР1 1БЗ Например, для описанной ранее (в листинге 3.39) процедуры: аяегаяе ваар1ев) При вызове процедуры, содержащей список параметров, необходимо указать их фактические значения, которые должны совпадать по типу с формальными, описанными в заголовке процедуры.
Описание списка формальных параметров имеет следующий синтаксис: ((рагатесег паве=>), ехргеяя1оп ) яьдпа). патпе ~ иагааиае паве ( орем, ( .)) Например, вызов вышеописанной процедуры может иметь следующий вид: оо аг1СЬ ор(асИ); --(1) йо аг1сь ор(гипс); --(2) Параметру процедуры может присваиваться и константное значение, как в первом примере, и значение сигнала того же самого типа, как во втором примере. Если для формального параметра указан вид 1и, он используется именно как входной, т. е.