OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 13:28

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 336 ]  Přejít na stránku Předchozí  1 ... 5, 6, 7, 8, 9, 10, 11 ... 23  Další
Autor Zpráva
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 09:09 
Offline
Óm Nejvyšší

Registrován: 16.06.2014, 12:23
Příspěvky: 3676
Bydliště: Jesenice u Prahy
Has thanked: 28 times
Been thanked: 280 times
A jak se nastaví po zapnutí PC u každého PIO kanálu ?

A jak se udělá, když mají společný program, že každý PIO jede do jiného IO instrukcí OUT ?

Jak mám chápat větu " Each PIO instance has a 32-slot instruction memory ... " ?

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 10:33 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 863 times
Been thanked: 697 times
Každý SM se konfiguruje (přes registry) - využívá sice stejnou programovou paměť jako ostatní 3 SM v tom daném PIO, ale může běžet v jiné části programu a mít namapované jiné IO piny. Při startu se mu řekne, od jaké adresy začíná (nastaví se mu PC). Kromě toho se do SM dá injektovat instrukce externím příkazem, tím se např. dá provést skok "mimo pořadí" a přepnout ho do jiného kódu.

"Each PIO instance has a 32-slot instruction memory ... " = jsou tam 2 PIO, každé PIO má paměť na 32 instrukcí programu, každé PIO má 4 SM a ty 4 SM jedou v tom společném programu co má 32 instrukcí. PIO je společná jednotka pro 4 state machines SM.

Všechny 4 SM jednoho PIO se dají spustit synchronně jedním příkazem. Případně se mohou navzájem synchronizovat přes IRQ a čekání.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 10:42 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 863 times
Been thanked: 697 times
danhard píše:
Myslel jsem, že by se sync a zatemnění počítalo na vlastních pinech a zobrazení by bylo řízené podle toho.
Je to tak, že každý ten PIO má vlastní program a je jich tam celkem 32 ?
Tím by se daly ty řídící "programy" délkou trochu sčítat.

Jestli padal obraz při jiném zatížení CPU, není tam na to ten FIFO buffer na vstupu ?
Každý SM má svůj FIFO buffer. FIFO je buď 4x u32 v každém směru (vysílání, příjem), nebo se dají spojit (když SM jede jen jedním směrem) a pak je FIFO 8 úrovní.

I s FIFO je problém udržet tok dat, protože aby to stíhalo musí se data přenášet přes DMA. Jenže DMA je jedna hw jednotka, která cyklicky přepíná kanály. Když se některý kanál zdrží, např. čeká na externí flash při čtení programové paměti, nemůže během té doby běžet DMA pro výstup obrazu, FIFO to neudrží a rozpadne se to. Např. se během generování obrazu nedá použít USB, protože i to používá DMA kanál. Resp. - dá se použít, ale musí se ošetřit aby rozpad obraz nebyl moc podstatný, aby monitor nevypadl ze synchronizace a na několik sekund neztmavnul. Ošetřuji to tak, že když se načítají obrázky z flash, výstup generátoru obrazu se na chvíli přepne na černou barvu - ta nevyžaduje intenzivní přístup DMA, takže synchronizace se nerozpadne, na monitoru jen problikne krátké tmavé místo ale monitor nevypadne.

Na SYNC je užitečné využít "side set", aby nemusel být součástí datových pinů. Mohou to být nezávislé piny, které se ovládají přímo instrukcemi - nastaví se u instrukcí flag "side 0" nebo "side 1" a tím se říká stav SYNC bitu. Bylo by škoda obsazovat jeden celý SM jen na SYNC (takhle to dělají v ScanLine knihovně), je lepší když obsluha SYNC běží současně s obsluhou obrazu. Navíc - u ScanLine asi nevěděli, že SYNC může být i u VGA kompozitní - může být sloučený HSYNC a VSYNC, čímž se ušetří výstupní pin a i programová obsluha je jednodušší.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 11:50 
Offline
Óm Nejvyšší

