CLAUDIA Lite

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



Mikroinstrukce procesoru Claudia Lite

Mikroinstrukce, mikrokód, mikrooperace, mikroprogram... pár pojmů, které obestírá mlhovina tajemství. Ve skutečnosti to ale není vůbec nic magického. Mikroinstrukce jsou ve skutečnosti jen binární kódy, které se pomocí dekodérů BIN na 1zN převádí na výběrové signály uvolňující jednotlivé vysílače (TX) a přijímače (RX) dat. Více viz. popis sequenceru. Mikroinstrukce jsou uloženy v tzv. řídící paměti procesoru. Jedná se o pevnou paměť typu ROM a v klasických mikroprocesorech je představována v podstatě jen tzv. diodovou maticí. Jelikož ve složitém mikroprocesoru mohou být desítky a stovky vysílačů/přijímačů dat, je nutné mít řídící ROM s velkou bitovou šířkou. Například v blokovém návrhu 16-bitového procesoru s řezovými obvody Tesla 3000 je navrhována řídící paměť s šířkou dat 28 bitů! Já se pochopitelně (z důvodu jednoduchosti stavby i ladění mikroprogramu) snažil vystačit s jedinou klasickou pamětí s klasickou šířkou dat 8 bitů. Proto musel být procesor radikálně zjednodušen. Každá 8-bitová mikroinstrukce v řídící paměti (P)ROM má tedy následující formát:


D7D6D5D4D3D2D1D0
/LIR TX2TX1TX0 /NOP RX2RX1RX0


signály RX2 - RX0

RX2-RX0: kód (adresa) výběrového signálu přijímače dat. Kód je pomocí dekodéru BIN3 na 1z8 (74138) převeden na konkrétní výběrový signál. Kódy signálů a jejich názvy + popis následuje. Aktivní úroveň signálů je HIGH s vyjímkou signálů pro řízení logiky skoků a inkrementaci PC. Signály jsou hradlovány "krátkou" fází hodin F2, která uvolňuje celý dekodér 74138. Skupina RX signálů obsahuje tyto řídící signály:

LA (mikrokód 0X0h) - Load A register: zápis do registru A (střadače, akumulátoru - hlavní pracovní registr). Ze sequenceru je vytažena i komplementární verze /LA, která se využívá pro zápis příznaku C do příznakového registru.

LB (mikrokód 0X1h) - Load B register: zápis do registru B (pomocný pracovní registr, registr druhého operandu).

LIR2 (mikrokód 0X2h + D7 nastavit na 0) - Load Instruction Register: zápis do pomocného instrukčního registru IR*. Zapisuje se do tzv. pomocného IR* a přepis do hlavního IR je zajištěn náběžnou hranou F1 automaticky. Současně se signálem LIR2 musí být aktivován signál /LIR (D7=0), který není hradlován vůbec a slouží k předvolbě čítače mikroinstrukcí na začátku nového instrukčního cyklu. Viz popis sequenceru.

LOUT (mikrokód 0X3h) - Load OUT register: zápis do výstupního registru (portu) OUT (výstupní port počítače).

/JZ (mikrokód 0X4h) - Jump if Zero: nahrání předvolby prog. čítače při skoku, nebo jeho inkrement při neskoku. Jedná se o signál podmíněného skoku na základě stavu příznaku Z (zero). Viz logika skoku.

/JC (mikrokód 0X5h) - Jump if Carry: nahrání předvolby prog. čítače při skoku, nebo jeho inkrement při neskoku. Jedná se o signál podmíněného skoku na základě stavu příznaku C (carry). Viz logika skoku.

/JP (mikrokód 0X6h) - Jump: nahrání předvolby prog. čítače při nepodmíněném skoku.

/INCA (mikrokód 0X7h) - Increment Address: inkrementace programového čítače PC.


signály TX2 - TX0

