- •Аннотация
- •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. Компараторы
If in_f then
out[] = 3;
ELSIF in_s THEN
out[] = 2;
ELSIF in_t THEN
out[] = 1;
ELSE
out[] = 0;
END IF;
END;
Файл case.tdf, описывает дешифратор из 3 в 8 бит с использованием оператора CASE.
SUBDESIGN case
(
In[2..0] : input;
out[7..0] : OUTPUT;
)
BEGIN
CASE in[] IS
WHEN 0 => out[] = B"00000001";
WHEN 1 => out[] = B"00000010";
WHEN 2 => out[] = B"00000100";
WHEN 3 => out[] = B"00001000";
WHEN 4 => out[] = B"000100000";
WHEN 5 => out[] = B"001000000";
WHEN 6 => out[] = B"010000000";
WHEN 7 => out[] = B"100000000";
END CASE;
END;
В этом примере входной код шины имеет значения от 0 до 8. В операторе Case за символом => следует активизируемое уравнение. Например, если in[] равен 1, то выход out1 устанавливается в B"00000010".
6.3.3 Проектирование на языке ahdl с помощью таблиц истинности.
Язык AHDL позволяет описывать комбинационные схемы при помощи таблиц истинности.
Файл truth_table.tdf, является дешифратором описанным при помощи таблицы истинности.
SUBDESIGN truth_table
(
In[2..0] : input;
out0, out1, out2, out3, out4, out5, out6 : OUTPUT;
)
BEGIN
TABLE
i[3..0] => out0, out1, out2, out3, out4;
H"0" => 1, 1, 1, 1, 0;
H"1" => 1, 0, 0, 0, 0;
H"2" => 0, 1, 1, 0, 1;
H"3" => 1, 1, 0, 0, 1;
H"4" => 1, 0, 0, 1, 1;
H"5" => 1, 1, 0, 1, 1;
H"6" => 1, 1, 1, 1, 1;
H"7" => 1, 1, 0, 1, 0;
END TABLE;
END;
В приведенном примере описан выходной набор для всех 8 возможных комбинаций входных воздействий.
Файл truth_table_with_x.tdf, является примером когда при помощи таблицы истинности описывается не весь набор входных воздействий, а лишь те, которые влияют на состояние выходных сигналов.
SUBDESIGN truth_table_with_x
( in[10..0], en : INPUT;
out0, out1, bus[2..0] : OUTPUT; )
BEGIN
TABLE
en, in[10..0] => out0, out1, bus[];
1, B"00XX1XXX0XX" => 1, 0, B"000";
1, B"100XXX1XXX0" => 0, 1, B"001";
0, B"00000010101" => 0, 0, B"010";
1, B"00000010110" => 0, 0, B"011";
0, B"00010011011" => 0, 0, B"100";
END TABLE;
END;
В этом примере существуют тысячи входных наборов и описывать их все в таблице истинности непрактично. Вместо этого можно использовать логический уровень Х для указания того, что выход не зависит от соответствующего входа. То есть необходимо точно определить только общую часть входного набора, а для остальных входов использовать символ Х.
При использовании символов Х необходимо гарантировать отсутствие наложений между битовыми комбинациями в таблице истинности. Язык AHDL предполагает, что одновременно только одно условие в таблице истинности может быть истинно.
При помощи оператора DEFAULT можно присваивать значения по умолчанию для операторов IF THEN, CASE и таблиц истинности.
6.3.4 Операторы If Generate, For Generate
Оператор If Generate содержит список операторов, активизирующийся в случае положительного результата оценки арифметического выражения.
Следующий пример демонстрирует использование оператора If Generate:
IF DEVICE_FAMILY == "FLEX8K" GENERATE
c[] = adder16a(a[], b[], cin);