Примитивы триггеров.
Триггеры задаются описанием прототипа. В этом описании указываются имя триггера, имена входов и выходов, а также порядок следования имен входящих триггеров.
D-триггер: FUNCTION DFF (D, CLK, CLRN, PRN);
RETURNS (Q)
FUNCTION DFF (D, CLK, CLRN, PRN, ENA);
RETURNS (Q)
T-триггер: FUNCTION TFF (T, CLK, CLRN, PRN);
RETURNS (Q)
FUNCTION TFF (T, CLK, CLRN, PRN, ENA);
RETURNS (Q)
JK-триггер: FUNCTION JKFF (J, K, CLK, CLRN, PRN);
RETURNS (Q)
FUNCTION JKFF (J, K, CLK, CLRN, PRN, ENA);
RETURNS (Q)
SR-триггер: FUNCTION SRFF (S, R, CLK, CLRN, PRN);
RETURNS (Q)
FUNCTION SRFF (S, R, CLK, CLRN, PRN, ENA);
RETURNS (Q)
Триггер отсечки LATCH: FUNCTION LANCH (D, ENA);
RETURNS (Q)
Выводы триггеров:
D,T,J,K,S,R– информационные
CLK– синхронизация по переднему фронту Ø 1
CLRN– вход асинхронного сброса. Активен когда Ø
PRN– вход асинхронной установки. Активен когда Ø
ENA – активный вход 1
Q – выход
Триггер отсечки:
-
ENA
D
Q
0
X
Q*
1
0
0
1
1
1
Q* - значение входаDна момент времени последнего переходаENA1Ø (отсечка происходит)
Структура программы языка ahdl
Текстовое описание на языке AHDLделится на три части:
Вводная
Описание интерфейса (Subdesign Section)
Описание логики (Logic Section)
Вводная часть состоит из 8 операторов. Все они не являются обязательными. В простейшем случае вводная часть может отсутствовать.
оператор заголовка (Title Statement)
Он позволяет задать название для файла отчета (*.RPL)
TITLE “Binary COUNTER”;
оператор включения (Include Statement)
Он включает содержание файла указанного в нем в текущее текстовое описание.
INCLUDE “low_project.inc”;
INCLUDE “const”;
Если имя файла задано без расширения, то по умолчанию ставиться расширение inc. Имя файла не должно содержать пути. Поиск файла включает осуществление компилятором в следующей последовательности:
Директория проекта
Библиотека пользователя
Директории системы
Файл включения может создавать следующие операторы:
Описание прототипа
Обозначения
Объявления параметра
Задание константы
оператор задания константы (ConstantStatement)
Этот оператор присваивает символическому имени числовое значение, либо значение, заданное арифметическим выражением.
CONSTANT UP = H ”140”;
CONSTANT BAR = 3*UP + 256;
Имя константы уникально и не должно содержать пробелов. Оператор может использоваться протокольно.
оператор обозначения (Define Statement)
Он позволяет обозначать арифметическое выражение символическим именем.
DEFINE AB (a,b) = (a+b)*(a-b);
Пример использования:
SUB DESIGN DEF
(data_a[AB(5,1)..0] :INPUT;
data_b[AB(4,2)..0] :OUTPUT;)
Арифметическое выражение может создавать символические имена, определенные ранее.
оператор объявления параметров (ParametrsStatement)
Он позволяет объявить параметры, управляющие реализацией параметризованных модулей. Параметр в языке AHDL- это символическое имя строки символов, заключенное в двойные кавычки или числа, заданного явно или арифметическим выражением. Имя параметра уникально и не содержит пробелов.
PARAMETRS
(FILENAME = “myfile.mit”, WIDTH = 8, NUMWORDS = 2^WIDTH);
Область действия параметров текстового описания, в котором он объявлен, может использоваться многократно.
оператор описания прототипа (Function Prototyp Statement)
Он позволяет описать интерфейс модулей или примитивов, которые будут использованы в данном текстовом описании. Он начинается с ключевого слова FUNCTION, за которым следует имя модуля или примитива, за ним в скобках список входов модуля. Если модуль параметризирован, то следует ключевое словоWITHи заключается в скобках список параметров. Затем пишется ключевое словоRETURNSи за ним в круглых скобках выходы модуля. Оператор заканчивается“;”. Оператор может использоваться многократно.
оператор задания опции (Options Statement)
Он позволяет определить в группе элемент с меньшим индексом. Существуют три варианта его использования:
OPTIONSBITO=MSB– мы полагаем что индекс увеличивается слева направо (А[1..5])
OPTIONSBITO=LSB– мы полагаем что индекс растет справа налево (А[4..1])
OPTIONSBITO=ANY– безразлично как растет индекс
По умолчанию работает вариант 2.
Значение опции, заданной в файле верхнего уровня иерархического распределения и на файлы нижних уровней используется один раз.
оператор контроля (Assert Statement)
Он проверяет истинность арифметического выражения. Если выражение ложно, то выдается сообщение и определяется реакция компилятора.
ASSERT (WIDTH>0)
REPORT “Width(%) must be positive integer” WIDTH
SEVERITYERROR
% - заменяется на значение переменной, содержащейся после кавычек.
Оператор может содержать несколько символов “%”. Ключевое слово SEVERITYнеобязательно. По умолчанию реакцияERROR. Также реакция может быть: предупреждение –WARNING; информация –INFO.
Описание интерфейса (Subdesign Section)
Это описание задает имя модуля и имена его выводов. Имя модуля должно совпадать с именем файла, в котором содержится текстовое описание модуля.
SUBDESIGN project_1
(AB[4..0] : INPUT = VCC;
D : INPUT = GND;
C[7..0] : OUTPUT;
E[3..0] : BITDIR;)
Это должно содержаться в файле project_1.tdf
Типы выводов:
INPUT – входы
OUTPUT – выходы
BITDIR – двунаправленный вывод
Вход импортируемый к состоянию автомата – MACHINEINPUT
Выход экспортируемый к состоянию автомата – MACHINEOUTPUT
Выводы 4 и 5 не используются в верхнем уровне иерархии, т.е. не могут быть выводами БИС. После ключевого слова INPUTможет быть указано базовое значение (логический 0 –GND, логическая 1 –VCC). Базовое значение используется, если вход модуля не подключен.
Раздел описания интерфейса может содержать раздел описания переменных (VariableSection).
Переменная – это символическое имя, предназначенное для обозначения линии связи, линии связи с тремя состояниями, модуля, используемое в текстовом описании в качестве компоненты.
VARIABLE
a,b,c:NODE; - именование линии связи
add:M1; - модулю М1 в тексте прочно присваивается имяadd
t1 :TRI_STATE_NODE; - именование линии связи с тремя состояниями
ff[3..1] :DFF; - говорит о том, что хотим работать с тремяD-триггерами
AA : MACHINE OF BITS (Q1, Q2, Q3)
WITH STATE (A0 = B”000”, A1 = B”001”, A2 = B”011”);
- объявляет автомат
-
Q1
Q2
Q3
A0
0
0
0
A1
0
0
1
A2
0
1
1
В этом разделе описывается алгоритм работы проектируемого устройства. Описание логики заключается в операторные скобки:
BEGIN END;
При описании логики используются следующие языковые конструкции:
Оператор задания базового значения логического уравнения
Оператор CASE
Оператор IF THEN
Оператор IF GENERATE
Оператор FOR
Таблица истинности
Оператор контроля
А также непосредственное обращение к примитивам и модулям нижнего уровня иерархии.
Оператор задания базового значения размещается сразу после BEGIN, а остальные операторы могут следовать в произвольным порядке.