Easyelectronics.ru

Электроника для всех
Текущее время: 30 сен 2016, 04:43

Часовой пояс: UTC + 5 часов




Начать новую тему Ответить на тему  [ Сообщений: 317 ]  На страницу 1, 2, 3, 4, 5 ... 13  След.
Автор Сообщение
 Заголовок сообщения: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 22 окт 2013, 20:25 
Свой человек

Зарегистрирован: 22 окт 2013, 18:58
Сообщения: 92
Написал эмулятор процессора Z80. Использовал отладочную плату STM32f4-discovery, к ней подключен LCD по FSMC. К PA[0-4](входы) и PC[0-7](выходы) подключается стандартная спектрумовская клавиатура (у меня ее правда нет, поэтому пока просто замыкаю пины проводком :)). Пока не реализован тайминг выполнения команд и нормальные прерывания от дисплея (возможно на нормальный вывод на LCD не хватит ресурсов). Но заветная надпись....
Вложение:
DSC_04311.jpg
DSC_04311.jpg [ 171.59 Кб | Просмотров: 20356 ]

вот она!!!
Т.к. это мой первый проект на ARM буду рад услышать критику или предложения, ну и вопросы.
Вложение:
DSC_04321.jpg
DSC_04321.jpg [ 176.29 Кб | Просмотров: 20356 ]


Вложение:
Sorce.rar [34.63 Кб]
Скачиваний: 595


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 22 окт 2013, 20:34 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 2340
Откуда: Кемеровская область, Киселевск
крут

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 22 окт 2013, 20:48 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5668
Gorien писал(а):
Т.к. это мой первый проект на ARM буду рад услышать критику или предложения, ну и вопросы.
Неужели это первый проект? Обалденно.

Предложение: Spectrum - не Spectrum, если нет звука :-) К счастью, на F4-Discovery есть разные звуковые возможности (GPIO, DAC, audio-codec).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 22 окт 2013, 20:59 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 2340
Откуда: Кемеровская область, Киселевск
я вот денди бы хотел или сегу есть нет проекты работающие
Хотелось бы сделать Dendy на STM и дисплей 5 дюймов в виде джойстика с аккумом. Переносная типо консолька.)) Интересно я вот думаю если взять денди оригинал и реконструировать ее, т.е. CPU оригинал, а графику перенаправить на дисплей. Плату свою замастырить, а картриджи как то эмулировать.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 22 окт 2013, 23:05 
Свой человек

Зарегистрирован: 01 мар 2013, 04:08
Сообщения: 36
Огромное спасибо! Сам спектрум не очень интересен, но есть в наличии куча измерительных приборов на базе Z80, которым замена мозгов на АРМ, с сохранением возможности исполнения оригинальной прошивки, очень полезна будет!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 22 окт 2013, 23:17 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2013, 12:33
Сообщения: 1277
Откуда: Донецк, ДНР
Gorien писал(а):
подключается стандартная спектрумовская клавиатура (у меня ее правда нет, поэтому пока просто замыкаю пины проводком :)).


Слышал, что многие PS2 клаву подключают :) .
А программы с USB флэшки загружать умеет? Обожаю RiverRaid ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 22 окт 2013, 23:21 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 1939
Откуда: Нальчик
Gorien писал(а):
Написал эмулятор процессора Z80.
Что прям с нуля?..... Как он работает, как транслятор команд Z80 в функции ARM-а?....

Т.е. надо в памяти контроллера завести переменные соответствующие РОН-ам процессора Z80, и потом с помощью транслятора команд обрабатывать эти регистры... так?

А сама структура пространства памяти спектрума тоже организована выделенными областями в RAM контроллера?...
т.е. это 16кб системы, 48кб оперативы... так?

И экран как обновляется, самим же контроллером по прерыванию с определенной частотой, например 50Гц?
Какая частота контроллера?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 02:10 
Старожил
Аватара пользователя

Зарегистрирован: 23 окт 2012, 15:51
Сообщения: 403
+2001000 !!!
Давай ещё TR-DOS через SDIO :)
Зачот однозначно.... poke,peek,порты

