Лупашевский Владислав Александрович

Немецкий технический факультет
Кафедра компьютерной инженерии
Специальность «Компьютерные системы и сети»

Идентификация жестов рук человека на базе методов сегментации

Научный руководитель: к.т.н., проф. Аноприенко Александр Яковлевич

Одноплатный компьютер на базе MOS 6502 – это просто

Предисловие

Во время обучения на четвертом курсе у меня возникла идея построить простой одноплатный компьютер. Так как я был уже ознакомлен с азами компьютерной схемотехники, а также архитектуры компьютера, проектирование оного не составило больших проблем. Помимо этого, я имел уже большой опыт работы с микроконтроллерами серии AVR и ARM и собирал на них устройства разной сложности. Так что проблем с проектированием схем и трассировкой плат у меня не могло возникнуть.
Основной задачей было выбрать процессор, на базе архитектуры которого будет построен компьютер. Сперва я задумался об использовании Intel i8086, отечественную копию которого мне удалось без труда достать, помимо этого, в добавок, удалось заполучить схему генератора, схему контроля шины, а также множество периферийных микросхем, таких как: таймер i8253, контроллер прерываний i8259 и устройство параллельного ввода/вывода i8255. При наличии двух 8-ми битных микросхем памяти EPROM и двух 8-ми битных микросхем RAM, а также разной мелочевки можно было без труда построить компьютер на базе процессора 8086.
Однако после этого мне попался на глаза процессор MOS 6502, а точнее его CMOS аналог – Rockwell 65C02. Такие процессоры применялись в компьютерах Apple I и II, а также в приставках NES и многих других девайсах того времени. Почитав даташит на данный процессор, я понял, что реализовать одноплатный компьютер на базе 6502 будет намного проще. Основная сложность при сборке подобного рода девайсов заключается в большом количестве переходных отверстий на плате, которые необходимо соединять вручную, т.к. технологии металлизации в домашних условиях мне были не доступны. А это является довольно трудоемкой задачей, необходимо каждое переходное отверстие запаивать куском провода с двух сторон платы и когда таких переходных отверстий на плате больше 200, это не приносит большого удовольствия. Поэтому, я полагаю, это и было основной причиной собрать более простую схему.

Описание процессора 65С02

Процессор 65С02 построен на архитектуре CISC, т.е. длинна команды является нефиксированной, и в случае процессора 65С02 может иметь размер от 1 до 3 байт. Всего доступно 69 ассемблерных команд, которые реализуются 212 кодами операций. Процессор 65С02 является 8-ми разрядным, соответственно имеет 8-ми битную шину данных, АЛУ, и регистры общего назначения (аккумулятор, указатель стека, индексные регистры и регистр флагов). 16-ти битная шина адреса позволяет адресовать 64 килобайт адресного пространства. Данный процессор поддерживает 16 видов адресации. Различные версии могут работать на частотах от 2 о 14 МГц. Напряжение питания – 5 вольт.
Рисунок 1. Расположение выводоа на процессоре 65С02

Процессор имеет вход тактирования ɸ0, на вход которого необходимо подавать прямоугольный сигнал тактирования. Также процессор имеет выходы тактирования ɸ1 и ɸ2, которые используются для тактирования периферийных устройств. Данные выходы являются противоположными друг другу, т.е., когда на выходе ɸ1 лог. 1 на выходе ɸ2 будет присутствовать лог.0.
Вход RDY предназначен для перевода процессора в режим ожидания. Это может быть использовано для реализации пошагового выполнения программ, также данный вход используется в мультипроцессорных системах, в системах с медленной памятью и системах использующих DMA.
Вход nIRQ – это вход прерывания, которое срабатывает по заднему фронту. Вектор процедуры прерывания находится по адресу FFFE:FFFF.
Вход nNMI – это вход немаскируемого прерывания, срабатывающего по заднему фронту. Вектор процедуры немаскируемого прерывания находится по адресу FFFA:FFFB.
Вход nRES – это вход сброса процессора. После сброса процессор начинает выполнять команды по адресу, указанному в векторе FFFC:FFFD.
Выход SYNC показывает, когда процессор «подхватывает» инструкцию из памяти (устанавливается в лог.1). Данный выход совместно с входом RDY может быть использован для реализации пошагового режима.
Выход R/nW показывает в каком состоянии находится процессор. Если на выходе лог.0, значит процессор записывает информацию, если лог. 1, то читает.
При помощи входа nSO можно установить бит переполнения V. Для этого необходимо установить его в лог.0.
Пины D0-D7 и A0-A15 – шины данных и адреса соответственно.
Временная диаграмма работы одного такта процессора показана на рисунке 2.
Рисунок 2. Временная диаграмма работы одного такта процессора 65С02

Собственно, девайс

Принципиальная схема одноплатного компьютера представлена на рисунке 3.
Рисунок 3. Принципиальная схема одноплатного компьютера на базе процессора 65С02

