Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003) (1095892), страница 12
Текст из файла (страница 12)
В Роипдвйоп Ехргевз многомерные массивы в явном виде (с указанием в скобках нескольких диапазонов через запятую) не поддерживаются, но можно описать массив, элементы которого, в свою очередь, будут массивами. Например, описание рассмотренного выше массива жаепгх в Ропп((а1(оп Ехргезз может выглядеть следующим образом; суре е11 тасках 1а аххау (1 Ео 3) ок 1псеяехГ суре поШх Ав аххау (1 ео 3) ок е11 пасхах; Обращение к элементу такого массива может иметь следующий вид: Нат ггх1(1) (3):=15 Г Определение начальных значений Начальные значения объектам типа массив могут задаваться тремя следующими способами [31.
Прямое определение. Начальные значения элементов могут задаваться списком, в котором первое значение соответствует первому элементу массива, а каждое последующее — последующему элементу. Таким образом, номер определяемого элемента в массиве ассоциируется с позицией значения в списке начальных значений. Например: суре рогпсв дв апхау (1 Ео 3) ой хеа1г объекту этого типа можно присвоить значения следующим списком: (2.3, 3.2, 5.0) Для многомерного массива список состоит из подсписков, каждый из которых заключен в круглые скобки и отделен от других запятыми.
Для двумерных массивов каждый подсписок включает в себя элементы, которые соответствуют одному и тому же значению первого индекса, определяемого номером подсписка в списке. Если массив трехмерный, то список для задания его значений состоит из подсписков, формируемых так же, как список для двумерного массива, и т.
д. Операторы и данные языка МНР(. 47 Пример: гура роапгв ав агаву (1 со 3, 1 со 4) ое веа1; обьекту этого типа можно присвоить значения следуюшим списком: ((2.3, 3.2, 5.0,7.0), (2.1, 6.2, 5.1,7.9), (6.3, 3.4, 1.0, 8.1)) Ассоциирование. Выполняется так называемое ассоциирование значения индекса со значением элемента, т. е. сопоставление элементу с указанным индексом заданного значения элемента. Это определение имеет следуюший синтаксис: ((1пс)ех ча1пев=>е1етепс уа1пе),...) ГдЕ тпс)ех га1пе — МОжЕт ПрЕдСтаВЛятЬ: 0 простое выражение; 0 интервал (в этом случае все элементы, индексы которых попадают в этот интервал, будут иметь одно и то же значение); 0 список значений индексов; 0 оеьахв (в этом случае все элементы, индексы которых не вошли ни в одно из предыдуших определений, будут иметь указанное значение). оь)гахв должно быть последним в списке. Если задается список значений индексов, то его элементы отделяются друг от друга вертикальной чертой.
Например: сура вутЬо1 1в ('а', 'с', 'с)', ''и', сг); суре всаее 1в ваада 0 Ео 2; гура татсьх гв аххау(ясасе,вутпо1) ог всасе; оопвгапг и веаее:птестх:=(0=>('а'=>1, 'с)'=> 2, огиехв =>0), 1=>('а' ( ''и'=>2, огьахв=>0), 2=>( а Со Ь =>1, огиавв=>2)); В результате матрица будет иметь следующий вид: 1 0 2 0 0 2 0 0 2 0 2 Агрегаты. Могут использоваться для задания значений нескольким переменным или сигналам одновременно. Это определение имеет следующий синтаксис: (пате1, пате2, ..., пате п)<=пате аддгедасе Например, пусть имеются четыре переменных типа )>1с и переменная типа ыс вессох длины 4.
Для того чтобы присвоить переменным значения элементов этого вектора, можно выполнить следуюшее действие: (г г1ад, и г1ад, н г1ад, с г1ад)<=г1ад сед; Глава 2 48 Атрибуты данных типа "массив" Язык ЧНР1. поддерживает набор атрибутов, применимых к объектам типа массив и позволяющих получить информацию о типе. Для обращения к значениям этих атрибутов используется тот же синтаксис, что и для обра- щения к атрибутам неструктурированных типов. Перечень атрибутов приве- ден в табл. 2.5 (й — имя типа массив или объекта массив). Списание Имя атрибута й 1епден(Н) й'авсепоьпд(н) Например: суре й Хв авкау(1 Ео 4, 31 аонпьо О) оз ?юо1еап; й 1етс(1)=1г Если номер измерения не указан, то по умолчанию он принимается рав- ным 1.
й'1ете(Б) й -ьдьс(н) й 1он(н) й'111дье(Н) й'халде(Н) й'хечехве халде(М) й 1он(1)=1; й'хьдьс(2)=0; й'111д)1С (2) =31; й'хапде(1) 4в 1 Со 4; й халде(г) 4в 0 Ео 31; й'1епдсп(1)=4г й'1епдеп(2)=32; й'авсепс)ьпд(1)=схие; й'авсепг)ьпд(2)4ба1ве; Таблица 2.5. Перечень атрибутов типа массив Левая граница массива по указанному измерению н Правая граница массива по указанному измерению н Нижняя граница массива по укаэанному измерению н Верхняя граница массива по указанному измерению н Интервал индекса массива по указанному измерению н Интервал индекса массива по указанному измерению н в обратном порядке Длина интервала индекса массива по указанному из- мерению и Принимает значение стае, если интервал индекса мас- сива задан от меньшего к большему Операторы и данные языка )4ЧО~ Массивы неограниченной длины Для массивов неограниченной длины не задается конкретный диапазон индекса, а только его тип.
Описание таких типов имеет следующий синтаксис сура пате 1в аггау (пате ог суре ос зпз)ех галиа <>) ог е1ешепс Суре; Например: сура вапзр1е 1в аггау (ласога1 галде <>) оя 1лсадаг; Когда описывается объект такого типа, то необходимо задать конкретное значение интервала для индекса, например: чаг1взз1а в)з ввт: ввшр1е(0 Ео 63) з На базе типа, описанного таким образом, можно определять подтипы, в которых также должно быть задано конкретное значение интервала для индекса.
Если таким типом описывается константа, то зто делается на базе агрегат- кого описания. В таком описании могут быть просто перечислены значения элементов (тогда они присваиваются элементам с номерами, начиная с наименьшего значения индекса, в соответствии с типом, по порядку,' а их количество определяет размер интервала индекса), или же могут быть номера элементов, которым присваиваются значения, а в агрегате задаются напрямую.
Например: сопвеале сс з)ат:=(127,63,0, -63); сслвгалг зЫ. ввпзз=(1=>23, 3=>-4, 2=>100)з Битовые векторы. Для представления битовых векторов язык ЧНЕ)Ь имеет встроенный тип — массив неограниченной длины с битовым типом элементов и положительным типом индекса: сура Ые ззессог 1в вггау (ровгсгче газзда <>) ог Ыез Кроме того, в стандартном пакете пшпепс 6Ы (см. приложение 4) аналогич- НЫМ ОбраЗОМ ОПрЕдЕЛЕНЫ ТИПЫ Зздпез) И ппв1дпез). ЭГО таКжЕ МаССИВЫ НЕОГраНИЧЕННОй ДЛИНЫ, ЗЛЕМЕНтЫ КОтОрЫХ ИМЕЮТ тИП )зге, НО дпя КОтОрЫХ определен расширенный набор операций и функций преобразования.
Строки. Для представления строк, ЧНЕ)Ь имеет встроенный тип-массив неограниченной длины с символьным типом элементов и положительным типом индекса: суре вегзпд 1в аггау (ровзегче галиа <>) ог сиагасьаг; Физические типы неограниченной длины. Пакет стандартной логики 6(((!оя!с 1164 (см. приложение 3) предлагает следующие типы — массивы неограниченной длины: суре вез).
п1одзс ззессог 1в аггау (пагпга1 галиа <>) ог вес) п1одзс; Глава 2 Например: чаггеЫе с Ывхй иаодгс чессох (О Ео 13):="ггггг11200 — -"; сопвевпе х х:вес) и1одгс чесхох (15 аоепео О):=х" РРРР"; Массивы неограниченной длины находят широкое применение при описании входных и выходных сигналов проектируемого устройства.
В качестве элементов массивов могут быть использованы массивы. Например: суре Ыд аххау Ав ахгау (О Ео 63) ог вес) и1одас чессох(15 Еовпсо 0) г чагАаЫе и аххау:Ыд агхау; чаг)вЬ1е и чес:всх) и1сд)с чесхох(15 аоепсо 0) чахАеЫе и 1:всй и1сд1с; н чес:=и аххау(1); и 1:=и вхгау(1)(15); Операции над массивами Большинство операций, производимых над массивами, осуществляются по- элементно. Однако есть ряд операций, которые могут выполняться над целыми одномерными массивами [3[.
К операциям, выполняемым над одномерными массивами целиком, относятся: логические операторы, операторы сдвига, операторы отношения, конкатенация. Логические операторы [апа, ог, папа, пег, лог, влог) могут быть применимы к двум одномерным массивам, имеющим одинаковую длину и тип. Элементы таких массивов должны иметь тип ьах или ьоо1еап. Логическая операция применяется к парам элементов массивов, имеющим одинаковый индекс, а результат присваивается элементу результирующего массива с тем же номером. Например: суре мюхст Ав ахгау(ров1с1че хапде<>) ог ЫЫ чаг1вЫе ЬЫ,ЬЬ2,ЬЬЗ:ееохс)(0 Ео 5); ЬЫ: = (охьехв= > ' 1 ' ); ЬЬ2: = ( О => ' 1 ', 3 => ' 1 ', овьегв=> ' 0 ' ); ЬЬЗ:=ЬЬ1 епй ЬЬ2; Операторы сдвига (в11, вг1, в1а, вга, го1, хог) также могут применяться к одномерным массивам с типами элементов ьтх или чесхох. Массив является левым операндом, результирующий массив должен иметь тот же тип.