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

5 / ЦУиМ_5

.docx
Скачиваний:
0
Добавлен:
24.06.2025
Размер:
616.05 Кб
Скачать

МИНЕСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное учреждение высшего образования

«Московский технический университет связи и информатики»

Лабораторная работа №5

Проектирование клавиатуры на языке ASCII.

по дисциплине

«Цифровые устройства и микропроцессоры»

Выполнила: студентка гр. БВТ2403

Лебедева Е.И.

Проверил:

Москва, 2025 г.

Цель: научиться строить и пользоваться клавиатурой на языке ASCII в программе Logisim.

Оборудование: ноутбук с установленной программой Logisim.

Практика:

1. Для начала изучим таблицу ASCII и определим, какие символы нам нужно будет обрабатывать, также опишем реализуемые команды.

Команды, которые будут реализованы в данной лабораторной:

MOV n, Ry, ADD Rx, Ry, SUB Rx, Ry, CMP Rx, Ry, OR Rx, Ry, AND Rx, Ry, NOT Rx, STOP.

MOV будет записывать число 0-9 в регистр R0-3. Арифметико-логические команды будут работать с двумя регистрами. STOP будет выводить значение FFFF на выходе, обозначая завершение работы программы.

2. Теперь добавим «смежные» блоки схемы, которые будут использоваться почти на каждом этапе. Меня заинтересовало, как можно реализовать работу клавиши Backspace так, чтобы все D-триггеры не обнулялись (работают как цепь конечного автомата, где последовательность символов строга и неизменна). Мной смоделированы следующие модули:

Delete необходим для проверки, является ли вводимый символ клавишей Backspace, и для записи результата через триггер. Если такой символ введен и до него был введен правильный символ последовательности и в настоящий момент вводится символ, отличный от предыдущего (без повтора), то функция стирания символа работает успешно.

Sym Register – регистр записи символа. Требуется для сохранения предыдущего символа (до введения ошибочного, опечатки). D-Триггер – задний фронт, Reg – передний.

Select Reg – нужен для выбора регистра, в который будет записано результирующее значение. Подаётся адрес, дата и допуск к выборке (1 если мы дошли до конца написания команды, иначе блок - 0).

Copy for sum – требуется для выборки даты из конкретного регистра. Реализовано через комбинационный анализ.

3. Начинается самый сложный этап – реализация 8 команд с операндами.

STOP – выводит FFFF в двоичном виде после обработки 4 символов (регистр не важен). В каждой схеме существует элемент ИЛИ, которые сбрасывает данные доп. памяти для повторной обработки запроса.

MOV n,Rx – записывает значение от 0-9 (но в hex-виде) в один из регистров. Добавлены регистры хранения числа и номера Rx, передающиеся для вывода конечного результата.

ADD Rx,Ry и SUB Rx,Ry – складывают/вычитают значения из регистра Rx и записывают их в Ry (Ry += Rx, Ry -= Rx).

CMP Rx,Ry – сравнивает значения путем вычитания Rx – Ry и проводит их через компаратор с 0, на основе конечных данных загорается один из флагов Z или N. В случае переноса загорается флаг C.

Т.к. схемы отличаются только конечной обработкой данных (не считая константы в компаратарах), на рисунках будет приведена одна полная схема и две частичные с элементами вывода данных.

ADD Rx,Ry

CMP Rx,Ry

NOT Rx – инвертирует биты данных в регистре и записывает их в тот же адрес. Для корректной работы «сброса» всех доп. Регистров добавлены 4 ИЛИ для очистки данных по наличию хотя бы 1 бита единицы и информации об успешном выполнении команды. Данная схема требует доработки, поскольку при инвертировании 1111111 элемент И на конце не сработает и придется делать сброс всей схемы через тоннель Res.

Остается два логических элемента.

AND Rx,Ry – применяет конъюнкцию к двум регистрам и записывает результат в Ry.

OR Rx, Ry – применяет логический элемент ИЛИ к двум регистрам и записывает результат в Ry.

4. Конечный компилятор выглядит следующим образом:

Выводы: на данной лабораторной работе мы познакомились с ASCII кодом, научились обрабатывать символы в виде hex-сигнала, а также смогли реализовать компилятор команд на языке ассемблера с помощью клавиатуры и конечных автоматов.

Соседние файлы в папке 5