
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ОБРАЗОВАНИЯ «МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ»
факультет ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Кафедра программной инженерии
ОТЧЁТ
по лабораторной работе №6
Дисциплина: Цифровые устройства и микропроцессоры
Работу выполнил
студент 1 курса
очного отделения
Подпись студента, число
1. Ввод с клавиатуры и отображение в терминале
Ввод с клавиатуры осуществляется с помощью компонента «Клавиатура», а отображение в терминале с помощью компонента «Терминал» соответственно.
Клавиатура и терминал принимают входной сигнал «Clock» и передают/принимают информацию в закодированном виде посимвольно (кодировка символов ASCII).
2. Поиск команд в тексте с клавиатуры
Для определения введенной команды, нам потребуется посимвольно искать совпадения в названиях команд, для этого можно использовать «Компаратор» и «Константу», запоминая на 1 такт выходное значение равенства компаратора, мы можем последовательно продлить схему, для нахождения последовательностей символов.
На изображении представлена получившаяся схема для последовательности символов «STOP». Здесь значения констант – это ASCII код символов (S=53, T=54, O=4f, P=50).
3. Посимвольный вывод аргументов команды
Так же, я хотел реализовать вывод сырых данных аргументов команды (необработанная ASCII строка, содержащая символы между названием команды и символом переноса строки). Для этого, я использовал 2 компаратора, один включается, когда обнаруживает символ пробела, а второй при переносе строки. Схема получилась не очень читаемой из-за наличия Управляемых буферов, с которыми до этого дела я не имел (я использовал их управляемой передачи 16-битного ASCII кода напрямую с входа, при условии, что был введен пробел, но еще не был введен перенос строки). Таким образом получилась следующая схема:
4. Внедрение схемы «argHandler» в схему поиска команд
В схеме поиска команды, я заменил последний D-триггер на RS-триггер, так как мне нужна возможность его сброса (можно было обойтись и D-триггером, просто подключив контакты к входам «1» и «0»).
Теперь, после успешного обнаружения команды, символы передаются в «argHandler», который в свою очередь передает на 16-битный выход строку с аргументами.
5. Полная схема на 4 команды
Каждая команда имеет всего 2 входа, ввод символов и clock. В зависимости, есть ли у команды аргументы или нет, мы имеем 1 или 2 выхода соответственно (индикатор ввода команды и посимвольный вывод аргументов).
Проверив схему, получаем ожидаемый результат, при вводе строки «ADD 12,R1↵» получаем значение 1 на контакте d команды ADD, и по 1 ASCII символу строки аргументов каждый такт.