74JK4080 CPU

- amatérský 4-bitový procesor sestavený z obvodů TTL 74xx



Mikroinstrukce procesoru 74JK4080 CPU

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 1 z N převádí na výběrové signály uvolňující jednotlivé vysílače a přijímače dat. Nic víc. 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 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 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 má tedy následující formát:


D7D6D5D4D3D2D1D0
IO/M TX2TX1TX0 RX3RX2RX1RX0


signály RX3 - RX0

RX3-RX0: kód výběrového signálu (adresa) přijímače dat. Kód je pomocí dekodéru BIN(4) na 1 z 16 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 log. 1 (HIGH) s vyjímkou signálu /WR. Signály jsou hradlovány "krátkou" fází hodin F2.

LIR (mikrokód 0X0h): zápis do instrukčního registru. Zapisuje se do tzv. pomocného IR a přepis do hlavního IR je zajištěn náběžnou hranou F1 automaticky. Ze signálu LIR je dále odvozen signál /LIR*, který není hradlován vůbec a slouží k resetu čítače mikroinstrukcí na začátku nového instrukčního cyklu. Viz popis sequenceru.

/WR (mikrokód 0X1h): zápis do vnější paměti či portu. Jedná se v podstatě o klasický výstupní signál procesoru. Ze signálu /WR je dále odvozen pomocný signál /WR*, který je ale hradlován dlouhou fází F1 a slouží k ovládání třístavového oddělovače vnitřní a vnější datové sběrnice a ke generování signálů /MREQ a /IOREQ. Viz popis sequenceru.

INCA (mikrokód 0X2h): inkrementace programového čítače.

LJA1 (mikrokód 0X3h): zápis do registru adresy skoku - dolní nibble.

LJA2 (mikrokód 0X4h): zápis do registru adresy skoku - horní nibble.

LMA1 (mikrokód 0X5h): zápis do registru adresy dat v paměti či portu - dolní nibble.

LMA2 (mikrokód 0X6h): zápis do registru adresy dat v paměti či portu - horní nibble.

LST (mikrokód 0X7h): zápis do registru návratové adresy před skokem do podprogramu.

JPE (mikrokód 0X8h): nahrání předvolby prog. čítače při skoku, nebo jeho inkrement při neskoku.

OA (mikrokód 0X9h): zápis do registru výstupní adresy - adresové sběrnice.

LA (mikrokód 0XAh): zápis do registru Acc (akumulátoru - hlavní pracovní registr).

LB (mikrokód 0XBh): zápis do registru Bcc (bekumulátoru - pomocný pracovní registr).

LOP (mikrokód 0XCh): zápis do registru OP (typ operace ALU).

LR (mikrokód 0XDh): zápis do registru Rcc (resultátoru - výsledek operace v ALU).

LF (mikrokód 0XEh): zápis do registru Fcc (vlajkonoš - příznaky).

LFM (mikrokód 0XFh): zápis do registru Flag Mask (maska příznaků).


signály TX2 - TX0

TX2-TX0: kód výběrového signálu (adresa) vysílače dat. Kód je pomocí dekodéru BIN(3) na 1 z 8 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 log. 0 (LOW). Signály jsou hradlovány "dlouhou" fází hodin F1.

/RD (mikrokód 00Xh): čtení z vnější paměti či portu. Jedná se v podstatě o klasický výstupní signál procesoru.

/AB (mikrokód 01Xh): volba zdroje dat pro nahrání předvolby programového čítače a pro zápis do registru výstupní adresy. Je-li AB=0 jsou zdrojem dat pro programový čítač registry JA1+JA2 (adresa skoku) a pro registr výstupní adresy je zdrojem dat programový čítač. Je-li AB=1 je zdrojem dat pro programový čítač registry STACK (návratová adresa) a pro registr výstupní adresy jsou zdrojem dat registry MA1+MA2 (data ve vnější paměti či portu).

/M (mikrokód 02Xh): volba typu operace ALU (aritmetická/logická). Je-li M=0 provádí ALU aritmetické operace. Je-li M=1 provádí ALU logické operace.

/F0 (mikrokód 03Xh): vynulování příznaků C a Z (na log. 0) ve Flag registru Fcc.

/F1 (mikrokód 04Xh): nastavení příznaků C a Z (na log. 1) ve Flag registru Fcc.

/EA (mikrokód 05Xh): Uvolnění výstupu z Acc na interní datovou sběrnici.

/ER (mikrokód 06Xh): Uvolnění výstupu z Rcc na interní datovou sběrnici.

/PLONK (mikrokód 07Xh): nic, rezerva. Nepoužitý signál, ale důležitý:-) Používá se v případě, kdy je potřeba nastavit signály AB či M na log.1. V tom případě se místo AB či M použije PLONK.


signál IO/M

IO/M: jednobitový signál, který určuje, zdali se výběrové signály /RD a /WR vztahují k práci s vnější pamětí, nebo portem. Signál slouží také ke generování výběrových signálů /MREQ a /IOREQ. Signál je většinu času v log. 0 (LOW), pouze při zpracování instrukcí IN a OUT je v log. 1 (HIGH). Signál není hradlován a je přítomen trvale.



Máme-li mikroinstrukce v malíku, můžeme se podívat na vlastní instrukční soubor procesoru CPU74JK4080, kde bude u každé instrukce uveden i její rozklad na sled výše uvedených mikroinstrukcí.


RET



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