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

   Комплектующие для откатных ворот в нижнем новгороде на vorota-52.ru. |       

ОБьЯВЛЕНИЯ МАССИВОВ


В обьявление типа для неограниченного массива(unconstrained) задается число индексов, тип и позиция каждого индекса, а также тип элементов массива. В нем не определяется число элементов в каждом измерении массива. Неограниченные массивные типы в следующем списке являются предопределенными: type bit_vector is array(natural range <>) of bit; type string is array( positive range <>) of character; Каждый из этих типов имеет одно измерение. Тип bit_vector индексирован значениями предопределенного типа natural и имеет элементы типа bit. Тип string индексируется предопределенным типом positive и имеет элементы типа character. Запись range<> (читается как "ящик диапазона"-range box) означает, что определение границ индекса было отложено. Границы подставляются в момент, когда создается об'ект данного типа. Индексы массива могут быть целого или перечислительного типа. Элементы могут быть любого типа. Например: type matrix is array(integer range <>,integer range<>)of real; type color_accumulator is array(color range <>) of natural; type color_match is array(natural range<>) of color; type bit6_data is array(positive range<>) of bit6; type bit6_address is array(positive range<>) of bit6; type transition_delay is array(bit6 range<>,bit6 range<>)of time; type conversion_vector is array(bit6 range<>) of bit; Обьявление обьекта типа массив определяет имя типа и ограничения на индекс(index constraint): variable square: matrix(1 to 10,1 to 10); signal A_register,B_register: bit6_data(63 downto 0); signal parts_per_color:color_accumulator(green to indigo); constrant part_id:string := "M00368"; variable bit_equivalence: conversion_vector(bit6); Каждая индексная позиция в обьявлении обьекта типа массив, который использует неограниченный тип, должна быть ограничена. Диапазон может быть ограничен при помощи to или downto, он может также заменяться диапазоном начального значения (как в part_id), или сам может быть именем индекса перечислительного типа (как в bit_equivalence).
В последнем случае диапазон является полным диапазоном перечислительного типа. В случае, когда будет большое число обьектов некоторого типа с одинаковыми ограничениями на индексы, может быть удобным обьявить подтип. Имя подтипа может быть использовано в качестве сокращения для полного обозначения подтипа: subtype data_store is bit6_data(63 downto 0); signal A_reg,B_reg: data_store; subtype transform is matrix (1 to 4, 1 to 4); variable X,Y:transform; signal unit: transform; Имеется также другая сокращенная запись, которая часто полезна при создании массивов. Рассмотрим следующюю пару обьявлений: type transition_delay is array(bit6 range<>,bit6 range<>) of time; subtype cmos_transition is transition_delay(bit6,bit6); Эти обьявления можно записать в следующем виде: type cmos_transition is array(bit6,bit6) of time; Отличие заключается в том, что неограниченный массивный тип transition_delay никогда явно не определяется. Это обьявление создает анонимный тип (anonymous type) с обьявлением, которое похоже на обьявление для transition_delay, за которым непосредственно следует обьявление подтипа для cmos_transition c данным ограничением на индекс.

Содержание раздела