_________________
Катя, валим отсюда! Я не Катя, я Валя........ Валя, тогда катим отсюда :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 02:18 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 1939
Откуда: Нальчик
как ща помню..... в слепую набирал.....

10 for z=0 to 20
20 beep .01,z
30 next z
40 goto 10


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 02:42 
Старожил

Зарегистрирован: 19 окт 2012, 23:10
Сообщения: 213
Респект.
Нарисуйте в сообщесто полноразмерный триллер о создании девайсины.
Думаю, всем интересно будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 03:27 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3747
AlexPM писал(а):
Spectrum - не Spectrum, если нет звука :-)
а так же если не эмулятся времянки экрана и всё такое%)
khach писал(а):
Сам спектрум не очень интересен, но есть в наличии куча измерительных приборов на базе Z80, которым замена мозгов на АРМ, с сохранением возможности исполнения оригинальной прошивки, очень полезна будет!
давным давно есть открытые, годами отточеные библиотеки эмуляции z80, в которых ТАКИЕ нюансы учтены, что ужас. а самописная вчера библиотека для серьезных девайсов - зло злейшее. на моей памяти было несколько попыток написания таких эмуляторов, и КАЖДАЯ лажала будь здоров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 07:29 
Старожил

Зарегистрирован: 28 май 2012, 09:26
Сообщения: 203
Gorien писал(а):
Написал эмулятор процессора Z80. Использовал отладочную плату STM32f4-discovery, к ней подключен LCD по FSMC. К PA[0-4](входы) и PC[0-7](выходы) подключается стандартная спектрумовская клавиатура (у меня ее правда нет, поэтому пока просто замыкаю пины проводком :)). Пока не реализован тайминг выполнения команд и нормальные прерывания от дисплея (возможно на нормальный вывод на LCD не хватит ресурсов). Но заветная надпись....
Вложение:
DSC_04311.jpg

вот она!!!
Т.к. это мой первый проект на ARM буду рад услышать критику или предложения, ну и вопросы.
Вложение:
DSC_04321.jpg


Вложение:
Sorce.rar

Молодец, давно вынашивал эту идею, руки не доходили, просмотрю исходники.
Я думал прикручивать к обычному телику, даже писал видеодрайвер с выводом из обычного порта 64 цвета стандартного RGB.
Так же вижу, что порт версии 48, но в принципе можно и полнофункциональную версию 128 с эмулятором бета диска и ауди чипа (2 канала ЦАП есть).
Пока такие мысли.
Вообще идея карманного спектрума очень занятна. Игр то написано за 10тыс, и они лучше чем нынешние.

ps
Вам на zx.pk.ru надо. Там это встретят воодушевленно.
Вон некий Лисицин обкатал там свой проект спека на 3х! атмег128 и в РАДИО напечатался.
А Ваш проект на ОДНОЙ микросхеме вообще фурор вызовет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 08:27 
Старожил
Аватара пользователя

Зарегистрирован: 26 сен 2012, 16:33
Сообщения: 604
Откуда: Челябинск
Нужно срочно поправить левые названия типа переменных (jamp, picsel и прочий рунглиш) на правильные англоязычные, добавить вменяемую лицензию и выложить на github :)
Комментарии бы тоже желательно на английский перевести, но это не так критично.
Тогда возможно увидим развитие в что-то большее.

p.s. Единственно ромы надо бы отдельно, т.к. легально их можно не все версии распространять, в частности на оригинальный 48k статус не известен (скорее всего всем уже все равно, но лучше утрясти это заранее). Например Amstrad версии rom можно распространять и модифицировать, если не изменяется копирайт, только для software эмуляторов и без коммерческой выгоды.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 08:56 
Старожил

Зарегистрирован: 28 май 2012, 09:26
Сообщения: 203
Вот еще где то взял, не помню.

http://gfile.ru/a22Qy


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 20:00 
Свой человек

Зарегистрирован: 22 окт 2013, 18:58
Сообщения: 92
makser писал(а):
Вот еще где то взял, не помню.

http://gfile.ru/a22Qy


Не ну это пока для меня темный лес.

