forum speccy.pl

ZX Spectrum => EMULATORY => Wątek zaczęty przez: steev w 2016.02.08, 19:37:43

Tytuł: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.08, 19:37:43
Leżał sobie taki kit w szufladzie i się kurzył... Na dysku leżała odłogiem procedura generowania synchronizacji... to co będą tak leżały, nie?
Po długiej walce z DMA pokazało się w końcu COŚ.
Po dorobieniu prostego lecz skutecznego obrazu kontrolnego COŚ zaczęło się wreszcie wyświetlać poprawnie. Jak na razie wciąż jeszcze z bufora liniowego.
Po dodaniu drugiego DMA, zaczęły się wyświetlać obrazy w formacie .SCR :)
Jak widać na razie działa sama 'grafika'.
Kolejny krok - dodanie kolorów (choć jak na razie bez atrybutu jasności...)

A, czy wspomniałem już, że obraz jest generowany całkowicie sprzętowo, a jedyną rolą CPU jest zainicjowanie całej zabawy?

W pstrykaniu fotek udział wzięli :
Kit CY8CKIT-059
Nudzący się cortex-m3
Dwa kanały DMA (w następnym odcinku - więcej kanałów!)
Duża garść verilogu
Stary monitor LCD.

Gościnie - kwarc i kilka rezystorów.
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: Tygrys w 2016.02.08, 20:04:42
Fajnie, mam nadzieję że projekt będzie się rozwijać!
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: nietoperz w 2016.02.09, 20:35:59
Wrzucaj emu Z80 z XZ80 Iana Colliera i masz gotowe ZX Spectrum. I klawiature PS/2 podłącz.

Co się na PSOC-ach w HDL-u opisuje? Konfigurację bloków?
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.09, 21:08:32
Najpierw muszę mieć poprawny obraz. Na razie tylko sprowokowałem kanały DMA do tego, że się ze sobą pobiły  ;D
Oprócz rysowania schematów z gotowych bloków analogowych i cyfrowych, możesz tworzyć swoje klocki w Verilogu (wyłącznie). Jedyny minus - do/z pamięci można się dostać wyłącznie przez DMA lub odczyt do/z rejestrów przez CPU (do pinów dostęp z poziomu hdl jest bezpośredni)
Tu masz kilka słów na temat. (http://www.cypress.com/file/45856/download)
Symulacji brak, ISE i saleae twoim przyjacielem.
Oprócz PLD są jeszcze dostępne 'datapaths' czyli pokręcone, rekonfigurowalne zbitki rejestrów/FIFO/ALU które też potrafią dać kopa (jak już człowiek zrozumie co to do cholery jest ;) )
A emulatory Z80 to mam już przygotowane cztery (no, teraz już pięć, dzięki :) )
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: nietoperz w 2016.02.10, 00:40:01
Ciekawe, zawsze uważałem, że te cudaki Cypressa to tylko konfigurowalne bloki analogowe - a tu się okazuje, że cyfrowe też. Jak mi kit w ręce wpadnie to się pobawie.

Na M3 kiedyś Tetrisa z wyjściem TV zrobiłem, linia była wysyłana poprzez SPI plus timer do generowania synchronizacji. Na PSOC byłoby bardziej elegancko.
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: nietoperz w 2016.02.15, 08:49:16
Jakieś opcje na debuggowanie CPU po SWD bez oryginalnego debuggera od Cypressa (miniprog) są?
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.15, 18:47:48
Może i tak, ale nie szukałem. Kit przychodzi z programatorem/debuggerem (kitprog) obsługującym  IIRC PSOCe z serii 3/4/5 więc po co się szarpać, zwłaszcza że kit kosztuje $10 (no, kupując u farnella ciut więcej... plus przesyłka. Ale i tak)
Kusiło mnie kiedyś żeby się podpiąć pod programator/debugger SWD z kitu ST i zobaczyć co będzie, ale odpuściłem :)
(btw, oprócz SWD można włączyć też JTAGa. Też nie próbowałem [bo nie mam] )
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: nietoperz w 2016.02.15, 20:31:59
Dobra jasne: rano patrzyłem na PSOC4 - i tam siedzi bootloader po uart. A tu mówimy o PSOC5. Na pierwszy rzut oka płytki wizualnie podobne :)
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.17, 14:29:03
Zadławiłem biednego scalaczka :)
W ramach odpoczynku od ugniatania schematu tak by zajmował jak najmniej zasobów, poprosiłem CPU by milisekundę po impulsie odchylania pionowego zapisał w pętli 1024 razy kolejną wartość do rejestru określającego border.
Wynik nic w zasadzie nie wnosi ale za to miło wygląda, więc chętnie się nim podzielę ;)
(zegar systemowy 71MHz, pixel clock 23.66MHz)
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.19, 17:45:29
Dużo symulacji i ściągania przebiegów później.
Co cieszy - atrybuty działają (choć na razie bez bitu jasności) i wszystko śmiga bez udziału CPU.
Co smuci - cztery kanały DMA i dwie ciężkie (po 768B :) ) tabele offsetów w pamięci flash.

