K1801VM1

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 31. října 2020; kontroly vyžadují 7 úprav .

K1801VM1  je jednočipový 16bitový mikroprocesor (OMP).

Je určen pro zpracování digitálních informací v systémech řízení procesů v řídicích a měřicích zařízeních a komunikačních systémech , jakož i pro řešení inženýrských a ekonomických problémů jako součást počítače . Příkazový systém K1801VM1 je velmi blízký architektuře PDP-11 a ve většině případů je s ní kompatibilní, ale není její přesnou kopií.

Složení mikroobvodu

Struktura mikroobvodu zahrnuje následující hlavní funkční bloky:

Viz část: Strukturální diagram

Základní parametry

Bitová hloubka 16 bitů Číselná reprezentace dvojkový doplňkový kód pevného bodu Příkazový systém neadresný, jednosměrný, dvouadresný Typy adresování registr , nepřímý-registr, automatické zvýšení, nepřímé automatické zvýšení, nepřímé automatické snížení, index, nepřímý-index Počet všeobecných registrů osm Počet řádků požadavku na přerušení čtyři Systémová dálnice MPI s kombinovanými sběrnicemi pro přenos adres a dat Adresní prostor 64 kB Frekvence hodin až 5 MHz [1] Maximální rychlost provádění sčítacích příkazů v počítači s metodou adresování registru až 500 tisíc operací/s Spotřeba energie až 1,2W

Pin Assignment [2]

Závěr Označení typ výstupu Funkční účel závěrů
jeden CLC Vchod Synchronizace
2 PYTEL Zadejte výstup Potvrzení zachycení RAP
3 DMGI Vchod Vstup pro poskytování RAP
čtyři DMGO Výstup Výstup poskytování RAP
5 DMR Vchod Požadavek RAP
6 SP Vchod Nezdokumentovaná funkce - externí zdroj frekvence pro časovač [3] . Připojte +5V
7 SEL1 Výstup Výběr prvního I/O registru
osm SEL2 Výstup Načtení druhého I/O registru
9-20, 22-25 AD0-AD15 Zadejte výstup Datové adresní bity
21 GND - Všeobecné
26 PA1 Vchod Číslo procesoru
27 PA0 Vchod Číslo procesoru
28 BSY Výstup Signál obsazenosti kanálu
29 DCLO Vchod Porucha napájení
třicet ACLO Vchod Výpadek střídavého napájení
31 IRQ1 Vchod První požadavek na radiální přerušení „vzdáleně“
32 IRQ2 Vchod Druhý požadavek na radiální přerušení (vektor 100)
33 IRQ3 Vchod Požadavek na třetí radiální přerušení (Vektor 270)
34 INIT Zadejte výstup Nastavení výchozího stavu
35 VIRQ Vchod Vektorový požadavek na přerušení
36 IAKO Výstup Poskytování přerušení
37 DOUT Výstup Výstup dat (záznam dat)
38 RÁMUS Výstup Zadávání dat (čtení dat)
39 RPLY Zadejte výstup Synchronizace pasivního zařízení (odpověď)
40 WTBT Výstup Bytový výstup (zápis/bajt)
41 SYNCHRONIZOVAT Výstup Aktivní synchronizace zařízení (sdílení)
42 Ucc - Napájecí napětí

Podrobný popis nálezů

Strukturální diagram

1 34 30 29 35 31 32 33 | | | | | | | | CLC| | ACLO | DCLO| VIRQ| IRQ1| IRQ2| IRQ3| | INIT | | | | | | | \|/ | \|/ \|/ \|/ \|/ \|/ \|/ | \|/ | | | | | | |___|___| /|\ |_|_____|_____|_____|_____|_____|_| | schéma | | | Blokovat | | takt- | | | Přerušuje | | | _ | |_______________|__________________| |___|___| | | | | /|\ /|\ | | | | | |___________________________________|_____________________________________ | | | | | \|/ \|/ | \|/ | | | | | |________|_______|________| |________|__________| | |______|______| | Firmwarový blok | | Provozní | | | | IAKO | vedení | | Blokovat | | | -->>>--36 |___________|______________| |________|__________| | | | | | | | | SP \|/ \|/ | | --<<--27 /|\ /|\ | | | | | | | | SP |____________|_____________| | | -->>>--26 | | | | \|/ | | | RPLY | | | --<<--39 |_____________|______________| | | | | | | | | SYNCHRONIZOVAT | Systém ----<<<---| | -->>>--41 | dálnice | | | | ----<<<---------- | DOUT |_|_______|_______|_______|_| | BLOK -->>>--37 | | | | | vedení | \|/ \|/ \|/ \|/ | systémový | RÁMUS /|\ /|\ /|\ /|\ | dálnice-->>>--38 | | | | | a | AD0| AD11| AD12| AD15| | registry | WTBT |-------| |-------| | vstup\ -->>>--40 | | | | | výstup | | | DMR | --<<<--5 | | | | PYTEL | --<<<--2 | | | | DMGO | -->>>--4 | | | | SP | --<<<--3 | | | | SEL1 | -->>>--7 | | | | SEL2 | -->>>--8 | | | | BSY | -->>>--28 |_____________|