makser писал(а):
Молодец, давно вынашивал эту идею, руки не доходили, просмотрю исходники....

ps
Вам на zx.pk.ru надо. Там это встретят воодушевленно.
Вон некий Лисицин обкатал там свой проект спека на 3х! атмег128 и в РАДИО напечатался.
А Ваш проект на ОДНОЙ микросхеме вообще фурор вызовет.


До того проекта мне еще далеко, Лисицин наверняка потратил не один день на создание своего проекта. А на тот сайт я пробивался пробивался да и забросил это дело.

Ink писал(а):
давным давно есть открытые, годами отточеные библиотеки эмуляции z80, в которых ТАКИЕ нюансы учтены, что ужас. а самописная вчера библиотека...


Так это не для каких интересов, а просто для разминки мозга (хобби)!

ShadS писал(а):
Что прям с нуля?..... Как он работает, как транслятор команд Z80 в функции ARM-а?....


Не ну не прям с нуля, посмотрел как декодировать команды, ну и так интернеты почитал. Работает просто в памяти организовано несколько массивов ROM, RAM (видео и обычное ОЗУ), читаем код операции, декодируем, выполняем, приращиваем счетчик команд (при необходимости), и так пока программа не кончится :) Экран не обновляется, при записи в видео RAM выводим сразу на экран. Частота 165МГц, вроде, по таймингам выполнения пока не смотрел. С экраном нужно однозначно что то решать, он пока самое медленное звено. Возможно нужен еще один проц :)

AlexPM писал(а):
Неужели это первый проект? Обалденно.

Oxford писал(а):
крут


Всем спасибо. Вот допилю клаву, потом и звуком займусь с таймингами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 21:05 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 1939
Откуда: Нальчик
Gorien писал(а):
Экран не обновляется, при записи в видео RAM выводим сразу на экран.

Дык этож не правильно... нужно завести таймер который будет щелкать раз в 20мс и вызывать процедуру обновления всего экрана..... (думаю это будет эффективнее чем сейчас)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 23 окт 2013, 21:33 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5668
ShadS писал(а):
нужно завести таймер который будет щелкать раз в 20мс и вызывать процедуру обновления всего экрана..... (думаю это будет эффективнее чем сейчас)
А ещё эффективнее - поручить DMA перекидывать видеомассив в LCD. А процессор сможет в это время заниматься вычислениями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 24 окт 2013, 02:22 
Свой человек

Зарегистрирован: 10 сен 2013, 06:27
Сообщения: 126
AlexPM писал(а):
Gorien писал(а):
Т.к. это мой первый проект на ARM буду рад услышать критику или предложения, ну и вопросы.
Неужели это первый проект? Обалденно.

Предложение: Spectrum - не Spectrum, если нет звука :-) К счастью, на F4-Discovery есть разные звуковые возможности (GPIO, DAC, audio-codec).

Для 48к хватит и 1-битного звука (DAC не нужен).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 24 окт 2013, 02:29 
Свой человек

Зарегистрирован: 10 сен 2013, 06:27
Сообщения: 126
Тут такое дело... на Nintendo DS есть эмулятор спектрума 128, который эмулирует и звук и TR-DOS и всё тайминиги.
Причем без пропусков кадров, один из самый точных и четких эмуляторов спектрума.

Так вот, процессор там: ARM946E-S — 67 Мгц + сопроцессор ARM7TDMI — 33 МГц.
Сорцы закрыты, но автор известный спектрумист и достаточно адекватен, думаю с ним можно на тему сабжа пообщаться, думаю он много полезного может рассказать...

А еще приятель 10 лет назад писал эмулятор Спектрума под Palm с 16 мгц процессором...
В общем думаю что и F3 будет более чем достаточно.
Вопрос только в том сколько ресурсов отьедает работа с LCD экраном.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 24 окт 2013, 02:36 
Свой человек

Зарегистрирован: 10 сен 2013, 06:27
Сообщения: 126
Gorien писал(а):
стандартная спектрумовская клавиатура (у меня ее правда нет, поэтому пока просто замыкаю пины проводком :))

Если есть тачскрин на борде, то идеальный вариант - виртуальная клавиатура.

