nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 06:32



Reply to topic  [ 97 posts ]  Go to page 1, 2, 3, 4, 5 ... 7  Next
Аппаратный эмулятор Радио-86РК на ESP8266 
Author Message
Novelist

Joined: 03 Mar 2018 01:22
Posts: 32
Reply with quote
Всем доброго времени суток.

Делаю проект аппаратного эмулятора Радио-86РК на ESP8266.
Отличие от других проектов - ультра низкая цена. Всё железо - это ESP8266 (например, ESP-01 за ~100рублей) и одна микросхема 74HC00 (за ~10 рублей). Плюс немного мелочевки - резисторы, регулятор 5->3.3В и разъемы. Все остальное делается программно.

Проект уже готов на 80%. Работает TV-выход (композитный PAL-сигнал), эмуляция процессора, эмуляция ВВ55 (клавиатура), ВГ75-ИК57 (экран). Сейчас в тестовом режиме работает чтение PS/2-клавиатуры. Запускается и работает монитор и разные игры. Скорость эмуляции пока не регулируется (она порядка 8 МГц), позже ограничу, сейчас интересует максимальная производительность при включенных всех подсистемах.

Что планирую сделать в ближайшую неделю:
- доделать клавиатуру
- сделать интерфейс для загрузки файлов в ОЗУ (без участия ПК, из встроенной флэшки)
- хочу добавить эмуляцию дисковода (может что-то лучше кто-то предложит).

Проект делаю в подарок отцу, именно он собрал в свое время Радио-86РК и привил мне тягу к компьютерам, за что ему большое спасибо :)

Ссылка на проект на github: https://github.com/klad-me/RK8266

Жду Ваши комментарии и предложения. Также, есть идея сделать нормальные печатные платы (они получатся где-то 20x80мм), но для двух-трех штук для меня это не имеет смысла. Если кому интересно - отписывайтесь, наберется достаточное количество людей - сделаем в складчину.
Если кто-то решит помочь проекту, оперативная связь по Telegram - @heavy131, по возможности буду и в форуме появляться.


Attachments:
photo_2018-03-01_12-07-24.jpg
photo_2018-03-01_12-07-24.jpg [ 94.21 KiB | Viewed 13897 times ]
photo_2018-03-01_12-07-44.jpg
photo_2018-03-01_12-07-44.jpg [ 90.96 KiB | Viewed 13897 times ]


Last edited by heavy on 03 Mar 2018 23:03, edited 1 time in total.

03 Mar 2018 01:38
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
круто :kruto:

_________________
:dj: https://mastodon.social/@Shaos


03 Mar 2018 11:38
Profile WWW
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
Зачем нужна 78HC00 ?


03 Mar 2018 11:47
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Если загуглить ESP8266 или ESP-01, то это - Wi-Fi модуль, где же здесь процессор или плис на худой конец?


03 Mar 2018 11:55
Profile
Novelist

Joined: 03 Mar 2018 01:22
Posts: 32
Reply with quote
fifan wrote:
Если загуглить ESP8266 или ESP-01, то это - Wi-Fi модуль, где же здесь процессор или плис на худой конец?

Не совсем верно. ESP8266 это SOC, у которого есть и процессор (довольно мощный, тактовая до 160МГц) и ОЗУ и WiFi-модуль и еще куча всего. Ему для работы нужна только внешняя SPI-флэшка и кварц. Если брать тот же ESP-01 (один из самых дешевых модулей на ESP8266), то там уже все собрано, т.е. установлен сам ESP8266, SPI-флэшка (обычно 8-16 Мбит), кварц и вся аналоговая часть WiFi + PCB-антенна. Стоит это "чудо" на Ali примерно 100р с доставкой. Прошивается обычным USB-UART. Для работы ему надо подать только 3.3В.

newold86 wrote:
Зачем нужна 78HC00 ?