Kolejny krok - pełna gama kolorów, lub wywalenie tabel i jednego DMA.
Trudna decyzja.
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.23, 14:25:20
Nie wiem co to są za diody, ale zdecydowanie się do tego zadania nie nadają (ciemne jest za jasne).
Trudno, na razie muszą wystarczyć...
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.24, 15:16:25
My, oh my...
Na razie jest tak :
Prędkość trochę poniżej oryginału, ale na rozruch wstawiłem tam kobylasty Z80free - może wielki ślimaczek, ale przynajmniej o sprawdzonym działaniu.
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.25, 08:46:16
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.02.26, 10:36:18
Działa ładowanie z karty snapów w formacie Z80 (na razie tylko w wersji pierwszej).
No to teraz trzeba pomyśleć o jakiejś rozsądnej klawiaturze ( niestety nie mam żadnej na PS/2 :) ) i co najważniejsze - szybszym emulatorze proca.
I o ile pierwsze to pikuś (Pan Pikuś) to drugie stanowi już nieco większy schodek...
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: pear w 2016.02.26, 10:40:15
Jak to "łatwo" zrobić dziś komputer ...  ::)
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.03.10, 16:47:55
Krótki update.
Wczytuje snapy z80 v1/v2/v3
Ma wbudowany miły selektor snapshotów.
Po zaimplementowaniu debouncera klawiatura zaczęła wreszcie poprawnie działać.
Dzięki uprzejmości virtualboxa, jedyną istniejącą obecnie kopią systemu/emulatora  jest binarka wewnątrz mikrokontrolera.
<dużo długich i skomplikowanych wyrazów w języku Cycerona>
I to w zasadzie zamyka temat (chyba że post mortem dysku da jakieś wyniki - co w przypadku linuksa jest zwykle mało prawdopodobne)
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: pear w 2016.03.10, 17:02:06
A tak dobrze żarło :(
Trzymam kciuki, żeby się jednak odzyskało  ???
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: nietoperz w 2016.03.10, 21:24:50
Ups wielka szkoda. Padło zasilanie podczas pracy wirtualnej maszyny?
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.03.11, 02:13:42
Nie.
VBox zachował się po prostu w miarę logicznie - po przy tworzeniu snapshota stworzył go również dla wszystkich podmontowanych dysków. Również dla osobnego dysku, na którym trzymałem wszystkie dane...
Lecz niestety albo nie spytał, albo spytał zbyt cicho - i przy cofaniu systemu do stanu sprzed snapshota poleciał po całości.
I cofnęło mi do stanu początkowego nie tylko system, ale też dysk z danymi.
'Cała wina moja i tylko mnie można za nią obić po gębie' że sparafrazuję :/

Przy odrobinie szczęścia uda mi się odzyskać większość źródeł (schemat do przerysowania, ale to przeżyję), przy większym szczęściu odzyskam któreś archiwum.
Que sera sera. Qui vivra verra.
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.03.12, 23:40:00
Jest tak.
Hail Eris! :)
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.03.16, 21:49:15
Co by tu jeszcze?
Pół PLA zabrała grafika zx, dodatkowe ćwierć poszło na tryb 512x192 do wyświetlania tekstu (z poziomu PSoC, nie ZX'a :) )
pozostaje jeszcze ćwiartka (minus drobiazgi na I/O, gamepada i floating bus)
Za mało żeby zaszaleć, za dużo żeby zostawić.
Ktoś ma pomysł na coś niewielkiego, co by tam można było wcisnąć? :)
(nie, AY się nie zmieści)
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: Tygrys w 2016.03.20, 19:01:19
Może jakiś backup na przyszłość? W razie czego - mogę zaoferować prywatne repo SVN ;-)