Кстати, бордюр эмулируется?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 24 окт 2013, 10:34 
Старожил

Зарегистрирован: 28 май 2012, 09:26
Сообщения: 203
Итак немного расчета для точной эмуляции:
В спектруме частота обновления пикселей 7МГц, частота Z80 3.5Мгц. Вывод точек идет по байтно, т.е. 7\8=0.875Мгц, исполнение команд идет 3-4 такта на байт команды.
Получается, что частота синхронизации эмулятора 0.875Мгц. Делая прерывания на stm32 с такой частотой имеем 168\0.875 = 192такта. вычтем 24 такта на вх\вых прерывания,
имеем 168 тактов на один квант эмулятора, за это время нужно рассчитать байт в экране для обновления, вывести его с учетом атрибута и сэмулировать часть команды Z80
приходящие на 4 такта Z80, а также еще некоторые параллельные процессы проходящие в компьютере (прерывание например). Если использовать везде где только можно таблицы (памяти в stm32f407vgt много) то этого вполне достаточно. Нужно учесть что время на вывод пикселей состоит где-то чуть более половины времени всего кадра.
Важное дополнение сейчас - переделайте движек Z80, создайте массивы команд, где код команды это номер в массиве, а содержимое это адрес функции исполнения этой команды (массив указателей получается) и вызывайте ее, тогда избавитесь от бесконечных медленных case. Работа с LCD быстрая, если тупо постоянно последовательно обновлять его.


на zx.pk.ru я создал тему со ссылкой сюда, интереса особого не вызвал, думаю из-за не законченности конструкции. Лисицин кажись год там разрабатывал свой эмулятор, преодолевая ограниченность мег.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 24 окт 2013, 15:11 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3747
Gorien писал(а):
Так это не для каких интересов, а просто для разминки мозга (хобби)!
ну, вам-то я ничего против и не говорю:)
Gorien писал(а):
А на тот сайт я пробивался пробивался да и забросил это дело.
да и правильно, в целом. многие с этим сталкивались, но администрацию не пробить. вип-зона, фигли...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 24 окт 2013, 17:21 
Свой человек

Зарегистрирован: 22 окт 2013, 18:58
Сообщения: 92
ShadS писал(а):
Дык этож не правильно... нужно завести таймер который будет щелкать раз в 20мс и вызывать процедуру обновления всего экрана..... (думаю это будет эффективнее чем сейчас)


AlexPM писал(а):
А ещё эффективнее - поручить DMA перекидывать видеомассив в LCD. А процессор сможет в это время заниматься вычислениями.


Не все так просто, видеопамять в спектруме организована таким образом, что ее сразу на LCD не выведешь, нужно преобразовывать (тратить ресурсы ЦП)

makser писал(а):
Итак немного расчета для точной эмуляции


В этом направлении и буду идти. Только думаю выводить на LCD в прерывании нужно не целый байт а 1 пиксель. (а на вход и выход из прерывания тратится 24 такта?, Я просто с прерываниями на STM еще не работал)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 24 окт 2013, 20:04 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 1939
Откуда: Нальчик
Gorien писал(а):
Не все так просто, видеопамять в спектруме организована таким образом, что ее сразу на LCD не выведешь, нужно преобразовывать (тратить ресурсы ЦП)
Это я в курсе... делал даже свои упаковщики экрана для спектрума...

Может такой вариант:
Создать массив размером с область экрана спектрума, НО, с удобной для вывода в LCD структурой следования байтов, чтобы был эффективным вывод всего массива за раз.....
При выполнении команд (запись, чтение) обращающихся в область экрана, обрабатывать их с преобразованием адреса...
При таком решении, думаю, на преобразование адреса не должно ухождить много ресурсов, зато экран теперь будет летать (теперь уже можно будет с помощью DMA).....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Эмулятор ZX Spectrum на STM32f4
СообщениеДобавлено: 24 окт 2013, 20:32 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3747
преобразование адресов там тривиальное, и делать его надо 1 раз на строку.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 317 ]  На страницу 1, 2, 3, 4, 5 ... 13  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB