СПРАВОЧНИК ПО ЯЗЫКУ VHDL



ЦЕЛЫЙ ТИП


Обьекты целого типа используются для представления абстрактных числовых значений. Тип integer является предопределенным. Добавочные целые типы могут быть обьявлены явно заданием диапазона значений, допустимых для обьектов данного типа. Рассмотрим несколько примеров обьявлений целых типов. type Apples is range 0 to 75; type Oranges is range 0 to 75; type Word_index is range 31 downto 0; Отметим, что диапазоны задаются либо убывающей, либо возрастающей последовательностью значений. Границы диапазона могут быть произвольными выражениями. Рассмотрим обьявления нескольких обьектов, которые используют эти типы. variable Macintosh: Apples; variable Seville,Valencia,av_oranges:Oranges := 10; signal control_selector:Word_Index; Заметим, что константе должно быть присвоено значение в момент обьявления. Аналогично начальное значение может быть присвоено переменной. Целые литералы (такие как -32767, 1, 212) могут быть использованы для представления значений любого целого типа. Для формирования выражения может быть использована комбинация имен обьектов, литералов и операторов, как это сделано в следующих предложениях назначения: av_oranges<=(Seville+Valencia)/2; beta_level:=1-Alpha_level; Все обычные арифметические операторы и операторы отношения являются предопределенными для целого типа. Тем не менее, оба аргумента оператора должны быть одного типа. if Seville > Macintosh ... -- WRONG Вы не можете сравнивать ЯБЛОКИ и АПЕЛЬСИНЫ. Предопределенный оператор > не работает с операндами различных типов даже если они имеют одинаковый диапазон. Тем ни менее, все целые типы и типы с плавающей точкой являются тесно связанными типами (closely related types) и VHDL обеспечивает для этих типов преобразование (conversion) между любыми парами. Допускается любое из следующих сравнений: if Apples(Seville)>Macintosh... Значение выражения одного типа преобразуется к значению тесно связанного типа указанием перед выражением, заключенным в скобках, имени типа, к которому преобразуется выражение. При преобразовании между типом с плавающей точкой и целым типом будет выполняться округление до ближайшего целого. if Seville>Oranges(Macintosh)...




Содержание  Назад  Вперед