Příkazy

Kód příkazu je označen osmičkovým číslem. Právě tento pohled je vhodný pro vizuální vnímání příkazů tohoto procesoru.

Označení týmu Příkazový kód tým
STŮJ 000 000 Stop
POČKEJTE 000001 Očekávání
RTI 000002 Návrat z přerušení
BPT 000003 Přerušení příkazu pro ladění
IOT 000004 Přerušení příkazu pro I/O
RESETOVAT 000005 Resetujte externí zařízení
RTT 000006 Návrat z přerušení
JMP 0001DD Bezpodmínečný skok na absolutní adresu zakódovanou v DD. Například sekvence 000137 JMP@#7000 007000

říká procesoru, aby vzal adresu z místa následujícího po instrukci skoku a skočil na zadanou adresu (v tomto případě osmičkovou adresu 7000).

RTS 00020R Návrat z podprogramu
JSR 004RDD Volání podprogramu
EMT 104000-104377 Přerušení příkazů pro systémové programy. Například EMT 16 má kód 104016. Pro všechny příkazy EMT má přerušení stejný vektor, na jehož adrese by měl být podprogram, který příkazu přidělí číslo (v našem příkladu je to 16) a najde adresa specifického příkazu EMT obsluhujícího podprogram.
PAST 104400-104777 příkaz přerušení. Například TRAP 4 má kód 104404. Pro všechny příkazy TRAP má přerušení stejný vektor, na jehož adrese by měl být podprogram, který z příkazu extrahuje číslo (v našem příkladu je to 4) a najde adresu specifického příkazu TRAP obsluhujícího podprogram.

Mezi EMT a TRAP není žádný zásadní rozdíl. V systémových programech je obvyklé používat příkaz EMT (pro počítač je BC monitor a diagnostický systém), v uživatelských programech příkaz TRAP.

NOP 000240 (10100000) Žádná operace
CLC 000241 (10100001) Smazat vlajku C (nosit = nosit)
CLV 000242 (10100010) Vymazat příznak V (oVerflow = přetečení)
CLZ 000244 (10100100) Vymazat příznak Z (nula = nula)
CLN 000250 (10101000) Vymazat příznak N (záporná = záporná hodnota)
CCC 000257 (10101111) Vymazat všechny číslice
SEC 000261 (10110001) Nastavit příznak C (přenášet = přenášet)
SEV 000262 (10110010) Nastavit příznak V (oVerflow = přetečení)
SEZ 000264 (10110100) Nastavit příznak Z (nula = nula)
SEN 000270 (10111000) Nastavit příznak N (záporná = záporná hodnota)
SCC 000277 (10111111) Nastavte všechny číslice
101PNZVCVe skutečnosti jsou výše uvedené příkazy s 101xxxxx kódy od 240 do 277 jediným příkazem pro změnu P příznaků ve slově stavu procesoru, zapsaného v binární formě N,Z,V,C , indikující, který z příznaků by měl být operací ovlivněn (1) nebo ignorován (0). . Příkaz s kódem tedy 263 (10110011)zároveň nastaví příznaky C a V na 1. Příkaz s mnemotechnickou pomůckou NOPa kódem 240je tedy speciálním případem tohoto příkazu a obsahuje masku příznaků, podle které žádný z měli by se změnit. Podle toho příkaz s kódem260 (10110000)
TAMPON 0003DD Prohození horních a nízkých bajtů v 16bitovém slově, na které ukazuje DD.
BR 000400 Bezpodmínečný skok o offset vzhledem k buňce následující po instrukci. Například kód 000400 znamená skok na buňku následující po příkazu BR, kód 000401 znamená přeskočit jednu 16bitovou buňku, 000402 znamená dvě atd. Přesně řečeno, tento příkaz a všechny instrukce skoku podle offsetu je nejlepší zvážit v binární nebo hexadecimální. Pak to bude vypadat jako 1NNNNNNNN(bin) nebo 1NN(hex), kde N je hodnota offsetu. To znamená, že příkaz je zapsán v horním bajtu slova a offset je v dolním bajtu. Záporné hodnoty offsetu jsou zapsány ve dvou doplňcích . To znamená, že offset -1 bude zakódován jako FF (hex) a instrukce bude 1FF (hex) nebo ekvivalentně 777 (oct). S kódem 777 se provede přechod na jednu 16bitovou buňku zpět, tedy na samotnou instrukci BR, a dojde ke smyčce. S kódem 776 - 2 buňky zpět, 775 - tři. atd.
BNE 001000 Skok o offset, pokud není stejný. Kód příkazu je 2NN (hex) - viz popis příkazu BR. Přechod se spustí, pokud je příznak Z procesoru 0. Text příkazového programu adresy v assembleru 1000: 020104 CMP R1,R4 1002:001001 BNE MET 1004: 010102 MOV R1,R2 1006: 010103 MET: MOV R1,R3

