Easyelectronics.ru

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

Часовой пояс: 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 Кб | Просмотров: 18217 ]

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


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


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

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

_________________
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
Сообщения: 2260
Откуда: Кемеровская область, Киселевск
я вот денди бы хотел или сегу есть нет проекты работающие
Хотелось бы сделать Dendy на STM и дисплей 5 дюймов в виде джойстика с аккумом. Переносная типо консолька.)) Интересно я вот думаю если взять денди оригинал и реконструировать ее, т.е. CPU оригинал, а графику перенаправить на дисплей. Плату свою замастырить, а картриджи как то эмулировать.

_________________
RADIOWOLF.RU


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

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


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

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


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


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

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

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

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

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


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

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

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


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

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

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


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

Зарегистрирован: 28 май 2012, 09:26
Сообщения: 198
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
Сообщения: 603
Откуда: Челябинск
Нужно срочно поправить левые названия типа переменных (jamp, picsel и прочий рунглиш) на правильные англоязычные, добавить вменяемую лицензию и выложить на github :)
Комментарии бы тоже желательно на английский перевести, но это не так критично.
Тогда возможно увидим развитие в что-то большее.

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


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

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

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
Сообщения: 1832
Откуда: Нальчик
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
Сообщения: 118
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
Сообщения: 118
Тут такое дело... на 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
Сообщения: 118
Gorien писал(а):
стандартная спектрумовская клавиатура (у меня ее правда нет, поэтому пока просто замыкаю пины проводком :))

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

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


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

Зарегистрирован: 28 май 2012, 09:26
Сообщения: 198
Итак немного расчета для точной эмуляции:
В спектруме частота обновления пикселей 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
Сообщения: 3678
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
Сообщения: 1832
Откуда: Нальчик
Gorien писал(а):
Не все так просто, видеопамять в спектруме организована таким образом, что ее сразу на LCD не выведешь, нужно преобразовывать (тратить ресурсы ЦП)
Это я в курсе... делал даже свои упаковщики экрана для спектрума...

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


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

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


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

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


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

Сейчас этот форум просматривают: alexsam, demiurg1978


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

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

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