Apple2fpga: реконструкція Apple II+ на базі fpga

В якості Різдвяного подарунка для себе в 2007 році, я реалізував у 1980-ті роки-епоха для Apple+ в vhdl для запуску на ПЛІС Альтера ДЕ2 дошки. Точка, в стороні від розваг, щоб проілюструвати влада (або, швидше, низької потужності) сучасних ПЛІС. Іншими словами, те, що зробив Стів Джобс свій перший мільйон тепер можна клас проект моя 4840 вбудованих систем класу.

Що є Apple II?

він що Apple II був одним з перших, дійсно успішних персональних комп’ютерів. Розроблена Стівом Возняк («віз») і вперше введена в 1977 році, він дійсно зняв у 1978 році, коли 140К диск II в 5.25-дюймовий флоппі-диск був введений, з подальшим VisiCalc, першу програму електронних таблиць.
Досить простий навіть за мірками дня, компанія Apple II був побудований навколо недорогий 8-розрядний процесор 6502 від МОП-Технологія (вона продана за $25, коли Процесор Intel 8080 був проданий за $179). У 6502 мав восьми-бітної шини даних і може отримати доступ до 64 Кбайт пам’яті. В Apple II, він біжить трохи вище 1 МГц. Крім ПЗУ і драмів, решта схемотехніка складався з дискретних заг мікросхем ТТЛ.

А перше Яблуко служб IIS поставляється з 4К пам’яті DRAM, цей швидко виріс до стандартного з 48К і 64К пізніше за допомогою банківських перемикання і пам’яті карти розширення. Драмів, в цей час були передові технології. Хоча вони були важкими для використання, потребують +5, +12 та-5В джерела живлення і необхідність періодично оновлюються, їх приблизно шість разів покращення щільності зробило його вартим. Дихання скопіювати в ранньому оголошень для компанії Apple мені розхвалюють їх переваги.

