Předávání dat mezi dvěma 8 bit procesory
Moderátor: Moderátoři
Předávání dat mezi dvěma 8 bit procesory
Mám představu, že D(0-7) I85 by šly na Port 0 A51 a adresy A(0-7) I85 by šly na adresovej dekodér portu a v součinu s /IOW by vyvolaly INT0 přerušení v A51 a ten načetl nový data.
Nezkoušel jste někdo něco podobnýho? Teoreticky to asi chodit může, ale třeba si neuvědomuju nějakej časovej problém.
Díky
Jirka
Procesory 8080 kompatibilní důverně znám,začínal jsem na nich.
Akorát se divím,že se ještě dnes někdo zabývá takovou vykopávkou.
Podobný problém jsem už kdysi řešil pomocí dvoubánové vyrovnávací paměti,nakonec bylo zapotřebí složité logiky kterou jsem musel realizovat pomocí GAL obvodu.Veliký problém byl v přístupu do paměti,jelikož
oba procesory nebylo možno nijak synchronizovat a docházelo ke kolizím.
Dnešní mikrokontroléry jsou mnohem výkonnější, možná by šel tento problém vyřešit emulací konkrétního počítače pomocí mikrokontroléru.
Na netu jsem už pár krát narazil na program který emuluje PMD80,
Amigu nebo ZX spektrum.Amiga na jednočipu běžela údajně mnohem rychleji než původní počítač.
Jenže, už jsem zjistil, že to takhle jednoduše nemůže jít, protože než Atmel provede přerušení a načte port, tak už je datová sběrnice I85 úplně jiná. Ale pokud se zároveň selektem nahodí klopák RDY, tak se I85 zastaví a až Atmel načte data, tak bitovým portem klopák RDY shodí a I85 pojede dál. Aspoň si to tedy muslím...
A proč to dělám? Je to CNC mašina z začátku 90 let, která se dnes dá sehnat ekvivalent kolem mega a něco na ní odešlo. A právě na něčem jiným, novějším, na co mám i ladící systém chci nahradit tu odešlou část. Předělávat celej původní řídící systém na novější procesor je nesmysl, nejsou zdrojáky a epromek tam je 48kb. To co potřebuju na tuhle náhradu se dá dobádat a vyměřit.
Jirka
Poradil bych si s tou 273 jako data latch a jednou EPROM jako addr decoder, kde nejvyšší databit bude 0 pro určenou adresu
- Přílohy
-
adecoder.PNG- (18.32 KiB) Staženo 155 x
číst a co když bude procesor do periferie posílat celý blok dat.
Čas mezi jednotlivými Byte může být dlouhý jenom jako jeden instrukční
(nebo sběrnicový) cyklus.To nezvládne žádna obsluha přerušení.Dále pak nemůžeme vzít
páječku a na základní desce někde k procesoru připájet hrst drátů abychom
si vyvedli potřebné signály.
Takhle se to nedělá.
Tohle bez podrobného rozboru nikdo nevyřeší, a určitě ne na fóru.
Spíš bych se pohrával s myšlenkou přetaktování procesoru...
Pokud jde jen o zvýšení rychlosti.
- weed_smoker
- Příspěvky: 2673
- Registrován: 02 pro 2011, 00:00
- Bydliště: Jaroměř
Koukal jsem do knih a takhle přes RDY se dělaly pomalý paměti nebo aproximační převodníky, prostě se zastavil procesor, dokud data nezpracovala periférie, či neskončil AD převod. Uvidíme v reálu, zda těch asi 15uS zastavení bude v tý CNC mašině nějak vadit.
Jirka
Jinak s tou poznámkou "2 bity za 15uS" by mě celkem zajímalo, co tím pán myslel
Jirka
Klopák bych dal za adresní dekodér, pokud by byl vůcec potřeba.
Ten dekodér zajistí přerušení (event. zastavení) jen když je psáno na vybrané adresy, navíc to cílový procesor nemusí zjišťovat.
S AVRkem na 8MHz (125ns instr.cyklus) by byla rekace na přerušení asi takováto :
max. 2 - předchozí instrukce
2 - JMP INT
1 - IN rx,portina
1 - IN ry,portinb
1 - ORI rz,recflagbit
( event. 1 - SBI portn,DRstBit )
( 1 CBI - portn,DRstBit )
2 - RETI
to je 9-11 cyklů což je 1,1-1,3 us
Když se nebude Dčkem zastavovat tak data na busu a délka IOW musí být kratší než 750ns, když clockneš to AVRko tak klidně poloviční.