Stránka 5 z 18
Napsal: 15 lis 2025, 20:58
od asdf
Já jsem právě myslel, že budeš dělat tu kalkulačku. Ta se pro 4 bity docela nabízí.
ALU v GALu se pěkně rýmuje.

Napsal: 15 lis 2025, 21:08
od danhard
Protože vím, jak byly ty kalkulačky dělané, tak vím, že se to tam nevejde.
Převádím ten problém na počet registrů a velikost paměti.
Je to asi 10x více pro primitivní kalkulačku.
50x více na kalkulačku s funkcemi, nebo 100x více pro programovatelnou.
Chtěl jsem se jen poučit z chyb PIP-1 a PIP-2, které následní realizátoři akorát opakují a taky na ně poukázat.
Za život jsem těch řadičů vymyslel asi 10, podle svého a prostě nějak vidím do toho, jak jsou ty ostatní chybně udělané

Napsal: 19 lis 2025, 18:32
od danhard
lesana87 píše:Ten GAL6001 bude asi nějakej kouzelnej nafukovací, když se to všechno do něj vejde. Zkusila jsem, do čeho nejmenšího se vejde 4bitová sčítačka a do ničeho menšího než 22V10 se nevešla. Ale možná to dělám špatně, Danhard to určitě programuje rovnou 0 a 1 do fuse bitů.
Asi to tak nějak bude, protože úplná 4 bitová sčitačka se vejde i do GAL16V8 - 8 makrocel, 24 termů, takže by se tam ještě něco vešlo, ale má to málo vývodů, s GAL20V8 by to bylo lepší.
S GAL22V10 se tam vejdou jestě 3 logický funkce a C, Z flag s logikou.
S GAL6001 tam snad nacpu ještě A, B registr a víc funkcí, protože se mi uvolní vstupy.
Napsal: 19 lis 2025, 19:48
od lesana87
To tam máš ripple carry sčítačku, ne? 4 jednobitový sčítačky zřetězený za sebou.
Napsal: 19 lis 2025, 22:19
od danhard
No a to něčemu vadí ?
Napsal: 20 lis 2025, 15:35
od lesana87
Nevadí.
Napsal: 23 lis 2025, 14:59
od danhard
Tak nakonec se 4-bitová úplná sčítačka umístí do GAL16V8 nejjednodušeji zcela stejně, jako SN7483N v původní verzi.
4 termy na Suma, 3 termy na Carry, 8 makrocel.
Mělo by to jít také jako 2x2 bitový řez, tj. na 6 makrocel, musím zkontrolovat jestli se vejde do 7 termů na makrocelu.
S GAL22V10 se dá udělat už zajímavá ALU, se sčítačkou, log. funkcemi, rotací a detekcí nuly.
S GAL6001 tam jde přidat ještě 2 pracovní registry a celé to připojit přes 3-stav na datovou sběrnici.
Podobně by se do GAL6001 měl vejít celý mikrořadič - 7474 hodiny, 74175 instrukční registr, 74188 paměť mikroprogramu, 2x74138 výstupní dekodér a asi 3x 7400 na logiku.
Omezený je počet řídících výstupů na 10.
A do třetí GAL6001 bych umístil PC 8-mi bit čítač a 8-mi bit registr podprogramu, mux na adresu, záchytný registr na skok.
A k tomu nějaký periferie a je to víceméně hotový

Napsal: 25 lis 2025, 11:29
od lesana87
A pro výpočet A - B je výhodné použít borrow = /carry, pak stačí do sčítačky pustit A a /B. Ušetří se dva XORy. Proto je to v těch diskrétních ALU tak zaonačené.
Napsal: 25 lis 2025, 12:14
od asdf
6502 to má taky tak.
Napsal: 25 lis 2025, 12:26
od lesana87
Už jsem se s tím také u nějakého MCU setkala, myslím, že u 80C196.
Napsal: 25 lis 2025, 13:53
od RX-20
Na HP9830A to stále nemá... nejvíc o tom asi u Bukoška:
https://bukosek.si/hardware/collection/hp-9830a.html. Schemata existují, je to celé z TTL. Bohužel realizace by byla extrémně nákladná kvůli plošným spojům.
Napsal: 25 lis 2025, 18:06
od asdf
Koukám na ten 80C196. Je to tak. To je vůbec zajímavá architektura - hromada registrů a paměť žádná (teda externí). To mi připomíná PIC16F84A. Ten to má mimochodem s tím carry=/borrow taky stejně.
Napsal: 25 lis 2025, 18:12
od tomasjedno
RX-20 píše:Na HP9830A to stále nemá...
Jo, to je správný retro. Na tom jsem před 50 lety počítal diplomku

Napsal: 25 lis 2025, 18:18
od lesana87
Na co paměť, když máš 1000 registrů (196KD)?

Jestli si to dobře pamatuju, dají se adresovat i jako paměť.
Napsal: 25 lis 2025, 18:18
od asdf
Ad HP9830A: Hezké to je. Ale to bude asi 8-mibitové, ne?