Поки компанія Apple II приїжджав з інтегрованою клавіатурою, рудиментарний (один біт) звуковий порт, і гра порту зазвичай підключається до двовісний аналоговий джойстик, його головною особливістю була його пересування на відео дисплеї. Вона породила композитний (модулюючих) NTSC відео, що було зазвичай відправляються через ВЧ-модулятор з’являтися (наприклад, ТВ-канал 3.

До Apple II мав три відео режиму: 40 х 24 заголовні-тільки чорно-білий текстовий дисплей, 40 х 48 16-колір з низьким дозволом дисплея, і 140 х 280 6-кольоровий дисплей з високою роздільною здатністю.

До Apple II може практично розглядатися як пристрій відображення відео, в якому є мікропроцесор, підключений до нього. Вооз почався з майстер-14.31818 МГц піксельні годинник — рівно в чотири рази 3.579545 МГц colorburst частоти, використовувані у NTSC відео. Оскільки колір був доданий в чорний і білий стандарт NTSC, здавалося б, чорно-білі візерунки надіслав рівно ця частота інтерпретується як колір.

Вооз похідні тактової частоти процесора від 14.31818 МГц годинник шляхом ділення на приблизно чотирнадцять. Я кажу грубо, тому що фактично кожні шістдесят п’ятого циклу процесора (один раз на горизонтальні рядки розгорнення) розтягується на два 14 МГц тактових інтервалів, щоб зберегти етап 3.58 МГц colorburst частоти. Таким чином, є 65 * 14 + 2 = 912 пікселів періоди на лінію, або рівно 228 циклів 3.58 МГц colorburst на лінію.

Обидва процесора і відео-доступ до байту пам’яті на 1 МГц. Їх доступи чергуються, тому драм ефективно працює на 2 МГц. Інший вооз-трик: відео адреси такі, що освіжаючий відео також досить оновити драмів, так що ніяких додаткових циклів оновлення необхідні.

В моїй реконструкції, я спробував відтворити поведінку термінів схемотехніки (включаючи розтягнутий цикл) як можна щільніше. Однак, замість того, щоб фактично генерувати низькочастотні годинник на цей шлях (як правило, погана ідея в сучасних конструкціях, де використання на кристалі схеми фазового автопідстроювання частоти з косою контролю є найкращою методикою), я побіг більшості основних на 14 МГц тактовою і розподілених засувка увімкнути сигнали ні до чого, що спочатку накрутив на один з похідних частот.

Моя Реконструкція

Мій Apple II на ядро складається з генератора синхронізації, відео генератора, ядро процесора 6502, який я взяв з Пітера Ведрих це Комодор 64 емулятор, Роми, і деякі випадкові логіка дешифрування адреси та інші на борту я/О. в цілому, ядро очікує 14.31818 МГц тактового сигналу, введення з клавіатури, доступ до 64К оперативної пам’яті, і доступ до периферійної шини (в даний час, просто диск емулятор) і генерує один біт відео потік разом з один біт аудіо даних на динамік.

Зробити це ядро корисна, я прикріпив до нього клавіатуру PS/2 контролер (від Алекс звільнив і ЗПАО), дисковий емулятор, і VGA лінія-дублер, який перетворює 15 кГц частота горизонтальної розгортки Яблука одна-бітний відео вихід колір вихід VGA при 30 кГц частота горизонтальної розгортки.
він лайн удвоитель містить пам’ять для двох ліній відео від Apple; дисплей я один два рази, а інший для читання від компанії Apple відеовихід. Додаткової інтерпретації і генерації горизонтальної і вертикальної синхронізації сигнал, вона перетворює однорозрядний відеопотік в кольорі, використовуючи, ймовірно, занадто простий алгоритм: кожні чотири 14 МГц пікселі інтерпретуються як блок і відображаються як один колір. Це досить ефективний, і випускає безліч непарних колір окантовки ефекти оригінального Apple II, але це не зовсім правильно, оскільки справжній телевізор насправді виконує більш ніжний низькочастотної фільтрації на luimance і сигналів кольоровості. Алгоритм краще б розглянути біт примикає до групи з чотирьох осіб. Тим не менш, дисплей цілком придатному.

Мій емуляції диска II є примітивним (тільки для читання), але функціональний. Я магазині «nibblized» образ 5.25-дюймовий флоппі на зовнішню карту SD і читати її в пам’яті на мікросхемі по одному треку. Я кодував з SPI інтерфейс (один із трьох, на яких говорять типові SD-карт) в vhdl, який здатний розбудити карти і завантажити випадковий 256-байтові блоки. Контролінг це простий емулятор диска II на контролер, який забезпечує низькорівневий інтерфейс до диска. Наприклад, головки читання/запису переміщуються під управлінням програми, вибірково пульсує чотирьох фаз крокового двигуна. Мій апаратний емулятор годинники ці імпульси, і моделі, за якою доріжці керівник проживає в даний час.

Кожен раз трек-номер змінюється, мій контролер зчитує з SD-карти нова група 6655 байт (256 * 25) слід пам’яті. Між тим, я емулювати обертовий диск, періодично змінюючи адресу даних зчитується центральним процесором при доступі до диска вх/вих місць.

Для налагодження, я витягнув процесор ПК-чотири з семи-сегментних індикаторів на платі і поточної доріжки для їзди на іншому два. Хоча ПК зазвичай змінюється так швидко, що стає як у тумані, структури часто виникають. Наприклад, на ПК залишається вузькоспеціалізованим, коли комп’ютер чекає в командному рядку. Аналогічно, я знайшов багато програмного забезпечення, включаючи операційну систему, коли це переміщення приводний головки, дзвінки монітора «затримка» рутини, щоб уповільнити хід подій.

Порівняння Реалізацій

Центральна мотивація для цього проекту, щоб проілюструвати, як інтегровані сучасні ПЛІС сталі і як порівняно мало енергії вони споживають. Так я порівняв потужність, Споживана фактичного компанія Apple II «раз і назавжди, від Apple II» раз і назавжди емулювати програмно, і мій ПЛІС реконструкції.
Для вимірювання потужності, я використовував недорогий і дуже простий у використанні «вбити Ват» вимірювач потужності. Це претензії 0.2% точність, якої достатньо, щоб отримати приблизне уявлення про те, що (ватт) відбувається.

У кожному разі, я вимірював потужність, Споживана системою без урахування монітора. Влада була більш-менш постійною для Dell (хоча емулятор був запущений) і fpga дошка; Яблуко II відповідає потужності споживання значно варіювалися коли диск був активним (спінінг).

Тільки число для Apple II-це дійсно справедливо. В Dell-це жахливо пригнічений, мав більше пам’яті (192 МБ), ніж необхідно для запуску ОС Linux і Apple II на емуляторі, і ніколи не використовував його флоппі диск, CD-ROM і ін ПЛІС дошка має схожі проблеми: він також має (не використовується) інтерфейс Ethernet, порт USB, NTSC відео-інтерфейси, а також SDRAM і флеш-чіпів. Поки не бігли, вони все одно витрачає певну кількість енергії.

Яблуко II з+

Apple II+
c. 1982
Synertek 6502
LS TTL, 16K DRAMs, 1 MHz NMOS CPU
CPU: 4K transistors?

Яблуко з II+ емулювати програмно

Dell Optiplex GXa
c. 1998
Intel Pentium II
233 MHz, 250 nm CMOS CPU
CPU: 7.5M transistors

Яблуко II+ на базі fpga

Altera/Terasic DE2
с. 2006
Altera EP2C35F672C6 Cyclone II
90 nm CMOS
33K LEs, 150M transistors?

Технічні Ресурси

В Apple II було зареєстровано в найдрібніших подробицях. Починаючи з самого першого Apple II в «redbook», і Довідкове керівництво, сама Apple опублікувала схеми для Apple II серії. Коли вооз виступив в Колумбійському університеті, він зазначив, що це було зроблено навмисно: він хотів поділитися як багато технічної інформації, як це можливо, щоб просвіщати користувачів. Таке ставлення рідкість в наші дні.

Дві третіх книги забезпечують ще більш докладний коментар: Вінстон Gayler Яблуко II ланцюг Опис (Сэмс, 1983), і Джим Сэтэра розуміння до Apple II с (Якість програмного забезпечення, 1983). Я консультувалася як часто під час написання на мові vhdl для реалізації цього проекту. Для розуміння диска II, а точніше, яблучний дискова Операційна система (ДОС 3.3), не варто і Пітер Лехнер під Яблуко ДОС (Якість програмного забезпечення, 1983) є другою немає, хоча він набагато більше програм, орієнтованих, ніж перші дві книги.
Всі ці книги давно вийшли з друку, але деякі були Відскановані і архівні в інтернеті. 1000bit.net має особливо хорошу колекцію.

Алекс звільнив в FPGApple проект надихнув цей. Алекс був досить люб’язний, щоб поділитися своїм вихідним кодом з мене (це було не так погано, як він стверджує на своєму сайті) і я використав його в якості посилання, як я писав свою власну.

Популярність

Ретро кампутерный на базі fpga: реконструкція 80-х-еру домашнього комп’ютера з програмованою логікою, технічний звіт по проекту.
Цей документ містить всі мови vhdl джерела, а також деякі скрипти, корисні програми, а завантажувальний образ диска. Воно готове для компіляції з Альтера кварт системи для ДЕ2 ПЛІС радою. Інших рад або інших середовищах вимагає деякої адаптації.