Оглавление:
- Запасы
- Шаг 1: концепция
- Шаг 2: требования
- Шаг 3: Собираем все вместе
- Шаг 4: Тестирование схемы
- Шаг 5: следующий шаг
- Шаг 6: Программа
- Шаг 7: Заключение
Видео: 6502 Minimal Computer (с Arduino MEGA), часть 1: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Микропроцессор 6502 впервые появился в 1975 году и был разработан небольшой командой под руководством Чака Педдла для MOS Technology. Тогда он использовался в видеоприставках и домашних компьютерах, включая Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 и 64. В то время он был одним из самых дешевых на рынке. Он никогда не исчезал, и теперь он используется любителями и профессионалами для многих приложений.
Я использую версию W65C02S6TPG-14, произведенную Western Design Center и потребляющую в десять раз меньше энергии, чем оригинал. Его особенность заключается в том, что он не должен работать на частоте 1 МГц, как оригинальный чип. Он может работать намного медленнее или использоваться для пошагового выполнения программы и даже увеличиваться до 14 МГц. Технические характеристики чипа объясняют его возможности. Другие чипы 6502 не имеют такой возможности и не будут работать таким образом. Чипы в настоящее время доступны на Ebay, а также в других источниках.
Запасы
Все используемые детали в настоящее время доступны на Ebay, AliExpress и других.
Шаг 1: концепция
Я черпал вдохновение у Бена Етера, который выпустил на YouTube серию видеороликов о 6502 и многих других аспектах создания компьютеров и схем. Первоначально программа была написана им, и я изменил ее и некоторые из его проектов, чтобы создать эту инструкцию. Еще одним человеком, который вдохновил меня, был Эндрю Джейкобс, у которого есть раздел на GitHub, где он использует микроконтроллер PIC для управления своим 6502.
Как и Бен, я использую Arduino MEGA для мониторинга 6502. Я также использую MEGA для обеспечения тактового сигнала, в отличие от Бена. В настоящее время я не использую ни EEPROM, ни RAM.
Шаг 2: требования
Для сборки этого «компьютера» список элементов выглядит следующим образом:
1 х Arduino MEGA
1 х Западный проектный центр W65C02S6TPG-14
1 x 74HC00N IC (четырехканальный логический элемент NAND с 2 входами) или аналогичный
1 x 74HC373N IC (восьмеричная прозрачная защелка D-типа) или аналогичный
Макетные доски 2 x 830 отверстий (1 в крайнем случае)
Различные штекеры Dupont - штекерные выводы и соединительные провода
2 светодиода (я использовал синий 5 мм, так как вы можете обойтись без резисторов)
1 x 12 мм мгновенный тактильный кнопочный переключатель, установленный на печатной плате SPST или аналогичный
1 резистор 1 кОм
2 керамических конденсатора по 0,1 мкФ
1 x 8-полосный водяной световой шатер 5 мм, красный светодиод (как указано выше) или 8 светодиодов и резисторы
ПРИМЕЧАНИЕ. Если у вас есть непаянный комплект, вы можете вставить светодиоды неправильно, чтобы они были общим катодом. Я прикрепляю поводок (вместо булавки), чтобы его можно было легко подключить в другом месте. VCC теперь становится Ground. Вы, конечно, можете перевернуть светодиоды (на собранном элементе) и перепаять их, но это много баффа! В настоящее время наборы доступны на AliExpress.
Шаг 3: Собираем все вместе
Мне было проще использовать новые провода DuPont, которые не были отделены от ленты, для шины адреса и данных.
Подключите контакт 9 (A0) 6502 к контакту 52 MEGA, контакт 10 (A1) модуля 6502 к контакту 50 и т. д.
до
Подключите контакт 25 (A15) 6502 к контакту 22 MEGA.
На данный момент 16 подключений.
так же
Подключите контакт 26 (D7) 6502 к контакту 39 MEGA, контакт 27 (D6) модуля 6502 к контакту 41 и т. д.
до
Подключите контакт 33 (D0) 6502 к контакту 53 MEGA.
Еще 8 подключений.
Подключите контакт 8 (VDD) к 5 В на MEGA.
Конденсатор 0,1 мкФ, подключенный от контакта 8 к Gnd макетной платы, может быть здесь полезен, но не обязателен.
Подключите контакт 21 (VSS) к Gnd на MEGA.
Контакты 2, 4, 6, 36 и 38 можно подключить к 5 В
Подключите контакт 37 (Clock) к контактам 2 и 7 MEGA.
Подключите контакт 34 (RWB) к контакту 3 MEGA.
Подключите контакт 40 (сброс), как показано на схеме выше.
Шаг 4: Тестирование схемы
На этом этапе 6502 будет работать, и можно будет использовать программу program1. Если вы используете 8-стороннюю рамку (как указано выше), ее можно вставить прямо в макетную плату, а вывод заземлить, или вы можете использовать 8 светодиодов и резисторы. Светодиоды покажут, что находится на шине данных.
На этом этапе было бы также установить задержки в Loop () на 500 или более, чтобы следить за тем, что происходит.
Вы должны получить аналогичный вывод на последовательном мониторе, как показано выше. При нажатии кнопки Reset процессор выполняет 7 циклов, а затем ищет запуск программы в ячейках $ FFFC и $ FFFD. Поскольку у 6502 нет физических адресов для чтения, мы должны предоставить их от MEGA.
В приведенных выше выходных данных 6502 считывает $ FFFC и $ FFFD и получает $ 00 и $ 10 (младший байт, старший байт), что является началом программы на уровне $ 1000. Затем процессор начинает выполнение программы в ячейке $ 1000 (как указано выше). В этом случае он читает $ A9 и $ 55, то есть LDA # $ 55 (загрузить 85 в аккумулятор). Опять же, поскольку нет места в физической памяти, MEGA имитирует то, что считывается с шины данных.
$ 55 (85) дает двоичный шаблон 01010101, а при повороте на 1 бит влево дает $ AA (170) 10101010.
Программа показывает, что процессор работает правильно, но вскоре приедается, так что переходим к следующей части.
Шаг 5: следующий шаг
Вышеупомянутая «стопка спагетти», вероятно, будет чем-то вроде того, что у вас будет после этого этапа.
Затем вам нужно добавить микросхемы 74HC373N и 74HC00N на макетную плату.
К сожалению, контакты 373 не совпадают с шиной данных, поэтому их необходимо подсоединить проводами.
Подключите 5 В к контакту 20.
Подключите заземление к контакту 10.
Подключите контакт 33 (D0) 6502 к контакту 3 (D0) 74HC373N.
и то же самое со штырями от D1 до D7.
От Q0 до Q7 - это выходы, которые необходимо подключить к светодиодной панели или отдельным светодиодам и резисторам.
С 74HC00 требуется только 2 его ворот.
Подключите 5 В к контакту 14.
Подключите заземление к контакту 7.
Подключите контакт 17 (A8) 6502 к контакту 1 (1A) 74HC00.
Подключите контакт 25 (A15) 6502 к контакту 2 (1B) 74HC00.
Подключите контакт 34 (R / W) 6502 к контакту 5 (2B) 74HC00.
Подключите контакт 3 (1Y) 74HC00 к контакту 4 (2A) 74HC00.
Подключите контакт 6 (2Y) 74HC00 к контакту 11 (LE) 74HC373N.
Подключите контакт 11 (LE) 74HC373N к контакту 1 (OE) 74HC373N.
Вы можете подключить синий светодиод к 1Y и заземлению, а также 2Y к земле, это будет указывать, когда ворота активны.
Наконец, измените строку в процедуре onClock с program1 на program2
setDataPins (программа2 [смещение]);
Шаг 6: Программа
Программа 6502-Monitor содержит две процедуры 6502, описанные выше.
Программа все еще находится в стадии разработки и немного неопрятна.
При запуске program2 задержки в loop () могут быть 50 или меньше и даже полностью удалены. Комментирование строк Serial.print () также ускоряет работу 6502. Отсоединение контакта 1 (OE) 373 от контакта 11 (LE) дает разные результаты. Отсоединение контактов 1 и 11 микросхемы 373 от логических элементов NAND позволяет вам видеть, что находится на шине данных в каждом тактовом цикле.
Возможно, вам придется связать OE с землей, а не оставлять его плавающим, поскольку 8 выходных линий отключаются, если этот вывод становится высоким. Когда на выводе LE высокий уровень, выходные контакты такие же, как и входы. Низкий уровень на контакте LE фиксирует выходы, т.е. если входные контакты меняются, выходы остаются прежними.
Я постарался сделать программу максимально простой, чтобы ее было легче понять.
Экспериментируя с задержками, вы сможете точно следить за тем, что делает 6502.
Ниже приведены две программы (обе работают по адресу $ 1000) на ассемблере 6502:
program1
LDA № 55
NOP
ROL
1010 канадских долларов
JMP $ 1000
ROL поворачивает содержимое аккумулятора на один бит влево, что означает, что теперь $ 55 становится $ AA.
В машинном коде (шестнадцатеричный): A9 55 EA 2A 8D 10 10 4C 00 10
program2
LDA # $ 01
STA $ 8100
АЦП # $ 03
STA $ 8100
1005 японских долларов
В машинном коде (шестнадцатеричный): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
В программе program2 теперь есть физический адрес $ 8100, по которому 74HC373 находится на адресной шине.
то есть A15 из 6502 составляет 32768 (8000 долларов США), а A8 - 256 (0100 долларов США) = 33024 (8100 долларов США).
Таким образом, когда 6502 записывает в 8100 долларов (STA 8100 долларов), R / W 6502 имеет низкий уровень, и данные на шине данных 6502 фиксируются, когда 373 LE переходит на низкий уровень. Из-за 74HC00 NAND Gate сигналы меняются местами.
На приведенном выше снимке экрана вторая запись увеличилась на 3 (ADC # $ 03) - с 7F до 82 долларов.
В действительности, для конкретного местоположения 373. Это единственный физический адрес из возможных 65536, он демонстрирует, как работает адресная шина. Вы можете поэкспериментировать с разными адресными контактами и поместить их в другое место. Конечно, вам нужно будет изменить операнды STA на новое место. например Если бы вы использовали адресные строки A15 и A9, адрес был бы 8200 долларов (32768 + 512).
Шаг 7: Заключение
Я попытался продемонстрировать, насколько легко запустить 6502.
Я не являюсь экспертом в этой области, поэтому буду приветствовать любые конструктивные комментарии или информацию.
Вы можете продолжить это развитие, и мне было бы интересно, что вы сделали.
Я намерен добавить в проект EEPROM, SRAM и 6522, а в будущем поставить его на стрип-плате.
Рекомендуемые:
Easy Very Low Power BLE в Arduino Часть 2 - Монитор температуры / влажности - Ред. 3: 7 шагов
Easy Very Low Power BLE в Arduino Часть 2 - Монитор температуры / влажности - Ред. 3: Обновление: 23 ноября 2020 г. - Первая замена 2 батареек AAA с 15 января 2019 г., то есть 22 месяца для 2xAAA Alkaline Обновление: 7 апреля 2019 г. - 3-я редакция lp_BLE_TempHumidity, добавляет графики даты / времени, используя pfodApp V3.0.362 +, и автоматическое регулирование, когда
Arduino-tomation, часть 4: TRI DE BRIQUE: 5 шагов
Arduino-tomation Часть 4: TRI DE BRIQUE: в этой инструкции я расскажу вам о другой машине, модифицированной и управляемой клонированной платой Arduino, сделанной из Atmega1284p. Эта плата может поддерживать экран Ethernet и может контролироваться SCADA (AdvancedHMI, Unigo) или промышленным
Arduino LTC6804 BMS - Часть 2: Плата баланса: 5 шагов
Arduino LTC6804 BMS - Часть 2: Плата баланса: Часть 1 здесь Система управления батареями (BMS) включает в себя функции для определения важных параметров аккумуляторной батареи, включая напряжение элементов, ток батареи, температуру элементов и т. Д. определенный диапазон, пачка может быть диско
6502 Minimal Computer (с Arduino MEGA), часть 3: 7 шагов
6502 Minimal Computer (с Arduino MEGA) Часть 3: Двигаясь дальше, я добавил восьмеричную защелку, 8 прямоугольных светодиодов и матрицу резисторов 220 Ом на основную плату. Также имеется перемычка между общим выводом массива и землей, чтобы светодиоды можно было выключить. Гейт 74HC00 NAND h
Минимальный компьютер 6502 и 6522 (с Arduino MEGA), часть 2: 4 шага
6502 и 6522 Minimal Computer (с Arduino MEGA) Часть 2: Следуя моему предыдущему Instructable, я теперь поместил 6502 на стрип-плату и добавил универсальный интерфейсный адаптер 6522 (VIA). Опять же, я использую версию WDC 6522, так как она идеально подходит для их 6502. Мало того, что эти новые c