Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭИС-2 / ЛР-4 / ЭИС2 №4

.pdf
Скачиваний:
5
Добавлен:
15.06.2026
Размер:
2 Мб
Скачать
☆

Следующая команда — это сброс RST на промежутке 15,5 — 15,7 мкс. Сброс синхронный — по восходящему фронту C_ext в момент времени 15,6 мкс. Входных и выходных данных нет. После сброса счётчик операций обнуляется, все регистры и триггеры возвращаются в исходное состояние.

Второй код 00 на промежутке 15,9 — 16,1 мкс. Момент нарастающего фронта C_ext 16,0 мкс, входные данные data_in = XXXXXX и code_in = 00, активный уровень сигнала RD = 1 на интервале 16,1 — 16,3 мкс. Нисходящие фронты C_out на отметках 16,35 мкс (dout=1), 16,55 мкс (dout=0), 16,75 мкс (dout=0), 16,95 мкс (dout=0) и 17,15 мкс (dout=0). На выходе при последовательной передаче младшими разрядами вперёд (LSB̅ first) получаем поток dout = 10000, что соответствует параллельному коду 00001 из таблицы (счётчик операций после сброса и выполнения одной операции с кодом 00).

Рисунок 3.15 — Моделирования в режиме Functional для 11 и 12 операции

Рисунок 3.16 — Моделирования в режиме Timing для 11 и 12 операции

21

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 —

22

итоговый результат. Также объявлен конечный автомат 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.

23

Рисунок 4.3 — Моделирования в режиме Timing

Рисунок 4.4 – Моделирования в режиме Functional

24

На рисунке 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 — управление сигналом сброса .

25

Счётчик операций: Сумматор Add0 и регистр rescount[4..0] — счётчик с инкрементом по фронту C_ext. Сброс при CLR = '1'.

2.Блок преобразования GCR-кода (зелёный)

•Декодирование по таблице Commodore GCR.

•Компоненты: Мультиплексоры Mux0–Mux4.

•Логика: На селекторные входы поступают младшие 5 бит data[4..0]. На информационные входы поданы константы, формирующие таблицу истинности. Выход — 5-битный resOP0[4..0].

3.Блок побитовой логики (оранжевый)

Выполняет побитовую логическую операцию объединения (A B̅T) с инверсией части разрядов.

•Компоненты: Три элемента ИЛИ (resOP1[2], resOP1[1], resOP1[0]).

•Логика работы: Старшие биты data[5..3] логически комбинируются с инвертированными младшими битами data[2..0].

4.Блок арифметического сложения (жёлтый)

Реализует вычисление арифметических функций с расширением разрядности.

•Компоненты: Сумматоры Add1 и Add2.

•Логика работы: Выполняется сложение вида A + B̅ + 1, где в качестве операндов выступают разделенные триплеты данных: старшая тройка data[5..3] и младшая тройка data[2..0]. За счет переносов и архитектуры сумматоров разрядность выходного значения увеличивается (расширение сетки для предотвращения переполнения).

5.Коммутатор результатов и задание лимитов (синий)

Этот узел выбирает, какой именно результат вычислений пойдет на выход, и сколько бит нужно будет передать.

•Компоненты: Мультиплексоры Mux5–Mux9 (выбор результата).

•Логика выбора: Код op[1..0] управляет мультиплексорами Mux5– Mux9, выбирая один из источников: rescount, resOP0, resOP1, resOP2. Результат — res[4..0].

26

6.Выходной каскад и Конечный автомат (фиолетовый)

•Преобразование параллельного результата в последовательный поток, синхронизированный с C_int.

•Компоненты управления:

•Регистр stout[1..0] — состояние автомата (3 состояния: 0, 1,

2).

•Счётчик cnt[2..0] — счётчик выданных бит.

•Компаратор LessThan0 — сравнение cnt < max_cnt.

•Логика автомата: По фронту C_int автомат последовательно выдаёт биты res(cnt) через мультиплексоры Mux10, Mux11, Mux12, Mux13, Mux14, Mux15. Мультиплексоры dout-0 и dout-1 коммутируют биты в последовательный поток.

•Выходные регистры:

•dout-reg0 — последовательный выход dout.

•C_out-reg0 — строб готовности данных C_out.

27

Заключение

В результате лабораторной работы был разработан вычислительный блок, реализующий задачу проверки Commodore GCR-кода (код 01), выполнение логической побитовой операции A B̅T (код 10) и арифметической операции A+B̅+1 (код 11). Вход схемы осуществляется нарастающим фронтом параллельным кодом при синхронном сбросе. Выход реализован последовательным кодом младшими разрядами вперёд (LSB̅) по убывающему фронту при активном уровне сигнала read = 1.

Помимо этого было проведено моделирование работы устройства и описание схемы на языке VHDL. Результаты моделирования совпали с таблицей истинности.

Также были выполнены описание структурной и функциональной схем, моделирование схемы в САПР Quartus II, а также построение и описание RTLсхемы по коду VHDL.

28

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