Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс.DOC
Скачиваний:
25
Добавлен:
16.04.2019
Размер:
1.48 Mб
Скачать

8.11.3. Сравнение структурного и поведенческого способов

ОПИСАНИЯ ПРОЕКТОВ

Когда следует использовать структурный, а когда поведенческий способ описания проекта?

Структурный способ предусматривает перечисление как типов компонент и их интерфейса (их выводов), так и связей всех компонент между собой, тем самым непосредственно отражая задаваемую для реализации схему, которая и будет создана в выбранной СБИС ПЛ.

Победенческий способ определяет функции, которые должны быть реализованы, но не говорит о том, каким именно способом это должно быть сделано. Так как схемотехнические реализации узлов и устройств практически всегда многовариантны, САПР получает для их реализации определенную свободу действий. Большое достоинство поведенческого варианта его компактность и наглядное представление функционирования устройства, что хорошо видно хотя бы из приведенных примеров. Платой за это является ослабление контроля за способом реализации проектируемого устройства или его фрагмента, поскольку это отдается "на усмотрение" компилятора. При этом следует ожидать, что компилятор может принять реализацию схемы, которая не будет столь же эффективна по быстродей ствию и затратам ресурсов, как выполненная квалифицированным специалистом, хорошо знающим ресурсы и особенности структурной организации выбранной СБИС ПЛ. Поэтому чаще всего комбинируют использование структурных и поведенческих описаний в рамках одного и того же проекта.Для критичных по скорости фрагментов целесообразно использовать структурные описания. Например, задавая функции счета или суммирования, реализуют структуры с параллельными переносами, обеспечивающими наибольшее быстродействие, тогда как компилятор (при неустановленных специальных опциях), возможно, создаст более простые структуры с последовательными переносами. В то же время остальные части проекта целесообразно описать в гiоведенческом варианте, что существенно упрощает задачу.

8.11.4. Описание типовых фрагментов вычислительной техники

Весьма существенным вопросом, интересующим разработчика, является наличие в языке возможностей и/или средств, ориентированных на описание типовых узлов и устройств цифровой техники. В соответствии с традиционным разбиением необходимо оценить воз- можности описания следующих типов узлов: комбинационных схем, регистровых схем и цифровых автоматов.

Функционирование комбинацинных схем удобно описывать достаточно широким классом средств: арифметическими и логическими выражениями, условным или селективным (по выбору) назначением сигналу. В разделе операторов процесса допустимо использование операторов условия (IF) и выбора (CASE). Входы и выходы схемы могут быть представлены в виде сигнала или переменной. Как правило, используются следующие типы данных: bit,bit_vector,std_logic_vector. Использование других типов данных может требовать определения функций взаимных преобразований. Пример образования схемы под именем exampale1, приведенный выше, как раз и соответствует представлению комбинационной схемы в языке VHDL..

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

Поведение регистровых схем удобно описывать, используя либо процессное, либо блочное представление. При процессном представлении внутри оператора PROCESS обычно пользуются операторами условия (IF) и выбора (CASE). При блочном представлении возможно использование операторов условного назначения сигналу (<=…WHEN).

В качестве примера рассмотрим описание поведения триггера D типа "защелка", имеющего вход асинхронного сброса и срабатывающего по фронту тактирующего сигнала.

ENTITY d_ff IS—entity declaration

PORT (d,c,r:IN BIT;-port statement q:INOUT BIT);

ARCHITECTURE one OF d_ff IS

-architecture "one" of entity d_ff

BEGIN

beh_tr:BLOCK(c='1' OR r='1');

BEGIN

q<=GUARDED '0' WHEN r ='1'

ELSE d WHEN c='1' AND NOT c'STABLE

ELSE q;

END BLOCK beh_tr;

END one;

Наибольшее внимание при описании поведения регистровых схем необходимо уделять видам синхронизации входных сигналов (асинхронное, потенциальное или динамическое) и способам задания входных, выходных сигналов и внутренних состояний при описании мно- горазрядных схем (счетчиков, регистров сдвига и т. д.). для определения этих переменных или сигналов в многоразрядных схемах можно использовать понятие вектора или ограничен ного целого (с диапазоном изменения, связанным с разрядностью схемы). Независимо от варианта описания поведения отдельных триггеров и средств, используемых для их объеди- нения в регистровые структуры типа регистров, счетчиков и т. д., рассмотренный подход создает предпосылки для использования языка VHDL в качестве средства, позволяющего описывать вычислительные устройства в терминах и понятиях языка, обычно называемого языком реаистроеых передач.

