надо взять исходный проект РК86 от b2m - он как раз со SRAM и попробовать заменить модуль SDRAM и логику работы с памятью. Ну или наеборот - в исходный проект добавить HDMI, что наверное проще
Вид для печати
да - это мой путь по освоению HDL кодирования: взять заведоморабочий проект и модернизировать под свои хотелки и имеющее железо.
Благодаря andykarpov я уже сделал для себя большой шаг в этом направлении. Карабас нано был портирован на Xilinx обвешан моими хотелками снаружи! Там я уперся в то, что CPLD - это не для творчества а для продакшен-а (маленький обьем и постоянная перешивка отбивает все желание "творить").
Надеюсь на успех и в случае Cyclone10LP
так это, как ивоо...
https://bashkiria-2m.narod.ru/index/fpga/0-12
внизу страницы два файла. Т.с. с чего все начиналось... 2011 год, мда.. Давно это было.
Вот только как бы все это к Реверсу никаким боком
я пошел по самому простому пути ("ленивому")
взял проект от :
добавил поддержку SRAM из проекта вместо SDRAM:
все завелось с полоборота)))
Спасибо всем ! кто предоставил результаты своего труда (исходники, портирование - все очень важно на стадии освоения нового!)
Автору особое спасибо за проект , который я использовал как образец для своего ! На просторах инета и у производителя все проекты или навороченные или слишком "правильные". А тут как раз все прощено до безобразия и главное все - РАБОТАЕТ!
Теперь можно и плату развести под этот кристалл и под красивый корпус (уже с учетом накопленного опыта и исправленных ошибок).
Специалист на очереди - как бонус))))
Но пока повожусь с LCD24bit.
ну как бы это все хорошо, а с клавой что решил??
Надо или делать простейший вариант PS\2 ну или более интересный и сложный на rpi pico
с клавой вопрос решен давно)) просто сейчас была задача получить стартовую картинку разных компов - т.е. проверить вновь спаянное "железо" и неболее того))) Конечно, отсутсвие клавы немного омрачают первые минуты радости при виде стартовой заставки очередной корки но все поэтапно в моем случае (нехватка времени на дает о себе знать).
PS\2 - это совсем тоска в наше время ))) Только USB и никак иначе.
вот просто ничего сложного в этом варианте я не увидел когда когда-то его прикрутил к Карабасу - взял идею и исходники на VHDL у нашего форумчанина andykarpov , который своей неиспаемой энергией двигает форум вперед своими ДЕЛАМИ, "PS/2 AVR CPLD keyboard adapter" естественно выкинул к чертям очередной атавизм нашего времени Atmega328 (но в исходниках взял алгоритм что слать и как слать в CPLD) и заменил на PicoW прикрутив ,прекрасно работающий, TinyUSB. Для ZX корки надо будет только copy-paste из моей реализации проекта карабаса а вот для РК86 и других советских компов придется чуть править VHDL ввиду другой реализации клавиатуры.
Жалко , что до сих пор microPython не поддерживает tinyusb)) Для наших супермедленных железок его хватает выше крыши. И "код" писать одно удовольствие - быстро и просто )))
Кстати в новом проекте Karabas-Go и Karabas-Go Mini от andykarpov ,если я правильно понимаю, заложена та же идея как в этом проекте - с заменой корок "на лету" только без диковинных зверюшек "vnc2" с заменой на PicoW (чудо-контроллер для поделок с бешеной скоростью и уникальными фишками (железные "автоматы" на борту)). Вот жаль, что пока что на базе "сейчас там arduino framework и много *****кода" :
Кстати я делал проект (полностью законченный) на - использовал ВСЕ его встроенные на борту фишки. Для этого пришлость вести переписку с производителем ))) изза их скудной документации. В итоге дисплей на FT813 и TM4C1294 прекрасно работают)))
Я так понимаю, это цитата из соседней ветки форума :)))
Ну не то чтоб прям жаль, на чистом sdk было бы просто правильнее, за то на arduino framework'е можно реюзнуть миллион готовых либ.
ну и оно хоть и *****код, но работает как-то :)
Ну как бы tinyUSB host реализацию можно ко многим контроллерам подцепить нынче на раз-два, в этом прелесть этой либы.
На гоше, например, там целое ядро rp2040 отдельно трудится для обслуживания usb host'а.
ну да, rp2040 читает файл битстрима из файла на sd-карте и конфигурирует fpga (в режиме passive serial). попутно льет ромы и всякие конфиги для osd меню корки в fpga (по spi). имхо, удобно.
как минимум вообще отпадает нужна в каком-либо стороннем программаторе. ни для rp2040, ни для fpga.
да - их соседней ))
Я это упомянул не в отрицательном смысле (я сам когда разбираюсь с чем-то новым то ищу пример РАБОТАЮЩИЙ на любом языке и в любом виде - хоть на ассемблере)) - главное понять алгоритм и дальше уже реализуй на чем горазд ). Я просто не люблю (мягко сказано) arduino - но э то чисто личностное и персональное. Как человек , начинавший с ассемблера под Z80 - я ужосом воспринимаю как дико загружают ресурсы любого микроконтролерра подделкой "arduino". Опять - это чисто мое восприятие)))
не удобно а так и должно быть (must have!) при такой шикарной возможности от технологии FPGA - смена "прошивки" налету! Я в свое время отмучался с постоянными перешивками в CPLD .... Я тоже такое заложил в своем прежнем проекте на Spartan2 и в этом проекте - только пока занимался железом(пайка миллиона проводком под микроскопом) - на софт не было времени и возможности. С вашей помощью (выдерну алгоритм cчитывания файл битстрима из файла на sd-карте или в моем случае "SST26VF064B Serial Quad I/O (SQI) Flash" ) доведу идею до логического конца)
Кстати , ввиду того что я использую только модули на PicoW то было бы классно ввести беспроводную реализацию общения host компа и платы с FPGA & PicoW - простой пример марсоход с прошивкой FPGA по WiFi помощью RPiZeroW и сервера на OpenOCD.
Все-таки подключил SD-RAM вместо SRAM и теперь пытаюсь запустить более серьезный вариант Spectrum-a - "ZX-128". Ведет он как-то странно в моем варианте - после загрзки конфигурации по JTag имею тест "цветные полосы", по нажатию NMI кнопки стартует DivMMC, все 4 системных файла грузи и висит. Читал втеме по DivMMC, что должна выйти в 48 бейсик .... Я никогда не имел дела с DivMMC - как должно все работать не имею понятия.
В моем вараинте модуль "vnc2" отсутствует физически и оригинальный "код" клавиатуры заменен на адаптированный от andykarpov на PicoW. На клавиши не реагирует - только на сброс - заново считывает файлы с карты и все . Как говориться, что я делаю не так)))?
И еще вопрос - почему в HDMI сигнал "HDMI_D1N : out std_logic := '0';" прибит гвоздями к земле и тупо висит в "0" все время. Мой рабочий монитор показывает картинку с таким "дефектом" а вот другой моник (старый) наотрез не хочет показывать картинку .... В чем смысл "неиспользования" сигнала в дифпаре ?
Может кто-то разобрался с протоколом между "vnc2" и FPGA - как это чип шлет код с USB клавиатуры - я бы адаптировал свой код для PicoW под этот алгоритм. Если кто-то поделиться инфой - буду очень признателен!
эти четыре файла должны грузится по сбросу\reset (ну или Не грузится) ДО загрузки BASIC.
а по NMI это уже выходим в оболочку EsxDos/
с клавой и VNC2 разбирался, давно, только помню, что много матерился
у автора три варианта прошивок под разные проекты нашел. Т.к. у мня не было программера под это чудо - я пошел от противного, и переделал другие проекты, которые меня интересовали. под ту прошивку, которая работала. как то так.
думаю надо с клавы начинать, а потом уже за DivMMC
у меня сразу "по включению"(в ковычках потому, что в конфигурационной памяти пусто и по включению FPGA чист ) цветные полосы. До того как я закоментил родной модуль клавы и не вставил мой - была заставка Бейсика 128. Как только я убрал родной "обработчик" "vnc2" - вижу только полосы после загрузки конфигурации по JTag.
Я так думаю, что дело в моем модуле клавиатуры - он как-бы рабочий (еще не потратил время на вникание как работает USB c нажатым Shift - опка только "мелкие" буквы и остальные символы и стрелки )
судя по всему - не выходит ((
вот я хочу позаимствовать протокол общения "чуда" и портировать его на PicoW. Исходники как бы есть но вникать в ассемблер неизвестного "камушка" - то еще занятие ((( Нельзя обьять необятное )))
- - - Добавлено - - -
там только доделать надо "высокие" буковки и служебные клавиши (пока они не работают - не стал вникать год назад изза спешки)
Поскольку все как-то нестабильно ( иногда читает каталог на SD-Card в результате манипуляций физических кнопок RESET & NMI ; иногда наотрез не хочет загружать 4 файла DivMMC ) посетила одна "интерсная" мысль - а могут быть все эти "странности" изза того что все входные сигналы от SD-CARD и SPI интерфейс от PicoW (USB keyboard) сидят на выводах "CLK"?
Хотелось бы узнать мнение людей с реальным опытом по этому поводу: можно ли использовать CLK выводы (их там 16 штук - это жесть какая-то при таком мизерном количестве ног у TQFP144) как обычные входы. Для SPI надо все подтянуть в питанию резисторами (или внешними или внутренними pull-up если таковые есть на пинах CLK). SD-CARD подтянута внешними резисторами а вот в клавиатурном SPI их нет (я не установил - все не упомнишь когда проводами все разводишь).
Осенило )))!!!
программно сделал в модуле вместо "Z" подтянул к питанию через "1" в : KB(0) <= '1'; и все заработало как должно быть! Уххх)))
Еще бы понять что за трюк с сигналом "HDMI сигнал "HDMI_D1N : out std_logic := '0';"
портировал этот тест под свой девборд на 10LP - картинка есть как на фото
и в Вашем посте
- одно только "не совпадает" - тест НЕ СТАРТУЕТ((( Все время нули на обоих счетчиках ... белые "точки-штучки" бегают в пределах первой цифры (слева которая), на кнопку сброса реагирует (точки перестают бегать и замирают в левом положении) но "не стартует"
Может все-таки Вы его портировали и вникали в суть этого теста - куда копать??
PLL сделал под свой FPGA (84MHz,14MHz,84MHz - зачем 2 раза одна и та же частота??)
А что за файлы speccy2010.rbf в папках. Нигде не нашел куда их "подключать" в проекте (я их не подключил в итоге)
Случаем не портировали - как у Вас с результатом - работает?
Этот тест много куда портирован, в т.ч. на MiSTer\MiST ( там можно посмотрить исходники крайней версии с авторазгоном и клавиатурой)
А так то я бы сказал, что неверно подключена память SDRAM, там как бы больше нечему не работать, даже клавиатура не нужна, при включении сразу стартует. Может с сигналом RESET что нибудь ??
две частоты по 84 - это скорее всего для тактирования памяти со сдвигом фаз между собой, причем фазу двигают по разномуу в зависимости от частоты...
а ссылочку можно(не сочтитеза труд!)
Ресет - обычная кнопка - когда нажимаю то корочу на землю с подтяжки к питанию через резистор. Реакция есть.
Насчет подключения - оххх большой кусок работы - память под fpga находится. Другой вопрос -может ошибся сслужебными сигналами при назначении пинов и портировании моей схемы. Уменя CS все время на земле перемычкой .
Кстати я портировал ZX128 конфигурацию . Многие игры не хотят стартовать а вот exolon и executor норм работают . Странно .... там SDRAM уже используеться.
я про это и говорю. Ресет не внешний, а внУтренний который, в проекте. Как вариант.
https://github.com/MiSTer-devel/MemTest_MiSTer
за семь лет немного поменялся тест, но в основном внешне и управление, сам модуль тестирования я думаю прежний. Можно первые версии посмотреть в git-e
Если Вы глубоко вникали в исходники - SDRAM у меня такая же как и в проекте u16.Т.е. в 2 раза больше по обьему ( на 1 больше column) я ничего не меня в настройках из соображения пусть для начала половину протестит а потом поменяю сетинги и всю прогоню.
Внутренний ресет - вопрос интересный - надо в исходниках покопаться .
Спасибо за ссылку . Посмотрю как развился проект теста.
- - - Добавлено - - -
да , Вы указали верно - фазу я не заметил при создании нового PLL для моего циклона.Поправил в соотвествии с оригинальным проектом . Белые точки стали двигатьмя дальше до середины экрана но старта нет все равно. Может быть что я использую только по одному разряду на RGB вместо 7ми как в ортгинальном проекте. Цифры вродеверно рисует . Цвета тоже. Снизу красный , сверху - зеленый ....
- - - Добавлено - - -
старшие линии А12 и А11 все время в "0". На остальных пинах есть сигналы .Частота клока 84МГц.
Вот еще два порта того же теста, работает же..
https://gitlab.com/emax73g/unoxt2-sdram-test-core
спасибо! буду пробовать вникать на выходных.
Главное - проверил соответсвие соединений от пина памяти к пину циклона.Ошибок не нашел.
Чисто как предположение - может влияет провочный монтаж или отсутвие терминальных резисьоров на линиях памяти. Это моя учебная макетка и я не упрощал монтаж.Итак потратил 3 месяца на пайку проводов)
Тааа, я-то как раз ненастоящий сварщик, опытные затихарились что-то..
я так думаю, эта схема должна работать\перебирать цифирьки, даже в отсутствии SDRAM ( ну вдруг непрально подсоединена), с ошибкой конечно, но перебирать.
Если цифры стоят на месте - я бы сказал, что не работает модуль mem_tester, а не работать может елси нет тактовой clk на входе, что маловероятно, и если ресет rst_n все время активен.
Вот и подай туда идиниЦЦу для пробы)
И да, мой 17-й квартус не понимает чипа 10 LP
вот это то и обидно - надеялся на реальную помощь в том , что МНОГИЕ тут уже проходили на этом форуме. Я так понял, что данный тест многие использовали при сборке данного устройства на FPGA (или подобных ему) - могли бы поделиться своими соображениями ))
Как я уже сказал , что этот тест для меня не как просто увидеть картинку на экране а гарантированно проверить память. Если она не работает в таком подключении - я просто вернусь к статите на 512К(все на панельках и заменяться в течении 5 минут) и буду дальше осваивать "железоописание".
У меня в планах развести на плате свой борд с PicoW - там SDRAM будет подключена по всем правилам - с выравниванем длин дорожек и терминальными резисторами. Но это все ПОТОМ)))
Вам, zebest, очень признателен на ответы в этой теме и в других!
работает и переберает "что-то" - на всех вывожах , кроме А12 и А11, идет числодробилка - осциллограф и утилита TopJTAG Probe тому подтверждение). Я посмотрел внутренним лог. анализатором внутри FPGA - сигнал START ( start(dram_start) ) стоит как вкопанный - на RESET не реагирует . 32разрядные считчики ошибок и удачных проходов "passcount" и "failcount" в нулях - так как и на экране - чуда не случилось - что вижу на экране то и внутри теста
вчера проверил КАЖДЫЙ вывод SDRAM и соответсвующий вывод FPGA - ошибок в подключении нет.
вот тут точно согласен на все 100% - но и ошибок нет (((
да - я тоже вчера начал его внимательно "изучать" диаграммы сигналов - жалко что памяти лог анализатора не хватает на много(((
есть да еще и какой сигнал - все как положено через резистор 33 Ома. 84МГц. Я понижал до 50 но это все не помогло - думал изза монтажа проводами наводки на такой частоте - осциллографом сигналы чистые.
ресет лог анализатор показал, что четко синронно работает внешним. Модуль resetter отрабатывает правильно.
Именно это и планирую сделать - но моя возня с этим тестом была направленна на практическое использование его - удостовериться что моя SDRAM работает и подключенна верно (провода и отсутсвие терм. резисторов не влияет на ее работу) . Очень странно ведет себя комп в конфигурации ZX128, где используеться SDRAM - только пара игр удачно загрузилось и работало - остальные сразу сбразывались в бейсик48.
я не помню с какой версии он добавился. 18ую ставил из соображений самой последней нормально работающей под Win7 с NIOSII - надеюсь что дойду до него (все-таки программирование в "привычном" понимании для меня ближе - вся проф. деятельность связана с ним. Хотя описание железа тоже завлекает своими возможностями - но это все лирика , не имеющая отношения к тесту)
Я уже начал задумываться , чтобы проверить память с помощью скрипта на Python-e c помощью "JTAG Live Studio" но его медлительность не даст нормально работать памями SDRAM - все-таки есть минмиальная часто регенерации - иначе гарантированная потеря данных ....