CLAUDIA Lite

výukový 4-bitový procesor / počítač z obvodů TTL 74xx



Claudia Lite je můj druhý 4-bitový procesor/počítač postavený podle vlastního návrhu z klasických diskrétních TTL integrovaných obvodů řady 74xx. Tím prvním byla Claudia-1, která však obsahuje 65 integrovaných obvodů. U Claudie Lite jsem se vydal cestou radikálního zjednodušení a stlačil tak počet pouzder na 28. Pochopitelně se hodně věcí muselo zjednodušit, ale ne zas tak moc, jak by se mohlo zdát. Claudia Lite má prakticky vše, co by měl plnohodnotný procesor mít. Omezen je zejména počet aritmeticko-logických operací a také počet programových kroků (kapacita RAM). Na Claudii Lite je ale nutné nahlížet jako na výukový stroj a jelikož chystám (z 89,5% hotovo) opravdu detailní dokumentaci s podrobným popisem činnosti zapojení, myslím, že si to může postavit (a hlavně pochopit) snad každý bastlíř zajímající se o procesory a počítače. Zejména, když může mít i originální desku, která z Claudie Lite dělá opravdu kompaktní a úhledný školní jednodeskáč s rozměry 16x18cm:

finální CLAUDIA Lite
CLAUDIA Lite
finální CLAUDIA Lite
běžící CLAUDIA Lite


Základní parametry Claudie Lite

Datová sběrnice: 4-bitová, obousměrná, 3-stavová

Adresová sběrnice: 4-bitová, 2-stavová, jednosměrná

Programová paměť: 16x4 bit statická RAM 7489, ručně programovatelná

Paměť mikrokódu: 32x8 bit PROM 74188

Instrukční soubor: 13 instrukcí

Vstupní port: 4-bitový vstup (sdílený s datovými spínači)

Výstupní port: 4-bitový univerzální s vlastním registrem

ALU operace: 2 základní operace - ADDC (7483) a XOR (7486)

Pracovní registry: A registr (hlavní pracovní registr - akumulátor, střadač) a B registr (odkládací registr, registr druhého operandu)

Příznaky: C (Carry) a Z (Zero)

Skoky v programu: 1 nepodmíněný (JMP) a 2 podmíněné (JC, JZ)

Módy činnosti: RUN/STEP, FAST/SLOW, RUN/PROG

Ovládací a indikační prvky: 3 přepínače módu, 4 vstupní datové spínače, 2 řídící tlačítka (Reset, Step), 3 programovací tlačítka (+ADDR, PCW, MEMW), 26 indikačních LED, 1 vstupní a 1 výstupní konektor portů (MLW10)


Osazení Claudie Lite

Claudia Lite je sestavena z běžných a běžně dostupných integrovaných obvodů TTL řady 74xx. Zde jsou ty nejdůležitější, roztříděné dle jejich funkce v zapojení:

Generátor dvoufázových hodin: 7414 + 7474
Instrukční registr - latch: 74175
Instrukční registr + čítač mikroinstrukcí: 7474 + 74163
ROM s mikrokódem: 74188
Dekodéry mikrokódu: 74138
Pracovní registry: 74175
ALU - sčítačka: 7483
Záchytný registr výsledku sčítání: 74373
ALU - XORovačka: 7486
Záchytný registr výsledku XORování: 74373
Registry příznaků: 7474
Záchytný registr adresy skoku: 74175
Programový čítač: 74193
Programová paměť RAM: 7489
Budič výstupu RAM: 74240
Vstupní port: 74244
Výstupní port: 74175
a dále pak jen různá obyčejná hradla AND, NAND, OR, NOT...


Instrukční soubor Claudie Lite

Instrukční soubor Claudie Lite obsahuje celkem 13 instrukcí. Sice to nevyužívá plně možnosti 4-bitového kódování (max. 16 kódů), ale více instrukcí už opravdu nebylo potřeba. Procesor neobsahuje tolik vnitřních funkčních bloků, které by bylo třeba ovládat dalšími instrukcemi. Je zde ale vše potřebné: přímé zápisy dat do pracovních registrů, přesun mezi registry, čtení portu, zápis na port, větvení programu (skoky nepodmíněné i podmíněné), práce s příznaky, aritmeticko-logické operace a nechybí ani prázdná instrukce NOP, která (ač se to nezdá) je velmi důležitá.

Co se aritmeticko-logických operací týká, Claudia Lite umí pouze dvě základní binární operace. Aritmetiku zastupuje binární sčítání ADDC (obvod 7483), logiku zastupuje operace XOR (obvod 7486). To jsou opravdu naprosto základní operace a s jejich pomocí lze realizovat operace další. Například odečítání je sčítání menšence s dvojkovým doplňkem menšitele. XOR se zase skvěle hodí na negaci a porovnávání čísel. Příklady jejich použití budou přiloženy v ukázkových programech. V následujícím PDF je přehledně uveden celý instrukční soubor:


