CLAUDIA Lite

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



Paměť programu RAM

Jednou z podmínek, aby se ze samostatně neprovozovatelného procesoru stal provozovatelný počítač, je připojení paměti programu. Zde jsem ponechal stejný typ, jako měl původní PIP-2 a sice statickou RAM typu 7489 (16x4 bity). Není to mnoho. Ale Claudia Lite je výukový procesor a těch 16 programových kroků bohatě stačí na zapsání jednoduchých prográmků, které dostatečně osvětlí činnost takového procesoru i jeho instrukčního souboru. Přestože se jedná o RAM, náš vlastní procesor z ní může jenom číst (kvůli jednoduchosti) a z jeho pohledu se tak jedná o ROM. Zapisovat do RAM můžeme pouze při manuálním programování. RAM 7489oddělené vstupy dat a výstupy dat. Určitou nevýhodou je, že výstupy jsou invertované a nejsou třístavové. Nelze je tedy připojit na datovou sběrnici BUS přímo, ale musíme použít nějaký třístavový oddělovač. S výhodou použijeme polovinu obvodu 74240. Jedná se o třístavový invertující budič, který zajistí jak oddělení RAM od sběrnice, tak zpětně invertuje data na správnou hodnotu. Druhou polovinu 74240 výhodně zužitkujeme jako oddělovač pro LED indikující aktuální adresu RAM. Abychom při manuálním programování RAM mohli kontrolovat zapsaná data, jsou nutné indikační LED diody i na výstupu z RAM. Jelikož tam máme data invertovaná a výstupy z 7489 jsou typu otevřený kolektor, můžeme LED připojit přímo na datové výstupy 7489. Zbývá ještě vysvětlit funkci tlačítka MEMW, kterým zapisujeme data do paměti při manuálním programování. Tlačítko je funkční, pouze pokud je aktivní signál /PROG v režimu ručního programování a editace RAM.

Paměť programu (RAM)
Paměť programu (RAM)


Programový čítač PC

Adresaci paměti programu zajišťuje Programový čítač (Program Counter - PC). Ten jsem také ponechal stejného typu, jako v PIP-2 a sice 74193. Jedná se o 4-bitový binární čítač s předvolbou a nulováním. Na rozdíl od 74163 v sequenceru je nahrání předvolby i nulování u 74193 asynchronní, což se zde výtečně hodí. Nahrání předvolby při požadavku na skok nebo pouhá inkrementace programového čítače je řízena sequencerem, ale nikoliv přímo, nýbrž pomocí tzv. logiky skoku popsané dále. Logika skoku určuje, zda bude PC inkrementován signálem CLK193, nebo bude nahrána nová předvolba (adresa skoku) signálem /LOAD193.

Programový čítač (PC)
Programový čítač (PC)

Před programovým čítačem PC je ještě vřazen záchytný registr PCR (74175). Jedná se o registr zapisující vzestupnou hranou a jeho úkolem je zachytit adresu skoku, než ji převezme PC. Čítač 74193 totiž předvolbu nezapisuje hranou, ale během nízké urovně na vstupu /LOAD193. Jenže signál /LOAD193 má nějakou délku a pokud bychom neměli vstupní data zachycena v záchytném registru, dojde k jejich změně vlivem změny adresy RAM. A protože RAM je po dobu zápisu adresy skoku do PC otevřena pro čtení, nakonec bychom do PC 74193 zapsali něco úplně jiného, než potřebujeme... Záchytný registr není třeba při (re)startu nulovat, proto je nulovací vstup přes pullup odpor připojen na Ucc +5V.

Reset čítače 74193 je využit při jen inicializaci a rozběhu procesoru, kdy je mu sice podstrčena instrukce NOP, ale zároveň je PC držen v resetu, aby nedošlo k jeho inkrementaci a první platná instrukce programu tak byla načtena z adresy 0000b v RAM.


Logika skoků

