OldComp.cz

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


Právě je 28.03.2024, 17:56

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 33 ]  Přejít na stránku Předchozí  1, 2, 3  Další
Autor Zpráva
 Předmět příspěvku: Re: Emulace Z80 v HDL
PříspěvekNapsal: 28.08.2022, 01:29 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Tak jsem zacal dekodovat cast okolo vstupu. Da se rici se se dari ale prace zatim jde pomalu. Videl jsem vsechny datove sbernice. Zahlednul jsem i signaly na zapis do latche pro instrukci. Tak jsem ho cely dekodoval. Pro tuto cast Z80 existuje totiz i pekny obrazek na webu https://baltazarstudios.com/wp-content/ ... 0-IR-1.png . Takze muzete porovnavat tyto dva obrazky.


Přílohy:
z80-pokus5.png
z80-pokus5.png [ 59.87 KiB | Zobrazeno 2291 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emulace Z80 v HDL
PříspěvekNapsal: 28.08.2022, 08:28 
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
To s tranzistory vypadá přehlednější a v obojím jsou chyby.

Zdá se, že se v těch tranzistorech dost plácáte :D

Je to +5V NMOS logika, str.37
http://www.hs-augsburg.de/~clemen/lehre ... bis3-7.pdf

_________________
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: Emulace Z80 v HDL
PříspěvekNapsal: 28.08.2022, 09:23 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
danhard píše:
To s tranzistory vypadá přehlednější a v obojím jsou chyby.

Zdá se, že se v těch tranzistorech dost plácáte :D

Je to +5V NMOS logika, str.37
http://www.hs-augsburg.de/~clemen/lehre ... bis3-7.pdf


Napis jake chyby tam presne jsou.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emulace Z80 v HDL
PříspěvekNapsal: 28.08.2022, 09:55 
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
Zdoje proudu jsou v +5V NMOS dělané N mos v ochuzujícím módu a ten je zapojen podle toho odkazu.
Gate je spojen se zápornější elektrodou (S a D je jen formálně, je to symetrické) a mělo by se dodržovat označení, že S je záporný a D kladný.
Substrátová dioda je pro všechny společná a nelze s tím žonglovat jako v tom obrázku na webu, ten člověk evidentně neví, jak funguje tranzistor :roll:
Ten obrázek na webu je ale přehlednější, asi proto je hned vidět, že to nemůže fungovat.
A taky by to mělo dodržovat základní pravidla schemat, vstupy vlevo, výstupy vpravo.
Je to jednoduchý latch, čili knihovní prvek sestavený ze základních prvků, to byste měli mít vypilované k dokonalosti :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: Emulace Z80 v HDL
PříspěvekNapsal: 28.08.2022, 15:31 
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
Z diskrétních tranzistorů by to mělo vypadat takto :
ale i tak to potřebuje substrát u M1 a M8 na zem, především M1 musí izolovat oběma směry.


Přílohy:
latch1.png
latch1.png [ 6.78 KiB | Zobrazeno 2220 krát ]

_________________
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: Emulace Z80 v HDL
PříspěvekNapsal: 28.08.2022, 16:42 
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 nebo takto.
5000 tranzistorů by nebylo ani tak drahejch :D
https://www.tme.eu/cz/details/2n7002w-d ... r/2n7002w/


Přílohy:
latch2.png
latch2.png [ 8.54 KiB | Zobrazeno 2222 krát ]

_________________
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: Emulace Z80 v HDL
PříspěvekNapsal: 28.08.2022, 20:21 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Danharde dik za reakci. Ja osobne nemam zajem jit udelat repliku na urovni transistoru. Spise ted chci vzit data co uz existuji, pokusit se pochopit jak je to mysleno, rozdelit do bloku a nasledne v dalsi fazi to prevest do neceho co pujde prelozit do realneho FPGA. Umim si predstavit i toto co mame prelozit do FPGA ale vysledek by byl nechutne slozity. Vlastne by to byl emulator nekolikastavovych vodicu. Soucasne data se daji pouze syntetizovat.

Danharde jak pises ze by bylo vhodne aby vstup byl vlevo a vpravo byl vystup, tak to u FPGA prekladacu to neplati. Zde je dulezite aby se to poskladalo tak aby se to vubec dalo propojit vodici. Za posledni 20 let se zmenil nazor. Drive bylo normalni predavat modulu data v presnem poradi. Ted se bezne pouziva nasledujici kod:

n170_NOR2 inst_n170_NOR2(
.n170(n170),
.vcc(vcc),
.dl_dp(dl_dp),
.gnd(gnd),
.dlatch0(dlatch0)
);

Pak vubec nezalezi na poradu. Jinak je i rozdil mezi syntezou a implemetaci. Synteza neumi posouvat moduly po obrazovce. Implementace omezene umi. U syntezi se ocekava ze pustis nejaky bench co zkontroluje funkci. Ve verilogu pro syntezu mas mraky veci navic co neumi implementace.

Ohledne obrazku https://baltazarstudios.com/wp-content/ ... 0-IR-1.png - opravdu je to spatne udelane. Podle mne spravne tam nema byt Enhancement-load NMOS Inverter. Takze je tam spatne nakresleny symbol. Otazka je co je v realnem obvodu. Nemam cas se na to podivat a dekodovat. Pro mne je dulezite ze je tam "pull-up vec". Je jedno jak je udelana.

Jinak Danharde i na tvem schematu je chyba. Ty jsi nepouzil depletion symbol pro ty dva transistory.

U sebe zmenim aby pull-up transistory aby tam byl enhancement transistor a zapojim to tak aby drain byl u VCC. Ohledne puvodnich transistoru tam to zatim necham byt, mne to nevadi, nevim co by se mohlo zmenit prohozenim source a drain. Takto vim, ze pouzivam stejna data a tak i vysledek musi byt stejny. Ale obecne casem mozna zmenit to tak aby drain byl pripojen k VCC a source k GND.

Jinak rano jsem jeste upravil program aby lepe hledal cesty. Docela se darilo.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emulace Z80 v HDL
PříspěvekNapsal: 28.08.2022, 22:15 
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
Jen pro informaci, můj simulátor nerozlišuje ve schema depletion a enhanced mosfet, ale je tam označení tranzistoru
http://pdf.datasheetcatalog.com/datashe ... bss129.pdf
samozřejmě by musel být požit typ, který má potřebný proud pro Ugs=0

Transpřekladačům je to jedno, v jakém jsou ty prvky a vývody pořadí, ale pokud má být výsledek nějaké demonstrační schema, tak by to mělo být logické a správně.

Tady by to měly být subbloky, které by odpovídaly běžným IO, třeba 8-mi násobný latch.
Jestli to má kolem 5000 tranzistorů, tak to není ani moc složité :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: Emulace Z80 v HDL
PříspěvekNapsal: 29.08.2022, 23:04 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Tak jsem si udelal radost a desifroval jsem to co v projektu Z80Explorer se nazyva "latch". Treba existuje "244 Latch". Ten je aktivni, kdyz se nacita instrukce do opcode registru. Zjistite o nem ze ma vyvod Q a to je tak asi vse.

take se da rychle zjistit treba:
2022-08-29 22:21:12 | I | "244: pulled-up:1 state:0 can-float:0 is-high:1 is-low:0 source/drain (t):7413 to-gates (t):3824,4045,7400"
2022-08-29 22:22:39 | I | Net "244" driven by 1 nets ("1327")

Ale to je ani ne 50% procent dulezitych informaci. Vubec se nedozvite jake signaly delaji SET a RESET.

Zjistil jsem ze zapojeni je podobne jako v https://rajeev2007.github.io/VLSI/not/Chapter8.pdf figure 8.13 na strane 11. Jsou zde dva set a dva reset vstupy soucasne. Jeden je pripojen na CLK a druhy na signal co ma delat set nebo reset. Rozdil oproti tomu co je na obrazku je v tom, ze CLK v log1 blokuje zmenu latche. Takze set a reset muze prijit pouze kdyz je clk v log0. Jeste je chytre udelano napr. u tohoto 244 latch, ze k tomu muze dojit jen v dobe dobezne hrany clk hodin. To zase dela jiny obvod, kde je male zpozdeni, kdyz clk blokuje signaly set nebo reset. Proste je to casove vyladene. Jinak set nebo reset je log0 impuls. Ale uvnitr RS obvodu se to zkracuje na hodne kratky impuls - to dela ta blokace clk.

Proto Danharde kdyz budes to delat pres realne transistory, budes muset mit vhodne zpozdeni aby ti to fungovalo. To je take duvod proc se rika ze Z80 maji mit kvalitni hodiny.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emulace Z80 v HDL
PříspěvekNapsal: 29.08.2022, 23:52 
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
Pokud je S=1, R=1 ⇒ holding state, tak mají blbou logiku značení, jelikož aktivní stav funkce je pro S=0 - false
Mělý by být ty vývody označené /S a /R.

To nezáleží na hodinách, ale u latche musí být mezi W a /W definovaný časový vztah, nejdřív se musí zapojit přídrž a poté odpojit vstup, jinak by to bylo na hazardu.
Počítám, že je někde mezi těmi signály invertor, který je společný pro celý ten registr.
Pak je časová souslednost daná tím invertorem a vstupní signál je jednoduchý.

Pozor ale D-čka klopáky jsou založené na hazardu a proto jsou citlivé na rychlost hodin !

Mohu to tu rozvést, pokud bude zájem a také citlivost na metastabilitu a generování glitche.

Je to přesně jako bug u Xilinx Abel HDL, kde latch realizovaný logickou funkcí překladač přeloží jako hazardní funkci, i když jsem tam tu přídrž přigeneroval. Musím mu tu minimalizaci zakázat.

Abych to zkontroloval, tak kontroluju fitting report, stejně jako jsem zkontroloval tu mazaninu s tranzistory :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: Emulace Z80 v HDL
PříspěvekNapsal: 30.08.2022, 16:35 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
danhard píše:
Pokud je S=1, R=1 ⇒ holding state, tak mají blbou logiku značení, jelikož aktivní stav funkce je pro S=0 - false
Mělý by být ty vývody označené /S a /R.

Ano je to jak pises. Spravne i ja bych tam radeji videl /S a /R. Logicka nula zajisti, ze spodni cast obvodu se odpoji a pull-up odpor tam nastavi log1.

danhard píše:
To nezáleží na hodinách, ale u latche musí být mezi W a /W definovaný časový vztah, nejdřív se musí zapojit přídrž a poté odpojit vstup, jinak by to bylo na hazardu.
Počítám, že je někde mezi těmi signály invertor, který je společný pro celý ten registr.
Pak je časová souslednost daná tím invertorem a vstupní signál je jednoduchý.

Take proto se vyhodnocuje _load_ir a nasledne z toho se dela load_ir. Proto to funguje. Beda ale kdyz by nekdo nechal zapnutou optimalizaci rovnic a prohodilo se to.

danhard píše:
Mohu to tu rozvést, pokud bude zájem a také citlivost na metastabilitu a generování glitche.
Mne to zajima.

danhard píše:
Je to přesně jako bug u Xilinx Abel HDL, kde latch realizovaný logickou funkcí překladač přeloží jako hazardní funkci, i když jsem tam tu přídrž přigeneroval. Musím mu tu minimalizaci zakázat.

O tomto problemu jsem uz drive cetl. Zalezi na pohledu, pro tebe je to bug. Pro jineho cloveka co dela cisty synchronni navrh je to v poradku, on ocekava optimalizaci zdroju. Oba mate svoji pravdu.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emulace Z80 v HDL
PříspěvekNapsal: 30.08.2022, 17:07 
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
Metastabilita je známá záležitost D klopáků, když není na datech dodržen setup a hold time.
https://nandland.com/lesson-13-metastability/
https://www.google.com/url?esrc=s&q=&rc ... ePhgLAZYOR
Já jsem se s tím setkal ještě u 74164, která někdy udělala na prvním výstupu krátký glitch, který neprošel dál.
Protože výstupy něco asynchronně ovládaly, tak ten glitch udělal akci, ale dál už to nepokračovalo a udělalo to chybu.
U FPGA se mi podařilo asynchronním návrhem (který chtěl zákazník) udělat chybu, že se zřejmě klopák v CLB vf rozkmital a na obou výstupech byla 0.
Samozřejmě různá ošetření mě fitter vyházel, pomohlo až identifikace tohoto stavu přes OR a reset toho klopáku.

_________________
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: Emulace Z80 v HDL
PříspěvekNapsal: 01.09.2022, 16:33 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Danharde z tveho odkazu jsou uplne nejdulezitejsi tyto dve vety:
"Gray code state equations allow only one state bit to change during a state transition. Thus, the worst metastability could do would be to delay a state transition by one clock cycle."

Jinak jsem si overil vstup a vystup na D pin. Je to identicke podle schemat co jsou zverejnene. Opravdu jsou vnitrni sbernice invertovane. Dosel jsem od D vyvodu az k dekodovani PLA. Vse se chova srozumitelne. Nemel by byl problem udelat program co vycte cele PLA a zpracujeho ho aby se to nemuselo delat rucne.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emulace Z80 v HDL
PříspěvekNapsal: 02.09.2022, 18:51 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Predstava ze budu rucne zjistovat jake transistory jsou cleny modulu co treba dela vyvod db2 se mi moc nelibila. Udelal jsem trivialni rutinku ktere se rekne nazev cesty (napr. db2) a pripadne hloubku rekurze. Samozrejme se musi rici i koncove body pres ktere nemuze prejit. Co jsou napr. stopka=['dlatch2','dbus2','dl_dp','d_dl','dp_dl','dl_d','gnd','vcc','clk'] .

Rutina sama najde co je obsahem modulu. V priloze je ukazka jak vypada vyvod db2.

Zde je pekny popis vyvodu https://baltazarstudios.com/anatomy-z80-gate/


Přílohy:
schematic.pdf [58.89 KiB]
95 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emulace Z80 v HDL
PříspěvekNapsal: 02.09.2022, 19:20 
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
Pěkný popis ???

Asi sem dávám ty odkazy jak by to mělo být zcela zbytečně.
Ta šipčička znamená substrátovou diodu a u N typu musí být na nejzápornějším bodu tranzistoru, jinak je otevřená.

_________________
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ů: 33 ]  Přejít na stránku Předchozí  1, 2, 3  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 5 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