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




ОПЕРАЦИИ НАД МАССИВАМИ


Массив может появляться в выражении в множестве случаев. Элемент массива выбирается путем задания значений индексов для каждой индексной позиции. Два массива также как два значения одного типа можно сравнивать, используя операторы равенства и неравенства. Результат будет булевого типа. Для одномерных массивов определяются две дополнительных операции: вырезка (slicing) и конкатенация. Вырезка позволяет выбрать непрерывное подмножество массива. Конкатенация создает большой массив из двух массивов или из массива и одного значения элементного типа. Все приведенные ниже булевые выражения имеют значения true. constant A:bit_vector := "01010"; constant B:bit_vector := "010"; variable S:string (1to 5); . . . ...A(0)='0' ... --Элемент выбирается при помощи индекса ...A(3)='1' ... ...A(1 to 3) = "101"... -- Вырез выбирается диапазоном ...B(1 to 2) = A(3 to 4) ... ...A = '0'&"101"&'0'... --Массив создается конкатенацией ...A = B & "10" ... S:="AbCdE"; --Переменной S назначается значение ...S(2) = 'b' ... ...S(4) = 'd' ... ...S(3 to 5) = "CdE"... S(2 to 4) := "XYZ"; --Вырезу из S назначается новое значение ...S = "AXYZB"... Операторы упорядочивания (<,<=,>,>=) являются предопределенными для одномерных массивов с элементами целого или перечислительного типа. Сравнение производится поэлементно слеванаправо до тех пор,пока не будет обнаружено различие или массивы не будут просмотрены. Не обязательно, чтобы массивы были одинаковой длины; если элементы короткого массива совпадают с начальными элементами длинного массива, то длинный массив будет считаться больше, чем короткий. Приведенные ниже булевы выражения являются истинными. name1 := "Jones"; name2 := "Smith"; ...name1 = name1 ... ...name2 < "Smithson"... count1 :=(2,3,6); count2 :=(2,3,7); ...count1 <= count2... ...count2>(1,3,7,9)... Логические операторы, определенные для скаляров типа bit и boolean, могут также использоваться для одномерных массивов с элементами любого типа.


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