Zde porovnávací instrukce CMP porovnává obsah obecných registrů R1 a R4 a nastaví příznaky procesoru C, V, Z, N podle výsledků porovnání a instrukce BNE skočí o +1 šestnáctibitové slovo vpřed, pokud příznak Z je 0.

CLR(B) *050 DD Vymažte části slova, na které ukazuje DD. Příkaz 0050DD má mnemotechnický znak CLR a 1050DD má mnemotechnický znak CLRB.
HŘEBEN) *051DD Invertujte bity slova, na které ukazuje DD.
INC(B) *052DD Přidání 1 ke slovu, na které ukazuje DD.
DEC(B) *053DD Odečtěte 1 od slova, na které ukazuje DD.
NEG(B) *054DD Změna znamení
ADC(B) *055DD Noste sčítání
SBC(B) *056DD Proveďte odčítání
TST(B) *057DD Kontrola slova a nastavení příznaků procesoru C, V, Z, N na základě výsledků takové kontroly.
ROR(B) *060 DD Otočit doprava
ROL(B) *061DD Otočit doleva
ASR(B) *062DD Aritmetický posun doprava
ASL(B) *063DD Aritmetický posun doleva
OZNAČIT 0064NN Obnova ukazatele zásobníku (CS)
SXT 0067DD Rozšíření znamení
MTPS 1064DD Zápis stavového slova procesoru (SPW).
MFPS 1067DD Čtení SSP
MOV(B) *1SSDD Přeposílání
CMP(B) *2SSDD Srovnání
BIT(B) *3SSDD Kontrola výbojů
BIC(B) *4SSDD Čištění výbojů
BIS *5SSDD Booleovské sčítání
XOR 074RDD XOR
PŘIDAT 06SSDD Přidání
SUB 16SSDD Odčítání
BR 0004XXX Bezpodmínečné větvení
BNE 0010XXX Větev, pokud se nerovná 0
BEQ 0014XXX Větev, pokud je rovna 0
  •  - Nejvýznamnější bit kódu těchto příkazů je znakem bajtového příkazu. Pokud je rovna 0, pak příkaz provádí operace s 16bitovými slovy umístěnými na sudých adresách. Pokud je tento bit nastaven na 1, pak příkaz pracuje s bajty umístěnými na libovolné adrese, přičemž dolní bajt 16bitového slova má sudou adresu a horní bajt má lichou adresu.

Metody adresování

Operand je určen hodnotami SS (zdroj - zdroj) a DD (cíl - přijímač), přičemž první číslice nastavuje režim adresování a druhá - číslo obecného registru procesoru. Pokud je například SS = 27, pak 2 je způsob adresování a 7 je číslo registru.

