Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Описание ЦУ на VHDL.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
374 Кб
Скачать
☆

2.1. Описание интерфейса

В языке VHDL логическая схема представляется как объект проекта. Представляемая логическая схема может быть достаточно сложной, как, например, микропроцессор или весьма простой, как логический вентиль 2И-НЕ. Каждый объект проекта в свою очередь имеет два различных типа описаний: описание интерфейса и одно или более архитектурные тела.

В табл. 1 представлен синтаксис объявления объекта. Целью объявления объекта, помимо присвоения объекту имени, является определение сигналов внешнего интерфейса или портов (ports) в части объявления объекта, которая называется объявлением портов (port declaration). Кроме ключевых слов entity, is, port и end, объявление объекта содержит следующие элементы:

Entity_name – выбираемое пользователем имя объекта;

Signal_names – список выбираемых пользователем имен сигналов внешнего интерфейса, состоящий из одного имени или из большего числа имен, разделенных запятой;

Mode – одно из четырех зарезервированных слов, определяющих направление передачи сигнала:

а) in сигнал на входе объекта;

б) out сигнал на выходе объекта; заметьте, что значение такого сигнала нельзя «прочитать» внутри структуры объекта; он доступен только объектам, использующим данный объект;

в) buffer сигнал на выходе объекта, такой что его значение можно читать также внутри структуры данного объекта;

г) inout сигнал, который может быть входным или выходным для данного объекта; обычно этот режим используется применительно к входам-выходам ПЛУ с тремя состояниями;

Signal_type – встроенный или определенный пользователем тип сигнала.

Замечание. Обратите внимание, что после заключительного signal_ type нет точки с запятой; изменение порядка следования закрывающей скобки и точки с запятой после нее типичная синтаксическая ошибка программиста, начинающего писать на языке VHDL.

Таблица 1. Синтаксис объявления объекта на языке VHDL.

entity

entity_name is

port

(signal_names: mode signal_type;

signal_names: mode signal_type;

…………………………………..

signal_names: mode signal_type);

end

entity_name

Порты объекта, а также направление передачи и типы сигналов – это все, что видят другие модули, использующие данный модуль.

Проиллюстрируем это понятие на примере. Описание интерфейса для схемы дешифратора, которая преобразует входной четырехразрядный код в напряжение низкого уровня на одном из 10 выходов.

entity Id_1 is

port(A: in bit_vector(0 to 3); Y: out bit_vector(0 to 9));

end Id_1;

2.2. Архитектурные тела

Описание интерфейса по существу определяет только входы-выходы объекта проекта. Кроме этого необходимо иметь средства описания поведения объекта. В языке VHDL для этой цели служит так называемое архитектурное тело. Это тело может определять поведение объекта непосредственно или представлять структурную декомпозицию на более простые компоненты.

В табл. 2 представлен синтаксис объявления архитектурного тела.

Таблица 2. Синтаксис определения архитектуры на языке VHDL.

architecture

Architecture_name of entity_name is

type declarations

signal declarations

constant declarations

function definitions

procedure definitions

component declarations

begin

Concurrent_statement

…………………………

Concurrent_statement

end

Architecture_name;

Имя объекта (entity_name) в этом определении должно быть таким же, какое раньше было присвоено объекту в объявлении объекта. Имя архитектуры (architecture_name) – это выбираемый пользователем идентификатор, обычно так или иначе связанный с именем объекта; при желании имя архитектуры может быть тем же самым, что и имя объекта.

Сигналы внешнего интерфейса архитектуры (порты) наследуются от той части объявления соответствующего объекта, где объявляются порты. У архитектуры могут быть также сигналы и другие объявления, являющиеся для нее локальными, подобно тому, как это имеет место в других языках высокого уровня. В отдельном «пакете», используемом несколькими объектами, можно сделать объявления, общие для этих объектов.

Объявления в табл. 2 могут располагаться в произвольном порядке. Начать легче всего с объявления сигнала (signal declaration), которое сообщает ту же самую информацию о сигнале, какую содержит объявление порта, за исключением того, что вид сигнала не задается:

signal signal_names : signal_type;

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

Переменные (variables) в языке VHDL похожи на сигналы, за исключением того, что, как правило, они не имеют никакого физического смысла в схеме. Переменные используются в функциях, процедурах и процессах языка VHDL. Объявление переменной выглядит следующим образом:

variable variable_names : variable_type;

Ниже, в качестве примера, показано архитектурное тело для дешифратора Id_1:

Architecture DC of Id_1 is

Begin

Process(A)

Begin Y<=”1111111111”

Case A(0 to 3) is

when(“0000”) => Y <=”0111111111”

when(“1000”) => Y <=”1011111111”

when(“0100”) => Y <=”1101111111”

when(“1100”) => Y <=”1110111111”

when(“0010”) => Y <=”1111011111”

when(“1010”) => Y <=”1111101111”

when(“0110”) => Y <=”1111110111”

when(“1110”) => Y <=”1111111011”

when(“0001”) => Y <=”1111111101”

when(“1001”) => Y <=”1111111110”

end case;

end process;

end DC;

В архитектурном теле отсутствует программный цикл, осуществляющий сканирование входов от до , вместо этого применен оператор выбора case, в котором управляющее выражение – битовый вектор. В зависимости от значений входного вектора , определяется значение выходного вектора . Нумерация разрядов в векторе осуществляется слева направо.