K1801VM1 on yksisiruinen 16-bittinen mikroprosessori (OMP).
Se on tarkoitettu digitaalisen tiedon käsittelyyn prosessinohjausjärjestelmissä ohjaus- ja mittauslaitteistoissa sekä tietoliikennejärjestelmissä sekä teknisten ja taloudellisten ongelmien ratkaisemiseen osana tietokonetta . K1801VM1-komentojärjestelmä on hyvin lähellä PDP-11- arkkitehtuuria ja on useimmissa tapauksissa yhteensopiva sen kanssa, mutta ei ole sen tarkka kopio.
Mikropiirin rakenne sisältää seuraavat päätoiminnalliset lohkot:
Katso kohta: Rakennekaavio
Johtopäätös | Nimitys | lähtötyyppi | Päätelmien toiminnallinen tarkoitus |
---|---|---|---|
yksi | CLC | Sisäänkäynti | Synkronointi |
2 | SÄKKI | Syötä uloskäynti | RAP- sieppauksen vahvistus |
3 | DMGI | Sisäänkäynti | RAP-syöte |
neljä | DMGO | Poistu | RAP-palvelun tuotos |
5 | DMR | Sisäänkäynti | RAP-vaatimus |
6 | SP | Sisäänkäynti | Dokumentoimaton toiminto - ajastimen ulkoinen taajuuslähde [3] . Yhdistä +5V |
7 | SEL1 | Poistu | Ensimmäisen I/O-rekisterin valinta |
kahdeksan | SEL2 | Poistu | Toinen I/O-rekisterin haku |
9-20, 22-25 | AD0-AD15 | Syötä uloskäynti | Tietojen osoitebitit |
21 | GND | - | Kenraali |
26 | PA1 | Sisäänkäynti | Prosessorin numero |
27 | PA0 | Sisäänkäynti | Prosessorin numero |
28 | BSY | Poistu | Kanava varattu signaali |
29 | DCLO | Sisäänkäynti | Virtalähteen vika |
kolmekymmentä | ACLO | Sisäänkäynti | AC-virtakatkos |
31 | IRQ1 | Sisäänkäynti | Ensimmäinen säteittäinen keskeytyspyyntö "Remote" |
32 | IRQ2 | Sisäänkäynti | Toinen säteittäinen keskeytyspyyntö (vektori 100) |
33 | IRQ3 | Sisäänkäynti | Kolmas säteittäinen keskeytyspyyntö (vektori 270) |
34 | SEN SISÄLLÄ | Syötä uloskäynti | Alkutilan asettaminen |
35 | VIRQ | Sisäänkäynti | Vector keskeytyspyyntö |
36 | IAKO | Poistu | Keskeytyksen tarjoaminen |
37 | DOUT | Poistu | Datan ulostulo (tietojen tallennus) |
38 | DIN | Poistu | Tiedonsyöttö (tietojen lukeminen) |
39 | VASTAA | Syötä uloskäynti | Passiivisen laitteen synkronointi (vastaus) |
40 | WTBT | Poistu | Tavutulostus (kirjoitus/tavu) |
41 | SYNK | Poistu | Aktiivinen laitesynkronointi (jakaminen) |
42 | Ucc | - | Syöttöjännite |
Komentokoodi ilmaistaan oktaaliluvulla. Tämä näkymä on kätevä tämän prosessorin komentojen visuaaliseen havaitsemiseen.
Joukkueen nimitys | Komentokoodi | Tiimi |
---|---|---|
PYSÄYTTÄÄ | 000000 | Lopettaa |
ODOTA | 000001 | Odotus |
RTI | 000002 | Paluu keskeytyksestä |
BPT | 000003 | Komentokeskeytys virheenkorjausta varten |
IOT | 000004 | Komentokeskeytys I/O:lle |
RESET | 000005 | Palauta ulkoiset laitteet |
RTT | 000006 | Paluu keskeytyksestä |
JMP | 0001DD | Ehdoton hyppy absoluuttiseen osoitteeseen, joka on koodattu DD:ssä. Esimerkiksi sekvenssi
000137 JMP@#7000
007000
käskee prosessoria ottamaan osoitteen paikasta hyppykäskyn jälkeen ja siirtymään määritettyyn osoitteeseen (tässä tapauksessa oktaaliosoite 7000). |
RTS | 00020R | Paluu aliohjelmasta |
JSR | 004RDD | Aliohjelman kutsu |
EMT | 104000-104377 | Komentokeskeytys järjestelmäohjelmille. Esimerkiksi EMT 16:n koodi on 104016. Kaikille EMT-komennoille keskeytyksellä on sama vektori, jonka osoitteessa pitäisi olla aliohjelma, joka varaa komennosta numeron (esimerkissämme se on 16) ja löytää aliohjelman palvelukohtaisen EMT-komennon osoite. |
ANSA | 104400-104777 | komennon keskeytys. Esimerkiksi TRAP 4:n koodi on 104404. Kaikille TRAP-komennoille keskeytyksellä on sama vektori, jonka osoitteessa pitäisi olla aliohjelma, joka poimii komennosta luvun (esimerkissämme se on 4) ja etsii TRAP-komentoa palvelevan aliohjelman osoite.
EMT:n ja TRAP:n välillä ei ole perustavanlaatuista eroa. Järjestelmäohjelmissa on tapana käyttää EMT-komentoa (tietokoneelle BC on monitori ja diagnostiikkajärjestelmä) ja TRAP-komentoa käyttäjäohjelmissa. |
NOP | 000240 | (10100000) Ei toimintaa |
CLC | 000241 | (10100001) Tyhjennä lippu C (carry = carry) |
CLV | 000242 | (10100010) Tyhjennä V-lippu (oVerflow = ylivuoto) |
CLZ | 000244 | (10100100) Tyhjennä Z-lippu (nolla = nolla) |
CLN | 000250 | (10101000) Tyhjennä lippu N (negatiivinen = negatiivinen arvo) |
CCC | 000257 | (10101111) Tyhjennä kaikki numerot |
SEC | 000261 | (10110001) Aseta lippu C (carry = carry) |
SEV | 000262 | (10110010) Aseta V-lippu (oVerflow = ylivuoto) |
SEZ | 000264 | (10110100) Aseta Z-lippu (nolla = nolla) |
SEN | 000270 | (10111000) Aseta lippu N (negatiivinen = negatiivinen arvo) |
SCC | 000277 | (10111111) Aseta kaikki numerot |
101PNZVCItse asiassa yllä olevat komennot , joiden 101xxxxx koodit ovat 240-277, ovat ainoa komento, joka muuttaa prosessorin tilasanan P lippuja . Se on kirjoitettu binäärimuodossa N,Z,V,C osoittamaan, mihin lippuihin toiminnon tulisi vaikuttaa (1) tai mihin lipuihin toiminto tulee jättää huomiotta (0). . Koodin sisältävä komento 263 (10110011)asettaa siis liput C ja V samaan aikaan arvoon 1. Siten komento muistomerkillä NOPja koodilla 240on tämän komennon erikoistapaus ja sisältää lippujen maskin, jonka mukaan mikään niiden pitäisi muuttua. Vastaavasti komento koodilla260 (10110000) | ||
MOPPI | 0003DD | Korkeiden ja alhaisten tavujen vaihtaminen DD:n osoittamassa 16-bittisessä sanassa. |
BR | 000400 | Ehdoton hyppy siirtymäkohtaisesti komentoa seuraavan solun suhteen. Esimerkiksi koodi 000400 tarkoittaa siirtymistä soluun BR-komennon jälkeen, koodi 000401 tarkoittaa hyppäämistä yhden 16-bittisen solun yli, 000402 tarkoittaa kahta jne. Tarkkaan ottaen tämä komento ja kaikki siirtymäkäskyt huomioidaan parhaiten binääri tai heksadesimaali. Silloin se näyttää 1NNNNNNNN(bin) tai 1NN(hex), jossa N on offset-arvo. Toisin sanoen komento kirjoitetaan sanan korkeaan tavuun ja offset on matalaan tavuun. Negatiiviset offset-arvot kirjoitetaan kahden komplementin kanssa . Tämä tarkoittaa, että offset -1 koodataan muodossa FF (hex) ja käsky on 1FF (hex) tai vastaavasti 777 (okt). Koodilla 777 siirrytään yhteen 16-bittiseen soluun takaisin, eli itse BR-käskyyn, ja silmukka tapahtuu. Koodilla 776 - 2 solua taaksepäin, 775 - kolme. jne. |
BNE | 001000 | Hyppää offsetilla, jos se ei ole yhtä suuri. Komentokoodi on 2NN (hex) - katso BR-komennon kuvaus. Siirtymä käynnistyy, jos prosessorin Z-lippu on 0.
Osoite Komento Ohjelman teksti assemblerissä
1000: 020104 CMP R1,R4
1002:001001 BNE MET
1004: 010102 MOV R1,R2
1006: 010103 MET: MOV R1,R3
Tässä CMP-vertailukäsky vertaa yleisrekisterien R1 ja R4 sisältöä ja asettaa suorittimen liput C, V, Z, N vertailun tulosten mukaan ja BNE-käsky hyppää +1 kuusitoista bitin sanaa eteenpäin, jos Z-lippu on 0. |
CLR(B) | *050DD | Poista DD:n osoittaman sanan bitit. Komennolla 0050DD on muistomerkki CLR ja 1050DD:ssä muistomerkki CLRB. |
KAMPA) | *051DD | Käännä DD:n osoittaman sanan bitit käänteisiksi. |
INC(B) | *052DD | Lisätään 1 sanaan, johon DD viittaa. |
DEC(B) | *053DD | Vähennä 1 sanasta, johon DD viittaa. |
NEG(B) | *054DD | Allekirjoituksen muutos |
ADC(B) | *055DD | Kuljeta lisäys |
SBC(B) | *056DD | Suorita vähennys |
TST(B) | *057DD | Tarkistetaan sana ja asetetaan suorittimen liput C, V, Z, N tällaisen tarkistuksen tulosten perusteella. |
ROR(B) | *060DD | Kierrä oikealle |
ROL(B) | *061DD | Käänny vasemmalle |
ASR(B) | *062DD | Aritmeettinen siirto oikealle |
ASL(B) | *063DD | Aritmeettinen siirto vasemmalle |
MARK | 0064NN | Pinoosoittimen palautus (CS) |
SXT | 0067DD | Kyltin laajennus |
MTPS | 1064DD | Prosessorin tilasana (SPW) kirjoitus |
MFPS | 1067DD | SSP:n lukeminen |
MOV(B) | *1SSDD | Edelleenlähetys |
CMP(B) | *2SSDD | Vertailu |
BIT(B) | *3SSDD | Päästöjen tarkistaminen |
BIC(B) | *4SSDD | Päästöjen poistaminen |
BIS | *5SSDD | Boolen lisäys |
XOR | 074RDD | XOR |
LISÄTÄ | 06SSDD | Lisäys |
SUB | 16SSDD | Vähennyslasku |
BR | 0004XXX | Haaroittuminen ehdoton |
BNE | 0010XXX | Haara, jos se ei ole 0 |
BEQ | 0014XXX | Haara, jos se on 0 |
Operandi määritetään arvoilla SS (lähde - lähde) ja DD (kohde - vastaanotin), kun taas ensimmäinen numero määrittää osoitustilan ja toinen - prosessorin yleisrekisterin numero. Jos esimerkiksi SS = 27, niin 2 on osoitusmenetelmä ja 7 on rekisterinumero.
Prosessorissa on 8 16-bittistä rekisteriä: R0, R1, R2…R7. Tässä tapauksessa R0-R5:tä käytetään käskyoperandien tallentamiseen. Rekistereillä R6 ja R7 on lisäksi erityinen tarkoitus, mutta kaikki toiminnot niillä tapahtuvat samalla tavalla kuin muillakin rekistereillä.
Rekisteri R6 toimii pinoosoittimena (SP, Stack Pointer) ja sisältää pinon yläosan osoitteen. Pinoon kirjoittaminen tapahtuu yleensä automaattisen pienentämisen osoitusmenetelmällä ja lukeminen automaattisen lisäyksen menetelmällä. Suorittaessaan useita operaatioita (käsittelee laitteisto- ja ohjelmistokeskeytyksiä sekä soittaa ja palata aliohjelmista) prosessori muuttaa tämän rekisterin arvoa tietyllä tavalla.
Rekisteri R7 on ohjelmalaskuri (PC, Program Counter) ja sisältää seuraavan prosessorin suorittaman käskyn osoitteen. Numeron kirjoittaminen R7:ään vastaa hyppäämistä määritettyyn osoitteeseen.
Osoitusmenetelmät:
Määrä | Menetelmä | Selitys | Esimerkkejä |
---|---|---|---|
0 | Rekisteröidy | Operandi on rekisterin sisältö. Esimerkiksi käsky 10304 (1SSDD) kopioi rekisterin R3 sisällön rekisteriin R4 ja kirjoitetaan muodossa MOV R3, R4. | 10102 MOV R1, R2 |
yksi | Epäsuora rekisteri | Rekisteri sisältää operandin osoitteen | 005011 CLR (R1)
005011 CLR@R1 |
2 | automaattinen lisäys | rekisteri sisältää operandin osoitteen. Rekisterin sisältö sen jälkeen, kun sitä on käytetty osoitteena, kasvaa 2:lla (sanakomennot) tai 1:llä (tavukomennot) | 005022 CLR (R2)+ |
3 | Epäsuora automaattinen lisäys | rekisteri sisältää operandin osoitteen osoitteen. Rekisterin sisältö sen jälkeen, kun sitä on käytetty osoitteena, kasvaa 2:lla | 005032 CLR @(R2)+ |
neljä | Automaattinen vähennys | rekisterin sisältöä vähennetään 2:lla (sanakomennot) tai 1:llä (tavukomennot) ja sitä käytetään operandin osoitteena | 005042 CLR-(R2) |
5 | Epäsuora automaattinen vähennys | Rekisterin sisältöä pienennetään kahdella ja sitä käytetään operandin osoitteen osoitteena. | 005052 CLR@-(R2) |
6 | indeksi | komennon jälkeen kirjoitettuun numeroon lisätään rekisterin sisältö ja saatua summaa käytetään operandin osoitteena | 005062 CLR 2(R2) 000002 |
7 | epäsuora indeksi | komennon jälkeen kirjoitettuun numeroon lisätään rekisterin sisältö ja saatua summaa käytetään operandin osoitteen osoitteena | 005072 CLR @22(R2) 000022 |
Kun osoitetaan RS-rekisterin kautta, näitä osoitusmenetelmiä kutsutaan erityisellä tavalla:
Osoitusmenetelmä | Koodi | Selitys | Esimerkkejä |
---|---|---|---|
suoraan | 27 | Operandi tallennetaan käskyä seuraavaan sanaan. Itse asiassa tämä on automaattinen inkrementaalinen osoitusmenetelmä, joka käyttää PC-rekisteriä, eli PC sisältää operandin osoitteen, ja tämä on aina käskyä seuraavan solun osoite. Tämän jälkeen rekisteriä kasvatetaan 2:lla, mikä PC:tä käytettäessä vastaa "hyppäämistä" seuraavaan osoitteeseen tietosolun läpi, eikä siihen tallennettua numeroa suoriteta komentona. | 012703 MOV #21, R3 000021 012700 MOV #IN,R0 xxxxxx IN: |
ehdoton | 37 | operaandin osoite tallennetaan käskyä seuraavaan sanaan | CLR @#7000 JMP @#BEN |
suhteellinen | 67 | PC:n sisältö lisätään käskyn taakse muistiin tallennettuun sanaan ja saatua summaa käytetään operandin osoitteena. | JMP TV CLR 5554 |
epäsuora-suhteellinen | 77 | PC:n sisältö lisätään komentoa seuraavaan sanaan, saatua summaa käytetään operandin osoitteen osoitteena. | CLR @MET INC @15342 |
Sirut tyyppi K1801 | |
---|---|
Mikroprosessorit | |
Työskentely RAM-muistin kanssa |
|
Työskentely GMD :n kanssa |
|
? |
|
Työskentely ulkoisten laitteiden kanssa |
|
ROM |
|
Flash ROM |
|