В качестве преобразователя напряжения используется линейный DC преобразователь 7805, который имеет максимальное ограничение по току 1.5 А.
На схеме реализован простейший генератор тактовых сигналов с частотой 2 МГц на основе микросхемы 74HC04 и кварца на 2 МГц. На двух триггерах Шмидта реализована схема сброса процессора, которая будет срабатывать при подаче питания, благодаря цепочке R4 C1. Также представляется возможность произвести ручной сброс при помощи кнопки S1.
Так как порты ввода/вывода используют общее адресное пространство с памятью, то было решено разделить адресное пространство на три части: старшие 32 кбайт пространства отданы под ПЗУ, т.к. в ней должен хранится вектор сброса (FFFC:FFFD), далее область 7F80-7FFF используется портами ввода/вывода и область 0000-7F7F используется ОЗУ.
В соответствии с данной аллокацией памяти была синтезирована логика chip-select, на вход которой подается шина адреса, а на выходе имеем сигналы выбора микросхемы: один для ПЗУ, один для ОЗУ и восемь для портов ввода/вывода.
В данной версии микрокомпьютера используется 6 устройств ввода/вывода, а именно LCD дисплей, матричная клавиатура, параллельный порт, таймер, конфигурационный регистр для таймера и порт ввода. Остальные два выхода chip select выведены на порт расширения, что позволяет подключить дополнительную периферию.
В качестве ПЗУ могут использоваться микросхемы серий 27С64-27С020. Для микросхем ПЗУ объемом более 32 килобайт, программу необходимо загружать в самую старшую часть адресного пространства ПЗУ.
В качестве ОЗУ используется микросхема 62С256 либо ее аналоги.
Так как для периферийных устройств необходимо два сигнала - один для чтения и другой для записи, а процессор выдает только один сигнал чтения/записи, была синтезирована простая КЛС на базе трех элементов 2И-НЕ (IC7) исходя из временной диаграммы работы одного такта процессора (рисунок 2). Процесс чтения выполняется при состоянии лог. 1 тактового сигнала ɸ2 и при уровне лог. 1 сигнала R/nW. Процесс записи выполняется аналогично, только сигнал R/nW находится в состоянии лог. 0. Собственно, для получения сигнала nREAD необходимо произвести конъюнкцию сигналов ɸ2 и R/nW, и затем проинвертировать результат, а для получения сигнала nWRITE необходимо произвести конъюнкцию сигналов ɸ2 и инверсного R/nW, и затем также проинвертировать результат.
В качестве LCD дисплея применяется дисплей на основе контроллера HD44780 размером 16 символов и 2 строки. Для его управления применяется регистр 74HC377 (IC9). Помимо этого, к данному регистру подключен светодиод, который может применятся для отладки. Старший бит данного регистра отвечает за включение динамика-пищалки.
К данному компьютеру можно подключить любую матричную клавиатуру размером до 8х8. Сигналы KQ1-KQ8 являются сигналами сканирования клавиатуры. Сигналы KA1-KA8 представляют собой сигналы результата сканирования. Процесс сканирования начинается с записи в регистр IC13 бита для сканирования, затем при помощи буферных элементов IC12 происходит считывание результата. Для записи и считывания используется один и тот же порт. Это реализовано при помощи элемента 2ИЛИ IC15.
Порт ввода представляет собой 8-ми разрядный DIP – переключатель, который подключается к шине данных через буферные элементы IC16.
В качестве таймера применяется микросхема Intel i8253, которая представляет собой 3х канальный таймер. Нулевой канал подключается через джампер JP1 ко входу nNMI процессора. Первый канал выведен на разъем JP7 и может использоваться для управления внешними устройствами, либо для отладки. Ко второму каналу таймера подключен динамик-пищалка. Это позволяет генерировать простейшие звуки при помощи данного компьютера. Вход GATE для первого канал подключен к +5В, для первого и второго каналов управление входами GATE производится при помощи конфигурационного регистра.
Устройство параллельного интерфейса реализовано на микросхеме Intel i8255, порты ввода/вывода которой выведены на разъем JP5 и могут применяться для подключения различных периферийных устройств.
На рисунке 4 представлена фотография готового одноплатного компьютера.
Рисунок 4. Готовое устройство

Результаты работы

После сборки в ПЗУ была записана программа, которая через регистр IC9 зажигала светодиод. После запуска компьютера светодиод загорелся, что свидетельствует о правильно работе процессора и правильно выполненной сборки.

Дальнейшие планы

В настоящий момент производится разработка простейшей операционной системы для данного компьютера, которая позволит записывать программы при помощи клавиатуры в память и выполнять их (также пошагово), а также выводить результат на LCD дисплей.
Даташит на используемый процессор можно взять здесь
Copyright © 2016 Lupashevskyi Vladyslav
All rights are reserved