TX2-TX0: kód (adresa) výběrového signálu vysílače dat. Kód je pomocí dekodéru BIN3 na 1z8 (74138) převeden na konkrétní výběrový signál. Kódy signálů a jejich názvy + popis následuje. Aktivní úroveň signálů je LOW. Signály jsou hradlovány "dlouhou" fází hodin F1. V této skupině signálů jsou ale dvě vyjímky. A sice /SEF (set flags) a /CLF (clear flags). Tyto signály jsou totiž signály příjímačů a proto musí být ještě dodatečně hradlovány s F2. Důvod proč jsou ve skupině TX signálů je ten, že do dekodéru pro RX už se nevešly a takto je alespoň účelně využit celý dekodér TX, kde by jinak zbyly nepoužité signály. Skupina TX signálů obsahuje tyto řídící signály:

/PLONK (mikrokód 00Xh): nic, rezerva, NC... Nepoužitý signál, ale důležitý:-) Adresuje se v případě, kdy je potřeba řídit nějaký přijímač, ale neaktivovat přitom žádný vysílač. Typicky při práci s programovým čítačem (inkrementace, skoky).

/MEMRD (mikrokód 01Xh) - Memory Read: čtení z paměti programu. Jedná se v podstatě o klasický výstupní signál procesoru pro externí paměť.

/INA (mikrokód 02Xh) - Input Read to A: čtení ze vstupního portu (stav páčkových spínačů).

/XORRD (mikrokód 03Xh) - XOR Read: čtení z "xorovačky". Otevře pro čtení výstupní oddělovač logické funkce XOR AB.

/ADDRD (mikrokód 04Xh) - ADDer Read: čtení ze sčítačky. Otevře pro čtení výstupní oddělovač aritmetické funkce ADDC AB.

/ARD (mikrokód 05Xh) - A register Read: čtení z registru A. Otevře pro čtení výstupní oddělovač pracovního registru A.

/CLF (mikrokód 06Xh) - Clear Flags: nulování příznaků C a Z. Nutno ještě hradlovat s fází /F2 na signál /CLF2. To proto, aby nedošlo k náhodnému nulování příznaků v době, kdy data z mikroprogramové ROM ještě nejsou ustálena, ale výstupní dekodér TX je již otevřen fází F1. Signál /CLF je totiž v podstatě RX signál, ale z úsporných důvodů byl zařazen mezi TX signály (u RX dekodéru už nebylo místo).

/SEF (mikrokód 07Xh) - Set Flags: nastavení příznaků C a Z. Nutno ještě hradlovat s fází /F2 na signál /SEF2. To proto, aby nedošlo k náhodnému nastavení příznaků v době, kdy data z mikroprogramové ROM ještě nejsou ustálena, ale výstupní dekodér TX je již otevřen fází F1. Signál /SEF je totiž v podstatě RX signál, ale z úsporných důvodů byl zařazen mezi TX signály (u RX dekodéru už nebylo místo).


signál /LIR

/LIR (D7=0) - Load Instruction Register: jednobitový signál, který připraví sequencer na nový instrukční cyklus. Je-li signál aktivován, je s další náběžnou hranou F1 přepsán kód nové instrukce z IR* do IR. Signál /LIR musí být vždy aktivován souběžně s RX signálem LIR2! Signál LIR2 nejprve nahraje kód instrukce do IR* a poté jej s další náběžnou hranou F1 převezme hlavní IR.


signál /NOP

/NOP (D3=0): jednobitový signál, který sequenceru vnutí instrukci NOP s jejíž pomocí je dokončen stávající instrukční cyklus. Signál /NOP musí být aktivován souběžně se signálem /LIR (ale nikoliv s LIR2!) a musí být ještě dále hradlován s fází /F2 na signál /NOP2. To proto, aby nedošlo k náhodnému nulování IR* v době, kdy data z ROM ještě nejsou ustálena.


obsah PROM 74188 s mikroinstrukcemi

V níže uvedeném ZIPu je kompletní obsah PROM 74188 s mikroinstrukcemi pro sequencer Claudie Lite. K nahrání do paměti je určen soubor s koncovkou BIN, ale dávám k dispozici i zdrojový kód.


obsah PROM 74188



Po seznámení s mikroinstrukcemi se můžeme podívat na vlastní instrukční soubor procesoru Claudia Lite, kde bude u každé instrukce uveden i její rozklad na sled výše uvedených mikroinstrukcí.


Sequencer

Instrukce


RET



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