Instrukční soubor Claudia Lite


K omezení počtu instrukcí přispěla i použitá paměť mikrokódu typu 74188 (PROM 32Byte). Kdybych chtěl použít všech 16 instrukčních kódů, musel bych buď použít větší PROM (třeba 2x 74S287), nebo bych musel každou instrukci provádět pouze na dva takty hodin. A to bez rozsáhlého zesložitnění hardware procesoru nelze. V současné době potřebuji na vykonání jedné instrukce 3-4 takty. Já vím, že vám to nevychází na 32 pozic paměti 74188, ale já to tam prostě nacpal:-) Chtěl jsem použít jen jedinou malou PROM stůj co stůj. Ale já už stejně neměl důvod přidávat další instrukce. Těch 13 opravdu stačí.


Programování Claudie Lite

Programová paměť Claudie Lite je opravdu maličká. Obvod 7489 má kapacitu 16x4 bity a lze tak vložit pouze maximálně 16 programových kroků. A jelikož část instrukcí vyžaduje ještě parametr (data, adresa), tak ani to ne. Sice by bylo možné paměť rozšířit, ale za cenu dalších integrovaných obvodů a kouzlo jednoduchosti a přehlednosti zapojení by bylo to tam. Na vysvětlení základních principů programování, na demonstraci možností instrukčního souboru a na vyzkoušení základních algoritmů současné provedení bohatě postačuje. Již otestované ukázkové prográmky jsou v následujícím PDF:


Programy pro Claudia Lite


Na rozdíl od "velké" Claudie-1 je programování programové paměti Claudie Lite zajištěno výhradně hardwarovými prostředky. Díky tomu má uživatel k dispozici celou "kapacitu" paměti a ta tedy může být jen typu RAM. Claudia-1 je poněkud více "dospělá" a vyžaduje i paměť typu ROM s jednoduchým operačním systémem, který umožňuje programovat RAM.


Součástky pro stavbu Claudie Lite

Jak jsem již uvedl na začátku, připravuji opravdu podrobný popis zapojení Claudie Lite. Troufám si tvrdit, že kdo má nějaké základní zkušenosti s TTL číslicovými obvody, ví co jsou hradla a pozná alespoň rozdíl mezi čítačem a registrem, tak ten plně pochopí princip práce Claudie Lite a tím i v podstatě jakéhokoliv klasického (mikro)procesoru. Na dokončení toho popisu intenzivně pracuji, ale pokud jste nedočkaví, můžete už syslit součástky. Zde je jejich seznam:


Seznam součástek pro stavbu Claudie Lite


K součástkám pár poznámek. Synchronní čítač 74163 by měl být bez problému plně nahraditelný typem 74161. Paměť RAM 7489 by zase šla přímo nahradit typem 74189 (ale tu Tesla na rozdíl od 7489 nevyráběla). Dekodéry 74138 lze plně nahradit našimi MH3205. Jen už tam chybí to značení 74xx, ale je to jinak identický obvod.

S vyjímkou sčítačky 7483 a pochopitelně PROM 74188 lze všechny integrované obvody před osazením otestovat mým IC Testerem. Moc mi to pomohlo, páč třeba Tesla MH74ALS86 se ukázal býti vadný, ačkoliv to byl fungláč ještě s panensky roztaženejma nohama...

Typ obvodů není kritický. Mělo by to fachat se vším (klasické TTL, S, LS, ALS i HCT). Bacha na HC! Nejsou TTL kompatibilní a lze je použít jen někde. Doporučuji však použití klasiky, tedy LS, případně ALS. Semtam se můžete zbavit i nějakého toho obyčejného TTL či TTL S, ale pozor na spotřebu. Ve svém prototypu mám 3 klasické TTL čipy, dva S čipy a zbytek LS/ALS a řekne si to skoro o půl ampéry! Á propos, napájecí zdroj jsem neřešil, takže potřebujete mít vlastní, dostatečně dimenzovaný, stabilizovaný 5V zdroj. Co se týká patic, tak je doporučuji použít na všechny obvody. Opravdu upřímně doporučuji patice precizní a mám k tomu hodně dobrý důvod:-)

Mnozí si jistě všimli prasáckého propojení dvou integrovaných obvodů na desce vlevo nahoře. Nemusíte se ale obávat. Ta čuňačina je pouze u mého prvního kusu. Vy už ji dělat nebudete muset:-)

Pokud vás Claudia Lite zaujala, můžete se podívat na (myslím hodně) podrobný popis. Nejlepší je začít od začátku, byť je ten úvod poněkud obšírnější:

Claudia STORY


RET



Odladěno na MS IE 8.0 a Firefoxu při rozlišení min. 1024 x 768 pixelů
www.NOSTALCOMP.cz    2010  -  2019