Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Типы программных объектов (Types)

Методы программного проектирования цифровых устройств | Общая характеристика языка VHDL | Операторы последовательной (sequential ) логики, которые включаются в тело оператора process | На потоке данных (Dataflow design data) | Project 8-bit Shift Register include component DFF |


Читайте также:
  1. III. Мероприятия по обеспечению антитеррористической защищенности объектов (территорий)
  2. q]2:1:Форма бытия материи, выражающая протяженность составляющих ее объектов, их строение из элементов и частей называется
  3. Алгоритм продвижения различных объектов в социальных сетях.
  4. Алгоритм распределения программных модулей по узлам Вычислительной сети.
  5. Анимация графических объектов
  6. Анимация объектов
  7. Атрибуты доступа к элементам объектов

Сигналы(signal), переменные(variable) и константы(constant) являются программными величинами (объектами) языка VHDL, значения которых анализируются и обрабатываются при запуске VHDL программы на исполнение. В процессе объявления программных величин они должны сопровождаться специальными характеристиками, которые отражают форму записи сопоставляемых программным объектам числовых значений и диапазоне допустимых числовых значений. Эти характеристики часто называют типами программных величин.

Итак, тип (type) определяет форму записи и набор (диапазон) значений, которые может принимать программный объект.

В VHDL программные величины могут иметь один из встроенных (предопределенных) типов или один из пользовательских типов.

Встроенные (предопределенные) типы маркируются специальными зарезервированными идентификаторами. Список зарезервированных идентификаторов для встроенных типов показан ниже:

bit, bit_vector, boolen, character, integer, real, string.

 

Примеры деклараций программных величин посредством встроенных типов:

constant bus_size: integer:= 32;

constant MSB: integer range 0 to 15;

constant Z: character:= ‘Z’;

constant bus12_si: bit:= ‘1’;

constant bus12_sam: bit_vector (3 downto 0):= “1011”;

signal dus12_sum: bit_vector (3 downto 0):= “1011”;

signal rus12_si: bit:= ‘1’;

signal tus12_si23: integer range 0 to 15;

 

Некоторые пользовательские типы и их синтаксис:

 

Пользовательские типы (типы определяемые пользователем - A user-defined types) конструируются самим пользователем на основе встроенных типов. При построении VHDL проектов пользователю часто необходимо иметь такие собственные типы: тип перечисление (enumerated type ) тип массив ( array type). На основании построенных пользователем типов в языке VHDL разрешено также конструировать нужное множество подтипов ( subtype).

 

Конструкция типа enumerated определяемого пользователем имеет такой синтаксис:

type type-name is (value-list);

value-list - is a comma-separated list of all possible values of the type.

 

Конструкция подтипа enumerated определяемого пользователем имеет такой синтаксис:

subtype subtype-name is type-name range start to en d; -- ascending order

subtype subtype-name is type-name range start downto en d; -- descending order

subtypes of a type. Values must be a contiguous range of values of the base type, from start to en d.

Примеры деклараций программных величин пользовательских типов вида enumerated:

Example (enumerated type):

type traffic_light_state is (reset, stop, wait, go);

type std_logic is (‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’);

subtype fourval_logic is std_logic range ‘X’ to ‘Z’;

subtype bitnum is integer range 31 downto 0;

constant bus_size: integer:= 32;

constant MSB: integer:= bus_size-1; -- bit number of MSB

 

Конструкция определяемого пользователем типа array имеет такой синтаксис:

type type-name is array (start to en d) of element-typ e;

type type-name is array (start downto en d) of element-typ e;

type type-name is array (range-typ e) of element-typ e;

type type-name is array (range-type range start to en d) of element-typ e;

type type-name is array (range-type range start downto en d) of element-typ e;

Example (array type):

type monthly_count is array (1 to 1 2) of integer;

type byte is array (7 downto 0) of std_logic;

constant word_len: integer:= 32;

type word is array (word_len – 1 downto 0) of std_logic; -- note: a range

value can be a simple expression.

constant num_regs: integer:= 8;

type reg_file is array (1 to num_reg s) of word; -- a two dimensional array

type statecount is array (traffic_light_stat e) of integer; -- an enumerated

type can be the range.

 

Примечание 1:

Элементы массива упорядочены слева направо, в том же самом направление как индексный диапазон, Таким образом, крайние левые элементы для массивов типов будут:

monthly_count - 1, byte - 7, word - 31, reg_file - 1 и statecount - не указан.

 

Примечание 2:

Обращение (доступ) к ячейкам массива реализуется использованием пары круглых скобок. Если M, B, W, R, и S - сигналы или переменные являются массивами указанных выше типовто записи вида: M(11), B(5), W(word_len – 5), R(0, 0), S(reset) определяют доступ к соответствующим ячейкам. Номер ячейки указан в круглых скобках.

 

Примечание 3:

Массив литералов можно специфицировать путем использования различных форматов:

 

B:= (‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’);

B:= “11111111”;

W:= (0=>‘0’, 8=>‘0’, 16=>‘0’, 24=>‘0’, others => ‘1’);

W:= “11111110111111101111111011111110”;

 

Примечание 4:

Возможно также обращение к непрерывному подмножеству или сектору массива.

 

M(6 to 9), B(3 downto 0), W(15 downto 8), S(stop to go).

 

Примечание 5:

Вы можете объединять массивы или присоединять ячейки к массиву используя оператор конкатенации & который присоединят массивы и элемент в порядке слева-направо. т.е.

‘0’ & ‘1’ & “1Z” = “011Z”, B(6 downto 0) & B(7) – присоединяет 1-bit слева и образует 8-bit массив B.

Примечание 6:

Самый важный тип массива - unconstrained array type(массив неограниченного типа):

 

Пример неограниченного типа массива - диапазона массива неопределен:

type STD_LOGIC_VECTOR is array (natural range <>) of STD_LOGIC;

 

 


Дата добавления: 2015-11-14; просмотров: 42 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Программные единицы языка VHDL| Элементы проектирования устройств комбинаторной логики через поток данных (Dataflow design elements)

mybiblioteka.su - 2015-2024 год. (0.01 сек.)