- •Аннотация
- •1.2. Программные модули
- •2.1. Способы описания проектов бис.
- •Техническое задание
- •2.2. Подготовка описания тестовых воздействий для моделирования работы бис.
- •2.3. Этапы отладки проекта плис
- •3.1. Графический ввод и редактирование схемы
- •3.2 Ввод и редактирование тестов
- •3.3. Программа моделирование
- •3.4 Программатор плис.
- •4. Проектирование плис в базисе примитивов.
- •4.1. Мультиплексор Мультиплексор представляют собой логическую схему,имеющуюnсигнальных входов,mвходов адреса и один выходQ.
- •4.2. Шифратор Шифратор представляют собой логическую схему, имеющую nвходов иmвыходов
- •4.3. Демультиплексор Демультиплексор представляют собой логическую схему, имеющую один информационный вход, mвходов адреса иnвыходов.
- •Обычно выполняется соотношение
- •4.5. Сумматоры
- •Выходами одноразрядного сумматора являются выход суммы текущего разряда (s) и выход переноса в следующий разряд (p).
- •4.6. Вычитатели
- •Выходами одноразрядного вычитателя являются выход разности текущего разряда (r) и выход заёма в старшем разряде (z).
- •4.7. Асинхронные счетчики.
- •4.8. Синхронные счетчики
- •4.9. Последовательные сумматоры и вычитатели.
- •4.10. Дешифратор Дешифратор представляют собой логическую схему, имеющую nвходов иmвыходов
- •5. Проектирование плис с использованием lpm модулей
- •5.1 Lpm модуль счетчика
- •5.2 Lpm модуль сдвигового регистра.
- •5.3 Lpm модуль пзу.
- •6. Описание работы схем на поведенческом языке ahdl.
- •6.1. Введение в язык ahdl
- •В языке ahdl допускается числа следующих типов.
- •Выражения
- •6.2. Структура текстового описания бис на языке ahdl
- •6.3. Основные элементы языка.
- •6.3.1 Булевы уравнения, группы.
- •In0, in21, in3 : input;
- •In_f, in_s, in_t : input;
- •If in_f then
- •In[2..0] : input;
- •6.3.3 Проектирование на языке ahdl с помощью таблиц истинности.
- •In[2..0] : input;
- •6.3.4 Операторы If Generate, For Generate
- •Else generate
- •Variable
- •6.3.5. Проектирование на языке ahdl с использованием примитивов.
- •Оператор непосредственного обращения к примитиву имеет следующий вид:
- •Variable
- •7.5. Сумматоры
- •Subdesign suma
- •Variable
- •7.6. Вычитатели
- •Variable
- •7.7. Шинные формирователи
- •Subdesign shina
- •Variable
- •7.8. Счетчики
- •Variable
- •7.9. Дешифраторы
- •7.10. Компараторы
Else generate
c[] = adder_def(a[], b[], cin);
END GENERATE;
Оператор If Generate имеет следующие характеристики:
Между ключевыми словами If Generate заключается арифметическое выражение, значение которого подвергается оценке. За ключевым словом GENERATE следует список операторов, каждый из которых заканчивается символом «;». Операторы активизируются в том случае, если арифметическое выражение принимает истинное значение.
За ключевыми словами ELSE GENERATE следует один или более операторов, которые активизируются в случае, если арифметическое выражение принимает ложное значение.
Оператор If Generate заканчивается ключевыми словами END GENERATE, за которыми следует символ «;».
Оператор If Generate может использоваться в разделе Logic и в разделе Variable.
В отличие от операторов If Then, которые могут оценивать лишь значения булевских выражений, операторы If Generate могут оценивать значения наборов арифметических выражений. Основное различие между операторами If Then и If Generate состоит в том, что в первом случае значение булевского выражения оценивается аппаратным способом (в кремнии), а во втором случае значение набора арифметических выражений оценивается на этапе компиляции.
Оператор For Generate. Следующий пример показывает использование итерационного оператора For Generate:
CONSTANT WIDTH = 6;
SUBDESIGN adder
(
suma[WIDTH ..1], sumb[WIDTH..1],
carry_in : INPUT;
out[WIDTH..1], carry_out: OUTPUT;
)
Variable
cout[(WIDTH +1)..1] : NODE;
BEGIN
cout[1] = carry_in;
FOR i IN 1 TO WIDTH GENERATE
out[i]=suma[i]$sumb[i]$cout[i];% Полный сумматор %
cout[i+1]=suma[i]&sumb[i]#cout[i]&(suma[i]$sumb[i]);
END GENERATE;
carry_out=cout[WIDTH +1];
END;
Оператор For Generate имеет следующие характеристики:
Между ключевыми словами FOR и GENERATE заключаются следующие параметры:
1. Временная переменная, представляющая собой символическое имя. Эта переменная используется лишь в пределах оператора For Generate и заканчивает свое существование после того, как компилятор обработает этот оператор. В примере, показанном выше, такой переменной является переменная i. Это имя не может использоваться в качестве имени константы, параметра или узла в пределах данного проекта.
2. За ключевым словом IN следует диапазон, ограниченный двумя арифметическими выражениями. Арифметические выражения разделяются между собой ключевым словом TO. В примере, показанном выше, арифметическими выражениями являются 1 и WIDTH. Границы диапазона могут содержать выражения, состоящие только из констант и параметров; использование переменных при этом недопустимо.
За ключевым словом GENERATE следует один или более логических операторов, каждый из которых заканчивается символом (;).
Оператор If Generate заканчивается ключевыми словами END GENERATE, за которыми следует символ (;).
6.3.5. Проектирование на языке ahdl с использованием примитивов.
Для использования в текстовом описании модуля примитива необходимо обратиться к встроенному в пакет функциональному описанию данного примитива и сопоставить его выводам числа, константы, переменные или выводы модуля.
В AHDL определены два способа обращения к примитиву:
непосредственное обращение (In_line Reference);
присвоение примитиву символического имени, т.е. объявление его переменной, и обращение к нему как к переменной.