Тут придется объяснить как генерируется PAL-сигнал.
У ESP8266 есть встроенный интерфейс I2S - это последовательная шина для передачи цифрового звука.
Проц заводится на 160МГц, тактовая I2S - на 10МГц. Таким образом, время вывода 1 бита - 0,1мкс.
Из всех сигналов I2S я использую только ногу с выходными данными, туда льются те данные, которые я загружаю. Для загрузки данных в I2S используется DMA с двойной буферизацией. Каждый буфер длиной 80 байт. Получается 80 байт * 8 бит * 0,1мкс = 64мкс/буфер. Это как раз время 1 строки PAL. Укладывая в буфера различные паттерны, я могу получить сигналы кадровой синхронизации и сигналы видимых строк.
Как раз подошли - зачем же нужна 78HC00. Т.к. I2S гонит просто битовый поток на большой скорости, то его я использую как генерацию сигнала яркости, для генерации синхронизации можно использовать только GPIO, но т.к. процессор навороченный (конвеер не всегда может прерваться на прерывание каждый такт), плюс много чего выполняется в прерывании (DMA, I2S, PS/2, таймеры и т.д.), то абсолютно точный тайминг по сигналам синхронизации через GPIO получить невозможно.
Если посмотреть на сигнал яркости, то из всей строки PAL - 64мкс, сам яркостный сигнал занимает 52мкс: 4мкс строчная сигхронизация, 8мкс цвет (которого нет), 52мкс яркость, 2мкс обратный ход. Видим, что вокруг синхроимпульса есть пустые области, с одной стороны 2мкс, с другой - 8мкс. Таким образом, я в яркостный сигнал добавляю уровень белого на время синхроимпульсов, а через GPIO включаю синхру на 1мкс раньше чем надо включить и отключаю на 1мкс позже, чем надо отключать.
78HC00 для этого делает простую логику:
если нет сигнала синхронизации, то на выход идут данные яркости без изменений
если есть сигнал синхронизации и сигнал яркости=черное, то на выходе будет черный
если есть сигнал синхронизации и сигнал яркости=белое, то на выходе будет синхронизация.
Для генерации уровней 0В (синхронизация), 0,3В (черный) и 1В (белый) используются обычные резисторы с выходов логики. По схеме, думаю будет все понятно.


03 Mar 2018 12:25
Profile
Novelist

Joined: 03 Mar 2018 01:22
Posts: 32
Reply with quote
Добавлю, кстати, схему сюда. На случай, если кто-то не хочет лезть на гитхаб.


Attachments:
RK8266.pdf [50.35 KiB]
Downloaded 591 times
03 Mar 2018 12:27
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
fifan wrote:
Если загуглить ESP8266 или ESP-01, то это - Wi-Fi модуль, где же здесь процессор или плис на худой конец?

мы же уже обсуждали это - там достаточно мощный проц внутри

_________________
:dj: https://mastodon.social/@Shaos


03 Mar 2018 17:16
Profile WWW
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
А как вообще пишутся подобные эмуляторы ? Создаются программные модели составных частей (типа процессора и т.д.) и потом на основе их «собирается» устройство ?


03 Mar 2018 22:09
Profile
Novelist

Joined: 03 Mar 2018 01:22
Posts: 32
Reply with quote
newold86 wrote:
А как вообще пишутся подобные эмуляторы ? Создаются программные модели составных частей (типа процессора и т.д.) и потом на основе их «собирается» устройство ?


Я обычно начинаю с эмуляции железа. В этом проекте основная сложность была именно с выводом ТВ-сигнала. Я уже подобное делал сначала на AVR, позже на STM32. И там и там использовался SPI, вот и решил, что I2S тоже подойдет, к тому же @cnlohr уже делал вывод графики через I2S. Попробовал и все получилось. Дальше просто проверил, что оставшихся ресурсов хватит на эмуляцию процессора.
В принципе, считаю, что на ESP8266 можно сделать и эмулятор Спека, хоть и не очень знаком с его железом. Основная проблема, думаю, будет в генерации цвета, но тоже все решаемо.
Остальная переферия эмулируется довольно просто - обычные порты ввода-вывода.


03 Mar 2018 22:15
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Да, я тоже пытался к эмулю спека подъехать на этом железе, но в лоб не получится - там не наберется 48K свободной памяти

