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



СТРОКИ, БИТОВЫЕ СТРОКИ И АГРЕГАТЫ


Строки,битовые строки,агрегаты (strings, bit strings, aggregates) используются для конструирования значений для обьектов массивных типов. Они могут использоваться в любом месте, где допускается значение типа массив, например, как начальное значение константы или операнд в выражении. Мы уже видели, как строковая запись используется для представления значений предопределенных типов string и bit_vector. Такая же запись может быть использована для массивных значений любого одномерного массива, элементы которого имеют тип character; например: signal data_bus:bit6_data(15 downto 0); . . . data_bus<="UUUUUUUUFFFFFFFF"; Не надо путать символ ('A') со строкой, представляющей массив длиной 1 ("A"). VHDL позволяет компактно описывать битовые строки (значение типа bit vector) в базисе 2,8 и 16. constant clear:bit_vector :=B"00_101_010"; constant empty:bit_vector :=O"052"; constant null:bit_vector :=X"2A"; Все три константы имеют одно и то же значение. Отметим, что символы подчеркивания могут использоваться в любом месте в битовой строке для облегчения чтения. Расширенными цифрами (extended digits) для шестнадцатеричного представления являются буквы от A до F, причем могут использоваться как большие, так и маленькие буквы. Тип элемента массива, созданного агрегатом,может быть любого предопределенного типа или иметь тип, определенный пользователем. Массивные агрегаты формируются при помощи позиционной (positional) записи, поименованной (named) записи или комбинации этих двух форм. Рассмотрим несколько примеров. constant clear:bit_vector:=('0','0','1','0','1','0','1','0'); constant mos_delay:transition_delay := -- 'U' '0' '1' 'F' 'R' 'X' --второй индекс -- --первый индекс ( (0ns, 4ns, 5ns, 3ns, 5ns, 0ns), --'U' (5ns, 0ns, 5ns, 3ns, 5ns, 0ns), --'0' (5ns, 4ns, 0ns, 3ns, 5ns, 0ns), --'1' (5ns, 4ns, 5ns, 0ns, 5ns, 0ns), --'F' (5ns, 4ns, 5ns, 3ns, 0ns, 0ns), --'R' (5ns, 4ns, 5ns, 3ns, 5ns, 0ns)) --'X' parts_per_color <= (green => 3,indigo => 10,blue => 5); square := (1 to 10 => (1 to 10 => 0.0)); unit <= ( (1 => 1.0, others => 0.0),(2 => 1.0 others =>0.0), (3 => 1.0, others => 0.0),(4 => 1.0 others => 0.0)); Это новое обьявление для clear имеет точно тот же смысл, что и предыдущее.


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