Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003) (1095892), страница 11
Текст из файла (страница 11)
Это перечислимый тип, задавае- мый множеством своих значений. Он используется для представления возможных значений электрического сигнала в соответствии со стандар- том 1ЕЕЕ 1164. Етре Ъье 1в ( ' 0 ', ' 1 ' ); Значения 0, 1 являются перегруженными (они входят и в битовый, и в символьный типы). Логические операторы применимы только к битовому типу.
Если логический оператор имеет два операнда, то они должны быть ОДНОГО тИПа (ВЫражЕНИЕ тИПа: 0 есс) Сгее — НЕ ДОПУСТИМО), Как правило, битовый тип используется для моделирования на аппаратном уровне, а булевский тип — для моделирования на абстрактном уровне. Применение логических операторов к битовым значениям осуществляется в терминах позитивной логики (на абстрактном уроне 0 соответствует Га1ве, а '1' — Сто).
Операторы и данные языка ИтР1 41 Его определение имеет следующий вид: суре вМ и1сдас 1в ('П' -- сп1паеаа11вед 'Х' -- гогс3пд ипкпонп '0' -- гогсапд вего '1' — 1огсапд опе 'н' -- иеах пп)спсьп 'ь' -- ивах зего 'н' -- иеах опе '-')у -- поп'г саге Величины этого типа могут быть операндами логических операторов. Для того чтобы включить тип вес и1одас в модель, необходимо перед ней разместить следующие строки: 11Ьгазу ьеее; иве (еее.вг зодас 1164.е11у Это связано с тем, что тип не является встроенным в ЧНО(., а расположен в отдельном пакете, находящемся в отдельной библиотеке!еее.
Атрибуты скалярных типов Тип определяет множество значений и множество применимых к ним опера- ций. При определении типа попутно определяется также множество ая)рибуя)ов «)ила, которое позволяет получить информацию о диапазоне значений, входя- щих в этот тип. Обращение к атрибутам имеет следующий синтаксис: гуре паве'асгга)зпге Перечень атрибутов приведен в табл. 2.2. В ней т — имл обьектв или имя типа.
Описание Атрибут т'ьпаде(х) т'ка1ие(в) т 1егс т'гадьс т'1он т кьдь т'авсепд1пд Таблица 2.2. Перечень атрибутов скалярных типов Первое значение в типе (левая граница интервала) Последнее значение в типе (правая граница интервала) Наименьшее значение в типе Наибольшее значение в типе сгие, если диапазон задан от меньшего к большему или этот тип определяется перечислением входящих в него значений, в противном случае — Га1ве Возвращает строковое представление значения х Возвращает значение указанного типа на базе строко- вого представления в Глава 2 42 Например: суре 1пдех тапде 1в хапае 30 дсвгпсо 2; 1пдех.халде'1ете=зсг 1пдех халде'т1дтзе=2г зпдех халде'1ои=2з ).пдех халде Ктди=зсг 1пдех халде'авсепд1пд=та1вег зпдех галде'1паде(14) ="14" г суре 1одз.с 1ече1 ав (чп)гпсъп, 1он, ипдт1ч, )з1д)з) г 1одас 1ече1 1одз.с 1ече1 1одтс 1ече1 1еес=пп)гпо ип г т1д)ге =)з1д)з г 1 он=по)гпоъп г 1од1с 1ече1'Н1д)зе=и1д)зг 1одтс 1ече1'авссепд1пд=Стерег 1одзс 1ече1'злпаде(ппдт1ч)="ипдт1ч"г 1одзс 1ече1'ча1пе("1ои" ) =1овп Атрибуты 1пзаде и ча1пе в ОгСАО Ехргевв не поддерживаются.
В табл. 2.3 приведены атрибуты, присущие физическим типам и перечисли- мым типам, т — имя типа. Таблица 2.3. Атрибуты физических типов Например: 1сд1с 1ече1'ров(пп)сзочп) =0; 1сд1с 1ече1'ча1(3) =)з1д)з; Атрибут т'ров(х) т'ча1(п) т'васс(х) т'рзед(х) т'1етеот(х) т'т1дтзсот(х) Описание Номер позиции х в т Значение в т на позиции и Значение в т на позиции, на 1 большей, чем х Значение в т на позиции, на 1 меньшей, чем х Значение в т на позиции, на 1 левее, чем х Значение в т на позиции, на 1 правее, чем х Операторы и данные языка И.ПХ 1одас 1ече1'васс(ппкпоип)=1овч 1од)с 1ече1'рхес)[ипс)хзчеп)=1оя; Если тип имеет возрастающий диапазон, то т васс(х) = т'х1дьсот(х) И т'рхес)(х) = т'1еасоГ(х), В ПРотивном случае т'васс(х) = т 1етсот(х) И т'рхес)(х) = т'х1дпеот(х).
Для целых типов номер позиции совпадает со стоящим на нем значением, а тИП НОМЕра ПОЗИЦИИ НаЗЫВаЕтСя ппачепва1 ъпеедах. ДЛя ФИЗИЧЕСКИХ ТИПОВ номер позиции определяет значение объекта, выраженное в базовых единицах измерения. Для физических типов номер позиции совпадает со стоящим на нем значением, выраженным в базовых единицах измерения. Например: Спае'ров(4 пв)=4000000 Поскольку операция умножения двух объектов физического типа выполняться не может, можно перемножать их номера позиций в типе, а затем преобразовывать результат в нужный тип.
Например: сура 1епдсп 1в халде 1псадап'1ои ео 1пседет')ттдп опьев пта епа аваев 1апдеич Еурв ахеа Ав хвпде 1пеедех' 1ои Ео 1пеедег'И1дп епаав вц )аа епа аваев ахеа; Например, пусть имеются следующие описания типов: ь1, ь2 — объекты тИПа 1апдеп;  — ОбЪЕКт тИПа ахеа. Выражение А:=Ь1*Ь2 приведет к ошибке.
Допустимое выражение имеет следующий вид: й:=атее'ча1(1апдеп'ров(Ь1)* 1апдпп'ров(Ь1)); Определения типов могут меняться в ходе проектирования. При этом в некоторых случаях использование атрибутов позволяет избежать редактирования модели. Например, в ходе разработки конечного автомата набор его состояний может меняться. Но разработчики могут договориться о том, чтобы в описании перечислимого типа состояние, соответствующее ошибке, при любых изменениях стояло последним в списке состояний. Тогда, независимо от его имени, обращаться к нему можно будет с использованием атрибута тьдие.
Глава г Преобразование скалярных типов Для выполнения ряда операций требуется, чтобы операнды были одного и того же типа. Преобразование типов ьпседет в теа1 и наоборот, осуществляется следующим образом: гааз(ьпеедет уа1ие); 1псадвг(теа1 га1ие) При преобразовании действительного числа к целому производится округление до ближайшего целого. Для преобразования данных из одного перечислимого типа в другой, могут использоваться атрибуты ров и ча1. Например: уаг1аЫв 12:ЫС; 12: =ЫС 'уа1 (Ьсо1еап ' ров (Стае) ); Атрибут 1паде может быть использован при сохранении результатов работы в файле, а атрибут га1пе — при чтении данных из файла. Подти пы Нередко модель содержит объекты, которые могут принимать значения только в строго ограниченной области из множества возможных значений какого-либо типа.
Тип таких объектов можно определить на базе основного типа. Он будет называться подтилом этого типа. Использование подтипов облегчает понимание модели. Структура описания подтипа имеет следующий вид: ввЬеуре папе от виЬсуре 1в папе от Ьаве суре гапде в(пр1е ехртеввьоп (ео(6овпее) в)пр1е ехртевв1оп; Например: виьеуре вьотс 1в аппарат гапде 0 ее 255; Все операции, применимые к объектам базового типа, применимы и к объектам его подтипов. В таких операциях как сложение, вычитание, умножение, деление и т.
д. могут смешиваться операнды базового типа и его подтипов. Однако при попытке присваивания переменной значения, выходя(цего за рамки, определенные ее подтипом, будет возникать ошибка. Допустима ситуация, когда базовый тип имеет диапазон, заданный в одном направлении (например, от меньшего к большему), а подтип имеет диапазон, определенный в противоположном направлении (от большего к меньшему).
Встроенные подтипы В ЧНОЕ имеются следующие встроенные подтипы: ввЬЕурв паеита1 1в зпсадег гавре О Ее Ыддевт тптедет; виЬеуре ровьсгге 1в 1пеадвг гапдв 1 ео Ьгддевс тпседет; Операторы и данные языка )гН1Х Такие подтипы используются для объектов, которые, согласно работе модели, не должны принимать отрицательные значения. Это позволяет отслеживать ошибки. Для тех же целей используется физический подтип времени: вяЬГуре с)е1ау 1епд?Ь Ав язве галде О хв Ео Ь?ддев? Стпвег СтаНДаРтНЫй ЛОГИЧЕСКИЙ тИП в?с) п?од?с таЮКЕ ИМЕЕТ СтаыдартНЫй ПОдтИП в?с) 1од?с, который имеет то же самое множество значений, что и я?с) п1од?с, но для него по-другому определена решающая функция. (Это будет рассматриваться в главе 3 ).
Для подтипов могут использоваться все атрибуты, применяемые для их базовых типов, а также один добавочный, позволяющий программе определить базовый тип для этого подтипа: т ьаве. Этот атрибут может использоваться в качестве префикса для других атрибутов. Например: гуре орсос)е Ав (пор, 1оас), в?охе, асИ, впЬвстасг.,ЬтапсЬ); впЬеуре вв ор дв орсос)е галде 1оас) ео впЬв?тасс; вв ор'Ьаве'1е?т=порг яв ор'?аве'впсс(япЬв?гас?)=Ьтапсьг Составные типы данных Массивы Массив представляет собой набор элементов одного и того же типа.
Позиция каждого элемента задается скалярным значением — индексом. Определение типа одномерного массива имеет следующий вид: туре паве ?я ахтау (с1?в)схехе япЬ?уре ?пс)?сас?оп гапда япср1е ехртеяя?оп Ео)аоипго в?вр1е ехртевв?оп) ог е1евеп? вЬ?уре ?пс)?са??опг Например: гуре иотс) 5в аггау (О хо 31) ох Ь?гг гуре ахате Ав (1п???а1, ?с)1е, асс?те, етхот) г туре в?ате сопл? Ав актау (в?а?е тапде ?с)1е Со етхот) оа паспга1; впЬеуре соехх Ав Апеедег галде О ео 63; суре соехх атхау зв актау (соехх) оя геа1; Обращение к элементу массива происходит по его индексу, который стоит в круглых скобках.
В Еоппс)а()оп Ехргевв индекс может принадлежать только типу, определенному на базе ?п?едет. 4о Глава 2 Определение типа многомерного массива отличается от определения одномерного тем, что количество определений индексов равно размерности массива. Определения индексов отделяются друг от друга запятыми. Например: суре патпзх Ав аххау (1 Ео 3, 1 Ео 3) ох Апсаяех Обращение к элементу многомерного массива осуществляется указанием всех его индексов, заключенных в круглые скобки, через запятую. Например: тахзаЫе паепгх1: пасхах; Маепгх1(1,3):=15; В результате элементу массива с индексами 1, 3 будет присвоено значение 15.