Logika skoků má za úkol zajistit správné generování řídících signálů pro programový čítač PC. Zařadit do Claudie Lite logiku skoků si vynutily podmíněné skoky. V případě původního PIPa-2, který měl jen nepodmíněný skok, nebyla logika skoků nutná, protože signály pro inkrementaci a nahrání předvolby PC mohl generovat přímo sequencer. Jenže u podmíněných skoků se musíme řídit stavem příznaků. Je-li příslušný příznak nastaven, skáčeme. Není-li nastaven, pouze inkrementujeme. Toto "rozhodování" má na starosti právě logika skoků. Vstupem jsou řídící signály /INCA, /JP, /JC a /JZ ze sequenceru a dále příznaky C a Z, plus jejich komplementy /C a /Z z registru příznaků. Výstupem jsou pak signály CLK193 a /LOAD193 pro programový čítač.

Logika skoků - LOAD
Logika skoků - nahrání předvolby PC (/LOAD193)

Logika skoků - INC
Logika skoků - inkrementace PC (CLK193)

Činnost obvodů logiky skoků je následující. Je-li generován signál /INCA pro inkrementaci PC, vytvoří se vždy signál CLK193 a PC je inkrementován. Je-li generován signál /JP nepodmíněného skoku, je vždy vytvořen signál /LOAD193 a do PC je ze sběrnice nahrána nová předvolba adresy (skok). Je-li generován signál /JC je generován buď /LOAD193 v případě, že příznak C je nastaven (HIGH), nebo je generován signál CLK193 v případě, že příznak C je vynulován (LOW). Analogicky to platí i pro /JZ a příznak Z. Jak je vidět na schématu, využívají se jak přímé, tak negované hodnoty příznaků. Vzhledem k tomu, že registry příznaků jsou tvořeny klopnými obvody typu D z obvodu 7474 s komplementárními výstupy, není to žádný problém.

Jelikož je nutné řídit činnost PC také manuálně při ručním programování, jdou do logiky skoků ještě signály z tlačítek PCW a +ADDR. Tlačítko PCW zajistí nahrání předvolby ze vstupních spínačů do PC. Tlačítko +ADDR inkrementuje programový čítač PC. Obě tlačítka fungují pouze při aktivním signálu /PROG (LOW) v režimu ručního programování. Tlačítko PCW není nutné nijak ošetřovat, ale tlačítko +ADDR musí být tzv. bezzákmitové. To zajistí klopný obvod RS, který je ovšem nutné při (re)startu nulovat, resp. nastavovat do definovaného stavu.

V zapojení logiky skoků je využito poslední volné hradlo z obvodu 7414 z generátoru hodin. Namísto 4-vstupého AND 7421 lze pochopitelně použít i 4-vstupý NAND 7420 a invertor pak použít u signálu /LOAD193.

Nyní se můžeme přesunout k dalšímu funkčnímu celku Claudie Lite: Reg + ALU. Neboli bloku pracovních registrů a ALU.


Sequencer

Reg + ALU




Ještě poznámka k zapojení. Původní návrh počítá s dvoudeskovým uspořádáním. Na jedné desce plošných spojů by byl osazen samotný procesor (počítač), na druhé desce by pak byly ovládací a indikační prvky a jednalo by se tak o ovládací panel počítače. Tam, kde je ve schématu na vodiči udělán křížek, je myšleno rozdělení obou desek. Příslušný ovládací či indikační prvek bude na ovládacím panelu, zbytek zapojení na desce procesoru. Proto také ty vysoké hodnoty (47k) pullup odporů za křížkem. Jsou v podstatě zbytečné a mají smysl jen při rozpojování desek. Ale rozpojené se to stejně provozovat nedá, tak si s nima nemusíte lámat hlavu a klidně je vynechat a ponechat jen jediný menší (cca 4k7) u spínače PROG. Je to hlavně pozůstatek testování jednotlivých celků na nepájivém poli:-)


RET



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