Registrován: 16.06.2014, 12:23
Příspěvky: 3676
Bydliště: Jesenice u Prahy
Has thanked: 28 times
Been thanked: 280 times
Je mi divný, že by tam udělali takové hw úzké místo.
Jak se čtou z paměti současně 4 instrukce pro 4 různé hodnoty PC ?
HW je daleko jednodušší tam dát 4 paměti a naplnit je 4 kopiemi.

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 11:57 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 863 times
Been thanked: 697 times
Paměť instrukcí pro PIO je speciálně zaměřená na 1 zapisovatele (=procesor, neumožňuje čtení procesorem) a 4 čtenáře (=4 state machines), tak umožňuje současné čtení ze 4 různých míst. Jednotlivé SM se navzájem nijak nezdržují a mohou jet s přesností 1 instrukce = 1 tak hodin procesoru.

Ukázkové softwary pro Pico byly původně vyvíjené jen na emulátoru s FPGA 48 MHz (než vyrobili první procesor) a zřejmě tam chování DMA nebylo emulované 100% přesně, protože tam se souběhem DMA kanálů moc nepočítali. Zkoušel jsem dema ze ScanLine, abych si ověřil zda není chyba v mé obsluze, ale chová se to u nich stejně - když se přistupuje k Flash, tak jsou výpadky obrazu. Spíš bych řekl ne že by o tom nevěděli, ale že o tom mínusu taktně pomlčeli. V demo programech to ošetřují tak, že program jede z RAM a na Flash buď nešahá, nebo to dělá speciální rychlou obsluhou, která se ale v běžném provozu nedá používat. Je tam vidět hlavní záměr vymáčknout z dema maximum, bez ohledu na to zda je to v praxi takhle použitelné nebo ne.

Ale ok, když se na tohle přistoupí a počítá se s tím, tak je to i tak dobře použitelné, jen s tím musí program počítat a jet pokud možno z RAM a data z Flash přesouvat opatrně např. během vertikálního zatemnění. .. čímž se vracíme zpět do éry 8-bitů. :-)

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 12:48 
Offline
Óm Nejvyšší

Registrován: 16.06.2014, 12:23
Příspěvky: 3676
Bydliště: Jesenice u Prahy
Has thanked: 28 times
Been thanked: 280 times
A do Flash se musí přes DMA ?

Právě ta pamět s nezávislým přístupem do 4 míst mi hlavu nebere.

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 12:51 
Offline
Óm Nejvyšší

Registrován: 16.06.2014, 12:23
Příspěvky: 3676
Bydliště: Jesenice u Prahy
Has thanked: 28 times
Been thanked: 280 times
Panda38 píše:
... např. během vertikálního zatemnění. .. čímž se vracíme zpět do éry 8-bitů. :-)

Tak proti ZX81 to bude trošku lepší :lol:

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 12:56 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 863 times
Been thanked: 697 times
danhard píše:
A do Flash se musí přes DMA ?...
Blbnulo to i při běžném přístupu k Flash, bez DMA - vysvětluji si to tak, že DMA i Flash běhá přes společnou interní sběrnici a ta zůstane viset v čekání na Flash a tím blokuje DMA pro displej. ... Možná se dá něco řešit ještě se sběrnicí, do toho jsem zatím moc nepronikl, ale neviděl jsem tam nic co by vypadalo být nápomocné.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 13:34 
Offline
Óm Nejvyšší

Registrován: 16.06.2014, 12:23
Příspěvky: 3676
Bydliště: Jesenice u Prahy
Has thanked: 28 times
Been thanked: 280 times
Jaká je to Flash, externí ?
Jaký je tam přístup ?

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 13:40 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 863 times
Been thanked: 697 times
Flash 2 MB je externí přes QSPI. Při testech přenosu dat mi vycházela 20x pomalejší než interní RAM. Je tam sice i interní ROM, ale ta je malá, je v ní bootloader.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 14:13 
Offline
Óm Nejvyšší

Registrován: 16.06.2014, 12:23
Příspěvky: 3676
Bydliště: Jesenice u Prahy
Has thanked: 28 times
Been thanked: 280 times
Tak jde v podstatě o tu práci s SPI rozhraním, ta by neměla zablokovat DMA a když jo, tak holt nezaflákat celou RAM daty a v tom vertikál zatemňováku tam přesouvat program z flešky do cache :D

Mohly by jsi mi vysvětlit kódování parametru Delay/side-set ?