Procesor má 8 šestnáctibitových registrů: R0, R1, R2…R7. V tomto případě se R0-R5 používají k uložení operandů instrukcí. Registry R6 a R7 mají další speciální účel, ale všechny operace s nimi probíhají stejně jako s jakýmkoli jiným registrem.

Registr R6 funguje jako ukazatel zásobníku (SP, Stack Pointer) a obsahuje adresu vrcholu zásobníku. Zápis do zásobníku se obvykle provádí pomocí metody automatického dekrementování adres a čtení se provádí pomocí metody automatického přírůstku. Při provádění řady operací (obsluha hardwarových a softwarových přerušení, ale i volání a vracení se z podprogramů) procesor určitým způsobem mění hodnotu tohoto registru.

Registr R7 je programový čítač (PC, Program Counter) a obsahuje adresu další instrukce, kterou má procesor provést. Zápis čísla do R7 je ekvivalentní skoku na zadanou adresu.

Způsoby adresování:

Číslo Metoda Vysvětlení Příklady
0 Registrovat Operand je obsah registru. Například instrukce 10304 (1SSDD) zkopíruje obsah registru R3 do registru R4 a zapíše se jako MOV R3, R4. 10102 MOV R1, R2
jeden Nepřímý registr Registr obsahuje adresu operandu 005011 CLR (R1)

005011 CLR@R1

2 automatický přírůstek registr obsahuje adresu operandu. Obsah registru poté, co je použit jako adresa, se zvýší o 2 (pro příkazy slova) nebo 1 (pro příkazy bajtů) 005022 CLR (R2)+
3 Nepřímé automatické zvýšení registr obsahuje adresu adresy operandu. Obsah registru poté, co je použit jako adresa, se zvýší o 2 005032 CLR @(R2)+
čtyři Auto-dekrementace obsah registru se sníží o 2 (u slovních příkazů) nebo 1 (u bajtových příkazů) a použije se jako adresa operandu 005042 CLR-(R2)
5 Nepřímé automatické snižování obsah registru se sníží o 2 a použije se jako adresa adresy operandu. 005052 CLR@-(R2)
6 index obsah registru se přičte k číslu zapsanému za příkazem a výsledný součet se použije jako adresa operandu 005062 CLR 2(R2)
000002
7 nepřímý index obsah registru se přičte k číslu napsanému za příkazem a výsledný součet se použije jako adresa adresy operandu 005072 CLR @22(R2)
000022

Při adresování prostřednictvím registru RS jsou tyto metody adresování volány zvláštním způsobem:

Způsob adresování Kód Vysvětlení Příklady
Přímo 27 Operand je uložen ve slově, které následuje za instrukcí. Ve skutečnosti se jedná o metodu automatického přírůstkového adresování pomocí registru PC, to znamená, že PC obsahuje adresu operandu, a to je vždy adresa buňky následující za instrukci. Poté se registr inkrementuje o 2, což v případě použití PC odpovídá „skoku“ na další adresu přes datovou buňku a číslo v ní uložené se neprovádí jako příkaz. 012703 MOV #21, R3
000021
012700 MOV #IN,R0
xxxxxx IN:
absolutní 37 adresa operandu je uložena ve slově po instrukci CLR @#7000
JMP @#BEN
relativní 67 obsah PC se přičte ke slovu uloženému v paměti za instrukcí a výsledný součet se použije jako adresa operandu. JMP TV
CLR 5554
nepřímo-relativní 77 do slova za příkazem se přičte obsah PC, výsledný součet se použije jako adresa adresy operandu. CLR @MET
INC @15342

Viz také

Poznámky

  1. Dshkhunyan V.L., Borshchenko Yu.I., Naumenko V.R., Ryzhov A.A., Romanets V.Yu., Burmistrov I.A., Solovyov K.M. Jednočipové mikroprocesory sad LSI řady K1801 // "Mikroprocesorová zařízení a systémy" : časopis. - 1984. - č. 4 . - S. 12 .
  2. [https://web.archive.org/web/20140416182158/http://vak.ru/doku.php/proj/bk/1801vm-series Archivováno 16. dubna 2014 v projektu Wayback Machine : bk:1801vm- série [vak.ru]]
  3. Speccy je naše volba! - Zobrazit zprávu samostatně - Digital Archeology: 1801 a all-all-all . Získáno 22. srpna 2015. Archivováno z originálu dne 4. října 2015.

Odkazy