Dodatkowe ficzery - może wsparcie dla plików .pok ?
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: nietoperz w 2016.03.22, 08:34:42
Dodaj debugger z disassemblerem po konsoli szeregowej (jak w simh).
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.03.29, 09:33:05
Backup się robi, ale najlepszy backup nie pomoże na błędy klasy PEBKAC :)
.POK jest do zrobienia (nie zeżre PLD tylko flasha, a tego zostało od metra) tylko że z obecnym CPU to grać się daje średnio, bo lekko się ślimaczy. Ogólnie, wszystkie pomysły typu breakpointy, pułapki, śledzenia, mapowania itp, itd muszą zaczekać na CPU napisany w asmie (konkretnie, na jego dostosowanie do zestawu poleceń thumb2)
Debugger / disassembler to pomysł ciekawy (choć raczej via USB niż UART) ale zakłada że projekt stanie się czymś więcej niż ciekawostką (w co wątpię)
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.04.05, 18:56:05
Kodowanie selektora plików - najnudniejsza rzecz ever.
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.04.29, 10:54:30
Myślę, że można uznać ZX PSOCtrum mk I za 'ukończony', działający (https://www.youtube.com/watch?v=x8-MMhJhJK0) projekt.
Ewentualne dalsze zmiany programowe  muszą się rozpocząć od nowego 'procesora'.
Ewentualne zmiany sprzętowe - zewnętrzny DAC i zejście do 50Hz (o ile monitor zaakceptuje...)
Wybaczcie jakość filmu, w wolnej chwili wrzucę coś w lepszej jakości (oczywiście. tak. bez żadnych wątpliwości. zapewne :) )
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: Tygrys w 2016.05.09, 20:24:37
steev, możesz mi powiedzieć - a nie ukrywam że w PSoC nie wiem nic - jakim wyzwaniem musiałeś stawić czoła? PSoC to procesor czy też coś dla CPLD?
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: pear w 2016.05.09, 20:29:11
PSoC to takie "wszystko w jednym". Zależnie od producenta i modelu w jednym układzie można znaleźć procesor, pamięć, CPLD, a nawet wzmacniacze analogowe i przetworniki DAC/ADC.
To wszystko razem programowalne z połączeniami pomiędzy blokami włącznie. Zero lutowania :-X
Tytuł: Odp: Zabawy z PSoC
Wiadomość wysłana przez: steev w 2016.05.10, 01:10:57
Dokładnie.
PSoC5 to dość mocne CPU (tutaj cortex-m3 mogący wyciągnąć nieco powyżej 80MHz) plus ciut 'stałych' bloków cyfrowych plus PLD na którym możesz zrobić cokolwiek (tworzysz w verilogu, albo rysując schemat ideowy albo projektując w kreatorze maszynę stanów... albo mieszając verilog i maszynę stanów... albo... ;) Dodatkowo istnieje całkiem bogata galeria gotowych bloków. ) plus sporo bloków analogowych (których jeszcze nie dotykałem)
W bonusie - większość nóżek jest routowalna 'programowo' (ie. na etapie konfiguracji scalaka wskazujesz gdzie jaki sygnał leci, a jak się pomylisz albo zmieni Ci się wizja układu, to dwa kliki i leci na inną nogę) Kolejny bonus - piny są podzielone na cztery banki, każdy z nich może mieć inny poziom zasilania (więc można łatwo równocześnie podłączyć  zewnętrzne moduły pracujące przy 5v i 3v3)

Samo IDE (PSOC Creator) jest - jak dla mnie - przezajebiste i wygodne (podstawia full dokumentację pod nos, generuje API, podpowiada itp itd)

Największy problem / wada - bloki konfigurowalne (czyli PLD plus dodatki) nie mają bezpośredniego dostępu do pamięci.
Co boli. Owszem, jest nieźle pomyślane DMA (dzięki czemu udało się cały obraz wyświetlać faktycznie sprzętowo, bez tablic offsetów) nie mniej jest to chwilami kłopotliwe... [uwagi redakcji: z tablicą offsetów też by było w zasadzie sprzętowo (DMA), ale teraz jest sprzętowo bardziej, bo adresy nie są sczytywane z flasha, ale generowane przez PLD]

Mniejszy problem - czasówka, pod co łapie się zarówno napisanie procedur generowania obrazu tak by było stabilne 640x480@60 równocześnie zajmując jak najmniej PLD (skorzystałem z pomysłu z http://www.fpga4fun.com/PongGame.html ) jak i nieszczęsna emulacja Z80 (która jest zaaaaaaa woooolna...) jak i wyścigi DMA (na wczesnym, inaczej działającym etapie projektu) jak i szybkość procedur obsługi karty SD/MMC, jak i... tp, itd :)

Enym łejem - zabawa była świetna, absolutnie warta tych kilkudziesięciu zł. wydanych na kit i dodatki.