ZX Spectrum fpga marsohod.pdf
(
652 KB
)
Pobierz
Проекты Altera Quartus II для платы Марсоход2
ZX Spectrum
mindango
Проекты Altera Quartus II Для Платы Марсоход2 (/Projects/Marsohod2)
Созда�½о: 05 декабря 2014
Просмотров: 28479
Попробуем запустить ZX Spectrum в плате Марсоход2...
В �½ачале восьмидесятых годов брита�½ская компа�½ия Sinclair Research Ltd выпустила домаш�½ий компьютер ZX Spectrum 48, глав�½ым достои�½ством
которого, как и предыдущих моделей в лице Sinclair ZX80 и Sinclair ZX81 стала �½евысокая стоимость. Благодаря дешевиз�½е, а также обилию
раз�½ообраз�½ых систем-кло�½ов, ZX Spectrum обрёл огром�½ую популяр�½ость, а �½а территории бывшего Советского Союза компьютер и вовсе получил
культовый статус. И�½терес к "Спекки" �½ачал спадать во второй полови�½е девя�½остых годов, когда пользователи �½ачали массово переходить �½а более
продви�½утые персо�½аль�½ые компьютеры, од�½ако м�½огие из тех, кто застал период расцвета ZX Spectrum, до сих пор пом�½ят загрузку "полосами"
карти�½ки-заставки игр с аудиокассет. Име�½�½о игр – хотя ZX Spectrum и �½е был мощ�½ой платформой, а его возмож�½ости в пла�½е вывода графики были
силь�½о огра�½иче�½ы, для компьютера было выпуще�½о �½емало видеоигр, �½екоторые из которых могли приковать к мо�½итору �½а долгие часы.
Вот так выглядел ориги�½аль�½ый ZX Spectrum с�½аружи...
...и в�½утри
В ос�½ове ZX Spectrum лежал процессор Zilog Z80 с частотой 3.5 МГц. Впоследствии появлялись модификации компьютера, ос�½ащё�½�½ые специаль�½ой
к�½опкой, разго�½явшей CPU до 7 и даже до 14 МГц. Также ориги�½аль�½ая версия ZX Spectrum могла иметь 16 или 48 Кбайт оператив�½ой памяти, од�½ако
позже была выпуще�½а модель с 128 Кбайт памяти. И�½терес�½о, что разряд�½ость адрес�½ой ши�½ы �½е позволяла Спекки работать �½апрямую с таким
объёмом ОЗУ, и в архитектуре компьютера появились "костыли" в виде стра�½ич�½ой адресации.
Кстати говоря, �½азва�½ие "Spectrum" выбра�½о �½е случай�½о – это долж�½о было подчерк�½уть возмож�½ость вывода цвет�½ого изображе�½ия. В палитру входило
8 цветов: си�½ий, крас�½ый, фиолетовый, зелё�½ый, голубой, жёлтый, белый и чёр�½ый. Каждый цвет мог иметь оди�½ из двух уров�½ей яркости (�½а чёр�½ый это
�½е распростра�½ялось), таким образом, всего ZX Spectrum мог воспроизводить до 15 различ�½ых цветов и отте�½ков. В ОЗУ компьютера целых 6912 байт
памяти было выделе�½о для видеода�½�½ых. Из �½их 6144 байта пред�½аз�½ачались для отрисовки карти�½ки с разреше�½ием 256 х 192 пикселя (плюс "бордюр",
который, правда, памяти �½е за�½имал), а ещё 768 байт определяли атрибуты "з�½акоместа" размером 8 �½а 8 точек – это были цвета "фо�½а" и "рису�½ка",
яркость и мига�½ие. В ПЗУ ZX Spectrum был вшит и�½терпретатор языка BASIC (точ�½ее говоря, Sinclair BASIC), а также простейшие реализации и�½терфейсов
вывода текста, арифметических вычисле�½ий, клавиатуры, маг�½итофо�½а, при�½тера и прочей периферии.
Палитра ZX Spectrum �½асчитывает всего 15 цветов
Во време�½а расцвета популяр�½ости ZX Spectrum существовало �½есчёт�½ое м�½ожество его "кло�½ов" – компьютеров, к ориги�½аль�½ому детищу Sinclair
Research Ltd от�½оше�½ия �½е имеющих, �½о использующих а�½алогич�½ую по фу�½кцио�½аль�½ости элеме�½т�½ую базу и, соответстве�½�½о, программ�½ое
обеспече�½ие. Некоторые из кло�½ов собирались радиолюбителями из доступ�½ых деталей, что приводило к раз�½ообраз�½ым упроще�½иям, другие, �½апротив,
подвергались всякого рода модер�½изациям, позволявшими расширить возмож�½ости работы с памятью или графикой.
Кто сказал, что ZX Spectrum �½е пригоде�½ для развлече�½ий?
В �½овом тысячелетии "Спектрум" возродился в раз�½ообраз�½ых программ�½ых эмуляторах, в послед�½ие годы добравшихся до пла�½шетов и смартфо�½ов. Но
особ�½яком среди эмуляторов остаются реализации ZX Spectrum �½а ПЛИС, которых, �½адо заметить, в природе тоже существует �½емало. Почему бы �½е
создать свою версию з�½аме�½итого компьютера и для платы
Марсоход2?
За ос�½ову проекта я решил взять ориги�½аль�½ый обучающий материал (http://zx-pk.ru/attachment.php?
s=a314454164056f87ff50d94137e2061d&attachmentid=25568&d=1299754060) за авторством
Ewgeny7,
который простым языком объяс�½яет раз�½ообраз�½ые
аспекты языка VHDL �½а примере �½епосредстве�½�½о созда�½ия ZX Spectrum. Да�½�½ая реализация отличается простотой и опирается �½а ядро T80 (воплоще�½ие
Z80 �½а языке VHDL), �½о предполагает использова�½ие микросхемы SRAM в качестве ОЗУ. На плате Марсоход2 уста�½овле�½а памяти типа SDRAM, что
�½есколько ослож�½яет задачу портирова�½ия, и име�½�½о реше�½ию этих труд�½остей будет посвяще�½а вторая часть �½астоящей статьи.
Из предыдущего материала, который повествует об ос�½ов�½ых особе�½�½остях архитектур�½ого устройства памяти SDRAM (/11-blog/281-sdramvhdl), мы з�½аем,
что для этого типа ОЗУ характер�½ы раз�½ообраз�½ые задержки, а чте�½ие или запись да�½�½ых обыч�½о представляет собой целую последователь�½ость
действий, которую выпол�½яет специаль�½ый ко�½троллер. С задержками я решил бороться путём увеличе�½ия тактовой частоты, подаваемой �½а микросхему
памяти, от�½оситель�½о частоты самого "Спектрума": если послед�½ий довольствуется 14 МГц (и это "пиксельклок", используемый для вывода видеода�½�½ых,
для самого процессора частота в итоге по�½ижается до 3.5 МГц), то память работает �½а 70 МГц. Это позволяет �½адеяться, что за время между моме�½том,
когда процессор запросит да�½�½ые из ОЗУ, и моме�½том, когда о�½ попытается считать эти да�½�½ые со своей вход�½ой ши�½ы, ко�½троллер успеет произвести
все �½еобходимые операции и извлечь �½уж�½ую порцию и�½формации из микросхемы SDRAM.
После �½еобходимой "подме�½ы", компиляции проекта и прошивки его в плату, Марсоход2 порадовал �½е серым экра�½ом с лако�½ич�½ой подписью компа�½ии-
разработчика ZX Spectrum, а безобраз�½ой кашицей из цветов всей �½ебогатой палитры этого компьютера. А�½ализ проблемы показал, что расчёты,
выпол�½е�½�½ые в предыдущем абзаце, �½е совсем точ�½ы: если процессор действитель�½о �½е замечает задержек, то видеода�½�½ые �½е успевают считываться
из памяти даже �½а высокой частоте. Это связа�½о с тем, что �½а чте�½ие видеода�½ых выделяется край�½е �½ебольшое по продолжитель�½ости "ок�½о", во время
которого процессор бездействует и как бы отключается от общей ши�½ы памяти. Таким образом, попытки �½арастить частоту памяти �½уж�½ого эффекта �½е
дали, а з�½ачит к реше�½ию проблемы �½уж�½о подходить с другой сторо�½ы.
Для �½ачала отвлечёмся и посмотрим, как устрое�½а память ZX Spectrum. Все да�½�½ые существуют в еди�½ом адрес�½ом простра�½стве. Первую его часть –
16384 байта (0000h-4000h) – за�½имает ПЗУ, следом располагаются 6912 байт памяти видеода�½�½ых (4001h-5B00h), а оставшийся диапазо�½ адресов уже
используется �½епосредстве�½�½о для ОЗУ.
После и�½ициализации ПЗУ в ПЛИС �½а плате Марсоход2 остаётся ещё достаточ�½о свобод�½ой памяти, которую я решил использовать в для размеще�½ия
видеода�½�½ых. Для этого при помощи MegaWizard Plug-In Manager был созда�½ модуль двухпортового ОЗУ �½а 8192 байта – этого более чем достаточ�½о для
размеще�½ия всех видеода�½�½ых. Ос�½ов�½ой модуль проекта пришлось расширить �½овыми выводами, которые будут и�½терфейсом взаимодействия между
"Спектрумом" и видеопамятью. В целом, верх�½ий модуль проекта выглядит так (клик�½уть по изображе�½ию, чтобы увеличить):
(/images/stories/c3/mindango/zx/zx_topology.png)
Для управле�½ия �½овыми выводами потребовалось добавить �½ем�½ого логики. Так, да�½�½ые �½а выходе
video_wr_data
будут браться с выход�½ой ши�½ы
процессора только тогда, когда процессор запрашивает запись по адресу из диапазо�½а 4001h-5B00h. При этих же условиях будет активироваться сиг�½ал
video_wr_en,
разрешающий запись да�½�½ых в память, и, соответстве�½�½о,
video_wr_adr,
отвечающий за передачу адреса да�½�½ых видеопамяти, будет
при�½имать з�½аче�½ие младших 13 бит адрес�½ой ши�½ы процессора, если о�½а обращается всё к тому же диапазо�½у. Когда потребуется вывести видеода�½�½ые
�½а экра�½, будет активирова�½ сиг�½ал
video_rd_en,
разрешающий чте�½ие из памяти. Разумеется, сами да�½�½ые будут браться с входа
video_rd_data.
Очеред�½ая попытка скомпилировать проект и прошить его в плату, и мы можем �½аблюдать �½а экра�½е такую карти�½у:
ZX Spectrum в плате Марсоход2 загрузился и ожидает ввода кома�½д!
Исход�½ые да�½�½ые этого проекта мож�½о загрузить по ссылке:
Проект ZX Spectrum (/downloads/category/22-proekty-altera-quartus-ii-dlya-platy-marsokhod2?download=162) ( 1725545 bytes )
Кстати говоря, проект обладает поте�½циалом для даль�½ейших улучше�½ий: мож�½о попробовать заме�½ить ПЗУ �½а прошивку от более продви�½утой модели
"Спектрума" (требуется соответствующий образ с расшире�½ием .hex или .mif), что позволит, �½апример, работать с большим объёмом оператив�½ой памяти;
добавить вывод звука и возмож�½ость загрузки программ с в�½еш�½их устройств.
На этом статья подходит к ко�½цу. Если материал будет и�½тересе�½, то я постараюсь вер�½уться к теме в ближайшее время и реализовать какие-�½ибудь
улучше�½ия для "Спектрума". Как всегда, вопросы, отзывы и пожале�½ия мож�½о оставить в комме�½тариях.
Tags: ZX spectrum (/component/search/?searchword=ZX%20spectrum&ordering=&searchphrase=all)
searchword=Z80&ordering=&searchphrase=all)
Z80 (/component/search/?
FPGA
ПЛИС (/component/search/?searchword=ПЛИС&ordering=&searchphrase=all)
(/component/search/?searchword=FPGA&ordering=&searchphrase=all)
(https://vk.com/share.php?url=https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&title=ZX%20Spectrum&utm_source=share2)
(https://www.facebook.com/sharer.php?src=sp&u=https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&title=ZX%20Spectrum&utm_source=share2)
(https://connect.ok.ru/offer?url=https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&title=ZX%20Spectrum&utm_source=share2)
(https://connect.mail.ru/share?url=https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&title=ZX%20Spectrum&utm_source=share2)
(https://twitter.com/intent/tweet?text=ZX%20Spectrum&url=https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&utm_source=share2)
(viber://forward?text=ZX%20Spectrum%20https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&utm_source=share2)
(https://api.whatsapp.com/send?text=ZX%20Spectrum%20https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&utm_source=share2)
(https://web.skype.com/share?url=https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&utm_source=share2)
(https://t.me/share/url?url=https%3A%2F%2Fmarsohod.org%2Fprojects%2Fmarsohod2%2F286-zx-spectrum&text=ZX%20Spectrum&utm_source=share2)
Назад (/projects/marsohod2/290-websrv)
Комме�½тарии
Вперёд (/projects/marsohod2/278-vhdlvga)
-1
#36 (/projects/marsohod2/286-zx-spectrum#comment-6020)
гось
04.12.2019 14:10
Нрмаль�½ый компютор. Все мечтали о компюторе. Но были продви�½утые у �½их был АМИГА короче МИГ 29 фулкрюм.
Ну так вот о�½и мечтают украсть комп �½а свой. То есть о�½и �½е проходят �½а Мо�½деале по причи�½е того что у �½их комп который �½е �½а му�½деале а �½а
другом празд�½ике похожем �½а празд�½ик компьютер�½ой эры �½о о�½и изза зависти потеряли к себе вход приперлись �½а ЗитИкс короче хотят меж глаз
получить косяком от проход�½ой и кишки �½амотать свои �½а вертушок. Ну раз �½и туда �½и куда �½и �½а право �½и �½алево.
Их строго �½икто �½е судит о�½и вообще воры в зако�½е убили весь суд и теперь просто хотят разориться и перейти �½а сторо�½у ЗиксИкс.
Но �½ет там празд�½ик де�½ег и металла металла который везде прзд�½ик буржуа �½а АМИГА все готово к встрече богатейшего праз�½ика КОМОДОРЕ
АМИГА АТАРИ и другие �½е ЗЕД ИКСО.
#35 (/projects/marsohod2/286-zx-spectrum#comment-5973)
aamor
Цитата:
Каждый цвет мог иметь оди�½ из двух уров�½ей яркости (�½а чёр�½ый это �½е распростра�½ялось), таким образом, всего ZX Spectrum мог
воспроизводить до 15 различ�½ых цветов и отте�½ков.
Распростра�½ялось.
Но возмож�½о �½е во всех моделях и эмуляторах (в �½екоторых эмуляторах �½ет и яркого си�½его). В эмуляторах ZXSpin и EmuZWin
возмож�½о отрегулировать желатель�½ый урове�½ь палитры. В самих же программах яркий чёр�½ый цвет предполагался. Всё таки стоит
усоверше�½ствовать эмуляторы, чтобы палитра была из целых 16 цветов.
30.06.2019 09:29
+3
усоверше�½ствовать эмуляторы, чтобы палитра была из целых 16 цветов.
#34 (/projects/marsohod2/286-zx-spectrum#comment-5949)
Lisitsin
17.05.2019 19:06
Моя разработка ZX Spectrum �½а AVR
good-kits.ru/.../... (https://good-kits.ru/nabory-bloki-i-moduli/zx-spectrum/radiokonstruktor-avr-zx-spectrum-v2/)
#33 (/projects/marsohod2/286-zx-spectrum#comment-5127)
zev_b3k
18.06.2018 21:59
я в 53 посту спрашивал, в общем разобрался - �½а плате марсоход CKE и CS �½а SDRAM были подтя�½уты аппарат�½о, а в моей �½ет. Добавил
только перемычки и все заработало!
#32 (/projects/marsohod2/286-zx-spectrum#comment-5126)
zev_b3k
18.06.2018 20:54
Здравствуйте. Пытаюсь собрать этот проект �½а Cyclone IV E (EP4CE6E22) �½а дешевой китайской плате. Среда QP 16.1.0 Lite. Ресурсов
хватило впритык.
Добился того что при старте платы рисуются крас�½ые полосы вертикаль�½ые �½а чер�½ом фо�½е. Дальше дело �½е идет. SDRAM есть �½о другого
производителя HY57V641620FTP (�½а 143 мгц). ПРедполагаю что дело все таки в SDRAM. Хочу уточ�½ить, что дает параметр
sdram_frequency : integer := 10
в ко�½троллере, почему в исход�½ика 10 и �½е долж�½а ли там быть фактическая частота clk?
0
+3
0
-4
#31 (/projects/marsohod2/286-zx-spectrum#comment-4146)
Vasiliy
23.01.2017 17:45
Здравствуйте!
Представляю �½а Ваш суд свою разработку – всемир�½о извест�½ый персо�½аль�½ый компьютер ZX Spectrum �½а совреме�½�½ой элеме�½т�½ой базе – AVR
микроко�½троллерах.
На ZX Spectrum выросли миллио�½ы любителей компьютеро�½ой тех�½ики, программисты, радиолюбители и простые пользователи – любители
компьютер�½ых игр и попрограммировать �½а бейсике) Если Вы пом�½ите всё это, готов порадовать Вас своей разработкой, подроб�½о здесь:
meandr.org/archives/21451 (http://meandr.org/archives/21451)
О разработке имеются статьи в жур�½але «Радио»
Тема, посвящё�½�½ая AVR ZX Spectrum �½а форуме zx.pk.ru:
zx-pk.ru/.../... (http://zx-pk.ru/threads/23671-avr-zx-spectrum-v2_0.html)
Желающие могут собрать устройство самостоятель�½о и поиграть в старые добрые игрушки ю�½ости/детства, проект открытый
Вопросы автору (м�½е) в личку, или Vasil.lisitsin yandex.ru
Есть в магази�½е: good-kits.ru/.../... (http://good-kits.ru/nabory-bloki-i-moduli/zx-spectrum/radiokonstruktor-avr-zx-spectrum-v2/)
#30 (/projects/marsohod2/286-zx-spectrum#comment-3933)
Chaosorg
23.03.2016 13:19
и�½терес�½ая при�½ципиаль�½ость у foxtail :) заметьте, версий в теме
marsohod.org/.../... (https://marsohod.org/forum/proekty-polzovatelej/3137-zx-spectrum-128k-na-osnove-proekta-ewgeny7)
�½есколько - если Вам так мешает AY звук и режим 128го спектрума, то возьмите более ра�½�½юю, где просто поправле�½ы ошибки этой
#29 (/projects/marsohod2/286-zx-spectrum#comment-3932)
foxtail
23.03.2016 06:38
Работает прекрас�½о. Жаль �½ет бордюра тут, �½о �½а �½овую версию �½е перехожу, эта работает и лад�½о.
Тут есть од�½а проблема. Если долго �½е читать или �½е писать, память запол�½яется "мусором".
Решил проблему ром-хаки�½гом
$386E:
push bc ;1
push de ;1
ld hl,($5B00) ;3
ld d, h ; 1
ld e, l ; 1
ld bc, $0100 ; 3
ldir ; 2
ld ($5B00), hl ; 3
pop de ;1
pop bc ;1
; Выпол�½е�½ие замеще�½�½ой и�½струкции
ld hl,(05c78h)
jp $003D ; 3
а там где rst08,
jp $386E ; 3 3A 3B 3C ld hl,(05c78h) ; 3
оставил �½а �½очь, �½и байта �½е запоролось, так что все ок. Тратит, ко�½еч�½о, 7% от CPU, �½о зато стабиль�½о хоть как-то.
А то захотелось дизассемблер �½аписать �½а бейсике, а память улетает :D
#28 (/projects/marsohod2/286-zx-spectrum#comment-3722)
Chaosorg
08.06.2015 01:15
Доработа�½о совмест�½ыми усилиями до ZX Spectrum 128K
marsohod.org/.../... (https://marsohod.org/forum/proekty-polzovatelej/3137-zx-spectrum-128k-na-osnove-proekta-ewgeny7)
#27 (/projects/marsohod2/286-zx-spectrum#comment-3702)
Chaosorg
18.05.2015 17:15
Про перейти �½а форум - согласе�½. Думаю стоит дать ссылку �½а тему, где, как м�½е кажется, больше всего обсужде�½ия име�½�½о проекта
спектрума для Марсохода 2, который скачивается с этого сайта (т.е. который сейчас комме�½тируется)
marsohod.org/.../... (https://marsohod.org/forum/voprosy-o-plate-marsokhod/3031-zx-spectrum-regeneratsiya-videobufera-i-pomekhi)
#26 (/projects/marsohod2/286-zx-spectrum#comment-3700)
Chaosorg
18.05.2015 09:08
Если в�½утрь чужого исход�½ика �½е лезть, то какая раз�½ица �½а чем о�½? М�½е вот кажется, что 128к режим полез�½ее первым в�½едрить и�½аче
мало �½а чем удастся послушать AY.
Еще я бы попробовал вер�½уть видеопамять в sdram, а быструю в�½утре�½�½юю оставить под ПЗУ и преобразователь TV->VGA@60Hz
#25 (/projects/marsohod2/286-zx-spectrum#comment-3699)
Vise
18.05.2015 09:04
Нашел AY �½а Verilog! Я так думаю, дальше лучше �½а форум перейти.
#24 (/projects/marsohod2/286-zx-spectrum#comment-3698)
Vise
18.05.2015 08:25
Ну файловая система это да, м�½ого мороки. А вот думаю AY и 128 К �½е особо большая проблема. Пошел AY �½а Verilog искать. Ибо VHDL
для ме�½я тем�½ый лес :)))) Хотя...
#23 (/projects/marsohod2/286-zx-spectrum#comment-3697)
Chaosorg
18.05.2015 07:36
Я буду пробовать добавить все это, �½о разобью проект �½а более мелкие блоки, чем этот speccy. И, �½евер�½ое, сделаю шаг в сторо�½у
графического дизай�½а, хотя бы в части соеди�½е�½ия блоков. Еще �½адо определиться какой ми�½ималь�½ый процессор �½адо использовать чтобы
работать с файловой системой в�½еш�½их �½акопителей и реаль�½о ли это вообще поместить �½а марсоход 2?
#22 (/projects/marsohod2/286-zx-spectrum#comment-3696)
Vise
18.05.2015 03:00
+1
+1
0
0
+1
0
0
0
0
Ну TAPE_OUT и BEEPER я тоже добавил. Насчет TAPE_IN - сапсибо! Я смотрел по схеме вроде Ле�½и�½града, там �½а 5 бит маг�½итофо�½�½ый вход идет.
Plik z chomika:
Teemu1.huusko
Inne pliki z tego folderu:
2021-06-10 21-47-38.mkv
(32047 KB)
2022-11-18 03-56-23.mkv
(271550 KB)
alemorf.rar
(261373 KB)
16bit-s.wav
(32256 KB)
Bad Apple Sprinter Extended 24 PNG Seqence.zip
(379173 KB)
Inne foldery tego chomika:
#AmiCoders
#demoescena
#Scenelounge
16-Bits Of Lucky
19-21.07 DiHalt 2024 Camping
Zgłoś jeśli
naruszono regulamin