Следующим типовым фрагментом, играющим очень важную роль в проектировании, яв- ляется цифровой автомат. Основные разновидности поведения автоматов сводятся к автоматам Мили или Мура, хотя расширенные структурные возможности схем ПЛ привели

к широкому практическому распространению разновидности автоматов Мили — асинхрон- ным автоматам Мили.

Наличие в языке возможности использования перечислительного типа данных позволяет ввести перечислительные типы данных «состояния», а при желании разработчика и типы данных «входы» и <выходы».Предпочтительной представляется процессная форма описания поведения автомата.В зависимости от типа используемого автомата его архитектура может включать от одного до четырех процессов. Оператор варианта целесообразно использовать в качестве основного каркаса процессов, для чего каждому состоянию автомата назначается вариант в операторе выбора.Для описания альтернативных вари антов формирования переходов и выходных сигналов (если это необходимо) обычно применяется условный оператор.Отдельный процесс может вводиться для описания процедуры тактирования и начальной установки автомата.

В качестве примера автомата рассмотрим автомат Мили. Пусть автомат задан таблицей переходов (табл. 8.1) и таблицей выходов (табл. 8.2), где в клетках таблицы переходов записаны состояния, в которые переходит автомат из исходного состояния при соответ- ствующем входе, а в клетках таблицы выходов — выходные сигналы при тех же условиях. Нетрудно видеть, что приведенный пример соответствует реверсивному счетчику, причем УI и У2 соответствуют выдаче сигналов переноса.

Фрагмент VHDL-программы, описывающий такой автомат, имеет вид, приведенный в листинге 1. Предполагается, что перечислительный типа задан списком имен, переменные y и x объявлены в ЕпШу блока, в котором определен данный процесс, и их тип задан списком имен-значений.

Процесс после задания исходного состояния (s<=s0) входит в бесконечно повторяющуюся петлю, в начале которой помещен оператор WAIT. Примененная конструкция оператора соответствует синхронному автомату, состояние которого изменяется по тактирующему сигналу p_clk, p_clk причем вляется глобальной переменной проекта.

Важно обратить внимание нато, что изменения состояний происходят в момент появления нарастающего фронта сигнала p_clk, так как запускающее событие определено как «появление единицы и наличие переходного процесса на входе р_сlk.

Синтаксическая конструкция p_clk'stable называется атрибутом сигнала. Атрибут сигнала может принимать значение «истинно» или «ложно» и характеризует некоторые свойства сигнала на момент моделирования (в данном контексте — переходный режим).

Использование в качестве условия продолжения процесса выражения "not p_clk'stable " соответствует реальной структуре устройства, реализующего автомат, в котором состояние отображается состоянием регистра. Так как этот регистр является одновременно датчиком информации о текущем состоянии и приемником нового значения, во избежание гонок необ- ходимо использовать регистры с динамическим управлением, реагирующие на изменение сигнала, что и задается используемой конструкцией условия в операторе ‘

Таблица 8.1 Таблица 8.2

Таблица переходов Таблица выходов

Листина 1

— описано вне процесса

TYPE state IS (s0,s1,s2);

ТYРЕ input IS (x0,x1);

TYPE output IS (y0,y1,y2);

SIGNAL x:INPUT;

SIGNAL y_out:OUTPUT;

…………………..

PROCESS

SIGNAL s:state;

BEGIN

s<=s0;

LOOP

WAIT UNTILI (p_clk='1' AND NOT p_clk'stable);

— Реализация Переходов

CASE s IS

WHEN s0=>IF x=x0 THEN s<=s0;

ELSEIF(x=x1) THEN s<=s1;

ELSE s<=s2;

END IF;

WHEN s1=>IF x=x0 THEN s<=s1;

ELSEIF x=x1 THEN S<=s2;

ELSE s<=s0;

END IF;

WHEN s2=>IF x=x0 THEN s<=s2;

ELSEIF x=x1 THEN S<=s3;

ELSE s<=s1;

END IF;

WHEN s3=>IF x=x0 THEN s<=s3;

ELSEIF x=x1 THEN S<=s0;

ELSE s<=s2;

END IF;

--Формирование выходов

IF (s=s3 AND x=x1) THEN y<=y1;

ELSEIF(s=s0 AND x=x2) THEN y<=y2;

ELSE y<=y0;

END IF;

END LOOP;

END PROCESS;

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

Наличие определенных стереотипов и у проектировщиков, и у САПР для описания типовых фрагментов цифровой техники позволяют упростить написание и понимание описаний на языке VHDL достаточно сложных систем.