- •Введение
- •1 Структурная схема
- •2 Форматирование таблиц истинности
- •3 Вычислительный блок
- •4 Описание схемы на hdl
- •1. 1. Блок входной синхронизации и хранения данных (красный)
- •5. Коммутатор результатов и задание лимитов (синий)
- •6. Выходной каскад и Конечный автомат (фиолетовый)
- •Заключение
- •2. Блок преобразования gcr-кода (зелёный)
- •3. Блок побитовой логики (оранжевый)
- •4. Блок арифметического сложения (жёлтый)
4 Описание схемы на hdl
По варианту было определенно, что для работы будет использоваться язык описания VHDL. Ниже, на рисунке 4.1 представлен код описывающий схему вычислительного блока.
Р
исунок
4.1
— Описание на VHDL
Строки 1–3: Подключение стандартных библиотек IEEE: STD_LOGIC_1164 для работы с логическими типами и STD_LOGIC_UNSIGNED для арифметических операций над векторами.
Строки 5–15: Объявление сущности lb4_vhdl с портами: data_in (6 бит), code_in (2 бит), тактовые сигналы C_int и C_ext, сигнал сброса RST, сигнал разрешения выдачи RD, выходной строб C_out и последовательный выход dout.
Строки 17–34: Архитектура synth. Объявлены внутренние сигналы: op — код операции, data — входные данные, rescount — 5-битный счётчик операций, resOP0, resOP1, resOP2 — результаты трёх операций, res — итоговый результат. Также объявлен конечный автомат stout (3 состояния), max_cnt — максимальное число выдаваемых битов, cnt — счётчик выданных битов, CLR — сигнал сброса. Псевдонимы A и B обозначают старшие и младшие 3 бита данных.
Строки 36–48: Процесс по C_ext и CLR. При CLR = '1' обнуляются счётчик, код операции, данные и сам CLR. По фронту C_ext защёлкиваются code_in и data_in, счётчик rescount инкрементируется, в CLR записывается RST.
Строки 50–61: Комбинационный процесс по data(4 downto 0) реализует таблицу проверки GCR-кода Commodore: для пяти фиксированных 5-битных комбинаций на resOP0 выдаётся соответствующий 5-битный признак, для остальных — "00001". Параллельно формируются resOP1 (побитное ИЛИ A с инверсией B с двумя ведущими нулями) и resOP2 (сумма A + B + 1 с ведущим нулём).
Строки 63–76: Мультиплексор по op выбирает результат: "00" — счётчик rescount, "01" — таблица resOP0, "10" — логика resOP1, "11" — арифметика resOP2.
Строки 78–85: Комбинационный процесс устанавливает max_cnt: для операций "10" и "11" — 3 бита, для остальных — 5 бит.
Строки 87–129: Процесс по C_int и CLR реализует конечный автомат выдачи. При сбросе — начальное состояние. Состояние 0: при RD = '1' выдаётся res(0), cnt = 1, переход в состояние 1. Состояние 1: строб C_out = '0', переход в состояние 2. Состояние 2: если cnt < max_cnt, выдаётся res(cnt), строб C_out = '1', инкремент cnt, возврат в состояние 1; иначе — строб C_out = '1' и возврат в состояние 0.
Р
исунок
4.3 — Моделирования в
режиме Timing
Р
исунок
4.4 – Моделирования
в режиме Functional
На рисунке 4.5 представлена RTL на базе написанного кода.
Р
исунок
4.5 — RTL схема
1. 1. Блок входной синхронизации и хранения данных (красный)
Отвечает за фиксацию входных сигналов по внешнему тактовому сигналу C_ext и формирование базовых управляющих сигналов.
Входные порты: RST, C_ext, code_in[1..0], data_in[5..0], RD.
Регистры фиксации:
Регистр op[1..0] — код выполняемой операции.
Регистр data[5..0] — входные данные.
Регистр CLR — управление сигналом сброса .
Счётчик операций: Сумматор Add0 и регистр rescount[4..0] — счётчик с инкрементом по фронту C_ext. Сброс при CLR = '1'.
