Как да си сглобим 8-битов домашен компютър само с 5 чипа

Оригиналът е на Matt Sarnoff

Най-четени

Даниел Десподов
Даниел Десподов
Новинар. Увличам се от съвременни технологии, информационна безопасност, спорт, наука и изкуствен интелект.

Чрез комбинация от стари трикове от типа на допълнителните цветове в телевизионната система NTSC и с помощта на съвременен хардуер може да се сглоби удивително мощна машина.

Има нещо привлекателно в 8-битовите компютри. Днес може да се сглоби една нелоша система, която да е достатъчно мощна, за да бъде приятелски настроена към потребителя и достатъчно опростена, за може почти всеки самостоятелно да я сглоби и програмира. Повечето 8-битови компютри, сглобени от любители, използват класическите процесори от героичните 80-те години, когато за дисплеи се използваха милиони телевизори. Първоначално мислех да си сглобя компютър с процесора Motorola 6809 от същата ера. Но каквото и да измислех, допълнително към този процесор се налага използването на още 13 допълнителни чипа. Замислих се, а дали не мога да използвам някои съвременен 8-битов процесор? Какъв ли ще бъде минимумът на използваните чипове?

В крайна сметка си сглобих собствен 8-битов компютър, който нарекох Amethyst. Като всеки домашен компютър, клавиатурата е вградена в него и той може да извежда аудио и видео. Amethyst има и вграден език от високо ниво, който дава възможност за писане на собствени програми. Използвах само 5 чипа – процесора ATMEGA1284P, чип за USB интерфейса и три съвсем опростени интегрални схеми.

ATMEGA1284P (или 1284P) е от 2008 година и има 128 KB флаш памет и 16 KB RAM. Той може да работи с честота до 20 MHz. Чипът разполага с вградени контролери за сериен интерфейс и 32 цифрови входа/изхода.

Благодарение на вградената памет и серийните интерфейси не се наложи използването на допълнителни чипове. Мога директно да генерирам аудио и видео чрез подаване и прекъсване сигнала на един от цифровите изходи. Чрез промяната на честотата на превключването се получава тон, който има характерния звук на сигнала с правоъгълна форма. Но какво да кажем за генерирането на аналогов видеосигнал? Наистина ли ще трябва да използвам нещо специално?

Трикът на Стив Возняк

В края на 2018 година видях трика, който Стив Возняк е използвал през 1970-те години, за да реализира поддръжката на цветна графика в Apple II. Същият трик се използва в системата за цветна телевизия още от 1950-те години.

Първоначално американската телевизия бе чернобяла и използваше доста опростения стандарт NTSC, разработен от националния комитет по телевизионни системи (National Television System Committee). За формиране на изображението електронният лъч на кинескопа преминава през целия екран точка по точка и ред след ред, като по този начин образува един кадър. Амплитудата на приемания видеосигнал определя яркостта на точката в произволно място на кадъра.А през 1953 година NTSC стандартът бе модернизиран за поддръжката на цветна телевизия с обратна съвместимост на съществуващите черно бели телевизори.

Специалистите решиха да представят информацията за цветовете във вид на високочестотен синусоидален сигнал. За тази цел носещата честота се разделя на две с фазово изместване от 90°, като всеки неин компонент може да се модулира. В крайна сметка се получава сигнал, който е модулиран както по амплитуда, така и по фаза. Амплитудата на сигнала определя яркостта, а фазата – цветността. Този високочестотен сигнал за цветността се добавя към сравнително нискочестотния сигнал на яркостта и по този начин се получава така нареченият композитен сигнал. Този метод и до днес се използва в редица телевизори и в някои евтини дисплеи.

Как да си сглобим 8-битов домашен компютър само с 5 чипа

„Цифрово аналогов сигнал“: аналоговият композитен цветен сигнал, използван в американските телевизори (горе вляво) е съвместим с черно белите, понеже сигналът на яркостта маскира високочестотния синусоидален сигнал на цветността (пунктирната линия). Филтрите в телевизора разделят тези два сигнала. В долната част на изображението е показано, че ако бъде подаван подобен цифров сигнал с достатъчно висока скорост на битовете, то това ще се възприеме от телевизора като аналогов сигнал, в който различните комбинации от битове дават различни цветове. В този пример с по два бита на пиксел е възможно получаването на шест цвята (показани са четири), понеже високата скорост на битовете дава възможност за получаването на повече цветове.