Nějak z toho nejsem moudrej :?
The function of the 5-bit Delay/side-set field depends on the state machine’s SIDESET_COUNT configuration:
• Up to 5 LSBs (5 minus SIDESET_COUNT) encode a number of idle cycles inserted between this instruction and the next.
• Up to 5 MSBs, set by SIDESET_COUNT, encode a side-set (Section 3.5.1), which can assert a constant onto some
GPIOs, concurrently with main instruction execution

Kdyby mi to namalovali v 7400, tak by to chápal hned :D

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 14:21 
Offline
Kecálek

Registrován: 07.05.2014, 12:10
Příspěvky: 197
Bydliště: Jbc
Has thanked: 0 time
Been thanked: 39 times
Panda38 píše:
Flash 2 MB je externí přes QSPI. Při testech přenosu dat mi vycházela 20x pomalejší než interní RAM.

V dokumentech pisou, ze to ma mit 16KB cache pro pristup do QSPI Flash. Byla tato Flash pri testech aktivni? Nebo se tam pouzivalo vic kodu/dat nez 16KB?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 14:32 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 863 times
Been thanked: 697 times
Každá instrukce má pole 5 bitů, které se používají na buď/a/nebo na side-set bity (tj. piny které se ovládají z instrukcí napřímo) a na přídavnou prodlevu. side-set se nastaví funkcemi:

sm_config_set_sideset(&cfg, 1, false, false);
sm_config_set_sideset_pins(&cfg, pin);

Zvolí se počet bitů, které se z toho 5-bitového pole instrukce použijí pro side-set bity. Může se použít 0 až 5 bitů. Zbývající bity pole se použijí na přídavnou prodlevu. Např. se použije 1 bit pro side-set, pak se ovládá 1 výstupní pin, instrukce mají parametr "side 0" a "side 1", které nastaví side-set výstup na 0 nebo 1. Zbývající 4 bity umožňují zadat přídavnou prodlevu 0 až 15 taktů.

Pak je ještě možnost zapnout volitelný side-set, flagem "opt". V tom případě je nejvyšší bit toho 5-bitového pole vyhrazený pro flag, zda jsou v poli zahrnuté side-set bity. Např. je v nejvyšším bitu zapnutý "opt", v tom případě bude v 2. bitu side-set bit a ve zbývajících 3 bitech může být volitelná prodleva 0 až 7. Když je "opt" bit vypnutý, bude prodleva ve 4 bitech, v rozsahu 0 až 15.

Tohle nastavení je pro PIO jednotku. Pak se to nastavuje i pro překladač, aby věděl jak má instrukce překládat, příkazem ".side_set", kde se zadá kolik je side-set bitů a zda jsou volitelné. Jsou-li zadatné side-set bity a není-li povolený flag "opt", v tom případě se u každé instrukce musí zadávat povinně příkaz "side". Překladač vygeneruje funkci, která nastaví požadovaným způsobem i PIO.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 14:35 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 863 times
Been thanked: 697 times
hynek píše:
Panda38 píše:
Flash 2 MB je externí přes QSPI. Při testech přenosu dat mi vycházela 20x pomalejší než interní RAM.

V dokumentech pisou, ze to ma mit 16KB cache pro pristup do QSPI Flash. Byla tato Flash pri testech aktivni? Nebo se tam pouzivalo vic kodu/dat nez 16KB?
Ano při malých objemech dat se to vleze do cache a pak to jede rychle. Záměrně jsem používal velké bloky dat, aby se vyzkoušela rychlost flash bez cache, protože je předpoklad že v reálu budou programy větší než je velikost cache, např. když se chce z flash načíst grafiku.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Paspberry Pico
PříspěvekNapsal: 06.04.2021, 16:27 
Offline
Óm Nejvyšší

Registrován: 16.06.2014, 12:23
Příspěvky: 3676
Bydliště: Jesenice u Prahy
Has thanked: 28 times
Been thanked: 280 times
Myslel jsem že je to opačně, že když má Flash naplněnou cache a ty to přesouváš DMA, tak že to zalehne DMA, dokud tu cache nepřeneseš, protože jsou stále data připravená.
Nevím, jestli je tam nějak udělaná priorita u DMA.

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 336 ]  Přejít na stránku Předchozí  1 ... 5, 6, 7, 8, 9, 10, 11 ... 23  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 6 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz