NO324825B1 - Atte-bit mikroprosessor med RISC-arkitektur - Google Patents
Atte-bit mikroprosessor med RISC-arkitektur Download PDFInfo
- Publication number
- NO324825B1 NO324825B1 NO19994169A NO994169A NO324825B1 NO 324825 B1 NO324825 B1 NO 324825B1 NO 19994169 A NO19994169 A NO 19994169A NO 994169 A NO994169 A NO 994169A NO 324825 B1 NO324825 B1 NO 324825B1
- Authority
- NO
- Norway
- Prior art keywords
- register
- instruction
- bit
- control signals
- instructions
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims description 68
- 230000004044 response Effects 0.000 claims description 39
- 238000012546 transfer Methods 0.000 claims description 35
- 238000012360 testing method Methods 0.000 claims description 12
- 230000000295 complement effect Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 5
- 229910052739 hydrogen Inorganic materials 0.000 claims description 4
- 239000013256 coordination polymer Substances 0.000 claims 4
- 230000000977 initiatory effect Effects 0.000 claims 1
- 241000699666 Mus <mouse, genus> Species 0.000 description 27
- 238000013461 design Methods 0.000 description 11
- 235000005282 vitamin D3 Nutrition 0.000 description 11
- 239000011647 vitamin D3 Substances 0.000 description 11
- 241000699670 Mus sp. Species 0.000 description 10
- 239000002131 composite material Substances 0.000 description 10
- 238000007792 addition Methods 0.000 description 8
- 238000010276 construction Methods 0.000 description 6
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 102100040577 Dermatan-sulfate epimerase-like protein Human genes 0.000 description 1
- 101000816741 Homo sapiens Dermatan-sulfate epimerase-like protein Proteins 0.000 description 1
- OFFWOVJBSQMVPI-RMLGOCCBSA-N Kaletra Chemical compound N1([C@@H](C(C)C)C(=O)N[C@H](C[C@H](O)[C@H](CC=2C=CC=CC=2)NC(=O)COC=2C(=CC=CC=2C)C)CC=2C=CC=CC=2)CCCNC1=O.N([C@@H](C(C)C)C(=O)N[C@H](C[C@H](O)[C@H](CC=1C=CC=CC=1)NC(=O)OCC=1SC=NC=1)CC=1C=CC=CC=1)C(=O)N(C)CC1=CSC(C(C)C)=N1 OFFWOVJBSQMVPI-RMLGOCCBSA-N 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7814—Specially adapted for real time processing, e.g. comprising hardware timers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Description
ÅTTEBITS MIKROKONTROLLER MED RISKARKITEKTUR
TEKNISK OMRÅDE
Foreliggende oppfinnelse vedrører mikrokontrollere generelt, og nærmere bestemt en mikrokontroller som utfører et redusert instruksjonssett.
TEKNISK BAKGRUNN
Dagens submikron CMOS-teknologi tillater integrering av komplekse mikrokontrollerarkitekturer på en chip, mens det blir nok silisiumområde igjen til å implementere komplekse minner og periferilogikk. Designarkitektur og metodikk mest vanlig brukt i kostbare 32- og 64-bits RISK-maskiner kan effektivt utnyttes og benyttes i lavkostnads 8-bits mikrokontrollersystemer. Med slike kraftige, men kostnadseffektive, mikrokontrollere, fortsetter det totale integrasjonsnivå av systemer å øke. Mer effektive programmer kan utføres i maskinvarearkitekturen, og flere maskinvarefunksjoner kan integreres.
RISK-arkitekturen har øket i popularitet de senere år. Særlig gjelder det Power PC®, utviklet av Apple Computer, IBM og Motorola sammen. Selv om det ikke er noen overenskomst når det gjelder å definere karakteristikker til RISK-prosessorer, er det felles egenskaper blant de forskjellige varianter av RISK-arkitekturer: (1) de fleste instruksjoner utføres i en syklus, (2) separate og enkle last-/lagre-instruksjoner utføres ofte i to sykluser, (3) instruksjonsdekoding fastkodet (hardwired) i stedet for mikrokodet, resulterende i raskere utførelsestid, (4) de fleste instruksjoner har et fast format, hvilket forenkler instruksjonsdekoding, (5) mindre instruksjonssett og færre adresseringsmodi, (6) dataveier er høyt direktekoblet (pipelined), hvilket gir en høy grad av prosesseringsoverensstemmelse, og (7) store høyhastighetsregistersett (også kjent som registerfiler) for å unngå vidtgående dataoverføring til og fra sen system-RAM.
Flere produsenter av halvledere produserer mikrokontrollere. Texas Instruments tilbyr for eksempel TMS370Cxlx-serien av 8-bits mikrokontrollere. Selv om disse mikrokontrollere ikke benytter en RISK-arkitektur, tilveiebringer de en RAM (128 eller 256 bytes) som kan brukes enten som RAM eller som sett av registre for generell bruk. Motorola tilbyr MC6805-familien av 8-bits mikrokontrollere som benytter en tobruks RAM, lignende innretningene til Texas Instruments. Microchip Technology tilbyr PIC16C5X-familien av mikrokontrollere. Disse mikrokontrollere bruker Harvard dobbeltbussarkitekturen, hvor data- og programinstruksjoner har separate minner og busser. PIC16C5X benytter en registerfil som deles med system-RAM. PIC16C5X bruker ettnivåinstruksjons-direktekobling (pipelining). Når én instruksjon blir utført, blir neste instruksjon forhåndshentet fra programminnet. Siden RAM-en også fungerer som registre, er det intet reelt sett av interne registre. Siden alt minne er til stede som statisk RAM, er det en reduksjon i ytelse når registeroperasjoner er involvert.
Som bemerket ovenfor, er raske designsykluser en viktig faktor i design med mikrokontrollere. Det er ingen tvil om viktigheten rollen som programvare spiller i design av en mikrokontroller. Nytten av en mikrokontrollerdesign er derfor direkte relatert til spesifikasjonsgrensesnittet mellom programmerer og maskinvaredesignere, nemlig instruksjonssettet til mikrokontrolleren. Instruksjonssettet bør være fullstendig i den forstand at enhver funksjon som kan beregnes bør kunne implementeres i en rimelig mengde programrom. Instruksjonssettet bør være effektivt idet at ofte benyttede funksjoner bør kunne implementeres med relativt få instruksjoner.
EP-Bl-0 510 635, som representerer den nærmest liggende kjente teknikk viser en instruksjonsprosesseringsenhet i form av en mikroprosessor. Mikroprosessoren omfatter registre spesifisert ved instruksjonsord, en instruksjonsdel for utførelse av instruksjonene, et minne og en databuss. Videre, en alminnelig registerfil koplet til databussen som omfatter flere 16 bits registre og en kombinatorisk enhet for å aksessere to av de flere 16 bits registrene som et enkelt logisk 32 bits register. Operasjonsdelen forbundet til registerfilen gjennom en intern bus inkluderer et første adressegenereringsmiddel koplet til den kombinatoriske enhet for å utføre aritmetiske funksjoner på et logisk 32 bits register aksessert via det kombinatoriske middel.
Det er derfor ønskelig å tilveiebringe en mikrokontrollerdesign som tilveiebringer et fullstendig og effektivt instruksjonssett for utvikleren av applikasjonsprogramvaren.
SAMMENFATNING AV OPPFINNELSEN
Oppfinnelsen er definert i vedlagte krav 1, mens spesielle utførelsesformer fremkommer av de uselvstendige kravene.
Foreliggende oppfinnelse angår en mikrokontroller med en 8-bits RISK-arkitektur. En 8-bits databuss gir en datavei blant et RAM minnelager, en registerfil, en 8-bits aritmetisk logisk enhet (ALU) for generelt bruk, og et statusregister. Mikrokontrolleren implementerer maskinvare, hvilket tilveiebringer et programminnelager separat fra RAM-lageret og en programdatabuss separat fra databussen.
Registerfilen omfatter en rekke 8-bits registre. Visse av registrene i registerfilen kan kombineres for å gi logiske 16-bits registre. Et logisk 16-bits register gir effektiv adresseberegning og brukes som en indirekte adressepeker inn i dataminnet og programminnet. Om den er for data eller for programminne, vil et 16-bits adresserom sterkt øke fleksibiliteten og nytten av mikrokontrolleren ved å øke både programadresserommet og dataadresserommet. I en foretrukket utførelse av oppfinnelsen, tilveiebringer registerfilen tre par av 8-bitss registre som kan aksesseres (det vil si lese/skrive) som tre uavhengige logiske 16-bits registre.
For ytterligere å øke fordelene ved 16-bits adressering, benyttes det en spesiell andre aritmetisk logisk enhet dedikert til registerfilen. Den andre ALU inneholder en 16-bits adderer, som tilveiebringer 16-bits aritmetiske operasjoner for et logisk 16-bits register. Den andre ALU kan lagre 16-bits resultatet tilbake i det logiske 16-bits register. I tillegg kan 16-bits resultatet tjene som en adresse. Slik gir tilstedeværelsen av den andre ALU effektive 16-bits adresseberegninger uten å belaste åtte-bits ALU-en for generelt bruk, hvilket ville redusere operasjonshastigheten til anordningen.
En videre utvidelse av det logiske 16-bits register tilveiebrakt i registerfilen omfatter bruk av et 8-bits RAM sidervekslingsregister. De åtte bit i RAM sidevekslingsregisteret er logisk sammenkjedet med de seksten bits av det logiske 16-bits register for å tilveiebringe en logisk 24-bits adresse. Dette trekk tilbyr et hittil ukjent område av adressering for en mikrokontroller hvis underliggende arkitektur fundamentalt er en åtte-bits design. Nærmere bestemt organiserer sidevekslingsregisteret minnet som 256 sider på 64 KB(64 <*> 1024) med RAM, idet hver 64K side refereres til av sidevekslingsregisteret. I en foretrukket utførelse av oppfinnelsen er det tre sidevekslingsregistre, en for hver av de tre logiske 16-bits registre tilveiebrakt av registerfilen.
Registerfilen i foreliggende oppfinnelse fremviser registeraksess med en forsinkelse lik forplantningsforsinkelsen til logikken omfattende registerfilen. Siden slike kombinatoriske forsinkelser er mye kortere enn en klokkeperiode, skjer registeraksess vel innen én klokkesyklus. Oppfinnelsen fremviser videre en aritmetisk og logisk enhet (ALU) for generelt bruk, som er i stand til å utføre hver operasjon innen en enkelt klokkeperiode. Oppfinnelsen er derfor i stand til å utføre praktisk talt alle ALU-operasjoner innen en enkelt klokkesyklus.
I samsvar med oppfinnelsen, okkuperer videre registrene i registerfilen en del av adresserommet i RAM-en. Dette trekk tillater konvensjonelle adressemodi, normalt assosiert med RAM-aksess, slik at registrene kan aksesseres som om de var ordinære minneposisjoner. I tillegg vil slike minneposisjoner fremstå for mikrokontrolleren som høyhastighetsminne.
Et bitlager overføring av et enbitdatum til å fra en tilfeldig bitposisjon blant registrene i registerfilen. I en foretrukket utførelse er bitlageret plassert i statusregisteret. Dette trekk med bitoverføring tillater direkte manipulering av registerbitposisjoner uten å måtte utføre mange og ellers tidkrevende registerskiftoperasjoner. Som det er typisk i mange mikrokontrollerapplikasjoner, har de individuelle bits omfattende et enbytedatum betydning uavhengig av de andre bits. Instruksjonssettet av en tidligere kjent mikrokontroller omfatter typisk skiftinstruksjoner for å tilveiebringe venstre- og høyreskifting av et register. Derfor oppnås aksess til en bit i en gitt bitposisjon i et register ved å skifte biten, enten til høyre eller til venstre. Dette er en destruktiv operasjon, som krever at register innholdet blir lagret hvis de originale data skal bevares. I tillegg er operasjonen tidkrevende og krever et antall programinstruksjoner for å implementeres. Bitoverføringsoperasjonene i foreliggende oppfinnelse tilbyr en mer tidseffektiv og mindre romkrevende innretning for å aksessere tilfeldige bitposisjoner.
En sammenlign-med-mente-overføring (compare-with-carry) instruksjon gir 16-bits forhøyelse av åtte-bits registrene omfattende registerfilen. Dette trekk ved instruksjonssettet gir en effektiv metode for å implementere sammenligninger av 16-bit mengder i et åtte-bits miljø, og øker slik beregningsevnen til åtte-bits mikrokontrolleren i foreliggende oppfinnelse ytterligere.
KORTFATTET BESKRIVELSE AV TEGNINGENE
Figur 1 viser et skjematisk layout av mikrokontrolleren i foreliggende oppfinnelse.
Figur 2 skisserer en intern representasjon av registerfilen identifisert i figur 1.
Figur 3 illustrerer konstruksjonen av registrene i registerfilen vist i figur 2.
Figur 4 viser detaljer ved kretsen for register skrivetilgang vist i figur 3.
Figur 5A og 5B viser ELLER-portkonstruksjoner benyttet i figur 4.
Figur 6 skisserer den interne struktur av statusregisteret vist i figur 1.
Figur 7 skisserer den interne struktur av ALU-en for generelt bruk vist i figur 1.
Figur 8A og 8B viser to ALU delenheter inneholdt i den generelle ALU i figur 7.
Figur 9 viser programtelleren.
Figur 10 illustrerer frembringelsen av en 24-bits logisk adresse ved bruk av sidevekslingsregistrene i samsvar med foreliggende oppfinnelse.
Figur 11 skisserer timerkretsene for overvåkning.
Figur 12 er et diagram over mikrokontrolleren i figur 1, omfattende sidevekslingsregistrene vist i figur 10.
Figur 13 viser en N-inngang klargjørende OG-port
BESTE FREMGANGSMÅTE FOR Å UTFØRE OPPFINNELSEN
Med henvisning til figur 1, er mikrokontrolleren 10 i foreliggende oppfinnelse designet rundt en åtte-bits databusstruktur 12. Databussen gir en datavei for de forskjellige komponenter omfattende mikrokontrolleren. En RAM på kortet tjener som et generelt datalager. En åtte-bits REGISTERFIL 20, separat fra RAM-en, tilveiebringer et sett av høyhastighets åtte-bits minnelagre for mikrokontrolleren.
En generell aritmetisk og logisk enhet ALU-1 22 er koblet til REGISTERFILEN for å tilveiebringe aritmetiske beregninger for data lagret i registrene. Utgangen av ALU-1 er koblet til både åtte-bitsdatabussen 12 og til et STATUSREGISTER 24. Forskjellige statusbits omfattende STATUSREGISTRE settes ifølge resultatene av ALU-1.
Som det vil bli forklart nedenfor, består bitsene inneholdt i STATUSREGISTERET 24 av: et avbruddsklargjøringsflagg;
et bitoverføringsflagg;
et halvmenteoverføringsflagg;
et komplementær til to overflytflagg;
et negativt-flagg;
en fortegnsbit, lik den eksklusive ELLER mellom det negative flagg og det komplementære til to flagget;
et null-flagg; og
et menteoverføringsflagg.
Ytterligere komponenter koblet til databussen 12 inkluderer:
en STAKKPEKER benyttet til oppkall av delrutinetilbakehopp og for avbruddsbehandling;
en timer;
en avbruddskrets;
timing og kontrollkretser;
en EEPROM og en UART. I-/U-DATAREGISTRE drevet av PORTDRIVERE gir en I-/U-vei 19 for mikrokontrolleren.
En direkte adressebuss 16 gir direkte tilgang til RAM-posisjonene og til REGISTERFILEN under programutførelse. En indirekte adressebuss 14 gir indirekte adressering. Den indirekte adressebuss 14 omfatter en innretning for å motta en adresse fra REGISTERFILEN, nemlig bussgrensesnittet 14', som kobler REGISTERFILEN til den indirekte adressebuss 14 for å sende en adresse enten til RAM-en eller til en
PROGRAMTELLER 28.
Komponentene for instruksjonsutførelse i mikrokontrolleren 10 inkluderer en PROGRAMTELLER 28 som er koblet til et PROGRAMMINNNE. I en foretrukket utførelse er PROGRAMMMINNET et programmerbart flash-minne. En programinstruksjon spesifisert av PROGRAMTELLEREN hentes fra PROGRAMMINNET og fødes inn i et INSTRUKSJONSREGISTER. Fra INSTRUKSJONSREGISTERET blir programinstruksjonen dekodet av en INSTRUKSJONSDEDKODER, som genererer forskjellige kontrollsignaler. Kontrollsignalene ledes av KONTROLLINJER til de andre komponenter i mikrokontrolleren 10 for å utføre operasjoner i samsvar med dekodede programinstruksjoner. Bussene som knytter komponentene sammen for instruksjonsutførelse blir kollektivt benevnt som programbussen. Arrangementet av et programminnelager, som er separat fra datalageret, og bruken av en programbuss, som er separat fra databussen 12, blir vanligvis kalt Harvard-arkitekturen.
Som bemerket ovenfor, består REGISTERFILEN av en rekke åttebits registre. I en foretrukket utførelsesform av oppfinnelsen, er det trettito åttebit registre. Det påpekes, imidlertid, at mikrokontrolleren vil virke like godt med flere eller færre registre i REGISTERFILEN. Den generelle formålsaritmetiske og logisk enhet ALU-1 er en åttebit operator, som tilveiebringer åttebit aritmetiske operasjoner mellom registre valgt fra REGISTERFILEN. Utgangen av ALU-1 kan ledes tilbake til et register i REGISTERFILEN via databussen 12. Som det vil blir diskutert i større detalj nedenfor, kan noen av åttebit registrene kombineres i par for å gi logiske seksten bits registre. I den foretrukne utførelse tilveiebringer tre par av åttebit registre tre logiske seksten bits registre X, Y, Z, som vist i figur 1.
Det henvises til figur 3, hvor REGISTERFILEN i foreliggende oppfinnelse omfatter registerkrets 100, som tilveiebringer trettito åttebits registre R0-R31. REGISTERFILEN omfatter tre utganger A, B og C og tre innganger D BUSS, D ALU2H og D ALU2L. Som det vil bli beskrevet nedenfor, er registerkretsen 100 i stand til å frembringe det siste seks registre R26-R31 som tre par av logiske seksten bits registre R27/R26 (X), R29/R28 (Y) og R31/R30 (Z). Et felles grensesnitt bestående av to seksten linje databusser 102 og 104 tilveiebringer respektivt en data inn- og en data ut-buss for seksten bits registre.
Data-ut-bussen 104 er bygges opp fra B- og A-utgangene, idet B-utgangen leverer det høyeste byte og A-utgangen leverer det lave byte av seksten bits verdiene. Data- inn-bussen 102 splittes opp i D ALU2L (lav byte) og D ALU2H (høy byte)-innganger til
REGISTERFILEN.
De seksten bits registre tilveiebrakt av REGISTERFILEN brukes som indirekte adresseregisterpekere for RAM og programromadressering. For å forenkle minnetilgang, blir det tilveiebrakt visse seksten bits aritmetiske operasjoner, slik som postøkning og preminskning for adresseberegninger. Selv om det er mulig å bruke ALU-1 til å frembringe seksten bits aritmetikk for de seksten bits registre, ville slike operasjoner være nokså likt effektive på grunn av åttebit utformingen av ALU-1.
REGISTERFILEN vist i figur 2 inkluderer derfor en andre aritmetisk og logiske enhet ALU-2 dedikert til REGISTERFILEN, for å forenkle seksten bits beregninger, som involverer de logiske seksten bits registre. Den aritmetiske og logiske enhet ALU-2 er et seksten bits design, innrettet til å tilveiebringe spesifikke operasjoner som typisk kreves av indirekte adressepekerer. ALU-2 har en første inngang, som fødes av data ut-bussen 104, i REGISTERFIELN. ALU-2 har en andre inngang som fødes av en velger 110. Velgeren 110 velger en numerisk verdi blant tre valg: en nummerisk verdi av -1, en nummerisk verdi på +1 og en konstant K-INN. Utgangen av ALU-2 ledes tilbake til X-, Y- OG Z-registrene på data-inn-buss 102, hvilket tillater innholdet i registrene å bli oppdatert. En muks 114 er koblet til bussgrensesnittet 14' av REGISTERFILEN Én inngang av muksen 114 er koblet til utgangen av ALU-2, mens en andre inngang av muksen er koblet til data ut-bussen 104. Dette arrangement tillater muksen 114 til selektivt å avgi data enten fra ALU-2 eller fra registerkretsen 100.
De følgende kontrollsignaler er aktuelle for operasjonen av de diskuterte trekk i REGISTERFILEN. De omfatter: V_SEL, ALU2_OPP og ADRSEL. Disse signaler bæres av forskjellige KONTROLLINJER som kommer fra INSTRUKSJONSDEKODEREN. Operasjonen av REGISTERFILEN i form av disse kontrollsignaler vil bli diskutert nedenfor med henvisning til programinstruksjonene til mikrokontrolleren i den foreliggende oppfinnelse.
Den interne organisasjon av registerkretsen 1000, illustrerert i figur 2, er vist i det logiske diagram i figur 3.1 én utførelse av oppfinnelsen, er det tilveiebrakt trettito registre R0-R31, hver med et sett av åttebit utgangslinjer 12 og et sett åttebit inngangslinjer 123. Det faktiske antall tilveiebrakte registre er ikke kritisk for oppfinnelsen.
Hvert register består av et batteri med åtte D-type flipfloper, indikert ved "x8"-henvisningen innen hver flipflop i figur 3. Utgangslinjene 122 av et register består av utgangen Q av hver av de åtte flipfloper som danner registeret. Tilsvarende består inngangslinjen 123 av et register av inngangen D av hver at de åtte flipfloper som danner registeret.
Som vist i figur 3, har de like nummererte registre RO, R2... R30 et felles inngang koblet til utgangen av en åttebits 4:1 muks 132. På samme måte har de åtte nummererte registre RI, R3... R31 en felles inngang separat fra de likt nummererte registre og koblet til utgangen av en åttebits 4:1 muks 132. Den 4:1 muks 130 velger én av dens 4 åttebits innganger DBUSS, K INN, D_BUSS[n], og D ALU2L til å tjenes som inngang til de likt nummererte registre. 4:1 muksen 132 velger én av sine 4 åttebits innganger for å tjene som inngang til de odde nummererte registre. En velger DSEL er koblet til begge mukser og velger enten den første, andre, tredje eller fjerde inngang av hver av muksene 130 og 132. Den første inngang D BUSS av muks 130 tas fra åttebit databussen. Den andre inngang K INN av muks 130 er en åttebit konstant, som utledes fra operanden av visse instruksjoner, som det blir forklart nedenfor i sammenheng med diskusjonen av instruksjonssettet i mikrokontrolleren ifølge foreliggende oppfinnelse.
Den fjerde inngang D-ALU2L er det lave byte av de seksten bits utgangen av ALU-2 (figur 2) av muksen 130 er D-BUSS[n]-inngangen til muks 130 viser til én av databussen 12. Denne bitlinje n er replikert åtte ganger som den tredje 8 bits inngang til muksen 130- Inngangen D_BUSS[n] brukes med BLD-instruksjonen, som forklart nedenfor.
Utgangen av muks 130 replikeres som første, andre og tredje inngang av muksen 132. Den fjerde inngang D ALU2H av muks 132 er den høye byte av seksten bits utgangen av ALU-2. Når D SEL derfor velger de første, andre eller tredje muksinnganger, blir de like og odde nummererte registre presentert for den samme inngang, nemlig D BUSS, K INN eller D_BUSS[n]. Når D SEL velger den fjerde muksinngang, presenteres inngangene av de like nummererte registre for D_ALUD2L, og inngangene av de odde nummererte registre presenteres for DALU2H-inngangene. Betydningen av DALU2L og D_ALU2H-inngangene vil bli klart under diskusjonen vedrørende X-, Y- og Z-registrene.
Batteriet med åtte flipfloper korresponderende til hvert register R0-R31 skrives til ved å presentere inngang til D-lederne og bekrefte flipflopenes klokkelinjer CK. En fordel med registerarkitekturen i den foreliggende oppfinnelse er fleksibiliteten i å skrive til registrene. Avhengig av operasjonsmoduset, kan et seksten bits datum skrives inn i et registerpar som et ett ords datum, et åttebits datum kan skrives inn i et register som et én byte datum, eller en bestemt del av et register kan skrives som et én byte datum. Denne fleksibilitet tilveiebringes av velgerkontrollkretsen 134 som sikrer de rette CK-signaler, slik at de korrekte register og bit(er) blir skrevet. Kontrollinjene RSEL og WER samvirker til å skrive de åtte flipfloper korresponderende til et valgt register. Kontrollinjene WE_XH, WE_XL, WEYH, WHYL, WE_ZH og WE_ZL tillater en skriving til de seksten bits X, Y og Z-registrene. Kontrollinjene R SEL, BIT SEL og WEBIT samvirker for å skrive et bit inn i valgt bit av et valgt register.
Registrenes innhold leveres gjennom muksene 120, 122 og 124, hvis utganger respektivt er utgangene A, B og C vist i figur 2. Hver av disse utgangsmukser er en åttebit 32:1 muks, som velger én av 32 åttebit innganger. Utgangene til hver av de 32 registrer er koblet til de korresponderende innganger til hever av muksene 120, 122 og 124. Kontrollinjene R OUTA, R OUTB, R OUTC opererer muksene til å avgi innholdet av de ønskede registre.
De åttebit utganger av muksene 120 fødes inn i en 8:1 muks 136, hvor kontrollinje BITSEL tjener til å velge én av de åttebit. Utgangen av muksen 136 er koblet til en bittest krets 138, som opereres av kontrollinjene BTSTCLR og BTSTSET for å teste om det valgte bit er slettet eller satt. Utgangen av bittestkretsen driver kontrollinjen
BR_SKP.
I samsvar med den foreliggende oppfinnelse tilveiebringer mikrokontrolleren logiske seksten bits registre i tillegg til de beskrevne åttebit registre. Dette oppnås ved å ta par av registre i registerfilen og behandle dem som et enkelt register. Tre seksten bits registre X, Y og Z tilveiebringes på denne måte. X-registeret består av registerparet R27/R26; Y-registeret består av registerparet R29/R28 og Z-registeret består av registerparet R/31/R30.
Det vises nå til figur 4, som viser velgerkontrollkretsen 134 i figur 3 i større detalj. Dekoderenheten 140 er en l:32-dekoder, som sikrer enhver av de 32 utganger som svar på dekoding R-SEL. Hver utgangslinje fra dekoderen korresponderer til et register. Utgangene fødes inn i to klargjørings- OG-porter 142 og 144. Figur 13 viser i detalj konstruksjonen av en klargjørings- OG-port 50, som har en én-bits klargjøringsinngang A, en N-bits inngang B og en N-bits utgang. Den ekspanderte detalj i figur 13 viser at en slik port består av N OG-porter med to innganger. Den første inngang til hver av de N OG-porter mottar den klargjøringsinngang A, mens den andre inngang av OG-portene mottar én av de N bits av B-inngangen. Slik tillater port 50 B-inngangen å passere til utgangen, forutsatt at den klargjøringsinngang A er sikret. Ellers er alle N utganger av den klargjørings- OG-port 50 LAV. Det vises igjen til figur 4, hvor den klargjørings- port 142 er klargjort av WE R, mens klargjøringsporten 144 er klargjort av WE_BIT.
For å fortsette, er hver av de 32 utganger av den klargjørings- port 142 koblet til en inngang av en kompositt ELLER-port 150-181, Hver av de 32 utganger av den klargjørings- port 144 er koblet til en 1:8 muks M0-M31. De åtte utganger av hver muks M0-M31 er koblet til en annen inngang av de kompositte ELLER-portene 150-181. Hver kompositt ELLER-port er assosiert med et register R0-R31. Figur 5 A viser konstruksjonen av kompositt ELLER-port 150. Den kompositte ELLER-port 150 består av åtte separate to inngang ELLER-porter 150A-150H. Den én bits inngangslinje 190 stammer fra en utgang av den klargjørings- port 142, og er koblet til den første inngang av hver av ELLER-portene 150a-150H. De åttebits inngangslinjer 191 stammer fra utgangene av muks MO. Hver av inngangs linjene 191 er koblet til den andre inngang av en ELLER-port. Som det kan ses, er hver av ELLER-portene koblet til DK-linjen (CKO-CK7) av én av flipflopene i register RO. Denne konstruksjon benyttes til kompositt ELLER-porter 150-175.
Det vises igjen til figur 4, legg merke til at noen av de kompositte ELLER-porter, nemlig portene 176-181, har en tredje inngang. Denne tredje inngang kommer fra én av kontrollinjene WE_XL, WEYL, WEYH, WE_ZL og WE_ZH, vedrørende skriving av X-, Y- og Z-registrene. Som det kan ses i figur 5b, som viser detaljen av kompositt ELLER-port 176, er det ytterligere én bits kontrollinje 194 koblet til en tredje inngang av hver av ELLER-portene 176A-176H. Denne konstruksjon benyttes til kompositt ELLER-porter 176-181
Som nevnt ovenfor, samvirker kontrollinjene R SEL og WE R for å skrive åttebit data inn i et valgt register. Dette oppnås ved å klokke data inn i flipflopene korresponderende til registeret. Se for eksempel på skrivingen av data inn i register RO. De fem bits kontrollinjer R SEL settes til å velges register RO. Dekoderen 140 dekoder linjen, og derved utgangslinjen korresponderende til register RO, som er koblet gjennom den klargjøringsporten 142 til inngangslinjene 190 i ELLER-port 150. Som vist i figur 5 A, vil inngangslinjen 190 samtidig klokke alle flipflopene i register RO, og gir derved inn data som fremkommer på D-inngangen av flipflopene (figur 3).
Før diskusjon av kontrollinjene R SEL, WEBIT og BIT SEL, se på figur 6 for en illustrasjon av staturregisteret 24. Det består av åtte flipfloper, én for hver av statusbitene benyttet i den foreliggende oppfinnelse: et avbruddsklarrgjøringsflagg I;
et bitoverføringsflagg T;
et halvmenteoverføringsflagg H;
et komplement til to overflytflagg V;
et negativt flagg N;
en fortegnsbit S, lik den eksklusive ELLER mellom det negative flagg og de komplemente til to-flagget;
et null-flagg, og
et menteoverføringsflagg C.
Inngangen til I-flipflopen er knyttet direkte til kontrollinjen FSET. Inngangen til T-flipflopen er koblet via ELLER-porten til kontrollinjen F SET og til utgangen av OG-port 228. Inngangene til de gjenværende flipfloper er koblet via deres respektive ELLER-porter til kontrollinjen F SET og til de åtte utganger av klargjørings- OG-port 230 (figur 13).
En 8:1 muks 202 mottar utgangene av alle statusregisterflaggene og avgir et valgt flagg i samsvar med settingen av kontrollinjen FOUT: utgangene av muks 202 ledes inn i en bittesteordinnretning 208 for å produsere et kontrollsignal BRSKP. Utgangen av muksen 202 ledes også inn i OG-porten 218, hvis utgangen er knyttet til biten N av databussen D_BUSS[n]. I tillegg ledes flaggene H, S, V, N, Z og C inn i den generelle ALU 22 diskutert ovenfor.
Hver flipflop inkluderer en nullstilling R, som effektivt tillater et bestemt flagg å slettes, simpelthen ved å nullstille dets korresponderende flipflop. Hver nullstilling er knyttet til én av de åtte utganger av den klargjørings- OG-port 224. Den klargjørings- OG-port 224 klargjøres av kontrollinjen TSEL.
Klokkeinngangen av flipflopen I er knyttet til en utgang av klargjørings OG-porten 226. Klokkeinngangen av flipflopen T er knyttet til via en ELLER-PORT til klargjøringsport 226 og til kontrollinjen T SEL. De gjenværende flipfloper er knyttet via deres respektive ELLER-porter til den klargjøringsport 226 og til kontrollinjen FSETALU.
En muks 210 mottar inngang D BUSS fra 8 bits bussen. Kontrollinjen BIT SEL avgir én av de åttebit til OG-porten 228, hvis utgang ledes inn i T-flipflopen. Kontrollinjen T SEL tjener som en klargjøringsinngang til OG-porten 228.
Klargjørings-OG-port 230 mottar inngang fra den generelle SLU 22, og klargjøres av kontrollinjen F SETALU. Dette element tjener til å oppdatere statusflaggene mottatt fra ALU-en under en ALU-operasjon. Dette vil bli diskutert videre i sammenheng med diskusjonene av ALU-en 22.
Dekoderne 204 og 206 dekoder hver kontrolleren F-SEL for å sikre én av dens åtte utganger, som fødes direkte inn i klargjørings-OG-porter 224 og 266, respektivt. Kontrollinjen FCLR klargjør port 224. Kontrollinjen F SET klargjør port 226.
Bittestinnretningen 208 består av et par OG-porter 212 og 214, som ledes inni en ELLER-port 216. Porten 214 har en invertert inngang, som er koblet til muksen 202. Den andre inngang til port 214 er koblet til FTSTCLR. Inngangene til port 212 er utgangen av muksen 202 og kontrollinjen FTSTSET.
Utgangen av muksen 202 er og knyttet til OG-port 218, som klargjøres av kontrollinjen T OUT. Ugangen av OG-port 218 er vist koblet til bitlinje n av åttebit databussen. Diskusjonen vil nå dreie seg om et annet trekk ved åttebit mikrokontrolleren i den foreliggende oppfinnelse. Gjenkall i diskusjonene ovenfor at tidligere kjente teknikker for lasting eller lagring av en tilfeldig bitposisjon i et register krever registerskift og/eller registermaskeringsoperasjoner, resulterende i mindre effektiv kode og økt kodestørrelse. I tillegg er dette en destruktiv operasjon, som krever at register innholdet lagres, hvis de originale data skal bevares.
Se på kontrollinjene R SEL, WEBIT og BIT SEL vist i figurene 3-6. Disse kontrollinjer opererer registerkretsen 100 (figur 3), for å effektuere skriving av en enkelt bit til en spesifikk bit-posisjon i et valgt register. Biten, som skal skrives, oppnås fra statusregisteret 24 og leveres via D BUSS [n]. Dette utføres ved å sette F OUT (figur 6) for å velge utgangen av T-flipflopen ved muks 202, og sikre T OUT, for å klargjøre OG-porten 218 til å drive utgangen inn i databussen. I fortsettelsen blir biten tilgjengelig på hver av de åtte utgangslinjer av muksen 130 og av muksen 132, ved av D SEL velger D_BUSS[n]-inngangen av muks 130. Dette presenterer biten som skal skrives til inngang av alle flipfloper i alle registre (figur 4). Se for eksempel på at biten skal skrives til bitposisjon to i register R26. Kontrollinjen R SEL, som er satt til å velge register R26, dekodes av dekoder 140 (figur 4) for å sikre den korresponderende utgangslinje. Kontrollinjen WE BIT sikres for å klargjøre at den dekodede utgang for å passere til inngang av 1:8 muksen korresponderende til register R26, nemlig muks M26. Kontrollinjen BIT SEL, som er satt til å velge bit-posisjon to, opererer hver muks, inkludert muks M26 til å porte sin én bits inngang til den andre av sine åtte utganger. Fortsettende fra muks M26, tjener dens åtte utgangslinjer som inngang 193 av kompositt ELLER-port 176 vist i figur 5B. Hver linje (0-7) av inngangen 193 passerer gjennom en ELLER-port 176A-176H til en bestemt flipflop. Imidlertid, siden bare én av linjene er sikret, i dette tilfelle linje [1], blir bare én av flipflopene i det valgte register klokket for å motta biten.
Diskusjonen vendes nå til den generelle ALU 22 i foreliggende oppfinnelse, vist i figur 7. ALU-en 22 består av en rekke operasjonsdelenheter OPl-OPn, hver i stand til å utføre en bestemt operasjon. Typiske operasjoner utført av den generelle ALU inkluderer addisjon, logiske operasjoner og skift-operasjoner, hver utført av en separat delenhet. Inngangene til ALU-en nemlig A, B og K IN og flaggene fra statusregisteret 24 ledes til hver av delenhetene. Deleenhetene utfører samtidig deres korresponderende operasjoner og genererer åttebits resultater 22C og seks bits statusresultater 22D. Denne parallelle arkitektur gir raskere utførelsestider i forhold til serielle implementeringer, hvilket tillater enhver ALU-operasjon å skje innen en enkelt klokkesyklus.
Resultatene 22C fra delenhetene ledes inn i selektor 22A. Selektoren styres av ALU10P til å avgi resultatene av én av operasjonsdelenhetene på databussen 12. Statusresultatene 22D håndteres på en tilsvarende måte, idet hver ledes inn i selektor 22B, som også er styrt av ALUIOP, slik at statusregisteret 24 mottar statusresultatene korresponderende til den valgte operasjon.
ALU-en 22 omfatter også en XOR-port 23 og en ni-inngangs-OG-port 24. XOR utførerer en bitvis XOR-operasjon mellom hver av de åttebit til A- og B-inngangene. De åtte resultater av XOR-operasjonen ledes inn i de åtte inverterte innganger til OG-porten. Når A = B, vil alle åtte resultater av XOR-operasjonen eller logisk "02". Dette vil få OG-porten til å avgi logisk "212" når kontrollinjen CPSE sikres, hvilket sikrer kontrollinjen BRSKP.
Som bemerket ovenfor, tilveiebringer hver av delenhetene OPn en spesifikk aritmetisk eller logisk operasjon, opererende på A, B og/eller K-iN-innganger for å gi et resultat 22C og oppdatere de passende statusflagg. Figurene 8A og 8B viser to typiske operasjonsdelenheter: figur 8A implementerer et logisk OG mellom A-inngangen og en mellomkonstant levert via KIN; figur 8B implementerer et logisk skift til venstre for A-inngangen.
Det vises nå til figur 9 for en diskusjon av programsekvens. Instruksjoner hentes fra programminnet 25 og lastes inn i instruksjonsregisteret 21. Instruksjonsdekoderen 23 inneholder logikk for å dekode hentet instruksjon og for å produsere kontrollsignaler, som bæres av kontrollinjene til andre deler av mikrokontrolleren for å utføre instruksjonene. Instruksjonsdekoderen sikrer SPINC og SPDEC til å øke eller minske stakkpekeren som svar på subrutineinstruksjonene og avbrudd.
Samtidig produserer instruksjonsdekoderen 23 også signaler for å "øke" programtelleren 28 for å hente den neste instruksjon. Disse signaler omfatter: =q, -q, +q, +3, +2 og +1. Signalet "=q" brukes for disse instruksjoner som spesifiserer en avgrening til en absolutt adresse q. "+q"- og "-q"-signalene brukes for de instruksjoner som spesifiserer fremadgående og bakovergående relative avgreninger med en mengde q. I hvert av disse tilfellene er kvantiteten q inneholdt i instruksjonene. Signalene "+3" og "+2" brukes for hoppinstruksjoner, hvor antallet minneposisjoner som skal overspringes er avhengig av størrelsen på instruksjonen som overspringes. "+1 "-signalet vil simpelthen øke programtelleren til den neste instruksjon. I tillegg mottar programtelleren inngang fra registerfilen 20 for de instruksjoner som benytter en av X-, Y- eller Z-registrene som kilde til adressen til den neste instruksjonen. Programtelleren mottar også inngang fra RAM-en 27 som en annen kilde til adressen til den neste instruksjon idet posisjonen i RAM-en blir spesifisert av en av X-, Y- og Z-registrene eller stakkpekeren 26.
Typisk utsteder instruksjonsdekoderen "+1 "-signalet, for programtelleren 28 og programflash til å forhåndshente den helt neste instruksjonen, mens den gjeldende instruksjon blir utført. Imidlertid når kontrollinjen BRSKP blir sikret, fås programtelleren og instruksjonsregisteret 21 til å forkaste den forhåndshentede instruksjon, beregne den nye adresse, og hente den nye instruksjonen. Den nye adresse er avhengig av instruksjonen. Videre detaljer vil bli tilveiebrakt i forbindelse med diskusjonen av den spesifikke avgreiningsinstruksjon.
Et annet trekk ved åtte-bits mikrokontrolleren ifølge foreliggende oppfinnelse er en øket adresseringsevne som vist i figur 10. Det er vist tre ytterligere registre eksterne til REGISTERFILEN, nemlig RAM-sidevekslingsregisteret RAMPX, RAMPY, RAMPZ. RAM-sidevekslingsregistrene opererer i samsvar med deres korresponderende lokale sekstenbitsregistre X, Y, Z for å tilveiebringe et sterkt øket adresseringsområde sammenlignet med tidligere kjente åtte-bits mikrokontrollere. I den beskrevne utførelse, er RAM-sidevekslings-registrene åtte-bitsregistre. Imidlertid er dette ikke kritisk, og det vil fremgå klart at oppfinnelsen lett kan arbeide med registre med annen bitlengde.
Det vises til figur 10, hvor det er vist en skjematisk representasjon av hvordan adressen bygges opp. Hver av RAM-sidevekslingsregistrene kjedes sammen med sitt korresponderende sekstenbits register. For eksempel blir de åttebit av RAM-sidevekslingsregisteret RAMPX sammenkjedet med de seksten bit av X-registeret, for å danne en tjuefirebits adresse. I den foretrukne utførelse tjener de åttebit av RAMPX som de høyere ordens bit X[23... 16] av den tjuefirebits logiske adresse, mens de seksten bit av X-registeret tilveiebringer de lavere ordensbit X[15... 0] av den tjuefirebits logiske adresse. Minnemodellen fremskaffet ved dette arrangement er et sett på 64KB (64<*>1024) sider, hvor hver 64 K side aksesseres av et åtte-bits RAM-sidevekslingsregister for totalt 256 sider.
Det vises nå til figur 12 for en beskrivelse av en utførelse av RAM-sidevekslings-registrene i sammenheng med den beskrevne utførelse av oppfinnelsen. Hver av RAM-sideveks-lingsregistrene, RAMPX, RAMPY, RAMPZ er koblet til åtte-bits databussen 12, for å motta en åtte-bits sidereferanse under programutførelse. En velger 11 (for eksempel en 3:1 multiplekser) mottar de åttebit fra hver av RAM-sidevekslings-registrene og overfører de åttebit av et utvalgt RAM-sidevekslingsregister til utgangen av velgeren. De seksten bit til bussgrensesnittet 14' i REGISTERFILEN 20 sammenkjedes med de åttebit fra velgeren 11 for å danne en tjuefirebits adresse som bæres av den indirekte adressebussen 14.
Den utvidede tjuefirebits adressering av oppfinnelsen tillater bruk av eksternt tilveiebrakt RAM (ikke vist), siden en tjuefirebits adresse er i stand til å adressere 16 MB (16<*>1024<*>1024) med RAM. En ekstern tjuefirebits adressebuss 17 og en åtte-bits databuss 15 er inkludert for dataaksess mellom mikrokontroller og ekstern RAM (ikke vist). I samsvar med foreliggende oppfinnelse, okkuperer REGISTERFILEN 20,1/O-dataregistrene (I/O-rom), RAM på kortet, og den eksterne RAM det samme adresserom. REGISTERFILEN okkuperer de første 32 adresseposisjoner, etterfulgt av adresser allokert til I/O-rommet, og RAM-en på kortet som okkuperer N adresseposisjoner, hvor N er størrelsen av RAM-en. Det gjenværende adresserom er tilveiebrakt av ekstern RAM. Slik kartlegges adresserområdet 00 til (N-l) til minneposisjoner til minnet på kortet (REGISTERFIL, I/O-rom, og RAM) mens det gjenværende adresseområde N til (16M-1) kartlegges til minneposisjoner i den eksterne RAM. Hvis for eksempel minnet på kortet har totalt 64 KB, er adresseområdet på kortet $00 til $FFFF ("$" betyr heksadesimalnotasjon), mens adresseområdet til den eksterne RAM er $10000 til $FFFFFF. Legg merke til at mengden minne på kortet kan varieres uten å påvirke nytten eller operasjonsevnen til foreliggende oppfinnelse, idet den faktiske mengde minne avhenger av designkriterier, slik som tilgjengelig silisiumområde, innretningsgeometrier og designregler.
For å sikre at minnet på kortet og ekstern RAM blir korrekt adressert for en gitt adresse, brukes en andre velger 13 til å overføre adressen enten til den interne adressebuss 14 eller til den eksterne adressebuss 17.1 en foretrukket utførelse er velgeren 13 en 1:2 muks hvor den enkle muks inngang overføres til en av dens to utganger. Her er den enkle inngang tjuefirebits adresselinjen som kommer ut av velgeren 11. En av utgangene av velgeren 13 er koblet til adressebussen 14, mens den andre utgang er koblet til den eksterne adressebuss 17. Ved deteksjon av en adresse innen adresseområdet til minnet på kortet, fås velgeren 13 til å overføre sin inngang til adressebussen 14. Legg merke til at bare de lavere orden 16 bit [ 15... 0] av tjuefirebits adressen overføres til adressebussen 14. Motsatt vil velgeren 13 overføre sin inngang til den eksterne adressebuss 17 ved deteksjon av en adresse innen adresseområdet til det eksterne minnet. Ethvert av et antall deteksjonsopplegg er mulig, idet alle er innen evnen til en konstruktør av ordinær ferdighet. For eksempel kan én ELLER sammen med de høyere ordens åtte-bits (bit[23... 0]) av tjuefirebits adressen, idet resultatet brukes til å kontrollere velgeren 13. Hvis ELLER-operasjonen resulterer i USANN, hvilket betyr at adressen faller innen adresseområdet til minnet på kortet, skal da velgeren 13 overføre sin inngang til den interne adressebuss 14. Hvis ELLER-operasjonen resulterer i SANN, hvilket betyr at adressen er en full tjuefirebits adresse, skal da velgeren 13 overføre sin inngang til den eksterne adressebuss 17.
Etter å ha beskrevet maskinvaredetaljer som gjelder trekkene til åtte-bits mikrokontrolleren i foreliggende oppfinnelse, vil nå diskusjonen dreie seg mot instruksjonssettet til mikrokontrolleren.
Tabell I gir en oversikt over kontrollinjer som kontrollerer mikrokontrolleren til å implementere instruksjonssettet:
Tabell III gir en oversikt over de aritmetiske og logiske operasjoner, idet den spesifikke operasjon velges av kontrollinje ALUIOP. Noen instruksjoner opererer på to registre A og B. Andre instruksjoner opererer på et register og en konstantverdi k (det vil si "øyeblikkelige" data). De fleste instruksjoner i foreliggende oppfinnelse utføres innen en enkelt klokkesyklus. Innholdet i hvert register er alltid tilgjengelig på utgangene på deres korresponderende flipfloper (figur 3). Slik er innholdet av et valgt register nesten umiddelbart tilgjengelig på utgangen av muksene 120, 122, 124, og krever bare en forsinkelse lik forplantningsforsinkelsen til kombinasjonskretsen omfattende muksene. Denne tidsperiode kalles generelt "kombinatorisk forsinkelse".
De følgende aritmetiske og logiske instruksjoner utføres innen én klokkesyklus: ADD,
ADC, SUB, SUBI, SBC, SBCI, AND, ANDI, OR, ORI, EOR, COM, NEG, SBR, CBR, INC, DEC, TST, CLR, SER, LSL, LSR. ROL, ROR, ASR, SWAP, CP, CPC, CPI.
Som det ses i figur 2, blir A- og B-inngangene tilgjengelige for den generelle ALU 22 nesten umiddelbart etter at instruksjonen er hentet og dekodet. Kontrollinjen ROUTA velger og avgir innholdet av registeret til én av de to innganger av ALU 22. ROUTB blir tilsvarende sikret, hvis instruksjonene spesifiserer en andre registeroperand. Alternativt tjener kontrollinjen KIN som binær inngang til ALU-en for de instruksjoner som bruker umiddelbare data. I mellomtiden utfører delenheten OPn av ALU-en (figur 7) deres respektive operasjoner, og så snart inngangene til ALUE-en er satt opp, blir resultatet tilgjengelig etter en annen liten kombinatorisk forsinkelse. Resultatet 22C av delenheten korresponderende til instruksjonene velges via kontrollinjen ALUIIP og plasseres på databussen 12. Samtidig opererer kontrollinjen D SEL muksen 130 og 132, for å velge databussinngangen D BUSS. Kontrollinjen R SEL (og WE R) velger registeret, som resultatet skal lagres i; og en "kombinatorisk forsinkelse" senere, blir resultatet klokket inn i registeret. Samtidig blir også statusflaggene satt av ALU-en klokket inn i statusregisteret (figur 6), ved å sikre
FSETALU.
En multipliseringsinstruksjon MUL utfører en multiplisering av to åttebit registre, å lagre seksten bits resultatet inn i registerparet RO/RI. Til forskjell fra andre ALU-instruksjoner krever MUL-instruksjonen to klokkesykluser: én syklus hver for å lagre én halvdel av seksten bits produktet inn i et register i registerparet.
En MOV-instruksjon gir dataoverføring mellom registre i én klokkesyklus. MOV-instruksjonen spesifiserer et kilderegister og ent destinasjonsregister. Det vises til figurene 2, 3 og 4, hvor kontrollinjen ROUTC opererer muksen 124 til å drive innholdet av det spesifiserte kilderegister til databussen 12. Samtidig opererer kontrollinjen D SEL muksene 130 og 132 til å avgi D_BUSS-en for å opptre på inngangen D til registrene; og kontrollinjene R SEL og WE R opererer velgerkontrollkretsen 134 til å klokke destinasjonsregisteret, og slik lagre innholdet levert av D_BUSS-en.
En LDI-instruksjon tillater spesifikke data å lastes inn i et register. Data er spesifisert i maskin op-koden til LDI-instruksjonen, og fremtrer som K INN-inngangen til muksen 130. Kontrollinjen D SEL opererer muksene 130 og 132 til å avgi K IN, mens kontrollinjene R SEL og WE-R opererer velgerkontrollkretsen 134 til å klokke det spesifiserte register.
Operasjoner på de seksten bits X-, Y- og Z-registrene omfatter LD-instruksjon for å overføre data til et spesifisert register fra en minneposisjon adressert av et X-, Y- og Z-register; og ST-instuksjonene for å overføre data fra et spesifisert register til en minneposisjon av et X-, Y- og Z-register. LD- og ST-instruksjonene krever to klokkesykluser for å utføres. Det vises til figurene 2 og 3, hvor under den første klokkesyklus, kontrollinjene er R OUTA og R OUTB velger registerparet til det ønskede seksten bits register (X:R27/26, Y:R29/R28 og Z:R/31/R30.) Kontrollinjene ADRSEL opererer velger 114 til å plassere B: A-utgangene på den indirekte adressebuss 14.1 tillegg, i tilfelle en ST-instruksjon, velger kontrollinjen R OUTC registeret, fra hvilket data skal leses, å plassere data på bussen 12. Under den andre klokkesyklus, avsøkes minnet for enten å laste data fra minne til bussen 12 (LD) eller skrive data til mine (ST). I tillegg, i tilfellet av en LD-instruksjon, velges kontrollinjene R SEL og WE R til å skrive data fra D BUSS til det spesifiserte register. LD- og ST-instruksjonene har hver to varianter, som er velegnet for å understøtte visse trekk ved C-språk, nemlig operasjoner for postøkning (LD+ og ST+) og preminskning (LD- og ST-) operasjoner. Som bemerket ovenfor, gir den dedikerte ALU-2, vist i figur 2 den seksten bits aritmetikk som krevd av slike operasjoner.
Postøkning: i den første klokkesyklus vil, i tillegg til den ovennevnte aktivitet for LD-og ST-instruksjoner, kontrollinjer VSEL velger +1-inngangen og ALU20P opererer den dedikerte ALU-2 for å utføre en adderingsoperasjon, etter at den seksten bits adresse er plassert på bussen 14. Resultatet av addisjonene 102 kobles til inngangene D-ALU2H og DALU2L av registerkretsen 100. Kontrollinjen D SEL i figur 3 velger muksinngangene D ALU2H og D ALLU2L, sender D ALU2H til R27, R29 og R31, og D ALU2L til R26, R28 og R30. Den passende kontrollinje WE_[XYZ]L og WE_[XYZ]H blir da sikret til å skrive data inn i det korrekte registerpar.
Preminskning: i den første klokkesyklus vil, i tillegg til den ovennevnte aktivitet for instruksjonene LD og ST, V SEL velge -1-inngangene, og ALU2 0P får ALU-2 til å utføre en addisjon. Resultatet (i) ledes tilbake til registerkretsen som beskrevet ovenfor og (ii) velges av ADR SEL til å tjene som en preminskningsadresse.
Instruksjonene LD- og ST har hver en tredje variant (LDD og STD) med den hensikt å forenkle tabelloppslagsoperasjonene. Instuksjonene LDD og STD spesifiserer en forsyningsverdi, som adderes til seksten bits adresseregister før minneaksessen. I den første klokkesysklus blir, i tillegg til den ovennevnte aktivitet for instruksjonene LD og ST, velger V_SEL K_INN-inngangen, og ALU2_OP får ALU-2 til å utføre en addisjon. Resultatet velges av ADR SEL, som tjener som en forsyningsadresse.
I tillegg til å tilveiebringe beregninger for instruksjonene LD og ST, brukes den dedikerte ALU-2 til å forenkle seksten bits instruksjoner for addering og subtrahering, nemlig instruksjonene ADIW og SBIW. Den dedikerte ALU-2 utførerer mulige beregninger med X-, Y- og Z-registerene i én klokkesyklus, hvilket ellers ikke er mulig ved bruk av den generelle ALU 22. Instuksjonene ADIW og SBIW spesifiserer én av X-, Y- og Z-registrene og en konstant verdi som skal adderes dertil. I operasjon velger kontrollinjene R OUTA og R OUTB det spesifiserte registerpar som en første inngang til det dedikerte ALU-2. V OUT velger K-INN den konstante verdi) som den andre inngang til ALU-2. ALU2 0PP velger enten adderings- eller substraheringsoperasjonen. Resultatet 102 ledes tilbake inn i DALU2H og DALU2L-inngangene til registerkretsen 100. Kontrollinjen D SEL vist i figur 3 velger muksinngangene D ALU2H og D ALU2L, sender D AUL2H til R27, 29 og r31, og D ALU2L til R26, R28 og R30. De passende kontrollinjer WE XYZL og WE XYZH blir da sikret til å skrive data inn i det ønskede registerpar.
Mikrokontrolleren tilveiebringer instruksjoner for å sette og slette de forskjellige flagg til statusregisteret 24, som hver utføres i én klokkesyklus. De omfatter: BSET og BSLR; og SEx Og CLx, hvor x er I, T, H, S, V, N, Z eller C. På assembly-språknivå krever instruksjonene SEx og CLx ingen ytterligere operander, mens instruksjonene BSET og BCLR omfatter en statusflaggoperand s, som identifiserer det aktuelle flagg.
Det vises til figur 6, hvor kontrollsignalet FSEL opererer dekoderne 204 og 206, for å velge det aktuelle flagg i tilfelle en slett flagginstruksjon, tjener kontrollinjen FCLR som et klargjøringssignal, som tilveiebringer utgang på ent klargjørings-OG-port 224 korresponderende til det aktuelle flagg. Utgangene er koblet til nullstillingsinngangen r av flipflopen, og sletter slik flipflopen. I tilfellet av et en sett flagginstruksjon, tjener kontrollinjen F SET en dobbel hensikt: for det første tjener den som en inngang til hver av flipflopene med den hensikt å sette én av statusflaggene (valgt av F SEL). For det andre er kontrollinjen FSETT et klargjøringssignal for klargjørings-OG-porten 226, hvis utgang er koblet til flipflopklokkelinjene med den hensikt å klokke inn inngangene.
Som nevnt ovenfor er et trekk ved den foreliggende oppfinnelse mikrokontroller bitaksessevnen, som tilveiebringes av énklokkesyklusen instruksjonene BST og BLD. Instruksjonene BST spesifiserer et register og en bitposisjon i registeret som skal kopieres inn i T-flagget til statusregisteret. Kontrollinjen R OUTC velger registeret, hvis innhold drives inn i databussen 12 av muksen 124. Samtidig opererer kontrollinjen BIT SEL muks 210 (figur 6) til å velge det ønskede bit fra databussen, som så lastes inn i flipflopen T ved å sikre kontrollen T-SEL.
Instruksjonen BLD lader biten lagret i T-flagget inn i den spesifiserte bit-posisjon i det spesifiserte register. Kontrollinjen F OUT opererer muksen 202 til å velge T-flagget, mens kontrollinjen T OUT driver utgangen på bit n på databussen. Samtidig, ved henvisning til figur 3, velger kontrollinjen D SEL den tredje inngang av muksene 130 og 132, og presenterer slik D_BUSSn som inngang til alle registre, kontrollinjene R SEL, BIT SEL og WE BIT (figur 4, 5a og 5b) klokker flipflopp av den ønskede register-/bitposisjonen.
De følgende instruksjoner avgrening tilveiebringes, hvor hver spesifiserer en mengde forskyvning:
I tillegg til avgreningsinstruksjonene ovenfor er instruksjonene SBRC og SBRS tilveiebrakt for å hoppe over den neste instruksjon basert på utfallet av testing av en bestemt del av et bestemt register. Tilsvarende sammenligner instruksjonen CPSE innholdet av to registre og hopper over den neste instruksjon basert på utfallet av sammenligningen, nemlig hopp hvis lik. Disse instruksjoner utføres i én eller to klokkesykluser, avhengig av om det tas en avgrening.
Det vises til figur 6 og 9, hvor ved henting av en BRxx-instruksjon, kontrollinjen F OUT bærer kontrollsignaler, for å gi det ønskede statusflagg fra muks 202, og enten FTST SET eller FTSTCLR sikres, slik at bittestinnretningen 208 utfører den passende bittest. I mellomtiden har programtelleren 28 blitt økt og neste instruksjon forhåndshentet. Hvis bittesten mislykkes, blir den forhåndshentede instruksjon tatt som den neste instruksjon som skal utføres. Hvis bittesten lykkes, blir kontrollinjen BR_SKP sikret, hvilket får programtelleren til å danne avgreningsadressen og instruksjonsregisteret 25 til å bli lastet med den nye instruksjon. Lasting av en ny instruksjon krever en andre klokkesyklus.
Det vises til figur 3, hvor det er vist at generering av kontrollsignalet BRSKP med henvisning til instruksjonene SBRS. Det ønskede register velges av muksen 120 via kontrollinjen R OUTA og koblet il inngangen av muks 136. Kontrollinjen BIT SEL opererer muksen 136 til å avgi det ønskede bit, som da testes i bittestinnretningen 138 ved sikring av enten kontrollinjen BTSTCLR eller BTSTSET. Kontrollinjen BR SKP sikres, avhengig av utfallet av testen.
Det vises til figur 3 og 7, idet generering av kontrollsignalet BR SKP, med henblikk på instruksjonene CPSE, vil bli forklart. Innholdet av de to aktuelle registre vil gjøres tilgjengelig på A- og B-inngangene av den generelle ALU 22 ved operasjon av muksene 120 og 122 via kontrollinjene R OUTA og R OUTB.
"Sammenlignsnings" operasjonene utføres i ALU-en via XOR-porten 23 og OG-porten 24. Kontrollinjen CPSE sikres for å klargjøre utgangen av OG-porten, slik at BR SKP er sikret, når A=B.
De følgende instruksjoner for ubetingede avgreninger er tilveiebrakt. Instruksjonen RJMP spesifiserer en forskyvningsverdi som adderes til programtelleren for å produsere en relativ hoppadresse, instruksjonen JMP benytter innholdet av Z-registeret som hoppadressen, og instruksjonen IJMP spesifiserer en hoppadresse som lastes inn i programtelleren. Instruksjonen IJMP genererer kontrollsignaler for kontrollinjene R OUTA og R OUTB for å velge registerparet R31/R30 som omfatter Z-registeret. Som det kan ses fra figur 2, er muksen 114 operert av ADDR SEL til å drive innholdet av Z-registeret inn i den indirekte adressebuss 14, som da lastes inn i programtelleren 28.
De følgende subrutinerelaterte instruksjoner er tilveiebrakt: instruksjonen CALL spesifiserer en adresse som er begynnelsesadressen til en subrutine, instruksjonen RCALL spesifiserer en forskyvningsverdi som adderes til programtelleren for å produsere begynnelsesadressen til subrutinen, og instruksjonen ICALL benytter innholdet av Z-registeret som begynnelsesadressen til subrutinen. Under utførelse av instruksjonen ICALL opereres registerfilen 20 på samme måte som beskrevet ovenfor for instruksjonen IJMP. Instruksjonene for kall av subrutine opererer også stakkpekeren og stakken, nemlig området i RAM-en adressert av stakkpekeren, for å lagre returadressen.
Instruksjonene for subrutineretur inkludert standard RET-instruksjonen simpelthen laster programtelleren med innholdet på toppen av stakken og oppdaterer stakkpekeren tilsvarende. I tillegg er det tilveiebrakt en instruksjon RETI for en retur fra en avbruddsbehandler. Instruksjonen RETI opererer på samme måte som RET, med den ytterligere handling å sette I-flagget i statusregisteret.
Instruksjonene PUSH og POP opererer stakkpekeren ved å sikre kontrollinjene SP INC og SP DEC tilsvarende og skrive til og lese fra stakken (i RAM).
Instruksjonene IN og OUT brukes til å overføre data via databussen 12 mellom et register og et I/O-port dataregister, som består av en serie flipfloper slik som registrene i registerfilen. Instruksjonen IN laster data fra en I/O-port inn i et register. Innholdet av dataregisteret til den spesifiserte port drives inn i databussen 12. Kontrollinjen D SEL opererer muksene 130, 132 til å avgi DBUS. Kontrollinjene R SEL og WE R opererer velgerkontrollkretsen 134 slik at det ønskede register klokker inn dataene. Motsatt laster instruksjonen OUT data fra et register til en I/O-port. Data lastes fra det spesifiserte register inn i databussen ved å sikre R OUTC. Flipflopene i dataregisteret til den valgte port blir da operert til å klokke inn dataene som fremstår på databussen 12.
Instruksjonen LPM laster en byte med data fra programminnet inn i register RO. Adressen i programminnet er inneholdt i Z-registeret. Z-registeret aksesseres ved å sikre R_OUTA og R OUTB til å avgi registrene R31/R30 på muksene 120, 122, og drive den resulterende sekstenbits verdi (figur 2) inn i adressebussen 14 via muksen 114. Programminnet aksesseres og dataene lastes inn i databussen. Kontrollinjen D SEL (figur 3) velger DBUS-inngangen mens kontrollinjene R SEL og WE R opererer velgerkontrollkretsen til å klokke flipflopene korresponderende til register RO, og laster slik D BUS inn i register RO.
Instruksjonen SLEEP setter mikrokontrolleren i hvilemodus. Ved vekking av et avbrudd, blir programtelleren og instruksjonsregisteret operert til å laste og utføre instruksjonen som etterfølger SLEEP-instruksjonen før avbruddsbehandleren utføres.
Mikrokontrolleren omfatter en vakttimer 300 (figur 1) som vil forårsake en nullstilling av mikrokontrolleren med mindre timeren nullstilles innen en bestemt tidsperiode som kan velges av brukeren. Figur 11 viser at timeren 300 består av en teller 302 med en rekke utganger koblet til en velger 304. Telleren klokkes av den interne oscillator som kjører på en MHz. Hver utgang av telleren sikres etter et bestemt antall tellinger. Telleren 302 opererer derfor som en forsinkelsesinnretning med en rekke forsinkelsestider. Som vist i figur 11, kan tellerutgangene tilveiebringe forsinkelsestider fra 16 ms til 2048 ms i en 16 ms trinn. Forsinkelsestiden velges av kontrollinjene WDSEL via velgeren 304, hvis utgang er koblet til en klargjørende OG port 306 som klargjøres av kontrollinjen WDE. Når en tidsperiode like den valgte forsinkelsestid har passert den korresponderende teller, går utgangen høy og slik sikres linjen MCU RESET. Kontrollinjene WD SEL og WD E er utgangene av flipfloper som omfatter vaktregisteret 308. Data leses inn i registeret 308 via databussen 12.
Instruksjonen WDR brukes til å nullstille vakttimeren 300. Instruksjonsdekoderen 23 genererer et signal WDRST som nullstiller telleren 302. Når så timeren klargjøres (WD E er HØY), må en instruksjon WDR utføres med en frekvens som korresponderer til den valgte forsinkelsestid. Ellers vil mikrokontrolleren bli nullstilt.
Claims (40)
1. Mikrokontroller,
karakterisert ved: et instruksjonssett, et programminne (25) for å lage instruksjoner - ALUl_OP:n,ALU2_OP:n - valgt fra instruksjonssettet, en enhet for utførelse av instruksjoner (23) med en rekke kontrollinjer for å tilveiebringe kontrollsignaler som svar på utførelse av en instruksjon, henteinnretninger (21) for å tilveiebringe en instruksjon fra programminnet (25) og laste den tilveiebrakte instruksjon inn i enheten for utførelse av instruksjoner (23), en programbuss som kobler henteinnretningen (21) til enheten for utførelse av instruksjoner (23), et dataminne (27) separat fra programminnet (25), idet dataminnet har et adresserom, en åtte-bits databuss (12) separat fra programbussen, idet databussen er koblet til dataminnet (27), en registerfil (20,100) koblet til databussen (12), idet registerfilen har en rekke åtte-bits registre (RO - R31), registerfilen videre har kombinasjons innretninger (102, 104,114) for å aksessere to av de åttebitregistrene (R27/R26, R31/R30) som et enkelt logisk sekstenbits register (X, Y, Z), idet registerfilen videre har en dedikert ALU (ALU 2) koblet til kombinasjonsinnretningene for å utføre aritmetiske funksjoner på et logisk sekstenbits register aksessert via kombineringsinnretningene, en ALU ( ALUl, 22) for generelt bruk med første og andre innganger (A, B) koblet til registerfilen for å motta innholdet av to åtte-bits registre, hvor den generelle ALU har en tredje inngang (K IN) for å motta et konstant verdi datum, den generelle ALU har innretninger (OPI - Opn, 22A) for selektivt å operere på første, andre og tredje innganger for å produsere en utgang i én klokke syklus, den generelle ALU har en utgang koblet til databussen, et statusregister (24) koblet til databussen (12) og til den generelle ALU (ALU l, 22), hvor statusregistret har flagg inkludert et avbrudd klargjøringsflagg (I), et bitoverføringsflagg (T), et halv menteoverføringsflagg (H), et toerkomplement overflytflagg(V), et negativ flagg (N), et fortegnsbit (S), et nullflagg (Z) og et menteoverføringsbit (C), idet statusregisteret videre har en bittestinnretning (208) for å aksessere og teste ett av flaggene, en direkteadressebuss (16) som kobler enheten for utførelse av instruksjoner (23) for direkte å aksessere enten dataminnet (27) eller registerfilen (20) under programutførelse, og en indirekte adressebuss (14) for å forsyne registerfilen (20) med indirekte dataaksess til dataminnet (27) under programutførelse, idet indirekteadressebussen har innretninger for adressemottak (14') for å motta en sekstenbits verdi fra kombinasjonsinnretningen (102, 104, 114) for å tjene som en sekstenbitadresse, idet åtte-bitsregistrene (RO —R31) i registerfilen (20) har adresser definert innen adresserommet til dataminnet (27), og derved er tilgjengelig både som registre og som minneposisjoner.
2. Mikrokontroller ifølge krav 1,
karakterisert ved at den videre omfatter et sidevekslingsregister RAMPX, RAMPY, RAMPZ) og en adressedannende innretning (11, 13) for å danne en adresse fra både innholdet av nevnte sidevekslingsregister og et sekstenbits datum levert av nevnte kombinasjonsinnretning (102, 104, 114).
3. Mikrokontroller ifølge krav 2,
karakterisert ved at nevnte sidevekslingsregister (RAMPX, RAMPY, RAMPZ) er et åtte-bitsregister, og sidevekslingsregisteret er koblet til nevnte åtte-bitsdatabuss (12), hvorved lasting av en verdi inn i nevnte sidevekslingsregister spesifiserer én av 256 sider på hver 64 KB.
4. Mikrokontroller ifølge krav 1,
karakterisert ved at den videre omfatter instruksjoner BST og BLD som hver har en maskin op-kode som spesifiserer et register og en bitidentifikator, idet enheten for utførelse av instruksjoner (23) produserer bitmanipulasjonskontrollsignaler som svar på utførelse av instruksjonene BST og BLD, bitmanipulasjonskontrollsignalene virker til å: (i) operere registerfilen (20, 134) til å aksessere registeret og bitposisjonen identifisert av bitidentifikatoren, og (ii) overføre enten innholdet av en aksessert bitposisjon til bitoverføringsflagget (T) i statusregisteret (24) eller innholdet av bitoverføringsflagget til den aksesserte bitposisjon.
5. Mikrokontroller ifølge krav 4,
karakterisert ved at den videre omfatter en første rekke instruksjoner som hver har en maskin op-kode som spesifiserer et destinasjonsregister og et kilderegisterpar, idet enheten for utførelse av instruksjoner virker til å produsere første kontrollsignaler (R_OUTA, R_OUTB, R SEL, WE_R, ADDRSEL) som svar på utførelse av en av de første instruksjoner, de første kontrollsignaler virker til: (i) å operere kombinasjonsinnretningen i registerfilen til å levere innholdet av kilderegisterparet som en indirekte adresse, (ii) operere dataminnet til å aksessere innholdet av en minneposisjon presisert av den indirekte adresse, og (iii) å operere registerfilen til å lagre innholdet av minneposisjonen inn i destinasjonsregisteret, hvor de første instruksjoner inkluderer LD, LD+, LD- og LDD.
6. Mikrokontroller ifølge krav 5,
karakterisert ved at den videre omfatter en andre rekke av instruksjoner som hver har en maskin op-kode som spesifiserer et destinasjonsregisterpar og et kilderegister, idet enheten for utførelse av instruksjoner virker til å produsere andre kontrollsignaler som svar på utførelse av en av de andre instruksjoner, de andre kontrollsignaler (ROUT_A, R_OUTB, R_OUTC, ADDR SEL) virker til: (i) å operere registerfilen til å aksessere innholdet av kilderegisteret, (ii) å operere kombinasjonsinnretningen i registerfilen til å levere innholdet av destinasjonsregisterparet som en indirekte adresse, og (iii) å operere dataminnet til å lagre innholdet av kilderegisteret til en minneposisjon spesifisert ved den indirekte adresse, idet de andre instruksjoner inkluderer ST, ST+, ST-, STD.
7. Mikrokontroller ifølge krav 6,
karakterisert ved at enheten for utførelse av instruksjoner videre virker til å produsere, som svar på utførelse av instruksjonene LD+ og ST+, kontrollsignaler (V SEL, +1 input, ALU20P) som opererer den dedikerte ALU (ALU 2) i registerfilen til å øke innholdet av registerparet.
8. Mikrokontroller ifølge krav 6,
karakterisert ved at enheten for utførelse av instruksjoner videre virker til å produsere, som svar på utførelse av instruksjonene LD- og ST-, kontrollsignaler (V_SEL, -1 input, ALU2 0P) som opererer den dedikerte ALU (ALU2 0P) i registerfilen til å minske innholdet av registerparet.
9. Mikrokontroller ifølge krav 6,
karakterisert ved at maskin op-kodene til instruksjonene LDD og STD videre inkluderer en forskyvningsverdi, hvor enheten for utførelse av instruksjoner videre virker til å produsere, som svar på utførelse av instruksjonene LDD og STD, kontrollsignaler (V SEL, KIN input, ALU20P) som opererer den dedikerte ALU (ALU20P) i registerfilen til å addere forskyvningsverdien til den indirekte adresse levert av kombinasjonsinnretningen.
10. Mikrokontroller ifølge krav 6,
karakterisert ved at den videre omfatter en multipliseringsinstruksjon (MVL) med en maskin op-kode som spesifiserer et multipliseringsregister og et multiplikandregister, hvor multipliseringsinstruksjonen har assosiserte høye byte (R!) og lave byte (RO) destinasjonsregistre, enheten for utførelse av instruksjoner virker til å produsere multipliseringskontrollsignaler (R OUTA, R OUTB, ALUl_OP, R SEL, WE R) som svar på utførelse av multipliseringsinstruksjonen, multipliseringskontrollsignalene virker til: (i) å operere registerfilen til å levere innholdet av registrene identifisert ved multipliserings- og multiplikandregistrene som innganger til den generelle ALU, (ii) å operere den generelle ALU (ALU l, 22) til å utføre multipliseringsoperasjonen, og (iii) å operere registerfilen til å lagre utgangen av multipliseringsoperasjonen inn i registrene identifisert ved høye byte og lave byte destinasjonsregistrene.
11. Mikrokontroller ifølge krav 10,
karakterisert ved at den videre omfatter en tredje rekke instruksjoner som hver har en maskin op-kode som spesifiserer et første register og et andre register, hvor enheten for utførelse av instruksjoner virker til å produsere tredje kontrollsignaler (R_OUTA, R_OUTB, ALUl_OP, R SEL, WE_R) som svar på utførelse av en av de tredje instruksjoner, de tredje kontrollsignaler virker til: (i) å operere registerfilen til å tilveiebringe innholdet av første og andre registre som innganger til den generelle ALU (ALU l, 22), (ii) å operere den generelle ALU til å utføre en ALU-operasjon spesifisert i op-koden, og (iii) å operere registerfilen til å lagre utgangen av ALU-operasjonen inn i det første register, idet de tredje instruksjoner inkluderer ADD, ADC, SUB, SBC, AND, OR og EOR.
12. Mikrokontroller ifølge krav 11,
karakterisert ved at den videre omfatter en fjerde rekke med instruksjoner som hver har en maskin op-kode som spesifiserer et register og en konstantverdi, hvor enheten for utførelse av instruksjoner virker til å produsere fjerde kontrollsignaler (R_OUTA, K_IN, ALUl_OP, R SEL, WE_R) som svar på utførelse av en av de fjerde instruksjoner, de fjerde kontrollsignaler virker til: (i) å operere registerfilen til å tilveiebringe innholdet av registeret som en første inngang til den generelle ALU, (ii) å levere konstantverdien som en fjerde inngang til den generelle ALU (ALU_1, 22), og (iii) å operere den generelle ALU til å utføre en ALU-operasjon spesifisert i op-koden, og (iv) å operere registerfilen til å lagre utgangen av ALU-operasjonen inn i registeret, idet de fjerde instruksjoner inkluderer SUBI, SBCI, ANDI, ORI, SBR og CBR.
13. Mikrokontroller ifølge krav 12,
karakterisert ved at den videre omfatter en femte rekke med instruksjoner, som hver har en maskin op-kode, som spesifiserer et register, hvor enheten for utførelse av instruksjonen virker til å produsere femte kontrollsignaler (RUOTA, ALUIOP, R SEL, WE R) som svar på utførelse av én av de femte instruksjoner, de femte kontrollsignaler virker til: (i) å operere registerfilen til å levere innholdet av registeret som en inngang til den generelle ALU, (II) operere den generelle ALU (ALUl, 22) til å utføre en ALU-operasjon spesifisert i op-koden, og (iii) å operere registerfilen til å lagre utgangen av ALU-operasjonen i registeret, idet de femte instruksjoner inkluderer COM, NEG, INC, DEC, TST, CLR og SER.
14. Mikrokontroller ifølge krav 13,
karakterisert ved at den videre omfatter en sjette rekke med instruksjoner, som hver har en maskin op-kode, som spesifiserer en statusbit (Z, C, N, S, H, T, V, I) og en forsyningsverdi, hvor enheten for utførelse av instruksjoner virker til å produsere de sjette kontrollsignaler (F_OUT, FTSTSET, FTSTCLR, BR_SKP) som svar på én av de sjette instruksjoner, de sjette kontrollsignaler virker til: (i) å operere bittestinnretningen til å teste statusbitet og (ii) basert på utfallet av det testede statusbit, valgfritt å operere henteinnretning (21), slik at den -neste instruksjon som skal lastes for utførelse tilveiebringes fra en posisjon i programminnet som er forskjøvet fra posisjonene til gjeldende instruksjon med en mengde lik forskyvningsverdien, idet de sjette instruksjoner inkluderer BREQ, BRNE, BRCS, BRCC, BRSH, BRLO, BRMI, BRPL, BRHS, BRHC, BRTS, BRTS, BRTC, BRVS, BRVC, BRID, BRIE, BRBC, BRBS, BRGE og BRLT.
15. Mikrokontroller ifølge krav 14,
karakterisert ved at den videre omfatter en syvende rekke med instruksjoner, som hver har en maskin op-kode, som spesifiserer et registerpar (X, Y, Z) og en konstant verdi (K IN), hvor enheten for utførelse av instruksjoner virker til å produsere syvende kontrollsignaler (R_OUTA, R_OUTB, V_OUT, ALU2_OP, D SEL, WE_[XYZ]L, WE_[XYZ]H) som svar på utførelse av én av de syvende instruksjoner, de syvende kontrollsignaler virker til: (i) å operere kombinasjonsinnretningen i registerfilen til å levere innholdet i registerparet som en inngang til den dedikerte ALU (ALU2), (ii) å tilveiebringe den konstante verdi som en annen inngang til den dedikerte ALU (ALU_2), (iii) å operere ALU-en til å utføre addering eller subtraksjon, og (iv) å operere registerfilen til å lagre resultatet av operasjonen i registerparet, idet de syvende instruksjoner inkluderer ADIW og SBIW.
16. Mikrokontroller ifølge krav 15,
karakterisert ved at den videre omfatter et åttende flertall av instruksjoner, som hver har en maskin op-kode, som spesifiserer et register og en bitidentifikator, hvor enheten for utførelse av instruksjoner virker til å produsere åttende kontrollsignaler (R_OUTA, BIT SEL, BTSTCLR, BTSTSET, BR_SKP) som svar på utførelse av én av de åttende instruksjoner, de åttende kontrollsignaler virker til: (i) å operere registerfilen til å teste registeret og teste et bit spesifisert av bitidentifikatoren og (ii) basert på utfallet av det testede bit, valgfritt å operere henteinnretningen til å overskyte den neste instruksjon, idet de åttende instruksjoner inkluderer SBRRC og SBRS.
17. Mikrokontroller ifølge krav 16,
karakterisert ved at den videre omfatter en CPI-instruksjon med en maskin op-kode, som spesifiserer et register og en konstant verdi, hvor enheten for utførelse av CPI-instruksjoner virker til å produserer SPI-kontrollsignaler (ROUT A, K IN, ALUI OP) som svar på utførelse av CPI-instruksjonen, CPI-kontrollsignalene virker til: (i) å operere registerfilen til å operere innholdet av registeret som en første inngang til den dedikerte ALU (ALU2), (II) å tilveiebringe den konstante verdi som en andre inngang til den dedikerte ALU, og (iii) å operere den dedikerte ALU til å subtrahere den andre inngang fra den første inngang.
18. Mikrokontroller ifølge krav 17,
karakterisert ved at den videre omfatter en CPC-instruksjon med en første maskin op-kode, som spesifiserer første og andre registre, hvor enheten for utførelse av instruksjoner virker til å produsere CPC-kontrollsignaler (R OUTA, R OUTB, ALUI OP) som svar på utførelse av CPC-instruksjonen, CPC-kontrollsignalene virker til: (i) å operere registerfilen til å levere innholdet av de første og andre registre som innganger til den dedikerte ALU (ALU2) og (ii) å operere den dedikerte ALU til å beregne
Rf-R8-C, hvor
Rf er det føreste register
Rs er det andre register, og
C er menteoverføringsbitet
19. Mikrokontroller ifølge krav 18,
karakterisert ved at den videre omfatter en CP-instruksjon med en maskin op-kode, som spesifiserer første og andre registre, hvor enheten for utførelse av instruksjoner virker til å produsere CP-kontrollsignaler (R OUTA, R OUTB, ALUI OP) som svar på utførelse av CP-instruksjonen, CP-kontrollsignalene virker til: (i) å operere registerfilen til å levere innholdet av respektivt de første og andre registre, respektivt som første og andre innganger til den dedikerte ALU (ALU_2) og (ii) å operere den dedikerte ALU til å subtrahere den andre inngang fra den første inngang.
20. Mikrokontroller ifølge krav 19,
karakterisert ved at den videre omfatter en CPSE-instruksjon med en maskin op-kode, som spesifiserer første og andre registre, hvor enheten for utførelse av instruksjoner virker til å produsere CPSE-kontrollsignaler (R OUTA, R OUTB, CPSE, BR SKP) som svar på utførelse av CPSE-instruksjonen, CPSE-kontrollsignalene virker til: (i) å operere registerfilen til å levere innholdet av registrene identifisert av respektivt de første og andre registre som første og andre innganger til den generelle ALU (ALU_1, 22), (ii) å operere den generelle ALU til å sammenligne de første og andre innganger, og (iii) basert på utfallet av en sammenligning, valgfritt å operere henteinnretningen til å operere den neste instruksjon.
21. Mikrokontroller ifølge krav 20,
karakterisert ved at den videre omfatter en niende rekke, med instruksjoner, som hver har en maskin op-kode, som spesifiserer en forskyvningsverdi, hvor enheten for utførelse av instruksjoner virker til å produsere niende kontrollsignaler (ADDR SEL) som svar på utførelse av én av niende instruksjoner, de niende kontrollsignaler virker til å operere henteinnretningen (21) , slik at den neste instruksjon, som skal lastet for utførelse, tilveiebringes fra en posisjon i programminnet (25) som er forskjøvet fra posisjonen til gjeldende instruksjon med en mengde lik forskyvningsverdien, idet de niende instruksjoner inkluderer RJMP og JMP.
22. Mikrokontroller ifølge krav 21,
karakterisert ved at den videre omfatter en IJMP-instruksjon, hvor enheten for utførelse av instruksjoner virker til å produsere IJMP-kontrollsignaler (R OUTA, R_OUTB, ADDR SEL) som svar på utførelse av IJMP-instruksjonen, IJMP-kontrollsignalene virker til: (i) å operere kombinasjonsinnretningen (102, 104,114) i registerfilen til å levere innholdet av to registre (R31/R30, Z) som en enkelt forskyvningsverdi, og (ii) å operere henteinnretningen (21), slik at den neste instruksjon, som skal lastes for utførelse, tilveiebringes fra en posisjon i programminnet (25) som er forskjøvet i posisjonene til gjeldende instruksjon med en mengde lik den enkle forskyvingsverdi.
23. Mikrokontroller ifølge krav 22,
karakterisert ved at den videre omfatter en tiende rekke med instruksjoner, som hver har en maskin op-kode, som spesifiserer en forskyvningsverdi, hvor enheten for utførelse av instruksjoner virker til å produsere tiende kontrollsignaler (ADDR SEL) som svar på utførelse av én av de tiende instruksjoner, de tiende kontrollsignaler virker til: (i) å skyve posisjonen i programminnet (25) til den neste instruksjon som skal utføres opp på stakken (26), og (ii) å operere henteinnretningen (21), slik at den neste instruksjon, som skal lastes for utførelse, tilveiebringes fra en posisjon i programminnet som er forskjøvet fra posisjonen til den gjeldende instruksjon med en mengde lik forskyvningsverdien, idet de tiende instruksjoner inkluderer RCALL og CALL.
24. Mikrokontroller ifølge krav 23,
karakterisert ved at den videre omfatter en ICALL-instruksjon, hvor enheten for utførelse av instruksjoner virker til å produsere ICALL-kontrollsignaler (ADDR SEL) som svar på utførelse av ICALL-instruksjonen, ICALL-kontrollsignalene virker til: (i) å operere kombinasjonsinnretningen (102, 104, 114) i registerfilen til å levere innholdet av to registre (R31/R30, Z) som en enkelt forskyvningsverdi, (ii) å skyve posisjonen i programminnet (25) til den neste instruksjon som skal utføres opp på stakken, og (iii) å operere henteinnretningen (21), slik at den neste instruksjon, som skal lastet for utførelse, tilveiebringes fra en posisjon i programminnnet (25) som er forskjøvet fra posisjonene til den gjeldende instruksjon med en mengde lik den enkle forskyvningsverdi.
25. Mikrokontroller ifølge krav 24,
karakterisert ved at den videre omfatter en ellevte rekke av instruksjoner, som hver har en maskin op-kode, som spesifiserer en forskyvningsverdi, hvor enheten for utførelse av instruksjoner virker til å produsere ellevte kontrollsignaler (ADDR SEL) som svar på utførelse av én av de ellevte instruksjoner, de ellevte kontrollsignaler virker til: (i) å åpne (popping) stakken (26)for å oppnå en posisjon i programminnet (25), (ii) å operere henteinnretningen (21), slik at den neste instruksjon, som skal lastes for utførelse basert på posisjonen i programminnet (25) tilveiebrakt fra stakken, idet de ellevte instruksjoner inkluderer RET og RETI.
26. Mikrokontroller ifølge krav 25,
karakterisert ved at enheten for utførelse av instruksjoner videre produserer, som svar på utførelse av instruksjonen RETI, kontrollsignaler som opererer statusregisteret til å sette det globale avbruddsflagg (I).
27. Mikrokontroller ifølge krav 26,
karakterisert ved at den videre omfatter en tolvte rekke av instruksjoner, som hver har en maskin op-kode, som spesifiserer et destinasjonsregister og en datakilde, hvor enheten for utførelse av instruksjoner virker til å produsere tolvte kontrollsignaler (R SEL, WE R, R OUTC, K IN, D SEL) som svar på utførelse av én av de tolvte instruksjoner, de tolvte kontrollsignaler virker til: (i) å operere registerfilen til å aksessere innholdet av et register, hvis datakilden er et register og (ii) å operere registerfilen til å lagre i destinasjonsregisteret enten aksessert registerinnhold, hvis datakilden er et register, eller selve datakilden, hvis datakilden er en konstant verdi, idet de tolvte instruksjoner inkluderer MOV og LDI.
28. Mikrokontroller ifølge krav 27,
karakterisert ved at den videre omfatter en instruksjon PUSH, som spesifiserer et register, hvor enheten for utførelse av instruksjoner virker til å produsere PUSH-kontrollsignaler (SPINC) som svar på utførelse av instruksjonen PUSH, PUSH-kontrollsignalene virker til: (i) å oppdatere stakkpekeren (26) til å peke på en neste instruksjon i stakken og (ii) å operere stakken (26)til å motta innholdet av registeret.
29. Mikrokontroller ifølge krav 28,
karakterisert ved at den videre omfatter en instruksjon POP, som spesifiserer et register, hvor enheten for utførelse av instruksjoner virker til å produsere POP-kontrollsignaler som svar på utførelse av instruksjonen POP, POP-kontrollsignalene virker til: (i) å operere stakken til å lagre innholdet derav til registeret og (ii) å oppdatere stakkpekeren (26) til å peke til en tidligere posisjon i stakken.
30. Mikrokontroller ifølge krav 29,
karakterisert ved at den videre omfatter en instruksjon IN og OUT, som hver har en maskin op-kode , som spesifiserer en port (PORT A, PORT B) og et register, hvor enheten for utførelse av instruksjoner virker til å produsere portkontrollsignaler (R SEL, WE R, R OUTC, D SEL) som svar på utførelse av en av instruksjonene IN og UT, portkontrollsignalene virker til: (i) å operere registerfilen til å aksessere registeret og (ii) enten overføre innholdet fra det aksesserte register til porten eller overføre innholdet av porten til det aksesserte registeret.
31. Mikrokontroller ifølge krav 30,
karakterisert ved at den videre omfatter en instruksjon LMP, hvor enheten for utførelse av instruksjoner virker til å produsere LPM-kontrollsignaler (R OUTA, R_OUTB, R SEL, WE R, D SEL) som svar på utførelse av LPM-instruksjonen, LPM-kontrollsignalene virker til: (i) å operere kombinasjonsinnretningen (102, 104, 114) i registerfilen (20) til å levere innholdet av to registre (R31/R30, Z) som en programadresse, (ii) å aksessere data i en minneposisjon i programminnet (25) spesifisert ved programadressen, og (iii) å operere registerfilen til å lagre de aksesserte data i et register (RO).
32. Mikrokontroller ifølge krav 31,
karakterisert ved at den videre omfatter en trettende rekke med instruksjoner, hvor enheten for utførelse av instruksjoner virker til å produsere trettende kontrollsignaler (F SEL, F SET, FCLR) som svar på utførelse av én av de trettende instruksjoner, de trettende kontrollsignaler virker til: (i) å operere statusregisteret (24) for å aksessere et bit (I, T, H, S, V, N, Z, C) deri og (ii) enten sette eller slette det aksesserte bit, idet de trettende instruksjoner inkluderer SEC, CLC, SEN, CLN, SEZ, CLZ, SEI, CLI, SES, CLS, SEV, CLV, SET, CLT, SEH, CHL, BSET og BCLR.
33. Mikrokontroller ifølge krav 32,
karakterisert ved at den videre omfatter en instruksjon LSL, som spesifiserer et register, hvor enheten for utførelse av instruksjoner virker til å produsere første skift-kontrollsignaler (R OUTA, ALUl_OP, R SEL, WE R) som svar på utførelse av instruksjonen LSL, de første skift-kontrollsignaler virker til: (i) å operere registerfilen til å aksessere registeret, (ii) å skifte det mest signifikante bit i det aksesserte register i menteoverføringsbitet, (iii) å skifte bitene én posisjon til venstre, og (iv) å slette det minst signifikante bit.
34. Mikrokontroller ifølge krav 33,
karakterisert ved at den videre omfatter en instruksjon LSR, som spesifiserer et register, hvor enheten for utførelse av instruksjonen virker til å produsere andre skift-kontrollsignaler (R OUTA, ALUI OP, R SEL, WE R) som svar på utførelse av instruksjonen LSR, de andre skift-kontrollsignaler virker til: (i) å operere registerfilen til å aksessere registeret, (ii) å skifte det minst signifikante bit i det aksesserte register inn i menteoverføringsbitet, (iii) å skifte bitene én posisjon til høyre, og (iv) å slette det meste signifikante bit.
35. Mikrokontroller ifølge krav 34,
karakterisert ved at den videre omfatter en instruksjon ROL, som spesifiserer et register, hvor enheten for utførelse av instruksjoner virker til å produsere tredje skift-kontrollsignaler som svar på utførelse av instruksjonen ROL, de tredje skift-kontrollsignaler (R_OUTA, ALUl_OP, R SEL, WE_R) virker til: (i) å operere registerfilen til å aksessere registeret, (ii) å skifte bitene én posisjon til venstre, (iii) å skifte menteoverføringsbitet inn i det minst signifikante bit, og (iv) å skrifte det mest signifikante bit inn i menteoverføringsbitet.
36. Mikrokontroller ifølge krav 35,
karakterisert ved at den videre omfatter en instruksjon ROR, som spesifiserer et register, hvor enheten for utførelse av instruksjoner virker til å produsere fjerde skift-kontrollsignaler (R OUTA, ALUl_OP, R SEL, WE R) som svar på utførelse av instruksjonen ROR, de fjerde skift-kontrollsignaler virker til: (i) å operere registerfilen til å aksessere registeret, (ii) å skifte bitene én posisjon til høyre, (iii) å skifte menteoverføringsbitet inn i det mest signifikante bit, og (iv) å skifte det minst signifikante bit inn i menteoverførngsbitet.
37. Mikrokontroller ifølge krav 36,
karakterisert ved at den videre omfatter en instruksjon ASR, som spesifiserer et register, hvor enheten for utførelse av instruksjonen virker til å produsere femte skift-kontrollsignaler som svar på utførelse av instruksjonen ASR, de femte skift-kontrollsignaler (R_OUTA, ALUl_OP, R SEL, WE_R) virker til: (i) å operere registerfilen til å aksessere registeret, (ii) skifte bitsene én posisjon til høyre, og (iii) å skifte det minst signifikante bit inn i menteoverføringsbitet
38. Mikrokontroller ifølge krav 37,
karakterisert ved at den videre omfatter en instruksjon SWAP, som spesifiserer et register, hvor enheten for utførelse av instruksjoner virker til å produsere byttekontrollsignaler (R OUTA, ALUl_OP, R SEL, WE R) som svar på utførelse av SWAP instruksjonen, byttekontrollsignaler virker til: (i)å operere registerfilen til å aksessere registeret og (ii) å bytte de høye og lave nibler i det aksesserte register.
39. Mikrokontroller ifølge krav 38,
karakterisert ved at den videre omfatter en instruksjon SLEEP, som spesifiserer et register, hvor enheten for utførelse av instruksjoner virker til å produsere sovekontrollsignaler som svar på utførelse av instruksjonen SLEEP, sovekontrollsignalene virker til å plassere mikrokontrolleren inn i et sovemodus.
40. Mikrokontroller ifølge krav 39,
karakterisert ved at den videre omfatter en vakttimer (300) med en vaktnullstillingslinje (WDRST),
en MCU-nullstillingslinje, og en forsinkelsesinnretning (302, 304, 306, WD SEL, WD E) for å sikre et signal på MCU-nullstillingslinjen etter forsinkelse i en tidsperiode,
MCU-nullstillingslinjen koblet til å forårsake en nullstilling av mikrokontrolleren ved sikring av et signal av forsinkelsesinnretningen,
vaktnullstillingslinjen koblet til forsinkelsesinnretningen for å initiere en forsinkelsesperiode,
mikrokontrolleren inkluderer videre en WDR instruksjon, hvor enheten for utførelse av instruksjoner (32), som svar på utførelse av WDR-instruksjonene, hvilket virker til å sikre et signal (WD RST) på vaktnullstillingslinjen, for derved å initiere en forsinkelsesperiode.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/824,932 US5809327A (en) | 1997-03-27 | 1997-03-27 | Eight-bit microcontroller having a risc architecture |
PCT/US1998/005049 WO1998044427A1 (en) | 1997-03-27 | 1998-03-13 | Eight-bit microcontroller having a risc architecture |
Publications (3)
Publication Number | Publication Date |
---|---|
NO994169D0 NO994169D0 (no) | 1999-08-27 |
NO994169L NO994169L (no) | 1999-11-29 |
NO324825B1 true NO324825B1 (no) | 2007-12-10 |
Family
ID=25242688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO19994169A NO324825B1 (no) | 1997-03-27 | 1999-08-27 | Atte-bit mikroprosessor med RISC-arkitektur |
Country Status (12)
Country | Link |
---|---|
US (1) | US5809327A (no) |
EP (1) | EP1012735B1 (no) |
JP (2) | JP4386467B2 (no) |
KR (1) | KR100462951B1 (no) |
CN (1) | CN1121014C (no) |
CA (1) | CA2275172C (no) |
DE (1) | DE69839487D1 (no) |
HK (1) | HK1024546A1 (no) |
MY (1) | MY115901A (no) |
NO (1) | NO324825B1 (no) |
TW (1) | TW367439B (no) |
WO (1) | WO1998044427A1 (no) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6055211A (en) * | 1997-07-03 | 2000-04-25 | Microchip Technology Incorporated | Force page zero paging scheme for microcontrollers using data random access memory |
US6243798B1 (en) * | 1997-10-28 | 2001-06-05 | Microchip Technology Incorporated | Computer system for allowing a two word jump instruction to be executed in the same number of cycles as a single word jump instruction |
US6754809B1 (en) * | 1999-12-30 | 2004-06-22 | Texas Instruments Incorporated | Data processing apparatus with indirect register file access |
KR100602374B1 (ko) * | 2000-08-31 | 2006-07-14 | 어보브반도체 주식회사 | 스택 구조를 사용하여 코드 집적도를 높인 리스크 프로세서 |
KR100399068B1 (ko) * | 2001-04-25 | 2003-09-26 | 주식회사 하이닉스반도체 | 마이크로 컨트롤러 유닛의 효율적인 테스트 방법 |
KR20010079326A (ko) * | 2001-07-06 | 2001-08-22 | 한제섭 | 리스크 코아의 집적회로 |
US7506133B2 (en) * | 2003-08-20 | 2009-03-17 | Seiko Epson Corporation | Method and apparatus for high speed addressing of a memory space from a relatively small address space |
EP1643358A1 (en) * | 2004-10-01 | 2006-04-05 | Nokia Corporation | Pre-loading data |
CN100430890C (zh) * | 2005-08-31 | 2008-11-05 | 上海海尔集成电路有限公司 | 一种8位risc微控制器 |
US8533439B2 (en) | 2005-11-07 | 2013-09-10 | Atmel Corporation | Elastic shared RAM array including contiguous instruction and data portions distinct from each other |
DE102007049354A1 (de) * | 2007-10-15 | 2009-04-16 | Robert Bosch Gmbh | Verfahren zum Testen eines Adressbusses in einem logischen Baustein |
TWI425354B (zh) * | 2007-10-16 | 2014-02-01 | Mstar Semiconductor Inc | 資料存取系統及方法 |
CN102033733B (zh) * | 2011-01-14 | 2012-12-19 | 北方工业大学 | 新型mcu结构 |
US20130086366A1 (en) * | 2011-09-30 | 2013-04-04 | Qualcomm Incorporated | Register File with Embedded Shift and Parallel Write Capability |
CN103077137A (zh) * | 2011-10-25 | 2013-05-01 | 北京大豪科技股份有限公司 | 中断控制方法及中断控制单元 |
US9201446B2 (en) * | 2012-02-01 | 2015-12-01 | Microchip Technology Incorporated | Timebase peripheral |
CN103166476A (zh) * | 2012-12-26 | 2013-06-19 | 黄冠雄 | 一种交流电数控调压控流传输系统 |
US9477473B2 (en) | 2012-12-31 | 2016-10-25 | Cadence Design Systems, Inc. | Bit-level register file updates in extensible processor architecture |
US9448801B2 (en) * | 2012-12-31 | 2016-09-20 | Cadence Design Systems, Inc. | Automatic register port selection in extensible processor architecture |
CN104809079B (zh) * | 2015-04-14 | 2018-01-16 | 昆腾微电子股份有限公司 | 分页寄存器的访问方法和装置 |
KR102132933B1 (ko) * | 2019-09-09 | 2020-07-10 | 국방과학연구소 | 소프트웨어의 제어 흐름 보호장치 및 그 방법 |
US11251900B2 (en) | 2019-12-20 | 2022-02-15 | Silicon Laboratories Inc. | System, apparatus and method for automatically determining configuration parameters for wireless devices |
CN112929673B (zh) * | 2021-01-19 | 2022-04-01 | Tcl华星光电技术有限公司 | 解码方法、解码设备及可读存储介质 |
CN113128172B (zh) * | 2021-04-23 | 2023-10-27 | 中国科学院计算技术研究所 | 超导寄存器堆装置及其控制方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
JPS62281040A (ja) * | 1986-05-30 | 1987-12-05 | Fujitsu Ltd | ペ−ジ管理方式 |
JPS6330946A (ja) * | 1986-07-25 | 1988-02-09 | Alps Electric Co Ltd | マルチタスクにおけるペ−ジング方式 |
US5193206A (en) * | 1989-12-27 | 1993-03-09 | Motorola, Inc. | Reduce instruction set microprocessor |
US5333284A (en) * | 1990-09-10 | 1994-07-26 | Honeywell, Inc. | Repeated ALU in pipelined processor design |
US5301340A (en) * | 1990-10-31 | 1994-04-05 | International Business Machines Corporation | IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle |
JP3181307B2 (ja) * | 1991-04-25 | 2001-07-03 | 株式会社東芝 | 命令処理装置 |
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
JPH06266557A (ja) * | 1993-03-15 | 1994-09-22 | Fujitsu Ltd | データ処理装置及びデータ処理方法 |
US5692170A (en) * | 1995-04-28 | 1997-11-25 | Metaflow Technologies, Inc. | Apparatus for detecting and executing traps in a superscalar processor |
US5737548A (en) * | 1995-11-07 | 1998-04-07 | Yach; Randy L. | RISC-based microcontroller with peripheral function added to a split data bus |
-
1997
- 1997-03-27 US US08/824,932 patent/US5809327A/en not_active Expired - Lifetime
-
1998
- 1998-03-13 CA CA002275172A patent/CA2275172C/en not_active Expired - Fee Related
- 1998-03-13 CN CN98803701A patent/CN1121014C/zh not_active Expired - Fee Related
- 1998-03-13 DE DE69839487T patent/DE69839487D1/de not_active Expired - Lifetime
- 1998-03-13 JP JP54167098A patent/JP4386467B2/ja not_active Expired - Lifetime
- 1998-03-13 EP EP98910407A patent/EP1012735B1/en not_active Expired - Lifetime
- 1998-03-13 KR KR10-1999-7008411A patent/KR100462951B1/ko not_active IP Right Cessation
- 1998-03-13 WO PCT/US1998/005049 patent/WO1998044427A1/en active IP Right Grant
- 1998-03-26 MY MYPI98001333A patent/MY115901A/en unknown
- 1998-03-26 TW TW087104543A patent/TW367439B/zh not_active IP Right Cessation
-
1999
- 1999-08-27 NO NO19994169A patent/NO324825B1/no not_active IP Right Cessation
-
2000
- 2000-06-20 HK HK00103703A patent/HK1024546A1/xx not_active IP Right Cessation
-
2009
- 2009-03-25 JP JP2009073431A patent/JP5199931B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CA2275172A1 (en) | 1998-10-08 |
EP1012735B1 (en) | 2008-05-14 |
CN1121014C (zh) | 2003-09-10 |
CA2275172C (en) | 2003-03-18 |
CN1251185A (zh) | 2000-04-19 |
EP1012735A4 (en) | 2006-05-17 |
HK1024546A1 (en) | 2000-10-13 |
WO1998044427A1 (en) | 1998-10-08 |
NO994169D0 (no) | 1999-08-27 |
KR20000076310A (ko) | 2000-12-26 |
US5809327A (en) | 1998-09-15 |
JP4386467B2 (ja) | 2009-12-16 |
NO994169L (no) | 1999-11-29 |
KR100462951B1 (ko) | 2004-12-23 |
TW367439B (en) | 1999-08-21 |
JP5199931B2 (ja) | 2013-05-15 |
DE69839487D1 (de) | 2008-06-26 |
JP2001517343A (ja) | 2001-10-02 |
EP1012735A1 (en) | 2000-06-28 |
MY115901A (en) | 2003-09-30 |
JP2009223897A (ja) | 2009-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5199931B2 (ja) | Riscアーキテクチャを有する8ビットマイクロコントローラ | |
TWI476597B (zh) | 資料處理裝置及半導體積體電路裝置 | |
EP0138419B1 (en) | Central processing unit for a digital computer | |
JP2796590B2 (ja) | メモリ装置及びそれを使用したデータ処理装置 | |
RU2638641C2 (ru) | Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы | |
AU632493B2 (en) | Microprocessor having external control store | |
JPH0719215B2 (ja) | マイクロプロセッサ | |
JPH05173837A (ja) | オペランド内の情報のスタティックおよびダイナミック・マスキングを兼ね備えるデータ処理システム | |
KR100272937B1 (ko) | 마이크로프로세서및멀티프로세서시스템 | |
EP0954791B1 (en) | Eight-bit microcontroller having a risc architecture | |
JPS5918738B2 (ja) | 割込みシステム | |
JPH03158928A (ja) | データ処理装置 | |
JP4004915B2 (ja) | データ処理装置 | |
JP3705811B2 (ja) | 再構成可能なプログラム状態語を有するマイクロコントローラ | |
DuBose et al. | A microcoded RISC | |
JP4545777B2 (ja) | データ処理装置 | |
JP2696578B2 (ja) | データ処理装置 | |
CA1250666A (en) | Central processing unit for a digital computer | |
JP4498338B2 (ja) | データ処理装置 | |
JPH0394337A (ja) | マイクロコンピュータ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM1K | Lapsed by not paying the annual fees |