Черно белият телевизор възприема сигналите на цветността като шум, който се филтрира и игнорира. Но цветният телевизор отделя сигналите за цветността от яркостния сигнал с помощта на собствени филтри.

През 1970-те години специалистите се досетиха, че използваната схема на филтрация е много полезна за домашните компютри, понеже дава възможност на правоъгълния цифров сигнал да имитира по-голямата част от композитния аналогов сигнал. Потокът нули, изпратени от компютъра към телевизора ще се възприема като постоянен аналогов сигнал, който за телевизора е черен цвят. Потокът от единици се възприема като постоянен високочестотен сигнал – тоест бял цвят. При достатъчно висока скорост на битовете възникват сложни двоични структури, които филтрите за цветност разпознават като телевизионни сигнали на цветността. Именно този трик даде възможност на Apple II да показва до 16 цвята.

Първоначално си мислех много бързо да превключвам един от изходните пинове, за да мога директно да генерирам видеосигнал. Но бързо разбрах, че с моя чип 1284P, работещ с тактова честота 14,318 MHz няма да мога да да превключвам толкова бързо, за да получа повече от четири цвята. Работата е в това, че за неговия вграден сериен интерфейс са необходими два тактови цикъла за изпращането на един бит, а това ограничава изходната честота до 7,159 MHz, като на процесора няма да му остане време за почти нищо друго. За получаването на видеосигнал, в Apple II се използва специализиран чип с бърз директен достъп до паметта, като процесорът не се занимава с подобни неща и пълноценно обработва алгоритмите. Но аз няма как да използвам този подход, понеже при мен оперативната памет е интегрирана в чипа.

Ето защо се разрових в бюрата си и намерих четири интегрални схеми от серията 7400 – едната с два мултиплексора, а другите – два паралелно-последователни преместващи регистри. Осемте цифрови изхода на чипа 1284P изпращат данните едновременно към мултиплексорите и преместващите регистри, които образуват високоскоростен последователен поток от битове. Процесорът успява да генерира необходимите данни със скорост, даваща възможност на екрана на телевизора да бъдат показвани 215 различни цвята. Разбира се, за това трябваше да се заплати с изчислителна мощност – генерирането на необходимия видеосигнал изразходва 75% от ресурса на процесора.

Компактният компютър

Amethyst е едноплатков компютър. Той има само пет интегрални схеми – процесор, USB интерфейс и три логически схеми 7400, които се използват за създаването на изображение с 215 цвята. Клавишите на клавиатурата са запоени директно на печатната платка. Amethyst поддържа аудио и има четири серийни интерфейса за външна периферия, като например запомнящи устройства и игрови контролери. Използва се виртуална машина с поддръжката на програмния език Forth, който може да зарежда и стартира програмите и игрите.

Как да си сглобим 8-битов домашен компютър само с 5 чипа

Трябваше ми някоя по-лека среда за програмиране и това бе причината бе избера Forth вместо традиционния Basic. Самият Forth е изключително популярен език за програмиране, който днес се използва във вградените системи. С помощта на Forth може да се направи достатъчно много, като той поддържа интерактивност при минимално използване на ресурси. Тъй като 1284P не дава възможност да се стартира компилирания код директно, то потребителският код се компилира в междинен машинен код. Този машинен код се подава на виртуална машина, стартирана от флаш паметта на 1284P. Кодът на виртуалната машина е написан на асемблер и е ръчно оптимизиран, за да стане максимално бърз.

Аз работя в компания за производство на лазерни 3D принтери и имам достъп до лазерни ножове. Така че лесно проектирах и направих дървения корпус, като доста добре имитирах кутията на Atari 2600. Механичните клавиши на клавиатурата са директно запоени върху печатната платка на този компютър. Тази клавиатура има една любопитна особеност – липсва големия спейс. Вместо него съм поставил обикновен клавиш, разположен под клавиша Enter.

Цялата схема, PCB файловете на печатната платка и сорс кодът са качени в моето GitHub хранилище. Можете спокойно да сглобите собствен Amethyst и дори да измените и подобрите моя проект. А може би ще измислите как да икономисате още един или два чипа?

АбонаментВсичко важно от света на технологиите, директно в пощата ти.

С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!

1 Коментар
стари
нови оценка

Нови ревюта

Подобни новини