Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭИС-2 / ЛР-4 / ЭИС2 №4.odt
Скачиваний:
7
Добавлен:
15.06.2026
Размер:
2 Мб
Скачать
☆

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'.

Соседние файлы в папке ЛР-4