Ну может разве что 16K, ну и для видео придётся городить чёто на мелкой логике...

_________________
:dj: https://mastodon.social/@Shaos


03 Mar 2018 22:27
Profile WWW
Novelist

Joined: 03 Mar 2018 01:22
Posts: 32
Reply with quote
Shaos wrote:
Да, я тоже пытался к эмулю спека подъехать на этом железе, но в лоб не получится - там не наберется 48K свободной памяти
Ну может разве что 16K, ну и для видео придётся городить чёто на мелкой логике...

Ну как сказать. У него ОЗУ 80кб. Я в своем проекте оставил стандартную СДК, т.к. хочу еще оставить возможность обновления и загрузки программ по WiFi. При таком раскладе, у меня остается порядка 16кб свободных (при учете выделенных 2кб под ПЗУ, 32кб под ОЗУ, эмуляцию переферии, ОС и т.д.).
Т.ч.если брать спек 48к, то надо будет всего 48+16=64кб ОЗУ + немного на сам эмулятор. Думаю, если без СДК, то вполне реально. Если найдутся единомышленники, то можно попробовать и его заэмулить на этом же железе. У меня уже есть опыт программирования на ESP8266 без SDK (делал собственный загрузчик), ничего сложного там нет. При этом, можно будет и сохранить работоспособным WiFi, только отдельно от самого эмулятора. В ESP8266 можно заливать несколько программ и с помощью загрузчика выбирать нужную. Одна программа будет без SDK и работать эмулятором, вторая - с SDK, будет генерировать графику, обслуживать клаву и WiFi, и будет использоватся для подгрузки образов и т.д.
Ну это чисто как вариант :) В принципе, РК-шку планирую закончить за следующую неделю-две. Можно будет и спеком заняться. У меня даже два реальных Спека лежат - Дельта и Нафаня вроде, хоть и в неизвестном состоянии.


03 Mar 2018 22:59
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Тот же cnlohr показывал, как выкинуть всё лишнее и разогнать чип до невозможности:

http://www.nedopc.org/forum/viewtopic.php?p=131605#p131605

У меня самого пока руки не дошли до этих экспериментов - я максимум, что сделал, так это его видеовыход NTSC прошил и погонял...

_________________
:dj: https://mastodon.social/@Shaos


03 Mar 2018 23:06
Profile WWW
Novelist

Joined: 03 Mar 2018 01:22
Posts: 32
Reply with quote
Shaos wrote:
Тот же cnlohr показывал, как выкинуть всё лишнее и разогнать чип до невозможности:

http://www.nedopc.org/forum/viewtopic.php?p=131605#p131605

У меня самого пока руки не дошли до этих экспериментов - я масимум, что сделал, так это его видеовыход NTSC прошил и погонял...


Так и я про то же. Если есть интерес - давайте мутить :)


03 Mar 2018 23:08
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
heavy wrote:
Shaos wrote:
Тот же cnlohr показывал, как выкинуть всё лишнее и разогнать чип до невозможности:

http://www.nedopc.org/forum/viewtopic.php?p=131605#p131605

У меня самого пока руки не дошли до этих экспериментов - я масимум, что сделал, так это его видеовыход NTSC прошил и погонял...


Так и я про то же. Если есть интерес - давайте мутить :)

Есть интерес

Может память снаружи прицепить какую I2C или SPI?

_________________
:dj: https://mastodon.social/@Shaos


03 Mar 2018 23:12
Profile WWW
Novelist

Joined: 03 Mar 2018 01:22
Posts: 32
Reply with quote
Shaos wrote:
Есть интерес
Может память снаружи прицепить какую I2C или SPI?

Думаю, штатного железа хватит для этого. Единственное, с чем я не сталкивался - так это с генерацией цвета в ТВ-сигнале. Читал что-то про квадратурную модуляцию, но, насколько понимаю, для цветов Спека хватит просто двигать фазу цветовой несущей, верно ?


03 Mar 2018 23:16
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 97 posts ]  Go to page 1, 2, 3, 4, 5 ... 7  Next

Who is online

Users browsing this forum: sergey2b and 16 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.