Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003), страница 13
Описание файла
DJVU-файл из архива "Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003)", который расположен в категории "". Всё это находится в предмете "микропроцессорные системы (мпс)" из 8 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "микропроцессорные системы" в общих файлах.
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 13 - страница
Операторы отношения могут применяться к одномерным массивам, элементы которых имеют любой дискретный тип. Оба массива-операнда не обязательно должны быть одинаковой длины, но должны иметь одинаковый тип элементов. Рассмотрим, как осуществляется сравнение, на примере опера- Операторы и данные языка ((НР(. тора <. Предположим, что надо определить результат операции а<с (где: а и с — одномерные массивы). Если а и с имеют длину О, то а<с га га1ее. Если а имеет длину О, а длина с отлична от О, то считается, что а меньше с. Если и а, и с имеют длину, отличную от О, то а<с, если а(1) <с(1) или а(1) =с(1), НО ПРИ ЭТОМ а (2) <с(г), И т. Д. Конкатенация. К одномерным массивам может применяться конкатенация, в результате которой элементы правого операнда добавляются в конец левого.
Например: "аьс" а "с)г" = "аьс<)г". Фрагменты массивов Нередко возникает необходимость работы не со всем массивом, а с некоторым его фрагментом — набором элементов с индексами, лежащими в заданном интервале. При этом порядок следования индексов во фрагменте может быть обратным порядку следования индексов в массиве. Например: туре аттау1 аа актау ( 1 Со 100) от ьптедет; туре аттау2 ае актау (100 ((оипсо 1) от гптедет; четааЫе а1: аттау1; еатааЫе а2:аттау2; Следующие определения фрагментов массивов являются допустимыми: а1(20 Ео 50) а2(70 4(оипео 30) а1(50 ооипсо 20) а2(30 Со 70) К фрагментам массивов могут применяться те же операции, которые применимы к массивам в целом.
Например; туре ииотс) 1а актау (О то 5) от Ыт; чат1аЫе ЬЬ1, ЬЬ2 : ииотс(; ЬЫ(0 Со 2) ".= ЬЬ2 (2 Со 4); Преобразованиетипов Объекты массивов различных типов могут быть преобразованы друг в друга, если массивы имеют: одинаковый тип элементов, одинаковую размерность и одинаковые типы индексов. Может быть выполнено преобразование объекта типа массив в объект другого типа массив.
При этом исходный и новый тип должны иметь одинаковый тип элементов и одинаковую размерность. Преобразование типов имеет следуюший синтаксис: оЬзест от туре1:= папе от туре1(оьзест от турег) 52 Глава 2 Стандартный пакет ЯЫ !Ой(с апт)) содержит следующие функции преобразо- вания стандартных векторных типов: ЕОПОЕ1ОП СОИЧ 1ытваЕВ(ЛВаз титваЕВ) ГЕЕПтП П(тааЕВЗ яопот1оп СОИ)) 1ЫТЕОЕВ(АВа: Оыятаиво) гетшп ТИТЕОЕВ; Яппов1оп СОИЧ 1ЫТЕОЕВ(АВа: ятаыво) гетега гытваваз аппот1оп СОИЧ 1ЫТЕОЕВ(АВО: ят0 отЛОТС) гетптп ЯнлтЛ.
1итз яопое1оп соыч оыятаиео(АВа: гытеаеазятге: п(твоея) геепгп оиятаыеоз аопот1оп СОИЧ оыятаив0(АВа: 0ЫЯтаыЕ0; Я12Е: 1ЫТЕОЕР) гетитп 0ЫЯ1ОИЕО; еппот1оп Ссыд оиятаиво(ЛВа: Ятаывозятгв: 1итааеВ) гетпгп оыятаиа0; Еопот1оп СОИ)) оиятаЫЕО(ЛВа: ят0 ОТЛатозятгв: тытвака) гетотп Пыятаывпз яопот1оп СОИЧ ято ЬСОТС з)ЕСТОВ(ЛВаз титяавязятгв: титваЕВ) гетптп Ято тЛатС ))ЕСТОВз аоззот1оп СОИЧ ЯТ0 1;Са1С ))истов(ЛВа: 0ЫЯ1аыЕОзЯ12Е: ХЫТЕОЕВ) гетпкзз Ято тЛатС ))Естся з Яоззот1оп СОИЧ ЯТ0 ?ЛО1С ()ЕСТОВ (АВа: Я1Шах)з Я12Е: тз)тЕОЕВ) гетптп Ятп тЛОТС ЧЕСтааз Еоззое1оп СОыз) ЯТ0 1СО1С з)ЕСТОВ (ЛВа: ят0 от оа1С; Я12е: 1ЫТЕОЕВ) гетотп Ято тЛОТС ))ЕСТОВз Стандартный пакет пцтепс ЯЫ содержит следующие функции преобразова- ния стандартных векторных типов: топое1оп со 1пседег (атд: ипв1дпез)) гетега паз ота1з яоззот1оп Со 1пнедет (атд: в1дпез)) гетптп тптедетз яопотаоп Со ипв1дпез) (атд: гпеедет; вазе: патпта1) гетптп ипв1дпес); Еопое1оп со в1дпес) (атд: 1пседетз втве паепта1) гетптп втдпеоз Поддерживаются следующие функции изменения размера: яппое1оп Вея12е (АВа: Я1аиеоз иеи Я12е: з)лтОВА0) гетпвп Я1с(ыеоз яопот1оп Ввятгв (ЛВаз пиятаЫЕ0; ИЕЗ( ятгв: ЫЛТОВЫ.) гетптп Оиятаиво; Записи Еопое1оп Соыд Я1ОЫЕ0(лва: 1ытваеазя12Ез ХЫТЕОЕВ) Еопот1оп СОИЧ ятаиво(Лиаз оиятаывозятгвз ТЫТЕОЕВ) Еопот1оп СОРИ Я1аЫЕО (Лиаз Я1аывоз Я12Е: ХИТЕОЕВ) яопот1оп СОВА ятаыЕ0(АВаз ято 00сатоз ятга: Л(тваЕВ) Описание типа записи имеет следующий синтаксис: туре папе 1в геоогзт паве ое 21е1зт1 зпапе ог Туре гетега Ятаивоз гетптп ЯХОЫЕ1); гетптп ЯХОЫЕ0; гетпгп Я1ат(воз Операторы и данные языка МНР1 пале ог гзе1д2 зпале ог суре пале ог ГзеЫ и:пале ог Суре епд гесогд ззалез Например: гуре Ыд сзле 1в геоогд яесопдяз зппедег гапде 0 со 59; адппсеяз ьпгедег гапде 0 Со 59з Ьоигя: 1ппедег гапде 0 Со 23; епд гесогд Ыд п3пез гуре 1п роге 1в гесогд адс)геяяз ясд 1одзс зтессог(7 доепсо 0) ятд 1одз.с зтессог(16 до>пзпо 0); яп 1одз.с з епд геоогд 1п рогоз Возможно использование агрегатов для задания значений объектов такого типа.
Например: сопвгапп Сзле соопгег 1зЫд Сзпез=(2,2,12); сопвгапе т1ле сооппег 2зЫд пзлез=(иоигя=>12, лзписея=>О,яесопдя=>2); Значения присваиваются полям в порядке их описания в типе, или же по именам полей. Агрегаты могут использоваться также для определения начальных значений переменных (записей), при их описании в декларативной части, но не могут использоваться для определения их значений в других частях модели. Если выполняется присваивание значения конкретному полю записи, то сначала указывается имя объекта-записи, а затем, через точку, указывается имя поля: ззагьаЫе пу Сппепвзд сзпзез Му Сале.яесопдя:=30; Указательные типы данных (ассеза) Назначение указательных типов Скалярные и составные типы данных позволяют представлять как отдельные элементы данных, так и регулярные структуры, из них состояшие.
Однако в некоторых приложениях возникает необходимость в создании набора данных, размер которых заранее не известен, или организации сложной Глава 2 структуры отношений между индивидуальными объектами данных. В этих случаях используются указательные типы. Указательные типы позволяют создавать сложные структуры данных в процессе моделирования. Они имеют много общего с указательными типами в других языках программирования.
Описание данных указательного типа Описание указательного типа имеет следующий синтаксис: суре папа 1в асееве впЬсуре 1пс(1сас1оп; Например: суре паспга1 рог 1в ассевв паспга1; ОбЪЕКт, ПрИНадЛЕжащнй тИПу пагога1 рог, МОжЕт СОдЕржатЬ ЗНаЧЕНИЕ- ССЫЛКУ На ОбЪЕКт даННЫХ тИПа пагпга1, НО НЕ На ОбЪЕКтЫ друГИХ ТИПОВ. Ссылки могут быть организованы на объекты любых типов, кроме файлового. Когда переменная описана как объект указательного типа, ее начальное значение по умолчанию — пп11.
Переменную можно связать с конкретным объектом данных, размещенным в памяти. Оператор связи имеет следующий синтаксис: папе ог оЬЗесг:=а11осасог ехргеввтоп; ЗДЕСЬ а11осасог ехргевв1оп ИМЕЕТ СЛЕдуЮщИй СИНтаКСИС: псе впЬгуре 1пд1саг1оп ) псе с)па11г1ес) ехргеввъоп В результате выполнения такого оператора связи в памяти создается объект данных указанного типа и ему присваивается значение О. Указатель на ВНОВЬ СОЗдаННЫй ОбЪЕКт ПрИСВаИВаЕтСя ОбЪЕКту пате от оьэесс. НаПрИМЕр: еег1аЫ.е сопптппаппга1 рог; соопс:=пес пасога1; Для работы с объектом, на который ссылается переменная-указатель, используется ключевое слово а11.
Например: соопс.е11з 10) Для того чтобы при создании указателя на новый объект сразу же присво- ИтЬ ЭтОМу ОбЪЕКту ЗмаЧЕНИЕ, ИСПОЛЬЗуЕтСя Чпа11ттес( ехргеввьоп. ОНО ИМЕ- ет следующий синтаксис: Суре )пагк' (ехргеввьоп) ! Суре )пагх'адгеяасе Пример 1: соппп:=пес пагпга1'(10); Операторы и данные языка МНГ31 Пример 2: Гтре вгпви1ив гесого Ав гесого вгпяи1ив гпяе: гппе; всгяю1ив иа1ие:Ь1Г иессог(0 Го 3) впа гесого всппи1ив гесогсп гуре вгпли1ив рог Ав асеева вгьпю1ив гесого; чагьаЬ1е Ьив вгпппи1ив:вгпяи1ив рог; Ьив всппи1ив:=пеи вгппи1ив гесогд(20 пв, В'0011'); Работу с указателями поясним на следующем примере.
Пусть: чвг1въ1е соипг1, соипг2. "пагига1 рог; соипс1:=пеи пасига1'(5); соипг2:=пеи пасига1'(10); После выполнения этих операторов в памяти будет наблюдаться следующее (рис. 2.2). соиы2 сопли Рис 2.2. Иллюстрация состояния памяти 1 Затем, выполняя: ссипс2: =соипс1," соипг2.а11:=20; получим результат, представленный на рис.
2.3. В данном случае соипгт=соипгг и они оба указывают на объект со значением 20. соил(1 сои п11 Рис. 2.3. Иллюстрация состояния памяти 2 Другой пример. Если выполнить следующую последовательность действий: соипс1:= пеи пасига1'(30); соипг2:= пеи пагига1'(30); Глава 2 то получим два разных указателя, ссцп«1 ссцп«2, указывающих на разные объекты, хотя зти обьекты в данный момент будут иметь и одинаковые значения (рис. 2.4). сооп(2 сося(1 Рис.
2.4. Иллюстрация состояния памяти 3 Указатели на массивы Работа с указателями на массивы постоянной длины. Если организуется указатель на массив постоянной длины, то, для обращения к конкретному элементу этого массива, его индекс указывается в скобках после ключевого слова а11. Например: «уре сссгзз(лза«а 1в аггау (1 «с 3) сг геа1з «уре сссгп(ьпа«е р«г 1в асеева сссг«тзпа«ез чагйа)з1е сгадьп:сосала«е р«гз=ззеи сссгзтьпа«е'(0.0,0.0,0.0); сгьдгзп.а11(1)з=1.0з Работа с указателями на массивы переменной длины. Если организуется указатель на массив неопределенной длины, то длина массива определяется при первом же присваивании ему значений и определяется количеством присваиваемых значений. Например: «уре «зпе аггау 1в аггау (рсв1«ьче гоппер>) с1 «злез «уре «(зпе аггау р«г 1в асеева «ьпзе аггау; чвгйвЪ1е ас«зч «ппевз«ппе аггау р«гз ас«ьч «зпзевз=пав «1пзе аггау р«г(10 цв, 15 пв, 20 пв); После выполнения последнего действия размер массива, связанного с переменной, определен.