Microprocesor WH V3

Specificații
- Model de microprocesor: QingKeV3
- Versiune: V1.2
- Caracteristici ISA:
- Pipeline FPU
- Predicția ramurilor
- Întrerupeți suportul
- HPE Physical Memory Protection (PMP)
- Mod consum redus de energie
- Depanare set de instrucțiuni extins
Instrucțiuni de utilizare a produsului
Pesteview a microprocesorului QingKe V3
Microprocesoarele din seria QingKe V3 includ modelele V3A, V3B și V3C. Fiecare model are caracteristici și diferențe specifice în funcție de aplicația sa.
Set de instrucțiuni
Setul de instrucțiuni RV32I include 32 de seturi de registre de la x0 la x31. Seria V3 nu acceptă extensia în virgulă mobilă (F). Fiecare registru are o dimensiune de 32 de biți.
Set de înregistrare
Setul de registre RV32I este format din următoarele registre.
- x0: Hardcoded 0
- x1: Adresa expeditorului
- x2: indicator de stivă
- x3: Indicator global
- x4: Indicatorul de fir
- x5-x7: Registre temporare
- x8: Salvați indicatorul de registru/cadru
- x9: Salvați registrul/parametrii funcției/valorile returnate
- x10-x11: Parametrii funcției
- x12-x17: Salvați registre
- x18-x27: Registre temporare
- x28-x31: Registrele apelant/apelat
Mod privilegiu
Arhitectura standard RISC-V include trei moduri privilegiate: modul mașină, modul supervizor și modul utilizator. Microprocesoarele din seria QingKe V3 acceptă modul Machine și modul Supervisor.
Întrebări frecvente
Î: Care sunt diferitele modele ale microprocesoarelor din seria QingKe V3?
A: Seria QingKe V3 include modelele V3A, V3B și V3C, fiecare cu caracteristici și diferențe specifice detaliate în manualul de utilizare.
Î: Câte seturi de registre sunt disponibile în setul de instrucțiuni RV32I?
A: Setul de instrucțiuni RV32I oferă 32 de seturi de registre de la x0 la x31.
Î: Ce moduri privilegiate sunt acceptate de microprocesorul QingKe V3?
A: Microprocesoarele din seria QingKe V3 acceptă modul Machine și modul Supervisor ca parte a arhitecturii RISC-V.
Pesteview
Microprocesoarele din seria QingKe V3 sunt microprocesoare MCU de uz general pe 32 de biți, auto-dezvoltate, bazate pe arhitectura standard de set de instrucțiuni RISC-V. Această serie include V3A, V3B și V3C, dintre care V3A acceptă extensia setului de instrucțiuni standard RV32IMAC și V3B/C acceptă extensia setului de instrucțiuni standard RV32IMCB și extensia setului de instrucțiuni personalizat XW. Ambele suportă multiplicarea într-un singur ciclu și diviziunea hardware, în plus față de stiva de presiune hardware (HPE), întrerupere fără masă (VTF), interfețe de depanare simplificate cu 1 și 2 fire, instrucțiuni „WFE” și alte caracteristici speciale. În plus, acceptă și Hardware Prologue/Epilogue (HPE), Vector Table Free (VTF), interfață simplificată de depanare cu 1/2 fire și suport pentru instrucțiunile „WFE”.
Caracteristici
| Caracteristici | Descriere |
| ISA | RV32IM[A]C[B] |
| Conductă | 3 |
| FPU | Nu este acceptat |
| Predicția ramurilor | Predicția ramurilor statice |
| Întrerupe | Acceptă un total de 256 de întreruperi, inclusiv excepții și acceptă VTF |
| HPE | Suportă 2 niveluri de HPE |
| Protecția memoriei fizice (PMP) | Sprijinit |
| Mod consum redus de energie | Suportă modurile Sleep și Deep sleep și acceptă metodele de somn WFI și WFE |
| Set de instrucțiuni extins | Sprijinit |
| Depanați | SDI cu 1/2 fire, depanare standard RISC-V |
Pesteview
Microprocesoarele din seria QingKe V3 includ V3A, V3B și V3C, există unele diferențe între serii în funcție de aplicație, diferențele specifice sunt detaliate în Tabelul 1-1.
Tabelul 1-1 Pesteview a microprocesorului QingKe V3
| Caracteristică Model | ISA | Numărul de niveluri HPE | Întreruperi cuibărit număr de niveluri | VTF numărul de canale | Conductă | Vector modul de masă | Instrucțiuni extinse (XW) | Numărul de zone de protecție a memoriei |
| V3A | RV32IMAC | 2 | 2 | 4 | 3 | Instruire | × | × |
| V3B | RV32IMCB | 2 | 2 | 4 | 3 | Adresă/Instrucțiune | √ | × |
| V3C | RV32IMCB | 2 | 2 | 4 | 3 | Adresă/Instrucțiune | √ | 4 |
Nota: Comutarea sarcinilor sistemului de operare utilizează în general push push, care nu se limitează la numărul de niveluri
Set de instrucțiuni
- Microprocesoarele din seria QingKe V3 urmează arhitectura standard RISC-V Instruction Set Architecture (ISA). Documentația detaliată a standardului poate fi găsită în „Manualul setului de instrucțiuni RISC-V, volumul I: ISA la nivel de utilizator, versiunea documentului 2.2” de pe RISC-V International website-ul. Setul de instrucțiuni RISC-V are o arhitectură simplă și acceptă un design modular, permițând combinații flexibile bazate pe diferite nevoi, iar seria V3 acceptă următoarele extensii de set de instrucțiuni.
- RV32: Arhitectură pe 32 de biți, lățime de biți a registrului de uz general de 32 de biți
- I: Sprijină operația de modelare, cu 32 de registre de modelare
- M: Sprijină instrucțiuni de înmulțire și împărțire pentru modelare
- A: Suport comenzi atomice
- C: Suportă instrucțiuni de compresie pe 16 biți
- B: Suport pentru instrucțiuni de manipulare a biților
- XW: Instrucțiuni de compresie pe 16 biți pentru operații cu auto-extindere pe octeți și jumătate de cuvânt
Nota:
- Subsetul de instrucțiuni acceptat de diferite modele poate fi diferit, vă rugăm să consultați Tabelul 1-1 pentru detalii;
- Pentru a îmbunătăți și mai mult densitatea codului, extindeți subsetul XW, adăugați următoarele instrucțiuni de compresie c.lbu/c.lhu/c.sb/c.sh/c.lbusp/c.lhusp/c.sbsp/c.shop , a cărui utilizare trebuie să se bazeze pe compilatorul MRS sau pe lanțul de instrumente pe care îl oferă;
- V3B acceptă extragerea unei instrucțiuni de cuvânt (32 de biți) dintr-un cuvânt dublu (64 de biți) și extragerea unei instrucțiuni de cuvânt (32 de biți) dintr-un rezultat de înmulțire (64 de biți). Metoda de utilizare specifică se poate referi la funcția de bibliotecă și poate coopera cu compilatorul MRS sau lanțul de instrumente furnizat de acesta;
- V3B/C acceptă instrucțiuni de copiere în memorie. Pentru utilizare specifică, vă rugăm să consultați funcția de bibliotecă și să cooperați cu compilatorul MRS sau cu lanțul de instrumente al acestuia.
Set de înregistrare
RV32I are 32 de seturi de registre de la x0-x31. Seria V3 nu acceptă extensia „F”, adică nu există un set de registru în virgulă mobilă. În RV32, fiecare registru are 32 de biți. Tabelul 1-2 de mai jos listează registrele RV32I și descrierile acestora.
Tabelul 1-2 Registru RISC-V
| Registru | Nume ABI | Descriere | Depozitar |
| x0 | zero | Hardcoded 0 | – |
| x1 | ra | Adresa expeditorului | Apelant |
| x2 | sp | Indicator de stivă | Callee |
| x3 | GP | Indicator global | – |
| x4 | tp | Indicatorul de fir | – |
| x5-7 | t0-2 | Registrul temporar | Apelant |
| x8 | s0/fp | Salvați indicatorul de registru/cadru | Callee |
| x9 | s1 | Salvați înregistrarea | Callee |
| x10-11 | a0-1 | Parametrii funcției/valorile de returnare | Apelant |
| x12-17 | a2-7 | Parametrii funcției | Apelant |
| x18-27 | a2-11 | Salvați înregistrarea | Callee |
| X28-31 | t3-6 | Registrul temporar | Apelant |
Atributul Caller din tabelul de mai sus înseamnă că procedura apelată nu salvează valoarea registrului, iar atributul Callee înseamnă că procedura apelată salvează registrul.
Mod privilegiu
- Arhitectura standard RISC-V include trei moduri privilegiate: modul mașină, modul supervizor și modul utilizator, așa cum se arată în Tabelul 1-3 de mai jos.
- Modul mașină este obligatoriu, iar celelalte moduri sunt opționale. Pentru detalii, puteți consulta Manualul setului de instrucțiuni RISC-V Volumul II: Arhitectură privilegiată”, care poate fi descărcat gratuit de la RISC-V International. website-ul.
Tabelul 1-3 Mod de privilegiu arhitectura RISC-V
| Cod | Nume | Abrevieri |
| 0b00 | Modul utilizator | U |
| 0b01 | Model de supraveghetor | S |
| 0b10 | Rezervat | Rezervat |
| 0b11 | Modul mașină | M |
- Microprocesoarele din seria QingKe V3 acceptă două dintre aceste moduri privilegiate.
Modul mașină
- Modul Mașină are cea mai înaltă autoritate, programul în acest mod poate accesa toate Registrul de control și stare (CSR), dar poate accesa și toate zonele de adrese fizice.
- Valoarea implicită de pornire este în modul mașină, când execuția mret (instrucțiunea de returnare în modul mașină) revine, în funcție de starea registrului CSR (registrul de stare a modului mașină) în bitul MPP, dacă MPP = 0b00, apoi ieșiți din modul mașină în modul Utilizator, MPP = 0b11, apoi continuați să păstrați modul Mașină.
Modul utilizator
- Modul utilizator are cel mai mic privilegiu și numai registre limitate CSR pot fi accesate în acest mod. Când apare o excepție sau o întrerupere, microprocesorul trece din modul Utilizator în modul Mașină pentru a gestiona excepțiile și întreruperile.
Registrul CSR
O serie de registre CSR sunt definite în arhitectura RISC-V pentru a controla și înregistra starea de funcționare a microprocesorului. Aceste CSR-uri pot fi extinse cu 4096 de registre folosind un spațiu intern dedicat de codificare a adreselor de 12 biți. Și utilizați cele două CSR mari[11:10] pentru a defini permisiunea de citire/scriere a acestui registru, 0b00, 0b01, 0b10 pentru citire/scriere permisă și 0b11 pentru numai citire. Utilizați cei doi biți CSR[9:8] pentru a defini cel mai scăzut nivel de privilegiu care poate accesa acest registru, iar valoarea corespunde modului de privilegiu definit în Tabelul 1-3. Registrele CSR implementate în microprocesorul QingKe V3 sunt detaliate în Capitolul 8.
Excepţie
Mecanism de excepție, care este un mecanism pentru interceptarea și gestionarea „evenimentelor de operare neobișnuite”. Microprocesoarele din seria QingKe V3 sunt echipate cu un sistem de răspuns la excepții care poate gestiona până la 256 de excepții, inclusiv întreruperi. Când are loc o excepție sau o întrerupere, microprocesorul poate răspunde rapid și gestiona evenimentele de excepție și întrerupere.
Tipuri de excepții
Comportamentul hardware al microprocesorului este același indiferent dacă apare o excepție sau o întrerupere. Microprocesorul suspendă programul curent, trece la manevrătorul de excepții sau întreruperi și revine la programul suspendat anterior când procesarea este completă. În linii mari, întreruperile fac și ele parte din excepții. Dacă exact apariția curentă este o întrerupere sau o excepție poate fi viewprin excepția modului Machine cauza registrului cauza. mcause[31] este câmpul de întrerupere, care este folosit pentru a indica dacă cauza excepției este o întrerupere sau o excepție. mcause[31]=1 înseamnă întrerupere, mcause[31]=0 înseamnă excepție. mcause[30:0] este codul de excepție, care este folosit pentru a indica cauza specifică a excepției sau numărul de întrerupere, așa cum se arată în tabelul următor.
Tabelul 2-1 Codurile de excepție ale microprocesorului V3
| Întrerupe | Excepţie coduri | Sincron/Asincron | Motivul excepției |
| 1 | 0-1 | – | Rezervat |
| 1 | 2 | Asincron precis | NMI se întrerupe |
| 1 | 3-11 | – | Rezervat |
| 1 | 12 | Asincron precis | SysTick întrerupe |
| 1 | 13 | – | Rezervat |
| 1 | 14 | Sincron | Software-ul se întrerupe |
| 1 | 15 | – | Rezervat |
| 1 | 16-255 | Asincron precis | Întreruperea externă 16-255 |
| 0 | 0 | Sincron | Alinierea greșită a adresei instrucțiunilor |
| 0 | 1 | Sincron | Eroare de acces la comanda Preluare |
| 0 | 2 | Sincron | Instrucțiuni ilegale |
| 0 | 3 | Sincron | Puncte de întrerupere |
| 0 | 4 | Sincron | Încărcați alinierea greșită a adresei de acces la instrucțiuni |
| 0 | 5 | Asincron fără precizie | Eroare de acces la comanda de încărcare |
| 0 | 6 | Sincron | Adresă de acces la instrucțiunile Store/AMO nealiniată |
| 0 | 7 | Asincron fără precizie | Eroare de acces la comanda Store/AMO |
| 0 | 8 | Sincron | Apel de mediu în modul Utilizator |
| 0 | 11 | Sincron | Apel de mediu în modul Mașină |
- Sincron” din tabel înseamnă că o instrucțiune poate fi localizată exact acolo unde este executată, cum ar fi o instrucțiune de pauză sau de apel, și fiecare execuție a acelei instrucțiuni va declanșa o excepție. „Asincron” înseamnă că nu este posibilă identificarea unei instrucțiuni, iar valoarea instrucțiunii PC poate fi diferită de fiecare dată când apare o excepție. „Asincron precis” înseamnă că o excepție poate fi localizată exact la limita unei instrucțiuni, adică starea după executarea unei instrucțiuni, cum ar fi o întrerupere externă. „Asincron fără precizie” înseamnă că limita unei instrucțiuni nu poate fi localizată cu precizie și poate starea după o instrucțiune a fost întreruptă la jumătatea execuției, cum ar fi o eroare de acces la memorie.
- Accesul la memorie durează, iar microprocesorul de obicei nu așteaptă sfârșitul accesului atunci când accesează memorie, ci continuă să execute instrucțiunea, când excepția erorii de acces apare din nou, microprocesorul a executat deja instrucțiunile ulterioare și nu poate fi precis. situat.
Se introduce Excepție
Când programul este în proces de funcționare normală, dacă dintr-un motiv oarecare, declanșează o excepție sau o întrerupere. Comportamentul hardware al microprocesorului în acest moment poate fi rezumat după cum urmează.
- Suspendați fluxul curent al programului și treceți la execuția funcțiilor de gestionare a excepțiilor sau întreruperilor. Adresa de bază de intrare și modul de adresare al funcției de excepție sau întrerupere sunt definite de registrul de adrese de bază de intrare de excepție mtvec. mtvec[31:2] definește adresa de bază a funcției de excepție sau de întrerupere. mtvec[1:0] definește modul de adresare al funcției de gestionare. când mtvec[1:0]=0, toate excepțiile și întreruperile folosesc o intrare unificată, adică, când apare o excepție sau întrerupere, se întoarce la mtvec[31:2] care definește adresa de bază de executat. Când mtvec[1:0]=1, excepțiile și întreruperile folosesc modul tabel vectorial, adică fiecare excepție și întrerupere este numerotată, iar adresa este compensată în funcție de numărul de întrerupere*4, iar când apare o excepție sau întrerupere, aceasta este deplasată la adresa de bază definită de mtvec[31:2] + numărul de întrerupere*4 Execuție. Tabelul vector de întrerupere conține o instrucțiune pentru a trece la funcția de gestionare a întreruperilor sau poate fi alte instrucțiuni.
- Actualizați registrul CSR
- Când este introdusă o excepție sau o întrerupere, microprocesorul actualizează automat registrele CSR relevante, inclusiv registrul de cauză a excepției modului Mașină mcause, registrul pointerului de excepție al modului Mașină mepc, registrul metal al valorii excepției din modul Mașină și starea registrului de stare a modului Mașină.
Actualizați mcause
După cum sa menționat anterior, după introducerea unei excepții sau a unei întreruperi, valoarea acesteia reflectă tipul de excepție sau numărul de întrerupere curent, iar software-ul poate citi această valoare de registru pentru a verifica cauza excepției sau pentru a determina sursa întreruperii, așa cum este detaliat în Tabelul 2. -1.
Actualizați mepc
- Definiția standard a adresei de retur a microprocesorului după ieșirea dintr-o excepție sau întrerupere este stocată în mepc.
- Deci, atunci când are loc o excepție sau o întrerupere, hardware-ul actualizează automat valoarea mepc la valoarea curentă a instrucțiunii PC atunci când este întâlnită excepția sau la următoarea valoare PC a instrucțiunii pre-executate înainte de întrerupere.
- După ce excepția sau întreruperea este procesată, microprocesorul folosește valoarea sa salvată ca adresă de retur pentru a reveni la locația întreruperii pentru a continua execuția.
- Cu toate acestea, merită remarcat faptul că.
- MEPC este un registru care poate fi citit și inscriptibil, iar software-ul poate modifica, de asemenea, valoarea pentru a modifica locația pointerului PC care rulează după întoarcere.
- Când apare o întrerupere, adică atunci când cauza excepției înregistrează mcause[31]=1, valoarea hărților este actualizată la valoarea PC a următoarei instrucțiuni neexecutate în momentul întreruperii.
- Când apare o excepție, valoarea hărților este actualizată la valoarea de instrucțiune PC a excepției curente atunci când excepția cauzează registrul mcause[31]=0. Deci, în acest moment în care excepția revine, dacă revenim direct folosind valoarea mepc, continuăm să executăm instrucțiunea care a generat excepția anterior și, în acest moment, vom continua să introducem excepția. De obicei, după ce gestionăm excepția, putem modifica valoarea lui mepc la valoarea următoarei instrucțiuni neexecutate și apoi revenim. De example, dacă provocăm o excepție din cauza call/break, după gestionarea excepției, deoarece recall/break (c.ebreak este de 2 octeți) este o instrucțiune de 4 octeți, avem nevoie doar de software pentru a modifica valoarea mepc la mepc +4 (c.ebreak este mepc+2) și apoi întoarcere.
Actualizați mtval
Când sunt introduse excepții și întreruperi, hardware-ul va actualiza automat valoarea mtval, care este valoarea care a cauzat excepția. Valoarea este de obicei.
- Dacă o excepție este cauzată de un acces la memorie, hardware-ul va stoca adresa accesului la memorie la momentul excepției în mtval.
- Dacă excepția este cauzată de o instrucțiune ilegală, hardware-ul va stoca codul de instrucțiune al instrucțiunii în mtval.
- Dacă excepția este cauzată de un punct de întrerupere hardware, hardware-ul va stoca valoarea PC la punctul de întrerupere în mtval.
- Pentru alte excepții, hardware-ul setează valoarea mtval la 0, cum ar fi break, excepția cauzată de instrucțiunea de apel.
- Când introduceți întrerupere, hardware-ul setează valoarea mtval la 0.
Actualizați mstatus
La introducerea de excepții și întreruperi, hardware-ul actualizează anumiți biți în mstatus.
- MPIE este actualizat la valoarea MIE înainte de a introduce excepția sau întrerupere, iar MPIE este folosit pentru a restabili MIE după ce excepția și întreruperea s-au încheiat.
- MPP este actualizat la modul privilegiat înainte de a introduce excepții și întreruperi, iar după terminarea excepțiilor și întreruperile, MPP este folosit pentru a restabili modul privilegiat anterior.
- Microprocesorul QingKe V3 acceptă imbricarea întreruperilor în modul Machine, iar MIE nu va fi șters după introducerea excepțiilor și întreruperilor.
Actualizați modul de privilegii al microprocesorului
- Când apar excepții și întreruperi, modul privilegiat al microprocesorului este actualizat la modul Machine.
Funcții de tratare a excepțiilor
- La introducerea unei excepții sau întreruperi, microprocesorul execută programul din adresa și modul definite de registrul mtvec. Când folosește intrarea unificată, microprocesorul preia o instrucțiune de salt de la adresa de bază definită de mtvec[31:2] pe baza valorii mtvec[1] sau primește adresa de intrare a funcției de gestionare a excepțiilor și a întreruperilor și o execută în schimb. . În acest moment, funcția de gestionare a excepțiilor și a întreruperilor poate determina dacă cauza este o excepție sau o întrerupere pe baza valorii mcause[31], iar tipul și cauza excepției sau întreruperea corespunzătoare pot fi judecate după codul de excepție. și tratate în consecință.
- Când utilizați adresa de bază + numărul de întrerupere *4 pentru offset, hardware-ul sare automat la tabelul vectorial pentru a obține adresa de intrare a excepției sau funcției de întrerupere pe baza numărului de întrerupere și sare pentru a o executa.
Excepție Ieșire
- După ce gestionarea excepției sau întreruperilor este finalizată, este necesar să părăsiți programul de service. După ce a introdus excepții și întreruperi, microprocesorul intră în modul Mașină din modul Utilizator, iar procesarea excepțiilor și întreruperilor este, de asemenea, finalizată în modul Mașină. Când este necesar să ieșiți din excepții și întreruperi, este necesar să utilizați instrucțiunea mret pentru a reveni. În acest moment, hardware-ul microprocesorului va efectua automat următoarele operații.
- Pointer-ul PC este restaurat la valoarea registrului CSR mepc, adică execuția începe la adresa instrucțiunii salvate de mepc. Este necesar să se acorde atenție operațiunii de compensare a mepc după finalizarea gestionării excepțiilor.
- Actualizați starea registrului CSR, MIE este restaurat la MPIE și MPP este folosit pentru a restabili modul privilegiat al microprocesorului anterior.
- Întregul proces de răspuns la excepție poate fi descris în următoarea Figura 2-1.

PFIC și Controlul întreruperii
- Microprocesorul QingKe V3 este proiectat cu un controler programabil de întrerupere rapidă (PFIC) care poate gestiona până la 256 de întreruperi, inclusiv excepții.
- Primele 16 dintre ele sunt fixate ca întreruperi interne ale microprocesorului, iar restul sunt întreruperi externe, adică numărul maxim de întreruperi externe poate fi extins la 240. Principalele sale caracteristici sunt următoarele.
- 240 de întreruperi externe, fiecare cerere de întrerupere are biți independenți de declanșare și control al măștii, cu biți de stare dedicati
- Prioritatea programabilă de întrerupere acceptă 2 niveluri de imbricare
- Întreruperea rapidă specială de intrare/ieșire a mecanismului, stivuire automată hardware și recuperare, adâncime HPE maximă de 2 niveluri
- Mecanism de răspuns la întrerupere Vector Table Free (VTF), acces direct programabil pe 2 canale la adresele vectorului de întrerupere
- Nota: Adâncimea maximă de imbricare și adâncimea HPE acceptate de controlerele de întrerupere variază pentru diferite modele de microprocesoare, care pot fi găsite în Tabelul 1-1.
- Tabelul vectorial al întreruperilor și excepțiilor este prezentat în Tabelul 3-1 de mai jos.
Tabelul 3-1 Tabelul vectorului de excepții și întreruperi
| Număr | Prioritate | Tip | Nume | Descriere |
| 0 | – | – | – | – |
| 1 | – | – | – | – |
| 2 | -5 | Fix | NMI | Întreruperea nemascabilă |
| 3 | -4 | Fix | EXC | Întreruperea excepției |
| 4 | – | – | – | – |
| 5 | -3 | Fix | ECALL-M | Întreruperea apel invers în modul aparat |
| 6-7 | – | – | – | – |
| 8 | -2 | Fix | ECALL-U | Întreruperea apelului în modul utilizator |
| 9 | -1 | Fix | PUNCT DE PARURU | Întreruperea apelului pentru punctul de întrerupere |
| 10-11 | – | – | – | – |
| 12 | 0 | Programabil | SysTick | Întreruperea temporizatorului sistemului |
| 13 | – | – | – | – |
| 14 | 1 | Programabil | SWI | Întreruperea software-ului |
| 15 | – | – | – | – |
| 16-255 | 2-241 | Programabil | Întreruperea externă | Întreruperea externă 16-255 |
Nota: ECALL-M, ECALL-U și BREAKPOINT sunt toate tipuri diferite de excepții EXC, care sunt independente în V3B/C pentru ușurință în utilizare, iar cele trei adrese de intrare de mai sus sunt partajate cu EXC în V3A.
Set de registru PFIC
Tabelul 3-2 Registre PFIC
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
| PFIC_ISRx | 0xE000E000
-0xE000E01C |
RO | Întreruperea registrului de stare de activare x | 0x00000000 |
| PFIC_IPRx | 0xE000E020
-0xE000E03C |
RO | Întreruperea registrului de stare în așteptare x | 0x00000000 |
| PFIC_ITHRESDR | 0xE000E040 | RW | Registrul de configurare a pragului de prioritate de întrerupere | 0x00000000 |
| PFIC_VTFBADDRR | 0xE000E044 | RW | Registrul adresei de bază VTF
Notă: Valabil numai pentru V3A |
0x00000000 |
| PFIC_CFGR | 0xE000E048 | RW | Întreruperea registrului de configurare
Notă: Valabil numai pentru V3A |
0x00000000 |
| PFIC_GISR | 0xE000E04C | RO | Întrerupeți registrul de stare globală | 0x00000002 |
|
PFIC_VTFIDR |
0xE000E050 |
RW |
Registrul de configurare a ID-ului de întrerupere VTF
Notă: Valabil numai pentru V3B/C. |
0x00000000 |
| PFIC_VTFADDRRx | 0xE000E060
-0xE000E06C |
RW | Registrul de adrese VTF x offset | 0xXXXXXXXXX |
| PFIC_IENRx | 0xE000E100
-0xE000E11C |
WO | Întreruperea activării registrului de setare x | 0x00000000 |
| PFIC_IRERx | 0xE000E180
-0xE000E19C |
WO | Activare întrerupere șterge registrul x | 0x00000000 |
| PFIC_IPSRx | 0xE000E200
-0xE000E21C |
WO | Întreruperea registrului de setare în așteptare x | 0x00000000 |
| PFIC_IPRRx | 0xE000E280
-0xE000E29C |
WO | Întreruperea așteaptă ștergerea registrului x | 0x00000000 |
| PFIC_IACTRx | 0xE000E300
-0xE000E31C |
RO | Registrul stării activării întreruperii x | 0x00000000 |
| PFIC_IPRIORx | 0xE000E400
-0xE000E43C |
RW | Întreruperea registrului de configurare cu prioritate | 0x00000000 |
| PFIC_SCTLR | 0xE000ED10 | RW | Registrul de control al sistemului | 0x00000000 |
Nota:
- NMI, EXC, ECALL-M, ECALL-U și BREAKPOINT sunt întotdeauna activate implicit.
- ECALL-M, ECALL-U și BREAKPOINT sunt un caz de EXC.
- NMI, EXC, ECALL-M, ECALL-U și BREAKPOINT acceptă întreruperi în așteptarea operațiunii de ștergere și setare, dar nu întrerupe activarea operațiunii de ștergere și setare.
Fiecare registru este descris după cum urmează:
Starea de activare a întreruperii și registrele de stare de întrerupere în așteptare (PFIC_ISR<0-7>/PFIC_IPR<0-7>)
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
| PFIC_ISR0 | 0xE000E000 | RO | Întreruperea 0-31 activează registrul de stare, un total de 32 de biți de stare [n], indicând #n întreruperea activează starea
Notă: NMI și EXC sunt activate implicit |
Pentru V3A: 0x0000000C
Pentru V3B/C: 0x0000032C |
| PFIC_ISR1 | 0xE000E004 | RO | Întreruperea 32-63 de activare a registrului de stare, un total de 32 de biți de stare | 0x00000000 |
| … | … | … | … | … |
| PFIC_ISR7 | 0xE000E01C | RO | Întreruperea 224-255 activează registrul de stare, un total de 32 de biți de stare | 0x00000000 |
| PFIC_IPR0 | 0xE000E020 | RO | Stare de întrerupere 0-31 în așteptare | 0x00000000 |
| registru, un total de 32 de biți de stare [n], indicând starea în așteptare a întreruperii #n | ||||
| PFIC_IPR1 | 0xE000E024 | RO | Întreruperea 32-63 registre de stare în așteptare, 32 de biți de stare în total | 0x00000000 |
| … | … | … | … | … |
| PFIC_IPR7 | 0xE000E03C | RO | Întreruperea 244-255 registru de stare în așteptare, 32 de biți de stare în total | 0x00000000 |
Două seturi de registre sunt utilizate pentru a activa și dezactiva întreruperile corespunzătoare.
Setarea de activare a întreruperii și ștergerea registrelor (PFIC_IENR<0-7>/PFIC_IRER<0-7>)3
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
| PFIC_IENR0 | 0xE000E100 | WO | Întreruperea 0-31 permite setarea registrului, un total de 32 de biți de setare [n], pentru setarea de activare a întreruperii #n
Nota: NMI şi EXC sunt activat implicit |
0x00000000 |
| PFIC_IENR1 | 0xE000E104 | WO | Întrerupeți 32-63 pentru a activa registrul de setare, un total de 32 de biți de setare | 0x00000000 |
| … | … | … | … | … |
| PFIC_IENR7 | 0xE000E11C | WO | Setarea de activare a întreruperii 224-255
registru, un total de 32 de biți de setare |
0x00000000 |
| – | – | – | – | – |
| PFIC_IRER0 | 0xE000E180 | WO | Întreruperile 0-31 permit ștergerea registrului, un total de 32 de biți de ștergere [n], pentru întrerupere #n activarea ștergerii Notă: NMI și EXC nu pot fi operate |
0x00000000 |
| PFIC_IRER1 | 0xE000E184 | WO | Întreruperea 32-63 permite un registru clar, un total de 32 de biți clari | 0x00000000 |
| … | … | … | … | … |
| PFIC_IRER7 | 0xE000E19C | WO | Întreruperea 244-255 permite un registru clar, un total de 32 de biți clari | 0x00000000 |
Două seturi de registre sunt utilizate pentru a activa și dezactiva întreruperile corespunzătoare.
Întreruperea setării în așteptare și ștergerea registrelor (PFIC_IPSR<0-7>/PFIC_IPRR<0-7>)
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
|
PFIC_IPSR0 |
0xE000E200 |
WO |
Întreruperea 0-31 registrul de setare în așteptare, 32
setarea biților [n], pentru întrerupere #n în așteptare |
0x00000000 |
| PFIC_IPSR1 | 0xE000E204 | WO | Întreruperea 32-63 în așteptarea registrului de configurare,
total 32 de biți de configurare |
0x00000000 |
| … | … | … | … | … |
| PFIC_IPSR7 | 0xE000E21C | WO | Întreruperea 224-255 în așteptare setare
registru, 32 de biți de setare în total |
0x00000000 |
| – | – | – | – | – |
|
PFIC_IPRR0 |
0xE000E280 |
WO |
Întreruperea 0-31 în așteptarea registrului de ștergere, un total de 32 de biți de ștergere [n], pentru întrerupere #n
în așteptarea clarării |
0x00000000 |
| PFIC_IPRR1 | 0xE000E284 | WO | Întreruperea 32-63 în așteptarea registrului clar,
total 32 de biți clari |
0x00000000 |
| … | … | … | … | … |
| PFIC_IPRR7 | 0xE000E29C | WO | Întreruperea 244-255 în așteptarea registrului clar,
total 32 de biți clari |
0x00000000 |
Când microprocesorul activează o întrerupere, aceasta poate fi setată direct prin registrul de întrerupere în așteptare pentru a declanșa întrerupere. Utilizați registrul de întrerupere în așteptare pentru a șterge declanșatorul în așteptare.
Registrul stării activării întreruperii (PFIC_IACTR<0-7>)
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
| PFIC_IACTR0 | 0xE000E300 | RO | Întreruperea 0-31 activează registrul de stare cu 32 de biți de stare [n], indicând că întreruperea #n este în curs de executare | 0x00000000 |
| PFIC_IACTR1 | 0xE000E304 | RO | Întrerupe 32-63 registre de stare de activare, 32 de biți de stare
total |
0x00000000 |
| … | … | … | … | … |
| PFIC_IACTR7 | 0xE000E31C | RO | Întrerupeți 224-255 registre de stare de activare, un total de 32 de biți de stare | 0x00000000 |
Fiecare întrerupere are un bit de stare activ care este configurat când întreruperea este introdusă și șters de hardware când piața revine.
Prioritatea întreruperii și registrele de prag de prioritate (PFIC_IPRIOR<0-7>/PFIC_ITHRESDR)
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
| PFIC_IPRIOR0 | 0xE000E400 | RW | Întreruperea configurației cu prioritate 0. V3A: [7:4]: Biți de control prioritar Dacă configurația nu este imbricată, nici un bit de preempțiune Dacă imbricarea este configurată, bit7 este bitul preempțiat. [3:0]: Rezervat, fixat la 0 V3B: [7:6]: Biți de control prioritar Dacă configurația nu este imbricată, nici un biți preventiv configurați, toți biții sunt preempționați, dar sunt permise să apară până la două niveluri de întreruperi [5:0]: Rezervat, fixat la 0 V3C: [7:5]: Biți de control prioritar Dacă configurația nu este imbricată, nu există biți preventivi Dacă sunt configurați imbricați, toți biții sunt preempționați, dar sunt permise să apară până la două niveluri de întreruperi [4:0]: Rezervat, fixat la 0 Notă: Cu cât valoarea priorității este mai mică, cu atât prioritatea este mai mare. Dacă aceeași întrerupere cu prioritate de preempțiune se blochează în același timp, întreruperea cu prioritate mai mare va fi executată mai întâi. |
0x00 |
| PFIC_IPRIOR1 | 0xE000E401 | RW | Setarea priorității întrerupe 1, aceeași funcție ca PFIC_IPRIOR0 | 0x00 |
| PFIC_IPRIOR2 | 0xE000E402 | RW | Setarea priorității întrerupe 2, aceeași funcție ca PFIC_IPRIOR0 | |
| … | … | … | … | … |
| PFIC_IPRIOR254 | 0xE000E4FE | RW | Setarea priorității întrerupe 254, aceeași funcție ca PFIC_IPRIOR0 | 0x00 |
| PFIC_IPRIOR255 | 0xE000E4FF | RW | Setarea priorității întrerupe 255, aceeași funcție ca PFIC_IPRIOR0 | 0x00 |
| – | – | – | – | – |
| PFIC_ITHRESDR | 0xE000E040 | RW | Setarea pragului priorității întreruperii
V3A: [31:8]: Rezervat, fixat la 0 [7:4]: Prag de prioritate [3:0]: Rezervat, fixat la 0V3B: [31:8]: Rezervat, fixat la 0 [7:5]: Prag de prioritate [4:0]: Rezervat, fixat la 0V3C: [31:8]: Rezervat, fixat la 0 [7:5]: Prag de prioritate [4:0]: Rezervat, fixat la 0Nota: Pentru întreruperi cu valoare de prioritate ≥ prag, funcția de serviciu de întrerupere nu este executată atunci când are loc o blocare, iar când acest registru este 0, înseamnă că registrul de prag este invalid. |
0x00 |
Registrul de configurare a întreruperii (PFIC_CFGR)
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
| PFIC_CFGR | 0xE000E048 | RW | Întreruperea registrului de configurare | 0x00000000 |
Acest registru este valabil numai pentru V3A, biții săi sunt definiți astfel:
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:16] | COD CHEIE | WO | Corespunzând diferiților biți de control al țintei, datele corespunzătoare de identificare a accesului de securitate trebuie să fie scrise simultan pentru a fi modificate, iar datele de citire sunt fixate la 0. KEY1 = 0xFA05; KEY2 = 0xBCAF; KEY3 = 0xBEEF。 | 0 |
| [15:8] | Rezervat | RO | Rezervat | 0 |
| 7 | SYSRESET | WO | Resetare sistem (scriere simultană pe KEY3). Ștergere automată 0.
Scrierea 1 este validă, scrierea 0 este invalidă. Notă: Aceeași funcție ca bitul SYSRESET al registrului PFIC_SCTLR. |
0 |
| 6 | PFICRESET | WO | Resetarea modulului PFIC. Ștergere automată 0.
Scrierea 1 este validă, scrierea 0 este invalidă. |
0 |
| 5 | EXPRES | WO | Întreruperea excepției în așteptare la ștergere (scriere simultană pe KEY2)
Scrierea 1 este validă, scrierea 0 este invalidă. |
0 |
| 4 | EXCSET | WO | Setare de întrerupere a excepției în așteptare (scriere simultană la KEY2)
Scrierea 1 este validă, scrierea 0 este invalidă. |
0 |
| 3 | NMIRESET | WO | Întreruperea NMI în așteptare la ștergere (scriere simultană pe KEY2)
Scrierea 1 este validă, scrierea 0 este invalidă. |
0 |
| 2 | NMISET | WO | Setare de întrerupere NMI în așteptare (scriere simultană la KEY2)
Scrierea 1 este validă, scrierea 0 este invalidă. |
0 |
| 1 | NESTCTRL | RW | Imbricarea întreruperii permite controlul.
1: oprit; 0: activat (scriere sincronă la KEY1) |
0 |
| 0 | HWSTKCTRL | RW | HPE activați controlul
1: oprit; 0: activat (scriere sincronă la KEY1) |
0 |
Întreruperea registrului de stare globală (PFIC_GISR)
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
| PFIC_GISR | 0xE000E04C | RO | Întrerupeți registrul de stare globală | 0x00000000 |
Oamenii săi sunt definiți ca
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:14] | Rezervat | RO | Rezervat | 0 |
|
13 |
LOCKSTA |
RO |
Dacă procesorul este în prezent într-o stare blocată:
1: Stare blocată; 0: stare neblocata. Notă: Acest bit este valabil numai pentru V3B/C. |
0 |
|
12 |
DBGMODE |
RO |
Dacă procesorul este în prezent în stare de depanare: 1: stare de depanare;
0: stare fără depanare. Notă: Acest bit este valabil numai pentru V3B/C. |
0 |
|
11 |
GLOBIE |
RO |
Activare întrerupere globală:
1: Activare întrerupere; 0: Dezactivează întrerupere. Notă: Acest bit este valabil numai pentru V3B/C. |
|
| 10 | Rezervat | RO | Rezervat | 0 |
| 9 | GPENDSTA | RO | Dacă o întrerupere este în așteptare.
1: Da; 0: Nu. |
0 |
| 8 | GACTSTA | RO | Dacă o întrerupere este în curs de executare.
1: Da; 0: Nu. |
0 |
|
[7:0] |
NESTSTA |
RO |
Starea actuală de imbricare a întreruperii. 0x03: la nivelul 2 întrerupere.
0x01: în întrerupere de nivel 1. 0x00: nu apar întreruperi. Altele: situație imposibilă. |
0 |
Adresa de bază ID-ul VTF și registrele de adrese compensate (PFIC_VTFBADDRR/PFIC_VTFADDRR<0-3>)
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
|
PFIC_VTFBADDRR |
0xE000E044 |
RW |
[31:28]: Înaltă 4 biți ai adresei țintă a VTF [27:0]: Rezervat
Acest registru este valabil doar pentru V3A. |
0x00000000 |
|
PFIC_VTFIDR |
0xE000E050 |
RW |
[31:24]: Numărul VTF 3 [23:16]: Numărul VTF 2 [15:8]: Numărul VTF 1 [7:0]: Numărul VTF 0
Acest registru este valabil doar pentru V3B/C. |
0x00000000 |
| – | – | – | – | – |
|
PFIC_VTFADDRR0 |
0xE000E060 | RW | V3A: [31:24]: numărul de întrerupere VTF 0 [23:0]: cei 24 de biți inferiori ai adresei țintă VTF, dintre care cei 20 de biți inferiori sunt configurați pentru a fi validi, iar [23:20] este fixat la 0 .
V3B/C: [31:1]: adresa VTF 0, aliniat pe 2 octeți [0]:1: Activați canalul VTF 0 0: Dezactivează |
Pentru V3A: 0x00000000 Pentru V3B/C: 0xXXXXXXXXX |
|
PFIC_VTFADDRR1 |
0xE000E064 |
RW |
V3A: [31:24]: Numărul de întrerupere VTF 1 [23:0]: Cei 24 de biți inferiori ai adresei țintă VTF, dintre care cei 20 de biți inferiori sunt configurați pentru a fi validi și [23:20] este fixat la 0.
V3B/C: [31:1]: adresa VTF 1, aliniat pe 2 octeți [0]:1: Activați canalul VTF 1 0: Dezactivează |
Pentru V3A: 0x00000000 Pentru V3B/C: 0xXXXXXXXXX |
|
PFIC_VTFADDRR2 |
0xE000E068 |
RW |
V3A: [31:24]: numărul de întrerupere VTF 2 [23:0]: cei 24 de biți inferiori ai adresei țintă VTF, dintre care cei 20 de biți inferiori sunt configurați pentru a fi validi, iar [23:20] este fixat la 0 .
V3B/C: [31:1]: adresa VTF 2, aliniat pe 2 octeți [0]:1: Activați canalul VTF 2 0: Dezactivează |
Pentru V3A: 0x00000000 Pentru V3B/C: 0xXXXXXXXXX |
| PFIC_VTFADDRR3 | 0xE000E06C | RW | V3A: | Pentru V3A: |
| [31:24]: Numărul de întrerupere VTF 3 [23:0]: cei 24 de biți inferiori ai adresei țintă VTF, dintre care cei 20 de biți inferiori sunt configurați pentru a fi validi, iar [23:20] este fixat la 0.
V3B/C: [31:1]: adresa VTF 3, aliniat pe 2 octeți [0]:1: Activați canalul VTF 3 0: Dezactivează |
0x00000000
Pentru V3B/C: 0xXXXXXXXXX |
Registrul de control al sistemului (PFIC_SCTLR)
| Nume | Adresa de acces | Acces | Descriere | Resetează valoarea |
| PFIC_SCTLR | 0xE000ED10 | RW | Registrul de control al sistemului | 0x00000000 |
Fiecare dintre ele este definit după cum urmează.
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| 31 | SYSRESET | WO | Resetare sistem, ștergere automată 0. Scrierea 1 este validă, iar scrierea 0 este invalidă.
Notă: Acest bit este valabil numai pentru V3B/C |
0 |
| [30:6] | Rezervat | RO | Rezervat | 0 |
| 5 | SETEVENT | WO | Setați evenimentul pentru a trezi cazul WFE. | 0 |
|
4 |
SEVONPEND | RW | Când apare un eveniment sau întrerupe o stare în așteptare, sistemul poate fi trezit după instrucțiunea WFE, sau dacă instrucțiunea WFE nu este executată, sistemul va fi trezit imediat după următoarea execuție a instrucțiunii.
1: Evenimentele activate și toate întreruperile (inclusiv întreruperile neactivate) pot trezi sistemul. 0: Numai evenimentele activate și activate întreruperile pot trezi sistemul. |
0 |
| 3 | WFITOWFE | RW | Executați comanda WFI ca și cum ar fi un WFE.
1: Tratați instrucțiunea WFI ulterioară ca instrucțiune WFE. 0: Niciun efect. |
0 |
| 2 | DORMĂ ADÂNC | RW | Modul de putere redusă al sistemului de control. | 0 |
| 1: somn profund 0: somn | ||||
| 1 | SLEEPONEXI T | RW | Starea sistemului după ce controlul părăsește programul de service întrerupere.
1: Sistemul intră în modul de consum redus. 0: Sistemul intră în programul principal. |
0 |
| 0 | Rezervat | RO | Rezervat | 0 |
Registre CSR legate de întreruperi
În plus, următoarele registre CSR au, de asemenea, un impact semnificativ asupra procesării întreruperilor. Întreruperea registrului de control al sistemului (intsyscr)
Acest registru nu este valabil doar pentru V3A:
| Nume | CSR Adresa | Acces | Descriere | Resetează valoarea |
| intsyscr | 0x804 | URW | Întreruperea registrului de control al sistemului | 0x0000E002 |
Oamenii săi sunt definiți astfel:
| Pic | Nume | Acces | Descriere | Resetează valoarea |
|
31 |
BLOCARE |
URO |
0: Acest registru poate fi citit și scris în modul utilizator;
1: Acest registru poate fi citit și scris numai în modul mașină. Notă: Acest bit de configurare este valabil de la versiunea 1.0 înainte. |
0 |
| [30:6] | Rezervat | URO | Rezervat | 0x380 |
|
5 |
GIHWSTKNEN |
URW1 |
Întreruperea globală și oprirea stivei hardware sunt activate.
Notă: Acest bit este adesea folosit în sistemele de operare în timp real. Când contextul este comutat în timpul unei întreruperi, setarea acestui bit poate dezactiva întreruperea globală și poate împinge stiva hardware. Când comutarea contextului este finalizată și întreruperea revine, hardware-ul o va face ștergeți automat acest bit. |
0 |
| 4 | Rezervat | URO | Rezervat | 0 |
| [3:2] | PMTCFG | URW | Configurarea biților de prioritate de prioritate:
00: numărul de biți de preempțiune este 0; 01: Numărul de biți de preempțiune este 1; 10: Numărul de biți de preempțiune este 2; 11: Numărul de biți de preempțiune este 3; Notă: Acest bit de configurare este valabil după 1.0. |
0 |
| 1 | ASCULTA | URW | Funcția de imbricare întrerupere este activată, iar valoarea fixă este 1: | 1 |
| 0: Dezactivare;
1: Activați. Notă: 1. Nivelul real de imbricare este controlat de NEST_LVL în CSR 0xBC1; 2. Numai versiunile după 1.0 pot fi scris. |
||||
| 0 | HWSTKEN | URW | Activare stivă hardware:
0: Funcția de apăsare a stivei hardware este dezactivată; 1: Funcția de presare a stivei hardware este activată. |
0 |
Registrul de adrese de bază de excepție în modul mașină (mtvec)
| Nume | CSR Adresa | Acces | Descriere | Resetează valoarea |
| mtvec | 0x305 | MRW | Registrul de adrese de bază de excepție | 0x00000000 |
Oamenii săi sunt definiți ca
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:2] | BASEADDR[31:2] | MRW | Adresa de bază a tabelului vectorial de întrerupere, unde
biții [9:2] sunt fixați la 0. |
0 |
| 1 | MODUL 1 |
MRO |
Mod de recunoaștere a tabelului vector de întrerupere: 0: Identificați prin instrucțiuni de salt, cu sferă limitată și suportă instrucțiuni fără sărituri;
1: Identificați prin adresă absolută, acceptați gama completă, dar trebuie să sară. Notă: Acest bit este valabil numai pentru V3B/C. |
0 |
| 0 | MODUL 0 | MRW | Selectarea modului de intrare a adresei de întrerupere sau excepție.
0: Utilizarea adresei uniforme de intrare. 1: Compensarea adresei pe baza numărului de întrerupere *4. |
0 |
Pentru MCU-urile cu microprocesoare din seria V3, MODE0 este configurat să fie 1 în mod implicit la pornire file, iar intrările pentru excepții sau întreruperi sunt compensate în funcție de numărul de întreruperi *4. Rețineți că microprocesorul V3A stochează o instrucțiune de salt la tabelul vectorial, în timp ce microprocesorul V3B/C poate fie o instrucțiune de salt, fie să folosească adresa absolută a funcției de întrerupere, care este configurată ca o adresă absolută în pornirea implicită. file.
Registrul de configurare a microprocesorului (corector)
Acest registru este invalid pentru V3A:
| Nume | CSR Adresa | Acces | Descriere | Resetează valoarea |
| corecfgr | 0xBC0 | MRW | Registrul de configurare a microprocesorului | 0x00000001 |
Oamenii săi sunt definiți ca
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:8] | Rezervat | MRO | Rezervat | 0 |
|
7 |
CSTA_FAULT_IE |
MRW |
Activare întreruperea erorii de stare de bază:
0: La eroare de stare, nu este generată nicio întrerupere NMI; 1: La eroare de stare, întreruperea NMI este generate. |
0 |
| 6 | Rezervat | MRO | Păstrează-l 0. | 0 |
| 5 | IE_REMAP_EN | MRW | Maparea registrului MIE permite:
0: adresa CSR 0x800 este un registru numai pentru citire, iar valoarea returnată este valoarea STATUS; 1: Biții 3 și 7 ai adresei CSR 0x800 sunt mapați la bit MIE al registrului STATUS și, respectiv, bit MPIE al registrului STATUS. |
0 |
| 4 | Rezervat | MRO | Rezervat | 0 |
| 3 | ROM_LOOP_ACC | MRW | Activarea accelerației buclei de instrucțiuni din zona ROM:
0: Opriți funcția de accelerare ciclică în zona ROM; 1: Instrucțiunile continue cu un corp de buclă în 128 de octeți vor fi complet accelerate, în timp ce cele cu un corp de buclă în 256 de octeți vor fi parțial accelerate; |
0 |
| 2 | ROM_JUMP_ACC | MRW | Accelerarea săriturii de instrucțiuni în zona ROM este activată:
0: Dezactivează accelerarea săriturii instrucțiunilor din zona ROM; 1: Activați accelerarea saltului de instrucțiuni în zona ROM. |
0 |
| [1:0] | FETCH_MODE | MRW | Modul de preluare:
00: Preluare este dezactivată. Funcția de preluare a instrucțiunilor este dezactivată pentru a evita operațiunile de preluare a instrucțiunilor nevalide și există cel mult o instrucțiune validă pe conducta CPU. Acest model are cel mai mic consum de energie, iar performanța sa scade de aproximativ 2 ~ 3 ori. 01: Modul de preluare preliminară 1. Când funcția de preluare preliminară a instrucțiunilor este activată, CPU va continua să acceseze memoria de instrucțiuni până când numărul de instrucțiuni care urmează să fie executate în bufferul de instrucțiuni intern depășește un anumit număr sau bufferul de instrucțiuni este plin și preluarea instrucțiunilor va fi suspendată; (Eșecul predicției CPU va duce la operațiune redundantă de preluare, iar în unele cazuri, unitatea de execuție va introduce 0 ~ 2 cicluri de bule, iar performanța majorității programelor nu va scădea evident); 10: Rezervat; |
0x1 |
Întreruperea registrului de control imbricat (inestcr)
Acest registru este invalid numai pentru V3A:
| Nume | CSR Adresa | Acces | Descriere | Resetează valoarea |
| investitor | 0xBC1 | MRW | Întrerupeți registrul de control imbricat | 0x00000000 |
Oamenii săi sunt definiți ca
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| 31 | Rezervat | MRO | Rezervat | 0 |
| 30 | NEST_OV | MRW | Bit de semnalizare de depășire imbricată întrerupere/excepție, scrieți 1 pentru a șterge:
0: Întreruperea nu sa revărsat; 1: Indicatorul de întrerupere a depășirii. Notă: Overflow de întrerupere va avea loc numai atunci când se execută funcția de serviciu de întrerupere secundară pentru a genera o excepție de instrucțiune sau o întrerupere NMI. În acest moment, excepția și întreruperea NMI intră în mod normal, dar stiva CPU depășește, așa că nu puteți ieși din această excepție și întrerupere NMI. |
0 |
| [29:12] | Rezervat | MRO | Rezervat | 0 |
| [11:8] | NEST_STA | MRO | Bit de steag de stare imbricat:
0000: Fără întrerupere; 0001: întrerupere de nivel 1; 0011: întrerupere nivel 2 (imbricare cu 1 nivel); |
0 |
| 0111: întrerupere de nivel 3 (depășire);
1111: întrerupere de nivel 4 (depășire). |
||||
| [7:2] | Rezervat | MRO | Rezervat | 0 |
| [1:0] | NEST_LVL | MRW | Nivel de imbricare:
00: Imbricarea este interzisă și funcția de imbricare este dezactivată; 01: Imbricare de prim nivel, care activează funcția de cuibărit; Altele: invalid. Notă: Scrieți 10 sau 11 în acest câmp, iar câmpul va fi setat la 01. Când scrieți 11 în acest câmp, citiți acest registru pentru a obține cel mai înalt nivel de imbricare al cipului. |
0 |
Registrul de activare a întreruperii globale a modului utilizator (intern)
Acest registru este invalid numai pentru V3A:
| Nume | CSR Adresa | Acces | Descriere | Resetează valoarea |
| gintenr | 0x800 | URW | Registrul de activare a întreruperii globale | 0x00000000 |
Acest registru este folosit pentru a controla activarea și masca întreruperii globale. Activarea și masca întreruperii globale în modul mașină pot fi controlate de biții MIE și MPIE în stare, dar acest registru nu poate fi operat în modul utilizator.
Registrul global de activare a întreruperii gintenr este maparea MIE și MPIE în mstatus și poate fi folosit pentru a seta și șterge MIE și MPIE prin operarea gintenr în modul utilizator.
Fiecare dintre ele este definit ca:
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:13] | Rezervat | URO | Rezervat | 0 |
| [12:11] | MPP | URO | Intrați în modul privilegiat înainte de întrerupere. | 0 |
| [10:8] | Rezervat | URO | Rezervat | 0 |
| 7 | MPIE | URW | Când 0xBC0(CSR)bit5 este activat, acest bit
poate fi citit și scris în modul utilizator. |
0 |
| [6:4] | Rezervat | URO | Rezervat | 0 |
| 3 | MIE | URW | Când 0xBC0(CSR)bit5 este activat, acest bit
poate fi citit și scris în modul utilizator. |
0 |
| [1:0] | Rezervat | URO | Rezervat | 0 |
Întrerupeți imbricarea
Împreună cu registrul de întrerupere, de configurare PFIC_CFGR și registrul de prioritate de întrerupere PFIC_IPRIOR, se poate permite să apară imbricarea întreruperilor. Activați imbricarea în registrul de configurare a întreruperilor (Imbricarea este activată în mod implicit pentru microprocesoarele din seria V3) și configurați prioritatea întreruperii corespunzătoare. Cu cât valoarea priorității este mai mică, cu atât este mai mare. Cu cât valoarea bitului de preempțiune este mai mică, cu atât este mai mare prioritatea de preempțiune. Dacă există întreruperi suspendate în același timp sub aceeași prioritate de preempțiune, microprocesorul răspunde mai întâi la întrerupere cu valoarea de prioritate mai mică (prioritate mai mare).
Prolog/Epilog hardware (HPE)
- Când are loc o excepție sau o întrerupere, microprocesorul oprește fluxul de program curent și trece la execuția funcției de gestionare a excepției sau a întreruperilor, locul fluxului de program curent trebuie salvat. După revenirea excepției sau a întreruperii, este necesar să restabiliți site-ul și să continuați execuția fluxului de program oprit. Pentru microprocesoarele din seria V3, „site-ul” de aici se referă la toate registrele de apelant salvate din Tabelul 1-2.
- Microprocesoarele din seria V3 acceptă salvarea automată hardware într-un singur ciclu a 16 dintre registrele formate salvate de apelant într-o zonă internă de stivă care nu este vizibilă pentru utilizator. Când revine o excepție sau o întrerupere, ciclul unic hardware restaurează automat datele din zona internă a stivei în registrele în formă de 16. HPE acceptă imbricarea până la 2 nivele adâncime.
- O schemă a stivei de presiune a microprocesorului este prezentată în figura următoare.

Nota:
- Funcțiile de întrerupere care utilizează HPE trebuie compilate folosind MRS sau lanțul de instrumente furnizat de acesta, iar funcția de întrerupere trebuie să fie declarată cu __attribute__((interrupt(„WCH-Interrupt-fast”))).
- Funcția de întrerupere care utilizează stack push este declarată de __attribute__((interrupt())).
Tabel vectorial gratuit (VTF)
- Controlerul de întrerupere rapidă programabil (PFIC) oferă 4 canale VTF, adică acces direct la intrarea funcției de întrerupere fără a trece prin procesul de căutare a tabelului vector de întrerupere.
- Canalul VTF poate fi activat prin scrierea numărului său de întrerupere, a adresei de bază a funcției de întrerupere a serviciului și a adresei de compensare în registrul controlerului PFIC corespunzător, în timp ce se configurează o funcție de întrerupere în mod normal.
- Procesul de răspuns PFIC pentru întreruperi rapide și fără tabel este prezentat în Figura 3-2 de mai jos.

Protecția memoriei fizice PMP
- Pentru a îmbunătăți securitatea sistemului, modulul de protecție a memoriei fizice (PMP) este proiectat conform standardului de arhitectură RISC-V pentru microprocesoarele din seria V3 de orz de munte. Este acceptată gestionarea drepturilor de acces pentru până la 4 regiuni fizice. Permisiunile includ atribute de citire (R), scriere (W) și execuție (X), iar lungimea zonei protejate poate fi setată la cel puțin 4 octeți. Modulul PMP are întotdeauna efect în modul utilizator, dar poate avea efect opțional prin blocarea atributului (L) în modul mașină.
- Dacă accesul încalcă limita actuală de permisiune, va declanșa o întrerupere anormală. Modulul PMP include patru grupuri de registre de configurare de 8 biți (Un grup de 32 de biți) și patru grupuri de registre de adrese, toate acestea trebuind accesate în modul mașină prin instrucțiuni CSR.
- Nota: Numărul de zone protejate suportate de PMP în diferite modele de microprocesoare poate fi diferit, iar numărul suportat de registrele pmpcfg și pmpaddr este, de asemenea, diferit. Consultați Tabelul 1-1 pentru detalii.
Set de registru PMP
Lista registrelor CSR suportate de modulul PMP al microprocesorului V3 este prezentată în Tabelul 4-1 de mai jos.
Tabelul 4-1 Setul de registre al modulului PMP
| Nume | adresa CSR | Acces | Descriere | Resetează valoarea |
| pmpcfg0 | 0x3A0 | MRW | Registrul de configurare PMP 0 | 0x00000000 |
| pmpaddr0 | 0x3B0 | MRW | Registrul de adrese PMP 0 | 0xXXXXXXXXX |
| pmpaddr1 | 0x3B1 | MRW | Registrul de adrese PMP 1 | 0xXXXXXXXXX |
| pmpaddr2 | 0x3B2 | MRW | Registrul de adrese PMP 2 | 0xXXXXXXXXX |
| pmpaddr3 | 0x3B3 | MRW | Registrul de adrese PMP 3 | 0xXXXXXXXXX |
pmp
pmpcfg este registrul de configurare al unității PMP și fiecare registru conține patru câmpuri de pompare de 8 biți, corespunzătoare configurației a patru regiuni, iar pomparea reprezintă valoarea de configurare a regiunii i. Formatul acestuia este prezentat în următorul tabel 4-2.
Tabelul 4-2 Registrul pmpcfg0
pmpcfg este folosit pentru a configura zona I, iar definiția sa de biți este descrisă în următorul tabel 4-3.
Tabelul 4-3
| Pic | Nume | Descriere |
| 7 | L | Blocarea este activată și poate fi deblocată în modul mașină. 0: Nu este blocat;
1: Blocați registrul relevant. |
| [6:5] | – | Rezervat |
| [4:3] | A | Alinierea adresei și selectarea zonei de protecție. 00: OFF (PMP dezactivat)
01: TOR (protecție de aliniere superioară) 10: NA4 (protecție fixă pe patru octeți) 11: NAPOT (protecție 2(G+2) octeți, G≥1) |
| 2 | X | Atribut executabil. |
| 0: Fără permisiune de execuție;
1: Executați permisiunea. |
||
|
1 |
W |
Atribut care poate fi scris.
0: Fără permisiune de scriere 1: Permisiune de scriere. |
|
0 |
R |
Atribut care poate fi citit
0: Fără permisiunea de citire 1: Permisiunea de citire. |
pmpaddr
Registrul pmpaddr este utilizat pentru a configura adresa zonei I. Definiția standard este sub arhitectura RV32, care este codificarea celor 32 de biți superiori ai unei adrese fizice de 34 de biți, iar formatul acesteia este prezentat în următorul tabel 4-4. .
Întregul spațiu de adrese fizice al microprocesorului V3 este 4G, astfel încât cei doi biți superiori ai acestui registru nu sunt utilizați.
Tabelul 4-4 pmpaddr
Când este selectat NAPOT, bitul scăzut al registrului de adrese este, de asemenea, utilizat pentru a indica dimensiunea zonei de protecție curentă, așa cum se arată în tabelul următor, unde „y” este un bit din registru.
Tabelul 4-5 Tabel de relații dintre configurația PMP și registrul de adrese și zona protejată.
| pmpaddr | pmpcfg. O | Adresa de bază și dimensiunea potrivire |
| aaaaaaaaaaa | NA4 | Cu „yy…yyyy00” ca adresă de bază, zona de 4 octeți este protejată. |
| aaaa…aaaa0 | NAPOT | Cu „yy…yyy000” ca adresă de bază, zona de 8 octeți este protejată. |
| aaaa… aaa01 | NAPOT | Cu „yy…yy0000” ca adresă de bază, zona de 16 octeți este protejată. |
| aaaa… y011 | NAPOT | Cu „yy…y00000” ca adresă de bază, zona de 16 octeți este protejată. |
| … | … | … |
| aaa01…111 | NAPOT | Cu „y0…000000” ca adresă de bază, zona de 231 de octeți este protejată. |
| aa011…111 | NAPOT | Protejați întreaga zonă de 232 de octeți. |
Mecanism de protecție
X/W/R în pmpcfg este folosit pentru a seta autoritatea de protecție a zonei I, iar încălcarea autorității relevante va cauza o excepție corespunzătoare:
- Când încercați să preluați instrucțiuni în zona PMP fără autorizare de execuție, va provoca o excepție de eroare de acces la preluarea instrucțiunii (mcause=1).
- Când încercați să scrieți date în zona PMP fără permisiunea scrisă, va provoca o excepție de eroare (mcause=7) în accesul la instrucțiunile din magazin.
- Când încercați să citiți date din zona PMP fără permisiunea de citire, va provoca o eroare anormală de acces la memorie (mcause=5) pentru instrucțiunea de încărcare.
A din pmpcfg este folosit pentru a seta intervalul de protecție și alinierea adresei regiunii I și pentru a proteja memoria A_ADDR ≤ regiune < i > < B_ADDR (atât A_ADDR, cât și B_ADDR trebuie să fie aliniați în 4 octeți):
- Dacă B _ ADDR–A_ADDR = = 22, se adoptă modul NA4;
- Dacă B _ ADDR–A_ADDR = = 2(G+2), G≥1, iar o adresă _ este 2(g+2), se adoptă metoda NAPOT;
- În caz contrar, se adoptă modul TOP.
Tabelul 4-6 Metode de potrivire a adreselor PMP
| O valoare | Nume | Descriere |
| 0b00 | OFF | Nici o zonă de protejat |
| 0b01 | TOR | Protecția zonei aliniate de sus.
Sub pmp pmpaddri = B_ADDR >> 2. Notă: Dacă zona 0 a PMP este configurată ca mod TOR (i=0), limita inferioară a zonei de protecție este adresa 0, adică 0 ≤ addr < pmpaddr0, toate în intervalul de potrivire. |
| 0b10 | NA4 | Protecție fixă a zonei de 4 octeți.
pmp |
| 0b11 | NAPOT | Protejați regiunea 2(G+2) cu G ≥ 1, când A_ADDR este aliniat la 2(G+2). pmpaddri = ((A_ADDR|(2(G+2)-1)) &~(1< >1. |
- Bitul L din pmp
- Microprocesoarele din seria QingKe V3 suportă protecția mai multor zone. Când aceeași operațiune se potrivește cu mai multe zone în același timp, zona cu numărul mai mic este potrivită mai întâi.
Temporizator sistem (SysTick)
- Microprocesorul din seria QingKe V3 este proiectat cu un contor de 32 sau 64 de biți (SysTick) în interior. Sursa sa de ceas este ceasul de sistem sau diviziunea sa în 8 frecvențe, iar V3A acceptă doar diviziunea în 8 frecvențe.
- Poate oferi o bază de timp, sincronizare și timp de măsurare pentru un sistem de operare în timp real. Diferitele tipuri de registre implicate în temporizator au adrese de mapare diferite, așa cum se arată în tabelele 5-1 și 5-2 de mai jos.
Tabelul 5-1 Lista de registre SysTick V3A
| Nume | Adresa de acces | Descriere | Resetează valoarea |
| STK_CTLR | 0xE000F000 | Registrul de control al contorului sistemului | 0x00000000 |
| STK_CNTL | 0xE000F004 | Registrul contor de sistem scăzut | 0xXXXXXXXXX |
| STK_CNTH | 0xE000F008 | Contor de sistem registru ridicat
Notă: valabil numai pentru V3A. |
0xXXXXXXXXX |
| STK_CMPLR | 0xE000F00C | Valoarea de comparație a numărului de sistem registru scăzut | 0xXXXXXXXXX |
| STK_CMPHR | 0xE000F010 | Registrul de valoare de comparație a numărului de sistem ridicat
Notă: valabil numai pentru V3A. |
0xXXXXXXXXX |
Tabelul 5-2 Lista de registre SysTick V3 a altor modele
| Nume | Adresa de acces | Descriere | Resetează valoarea |
| STK_CTLR | 0xE000F000 | Registrul de control al contorului sistemului | 0x00000000 |
| STK_SR | 0xE000F004 | Registrul de stare a contorului sistemului | 0x00000000 |
| STK_CNTL | 0xE000F008 | Registrul scăzut al contorului de sistem | 0xXXXXXXXXX |
| STK_CMPLR | 0xE000F010 | Valoarea de comparație a numărului registru scăzut | 0xXXXXXXXXX |
Fiecare registru este descris în detaliu după cum urmează.
Registrul de control al contorului de sistem (STK_CTLR)
Tabelul 5-3 Registru de control SysTick
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:5] | Rezervat | RO | Rezervat | 0 |
|
4 |
MOD |
RW |
Mod de numărare: 1: numărătoare inversă;
0: Numără în sus. Notă: nevalid pentru V3A. |
0 |
|
3 |
STRE |
RW |
Bit de activare a numărului de reîncărcări automate:
1: Numărați din nou de la 0 după numărarea până la valoarea de comparație și numărați din nou de la valoarea de comparație după numărătoarea inversă până la 0; 0: Continuați numărătoarea în sus/în jos. Notă: nevalid pentru V3A. |
0 |
|
2 |
STCLK |
RW |
Bit de selectare a sursei de contraclock:
1: HCLK ca bază de timp; 0: HCLK/8 ca bază de timp. Notă: este invalid pentru V3A, care acceptă doar HCLK/8 ca bază de timp. |
0 |
| 1 | SITE | RW | Biți de control de activare a întreruperii contorului: | 0 |
| 1: Activează întreruperea contorului; 0: Dezactivează întreruperea contorului.
Notă: nevalid pentru V3A. |
||||
| 0 | STE | RW | Contorul de sistem activează un bit de control. 1: Activați contorul de sistem STK;
0: Dezactivați contorul de sistem STK și contorul nu mai numără. |
0 |
Registrul de stare a contorului de sistem (STK_SR)
Acest registru nu se aplică pentru V3A.
Tabelul 5-4 Registrul scăzut al contorului SysTick
| Pic | Nume | Acces | Descriere | Resetează valoarea |
|
31 |
SWIE |
RW |
Activare declanșare întrerupere software (SWI): 1: Declanșare întrerupere software;
0: Opriți declanșatorul. Notă: Acest bit trebuie șters după introducerea întreruperii software, altfel se va declanșa întotdeauna. |
0 |
| [30:1] | Rezervat | RO | Rezervat | 0 |
|
0 |
CNTIF |
RW |
Indicatorul de comparație de numărare, scrieți 0 clar, scrieți 1 nu este valid:
1: numărați până la valoarea de comparație și numărați până la 0; 0: Valoarea de comparație nu este atinsă. |
0 |
Registrul contor de sistem scăzut (STK_CNTL)
Tabelul 5-5 Registrul scăzut al contorului SysTick
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:0] | CNTL | RW | Valoarea curentă a contorului este cu 32 de biți mai mică. Pentru V3A, acest registru poate fi citit ca 8-bit/16-bit
/32 de biți, dar poate fi scris doar ca pe 8 biți și altele modelele nu sunt limitate. |
0xXXXXXX XXX |
Nota: Înregistrați STK_CNTL și înregistrați STK_CNTH în V3A împreună constituie un contor de sistem pe 64 de biți.
Registrul de contor de sistem înalt (STK_CNTH)
Tabelul 5-6 Registrul înalt al contorului SysTick
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:0] | CNTH | RW | Valoarea curentă a contorului este cu 32 de biți mai mare. Acest registru poate fi citit pe 8-bit/16-bit/32-bit, dar poate fi scris doar pe 8-bit.
Notă: valabil numai pentru V3A. |
0xXXXXXX XXX |
Nota: Înregistrați STK_CNTL și înregistrați STK_CNTH în V3A împreună constituie un contor de sistem pe 64 de biți.
Registrul scăzut al valorii de comparație a numărului de sistem (STK_CMPLR)
Tabelul 5-7 Registrul scăzut al valorii de comparație SysTick
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:0] | CMPL | RW | Setați valoarea de comparație a contorului la 32 de biți mai mică. Când valoarea CMP și valoarea CNT sunt egale, va fi declanșată o întrerupere STK. Pentru V3A, acest registru poate fi citit pe 8 biți /16 biți /32 biți, dar poate fi doar
scris ca pe 8 biți, iar alte modele nu sunt limitate. |
0xXXXXXX XXX |
Nota: Registrul STK_CMPLR și registrul STK_CMPHR din V3A constituie împreună valoarea de comparație a contorului de 64 de biți.
Registrul ridicat al valorii de comparație a numărului de sistem (STK_CMPHR)
Tabelul 5-8 Registrul ridicat al valorii de comparație SysTick
| Pic | Nume | Acces | Descriere | Resetează valoarea |
| [31:0] | CMPH | RW | Setați valoarea de comparație a contorului cu 32 de biți mai mare. Întreruperea STK va fi declanșată când valoarea CMP și valoarea CNT sunt egale.
Acest registru poate fi citit pe 8-bit/16-bit/32-bit, dar poate fi scris doar pe 8-bit. Notă: valabil numai pentru V3A. |
0xXXXXXX XXX |
Nota: Registrul STK_CMPLR și registrul STK_CMPHR din V3A constituie împreună valoarea de comparație a contorului de 64 de biți.
Setări de putere redusă a procesorului
- Microprocesoarele din seria QingKe V3 acceptă starea de repaus prin instrucțiuni WFI (Așteptați întrerupere) pentru a obține un consum de energie statică scăzut.
- Împreună cu registrul de control al sistemului PFIC (PFIC_SCTLR), pot fi implementate diferite moduri Sleep și instrucțiuni WFE.
Intră în somn
- Microprocesoarele din seria QingKe V3 pot intra în stare de repaus în două moduri, Wait for Interrupt (WFI) și Wait For Event (WFE). Metoda WFI înseamnă că microprocesorul intră în stare de repaus, așteaptă să se trezească o întrerupere și apoi se trezește la întreruperea corespunzătoare pentru a se executa. Metoda WFE înseamnă că microprocesorul intră în stare de repaus, așteaptă ca un eveniment să se trezească și se trezește pentru a continua să execute fluxul de program oprit anterior.
- RISC-V standard acceptă instrucțiuni WFI, iar comanda WFI poate fi executată direct pentru a intra în repaus prin metoda WFI. Pentru metoda WFE, bitul WFITOWFE din registrul de control al sistemului PFIC_SCTLR este utilizat pentru a controla comenzile WFI ulterioare ca procesare WFE pentru a realiza metoda WFE pentru a intra în repaus.
- Adâncimea somnului este controlată în funcție de bitul SLEEPDEEP din PFIC_SCTLR.
- Dacă SLEEPDEEP din registrul PFIC_SCTLR este șters la zero, microprocesorul intră în modul Sleep și ceasul unității interne poate fi oprit, cu excepția SysTick și a unei părți a logicii de trezire.
- Dacă SLEEPDEEP în registrul PFIC_SCTLR este setat, microprocesorul intră în modul de repaus profund și toate ceasurile celulelor pot fi oprite.
- Când microprocesorul este în modul Debug, nu este posibil să intrați în niciun fel de modul Sleep.
Trezirea somnului
Microprocesoarele din seria QingKe V3 pot fi trezite după somn datorită WFI și WFE în următoarele moduri.
După ce metoda WFI intră în somn, poate fi trezită de
- Microprocesorul poate fi trezit de sursa de întrerupere la care răspunde controlerul de întrerupere. După trezire, microprocesorul execută mai întâi funcția de întrerupere.
- Intrați în modul Sleep, cererea de depanare poate face ca microprocesorul să se trezească și să intre în somn profund, cererea de depanare nu poate trezi microprocesorul.
După ce metoda WFE intră în stare de repaus, microprocesorul poate fi trezit prin următoarele.
- Evenimentele interne sau externe, când nu este nevoie să configurați controlerul de întrerupere, treziți-vă și continuați să executați programul.
- Dacă o sursă de întrerupere este activată, microprocesorul este trezit când este generată o întrerupere, iar după trezire, microprocesorul execută mai întâi funcția de întrerupere.
- Dacă bitul SEVONPEND din PFIC_SCTLR este configurat, controlerul de întrerupere nu activează întreruperea, dar atunci când este generat un nou semnal de întrerupere în așteptare (semnalul în așteptare generat anterior nu are efect), poate face și microprocesorul să se trezească, iar indicatorul corespunzător de întrerupere în așteptare trebuie șters manual după trezire.
- Solicitarea de depanare în modul Sleep poate face ca microprocesorul să se trezească și să intre în somn profund, cererea de depanare nu poate trezi microprocesorul.
- În plus, starea microprocesorului după trezire poate fi controlată prin configurarea bitului SLEEPONEXIT în PFIC_SCTLR.
- SLEEPONEXIT este setat și instrucțiunea de revenire la ultimul nivel de întrerupere (mret) va declanșa modul de repaus WFI.
SLEEPONEXIT este ștearsă fără efect.
Diverse produse MCU echipate cu microprocesoare din seria V3 pot adopta diferite moduri de repaus, pot opri diferite periferice și ceasuri, pot implementa politici diferite de gestionare a energiei și metode de trezire în funcție de diferite configurații ale PFIC_SCTLR și pot realiza diverse moduri de consum redus.
Suport pentru depanare
- Microprocesoarele din seria QingKe V3 includ un modul hardware de depanare care acceptă operațiuni complexe de depanare. Când microprocesorul este suspendat, modulul de depanare poate accesa GPR-urile, CSR-urile, memoria, dispozitivele externe ale microprocesorului, etc. prin comenzi abstracte, instrucțiuni de implementare a bufferului de program etc. Modulul de depanare poate suspenda și relua funcționarea microprocesorului.
- Modulul de depanare urmează specificația RISC-V External Debug Support Version0.13.2, documentația detaliată poate fi descărcată de la RISC-V International website-ul.
Modul de depanare
- Modulul de depanare din interiorul microprocesorului, capabil să efectueze operațiuni de depanare emise de gazda de depanare, include.
- Acces la registre prin interfața de depanare
- Resetați, suspendați și reluați microprocesorul prin interfața de depanare
- Citiți și scrieți memoria, registrele de instrucțiuni și dispozitivele externe prin interfața de depanare
- Implementați mai multe instrucțiuni arbitrare prin interfața de depanare
- Setați punctele de întrerupere software prin interfața de depanare
- Setați punctele de întrerupere hardware prin interfața de depanare
- Acceptă execuția automată a comenzii abstracte
- Suportă depanare într-un singur pas
- Nota: V3A nu acceptă punctele de întrerupere hardware, punctele de întrerupere hardware V3B acceptă potrivirea adreselor de instrucțiuni, iar punctele de întrerupere hardware V3C acceptă potrivirea adresei de instrucțiuni și adresei datelor.
- Registrele interne ale modulului de depanare folosesc un cod de adresă de 7 biți, iar următoarele registre sunt implementate în interiorul microprocesoarelor din seria QingKe V3.
Tabelul 7-1 Lista registrului modulului de depanare
| Nume | Adresa de acces | Descriere |
| date0 | 0x04 | Registrul de date 0, poate fi utilizat pentru stocarea temporară a datelor |
| date1 | 0x05 | Registrul de date 1, poate fi utilizat pentru stocarea temporară a datelor |
| decontrol | 0x10 | Registrul de control al modulului de depanare |
| dmstatus | 0x11 | Registrul de stare al modulului de depanare |
| hartinfo | 0x12 | Registrul de stare al microprocesorului |
| rezumate | 0x16 | Registrul abstract de stare a comenzii |
| comanda | 0x17 | Registrul comenzilor abstracte |
| auto abstractă | 0x18 | Execuție automată a comenzii abstracte |
| progbuf0-7 | 0x20-0x27 | Registrele cache de instrucțiuni 0-7 |
| stopsum0 | 0x40 | Întrerupeți registrul de stare |
- Gazda de depanare poate controla suspendarea, reluarea, resetarea, etc. a microprocesorului prin configurarea registrului de decontrol. Standardul RISC-V definește trei tipuri de comenzi abstracte: registru de acces, acces rapid și memorie de acces.
- Microprocesorul QingKe V3A acceptă doar acces la registru, alte modele acceptă acces la registru și memorie, dar nu acces rapid. Accesul la registre (GPR, CSR) și accesul continuu la memorie pot fi realizate prin comenzi abstracte.
- Modulul de depanare implementează 8 registre cache de instrucțiuni progbuf0-7, iar gazda de depanare poate stoca în cache mai multe instrucțiuni (care pot fi instrucțiuni comprimate) în buffer și poate alege să continue executarea instrucțiunilor din registrele cache de instrucțiuni după executarea comenzii abstracte sau executarea direct instrucțiunile din cache.
- Nota că ultima instrucțiune din programe trebuie să fie o instrucțiune „ebreak” sau „c.ebreak”. Accesul la stocare, periferice etc. este posibil și prin comenzi abstracte și instrucțiuni stocate în cache în programe.
- Fiecare registru este descris în detaliu după cum urmează.
- Registrul de date 0 (data0)
Tabelul 7-2 Definiția registrului de date
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | date0 | RW | Registrul de date 0, utilizat pentru stocarea temporară a datelor | 0 |
Registrul de date 1 (data1)
Tabelul 7-3 definiția registrului data1
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | date1 | RW | Registrul de date 1, utilizat pentru stocarea temporară a datelor | 0 |
Registrul de control al modulului de depanare (decontrol)
Acest registru controlează întreruperea, resetarea și reluarea microprocesorului. Gazda de depanare scrie date în câmpul corespunzător pentru a realiza pauză (haltreq), resetare (ndmreset), reluare (resumereq). Descrieți următoarele.
Tabelul 7-4 definirea registrului de decontrol
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| 31 | haltreq | WO | 0: Ștergeți solicitarea de pauză
1: Trimiteți o solicitare de pauză |
0 |
| 30 | resumereq | W1 | 0: Invalid
1: Restaurați microprocesorul actual Notă: Scrierea 1 este validă și hardware-ul este șters după ce microprocesorul este recuperat |
0 |
| 29 | Rezervat | RO | Rezervat | 0 |
| 28 | ackhavereset | W1 | 0: Invalid
1: Ștergeți bitul de stare de recoltare al microprocesorului |
0 |
| [27:2] | Rezervat | RO | Rezervat | 0 |
| 1 | ndmreset | RW | 0: Ștergeți resetarea
1: Resetați întregul sistem, altul decât modulul de depanare |
0 |
| 0 | dezactivați | RW | 0: Resetați modulul de depanare
1: Modulul Debug funcționează corect |
0 |
Registrul de stare al modulului de depanare (starea dm)
- Acest registru este folosit pentru a indica starea modulului de depanare și este un registru numai pentru citire cu următoarea descriere a fiecărui bit.
Masă 7-5 definiția registrului dmstatus
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:20] | Rezervat | RO | Rezervat | 0 |
| 19 | allhavereset | RO | 0: Invalid
1: Resetarea microprocesorului |
0 |
| 18 | anyhavereset | RO | 0: Invalid
1: Resetarea microprocesorului |
0 |
| 17 | allresumeack | RO | 0: Invalid
1: Resetarea microprocesorului |
0 |
| 16 | anyresumeack | RO | 0: Invalid
1: Resetarea microprocesorului |
0 |
| [15:14] | Rezervat | RO | Rezervat | 0 |
| 13 | aluvionare | RO | 0: Invalid
1: Microprocesorul nu este disponibil |
0 |
| 12 | orice folos | RO | 0: Invalid
1: Microprocesorul nu este disponibil |
0 |
| 11 | toate alergând | RO | 0: Invalid
1: Microprocesorul rulează |
0 |
| 10 | orice alergare | RO | 0: Invalid
1: Microprocesorul rulează |
0 |
| 9 | oprit | RO | 0: Invalid
1: Microprocesorul este în suspensie |
0 |
| 8 | orice oprit | RO | 0: Invalid
1: Microprocesorul în suspensie |
0 |
| 7 | autentificat |
RO |
0: Este necesară autentificarea înainte de a utiliza modulul de depanare
1: Modulul de depanare a fost certificat |
0x1 |
| [6:4] | Rezervat | RO | Rezervat | 0 |
| [3:0] | versiune | RO | Arhitectura de suport pentru sistemul de depanare versiunea 0010: V0.13 | 0x2 |
Registrul de stare al microprocesorului (hartinfo)
Acest registru este folosit pentru a furniza informații despre microprocesor gazdei de depanare și este un registru numai pentru citire cu fiecare bit descris după cum urmează.
Tabelul 7-6 Definiția registrului hartinfo
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:24] | Rezervat | RO | Rezervat | 0 |
| [23:20] | zgâria | RO | Numărul de registre scratch acceptate | 0x3 |
| [19:17] | Rezervat | RO | Rezervat | 0 |
| 16 | DataAccess | RO | 0: Registrul de date este mapat la adresa CSR
1: Registrul de date este mapat la adresa de memorie |
0x1 |
| [15:12] | dimensiunea datelor | RO | Numărul de registre de date | 0x2 |
| [11:0] | adăugare de date |
RO |
Adresa offset a registrului de date data0,
a cărei adresă de bază este 0xe0000000, este supusă citirii specifice. |
0xXXX |
Controlul comenzilor abstracte și registrele de stare (rezumate)
Acest registru este folosit pentru a indica executarea comenzii abstracte. Gazda de depanare poate citi acest registru pentru a ști dacă ultima comandă abstractă este executată sau nu și poate verifica dacă este generată o eroare în timpul execuției comenzii abstracte și tipul erorii, care este descrisă în detaliu după cum urmează.
Tabelul 7-7 definițiile registrului de rezumate
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:29] | Rezervat | RO | Rezervat | 0 |
| [28:24] | progbufsize | RO | Indică numărul programului tampon de program
registre cache |
0x8 |
| [23:13] | Rezervat | RO | Rezervat | 0 |
| 12 | ocupat | RO | 0: Nu se execută nicio comandă abstractă
1: Există comenzi abstracte în curs de executare Notă: După execuție, hardware-ul este șters. |
0 |
| 11 | Rezervat | RO | Rezervat | 0 |
| [10:8] | cmder | RW | Tip eroare de comandă abstractă 000: Nicio eroare
001: Execuția comenzii abstracte pentru a scrie în comandă, rezumate, registre automate abstracte sau pentru a citi și scrie în registrele de date și progbuf 010: Nu acceptă comanda abstractă curentă 011: Executarea comenzii abstracte cu excepția 100: Microprocesorul nu este suspendat sau indisponibil și nu poate executa comenzi abstracte 101: Eroare magistrală 110: Eroare bit de paritate în timpul comunicării 111: Alte erori Notă: Pentru scrierea biților, 1 este folosit pentru a șterge zero. |
0 |
| [7:4] | Rezervat | RO | Rezervat | 0 |
| [3:0] | reducere | RO | Numărul de registre de date | 0x2 |
- Gazdele de depanare pot accesa GPR-urile, registrele CSR și memoria prin scrierea diferitelor valori de configurare în registrul de comenzi abstracte.
- La accesarea registrelor, biții registrului de comandă sunt definiți după cum urmează.
- Tabelul 7-8 Definiția registrului de comandă la accesarea registrelor
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:24] | tip cmd | WO | Tipul de comandă abstractă 0: Registrul de acces;
1: Acces rapid (nu este acceptat); 2: Acces la memorie. |
0 |
| 23 | Rezervat | WO | Rezervat | 0 |
| [22:20] | aarsize | WO | Lățimea de biți a datelor registrului de acces 000: 8 biți
001: 16 bit 010: 32 bit |
0 |
| 011: 64 de biți (neacceptat) 100: 128 de biți (neacceptat)
Notă: La accesarea registrelor în virgulă mobilă FPR, doar accesul pe 32 de biți este acceptat. |
||||
| 19 | aarpostincrement | WO | 0: Niciun efect
1: Creșteți automat valoarea regno după accesarea registrului |
0 |
| 18 | post exec | WO | 0: Niciun efect
1: Executați comanda abstractă și apoi executați comanda în progbuf |
0 |
| 17 | transfer | WO | 0: Nu executați operația specificată de scriere
1: Executați manipularea specificată de scriere |
0 |
| 16 | scrie | WO | 0: Copiați datele din registrul specificat în data0 1: Copiați datele din registrul data0 în registrul specificat |
0 |
| [15:0] | regatul | WO | Specificați registrele de acces 0x0000-0x0fff sunt CSR-uri 0x1000-0x101f sunt GPR-uri |
0 |
La accesarea memoriei, biții din registrul de comenzi sunt definiți după cum urmează.
Tabelul 7-9 Definiția comenzii Register when Accessing Memory
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:24] | tip cmd | WO | Tipul de comandă abstractă 0: Registrul de acces;
1: Acces rapid (nu este acceptat); 2: Accesați memoria. |
0 |
| 23 | aamvirtual | WO | 0: Acces adresa fizică;
1: Accesați adresa virtuală. |
0 |
| [22:20] | dimensiunea brațului | WO | Lățimea biților datelor memoriei de acces 000: 8 biți;
001: 16 biți; 010: 32 biți; 011: 64 de biți (nu este acceptat); 100: 128 de biți (nu este acceptat); |
0 |
| 19 | aampostincrement | WO | 0: Fără influență;
1: După accesarea cu succes a memoriei, măriți adresa stocată în registrul data1 cu numărul de octeți corespunzător lățimii de biți configurate în funcție de dimensiunea brațului. Aamsize=0, accesat prin octet, data1 plus 1. Aamsize=1, accesat prin jumătate de cuvânt, data1 plus 2. aamsize=2, accesat prin bit, data1 plus 4. |
0 |
| 18 | post exec | WO | 0: Fără influență;
1: Executați comanda în progbuf după executarea comenzii abstracte. |
0 |
| 17 | Rezervaţie | RO | Rezervat | 0 |
|
16 |
scrie |
WO |
0: Citiți datele de la adresa specificată de data1 la data0
1: Scrieți datele în data0 la adresa specificată de date1. |
0 |
|
[15:14] |
specifice țintei |
WO |
Definiția modului de citire și scriere Scriere:
00, 01: Scrieți direct în memorie; 10: După ce datele din data0 sunt SAU cu biții de date din memorie, rezultatul este scris în memorie (este acceptat doar accesul la cuvinte). 11: După însumarea datelor din data0 cu biții de date din memorie, scrieți rezultatul în memorie (este acceptat doar accesul la cuvinte). Citire: 00, 01, 10, 11: Citiți 0 direct din memorie. |
0 |
| [13:0] | Rezervaţie | RO | Rezervat |
Registrul de execuție automată a comenzii abstracte (auto abstract)
Acest registru este folosit pentru a configura modulul de depanare. Când citiți și scrieți progbufx și datele modulului de depanare, comanda abstractă poate fi executată din nou.
Descrierea acestui registru este următoarea:
Tabelul 7-10 Definiție abstractă a registrului automat
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:16] | autoexecprogbuf | RW | Dacă este setat un bit, citirea și scrierea corespunzătoare a lui progbufx va face ca comanda abstractă din registrul de comenzi să fie executată din nou.
Notă: Seria V3 este proiectată cu 8 progbuf-uri, corespunzător biților [23:16]. |
0 |
| [15:12] | Rezervaţie | RO | Rezervat | 0 |
| [11:0] | autoexecdata |
RW |
Dacă un bit este setat la 1, citirea și scrierea corespunzătoare a registrului de date va face ca comanda abstractă din registrul de comandă să fie executată din nou.
Notă: seria V3 este proiectată cu două date registre, corespunzătoare biților [1:0]. |
0 |
Registrul cache de instrucțiuni (progbufx)
Acest registru este folosit pentru a stoca orice instrucțiune și pentru a implementa operația corespunzătoare, inclusiv 8, care trebuie să acorde atenție ultimei execuții care trebuie să fie „break” sau „c.ebreak”.
Tabelul 7-11 Definiția registrului progbuf
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | progbuf | RW | Codificarea instrucțiunilor pentru operațiunile de cache, care
poate include instrucțiuni de compresie |
0 |
Întrerupeți registrul de stare (haltsum0)
Acest registru este folosit pentru a indica dacă microprocesorul este suspendat sau nu. Fiecare bit indică starea suspendată a unui microprocesor, iar când există un singur nucleu, doar bitul cel mai mic al acestui registru este folosit pentru a-l indica.
Tabelul 7-12 definiția registrului haltsum0
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:1] | Rezervat | RO | Rezervat | 0 |
| 0 | stopsum0 | RO | 0: Microprocesorul funcționează normal
1: Oprire microprocesor |
0 |
- Pe lângă registrele menționate mai sus ale modulului de depanare, funcția de depanare implică și unele registre CSR, în principal registrul de control și stare de depanare dcsr și pointerul instrucțiunii de depanare dpc, care sunt descrise în detaliu după cum urmează.
- Control de depanare și registru de stare (dcsr)
Tabelul 7-13 definirea registrului dcsr
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:28] | xdebugver | DRO | 0000: Depanarea externă nu este acceptată 0100: Suportă depanarea externă standard
1111: Depanarea externă este acceptată, dar nu se îndeplinește caietul de sarcini |
0x4 |
| [27:16] | Rezervat | DRO | Rezervat | 0 |
| 15 | pauză | DRW | 0: Comanda break în modul mașină se comportă așa cum este descris în privilegiu file
1: Comanda break în modul mașină poate intra în modul depanare |
0 |
| [14:13] | Rezervat | DRO | Rezervat | 0 |
| 12 | despărți |
DRW |
0: Comanda break în modul utilizator se comportă așa cum este descris în privilegiu file
1: Comanda break în modul utilizator poate intra în modul depanare |
0 |
| 11 | pas | DRW | 0: Întreruperile sunt dezactivate la depanarea într-un singur pas
1: Activați întreruperile în depanarea într-un singur pas |
0 |
| 10 | Rezervat | DRO | Rezervat | 0 |
| 9 | opri timpul | DRW | 0: Cronometrul de sistem rulează în modul Depanare
1: Cronometrul sistemului se oprește în modul Depanare |
0 |
| [8:6] | cauza | DRO | Motive pentru a intra în depanare
001: Introducerea depanării sub formă de comandă break (prioritatea 3) 010: Introducerea depanării sub forma unui modul de declanșare (prioritatea 4, cea mai mare) 011: Introducerea depanării sub formă de solicitare de pauză (prioritatea 1) 100: depanare sub formă de depanare într-un singur pas (prioritatea 0, cea mai mică) |
0 |
| 101: intrați în modul de depanare direct după resetarea microprocesorului (prioritatea 2) Altele: rezervat | ||||
| [5:3] | Rezervat | DRO | Rezervat | 0 |
| 2 | pas | DRW | 0: dezactivați depanarea într-un singur pas
1: Activați depanarea într-un singur pas |
0 |
| [1:0] | Prev | DRW | Mod privilegiu 00: Mod utilizator
01: Mod supervizor (nu este acceptat) 10: Rezervat 11: Modul mașină Notă: Înregistrați modul privilegiat când intrați în modul de depanare, depanatorul poate modifica această valoare pentru a modifica modul privilegiat la ieșirea din depanare |
0 |
Indicator de program pentru modul de depanare (DPC)
- Acest registru este folosit pentru a stoca adresa următoarei instrucțiuni care urmează să fie executată după ce microprocesorul intră în modul de depanare, iar valoarea acestuia este actualizată cu reguli diferite în funcție de motivul intrării în depanare. Registrul dpc este descris în detaliu după cum urmează.
Tabelul 7-14 Definițiile registrului dpc
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | DPC | DRW | Adresa de instrucție | 0 |
Regulile de actualizare a registrelor sunt prezentate în tabelul următor.
Tabelul 7-15 reguli de actualizare dpc
| Introduceți metoda de depanare | Regulile de actualizare dpc |
| pauză | Adresa instrucțiunii Ebreak |
| un singur pas | Adresa instrucțiunii următoarei instrucțiuni a instrucțiunii curente |
| modul de declanșare | Nu este acceptat temporar |
| cerere de oprire | Adresa următoarei instrucțiuni care urmează să fie executată la intrarea în Debug |
Interfață de depanare
- Diferit de standardul JTAG interfață definită de RISC-V, microprocesorul din seria QingKe V3 adoptă 1-o interfață de depanare serială cu fir/2 fire și urmează protocolul de interfață de depanare WCH V1.0.
- Interfața de depanare este responsabilă pentru comunicarea dintre gazda de depanare și modulul de depanare și realizează operația de citire/scriere a gazdei de depanare în registrele modulului de depanare.
- WCH a proiectat WCH_Link și open source schematica și programul său binar files, care poate fi folosit pentru depanarea tuturor microprocesoarelor cu arhitectura RISC-V.
- Consultați Manualul protocolului de depanare WCH pentru protocoale specifice de interfață de depanare.
Lista Registrului CSR
- Arhitectura RISC-V definește un număr de registre de control și stare (CSR) pentru controlul și înregistrarea stării de funcționare a microprocesorului.
- Unele dintre CSR-uri au fost introduse în secțiunea anterioară, iar acest capitol va detalia registrele CSR implementate în microprocesoarele din seria QingKe V3.
Lista Registrului CSR
Tabelul 8-1 Lista registrelor CSR ale microprocesorului
| Tip | Nume | CSR Adresa | Acces | Descriere |
| RISC-V
CSR standard |
marchid | 0xF12 | MRO | Registrul numerelor de arhitectură |
| mimpid | 0xF13 | MRO | Registrul de numerotare implementare hardware | |
| mstatus | 0x300 | MRW | Registrul de stare | |
| misa | 0x301 | MRW | Registrul setului de instrucțiuni hardware | |
| mtvec | 0x305 | MRW | Registrul de adrese de bază de excepție | |
| mscratch | 0x340 | MRW | Modul mașină stagregistru ing | |
| MEPC | 0x341 | MRW | Registrul indicator al programului de excepție | |
| mcauza | 0x342 | MRW | Registrul cauzelor de excepție | |
| mtval | 0x343 | MRW | Registrul valorii de excepție | |
| pmpcfg | 0x3A0+i | MRW | Registrul de configurare PMP | |
| pmpaddr | 0x3B0+i | MRW | Registrul de adrese PMP | |
| tselect | 0x7A0 | MRW | Depanați registrul de selecție a declanșatorului | |
| tdata1 | 0x7A1 | MRW | Depanați registrul de date de declanșare 1 | |
| tdata2 | 0x7A2 | MRW | Depanați registrul de date de declanșare 2 | |
| dcsr | 0x7B0 | DRW | Controlul de depanare și registrele de stare | |
| dpc | 0x7B1 | DRW | Registrul indicator al programului în modul de depanare | |
| dscratch0 | 0x7B2 | DRW | Modul de depanare stagregistru 0 | |
| dscratch1 | 0x7B3 | DRW | Modul de depanare stagregistru 1 | |
|
CSR definit de furnizor |
gintenr | 0x800 | URW | Registrul de activare a întreruperii globale |
| intsyscr | 0x804 | URW | Întreruperea registrului de control al sistemului | |
| corecfgr | 0xBC0 | MRW | Registrul de configurare a microprocesorului | |
| inestcr | 0xBC1 | MRW | Întrerupeți registrul de control imbricat |
Registrele CSR standard RISC-V
- Registrul numerelor de arhitectură (marchid)
- Acest registru este un registru numai pentru citire pentru a indica numărul actual al arhitecturii hardware a microprocesorului, care este compus în principal din codul furnizorului, codul arhitecturii, codul seriei și codul versiunii. Fiecare dintre ele este definit după cum urmează.
Tabelul 8-2 Definiția registrului marchid
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| 31 | Rezervat | MRO | Rezervat | 1 |
| [30:26] | Vender0 | MRO | Cod producator 0
Fixat la codul litera „W”. |
0x17 |
| [25:21] | Vender1 | MRO | Cod producator 1
Fixat la codul litera „C”. |
0x03 |
| [20:16] | Vender2 | MRO | Cod producator 2
Fixat la codul litera „H”. |
0x08 |
| 15 | Rezervat | MRO | Rezervat | 1 |
| [14:10] | Arc | MRO | Cod de arhitectură | 0x16 |
| Arhitectura RISC-V este fixată la codul litera „V”. | ||||
| [9:5] | Serial | MRO | Cod de serie
Seria QingKe V3, fixată la numărul „3” |
0x03 |
| [4:0] | Versiune | MRO | Codul versiunii
Poate fi versiunea „A”, „B”, „C” și alte litere ale codului |
x |
Numărul producătorului și numărul versiunii sunt alfabetice, iar numărul seriei este numeric. Tabelul de codificare al literelor este prezentat în tabelul următor.
Tabelul 8-3 Tabelul de cartografiere alfabetică
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
- Printre acestea, microprocesorul QingKe V3A, registrul citește înapoi la 0.
Registrul de numerotare implementare hardware (limpid)
- Acest registru este compus în principal din coduri de furnizor, fiecare dintre acestea fiind definit după cum urmează.
Tabelul 8-4 Definiția registrului limpid
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| 31 | Rezervat | MRO | Rezervat | 1 |
| [30:26] | Vender0 | MRO | Cod producator 0
Fixat la codul litera „W”. |
0x17 |
| [25:21] | Vender1 | MRO | Cod producator 1
Fixat la codul litera „C”. |
0x03 |
| [20:16] | Vender2 | MRO | Cod producator 2
Fixat la codul litera „H”. |
0x08 |
| 15 | Rezervat | MRO | Rezervat | 1 |
| [14:8] | Rezervat | MRO | Rezervat | 0 |
| [7:4] | Minor | MRO | Numărul de subversiune | 0xX |
| [3:0] | Major | MR0 | Numărul major al versiunii | 0xX |
- Acest registru este citibil în orice implementare a mașinii, iar în procesorul din seria QingKe V3A, acest registru citește înapoi la zero.
Registrul de stare a modului mașină (mstatus)
- Acest registru a fost parțial descris în secțiunea anterioară, iar oamenii săi sunt poziționați după cum urmează.
Tabelul 8-5 Definiția registrului mstatus
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:13] | Rezervat | MRO | Rezervat | 0 |
| [12:11] | MPP | MRW | Mod privilegiat înainte de a intra în pauză | 0 |
| [10:8] | Rezervat | MRO | Rezervat | 0 |
| 7 | MPIE | MRW | Starea de activare a întreruperii înainte de a intra într-o întrerupere | 0 |
| [6:4] | Rezervat | MRO | Rezervat | 0 |
| 3 | MIE | MRW | Activare întreruperea modului mașină | 0 |
| [2:0] | Rezervat | MRO | Rezervat | 0 |
- Câmpul MPP este folosit pentru a salva modul privilegiat înainte de a intra în excepție sau întrerupere și este folosit pentru a restabili modul privilegiat după ieșirea din excepție sau întrerupere. MIE este bitul de activare globală a întreruperii, iar la introducerea excepției sau a întreruperii, valoarea MPIE este actualizată la valoarea MIE și trebuie remarcat că la microprocesoarele din seria QingKe V3, MIE nu va fi actualizat la 0 înainte de ultimul nivel de întreruperi imbricate pentru a se asigura că imbricarea întreruperilor în modul Machine continuă să fie executată. Când o excepție sau o întrerupere este ieșită, microprocesorul revine la modul Machine salvat de MPP și MIE este restabilit la valoarea MPIE.
- Microprocesorul QingKe V3 acceptă modul Machine și modul User, dacă trebuie să faceți ca microprocesorul să funcționeze numai în modul Machine, puteți seta MPP la 0x3 la inițializarea boot-ului file, adică după întoarcere, va rămâne întotdeauna în modul Machine.
Registrul set de instrucțiuni hardware (misa)
- Acest registru este folosit pentru a indica arhitectura microprocesorului și extensiile setului de instrucțiuni suportate, fiecare dintre acestea fiind descrisă după cum urmează.
Tabelul 8-6 Definiția registrului misa
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:30] | MXL | MRO | Lungimea cuvântului mașină 1:32
2:64 3:128 |
1 |
| [29:26] | Rezervat | MRO | Rezervat | 0 |
| [25:0] | Extensii | MRO | Extensii pentru setul de instrucțiuni | x |
- MXL este folosit pentru a indica lungimea cuvântului microprocesorului, QingKe V3 sunt microprocesoare pe 32 de biți, iar domeniul este fixat la 1.
- Extensiile sunt folosite pentru a indica faptul că microprocesorul acceptă detalii ale setului de instrucțiuni extinse, fiecare indicând o clasă de extensii, descrierea sa detaliată este prezentată în tabelul următor.
Tabelul 8-7 Detalii extensie set de instrucțiuni
| Pic | Nume | Descriere |
| 0 | A | Extensie atomică |
| 1 | B | Rezervat provizoriu pentru extensia Bit-Manipulation |
| 2 | C | Extensie comprimată |
| 3 | D | Extensie în virgulă mobilă cu dublă precizie |
| 4 | E | RV32E baza ISA |
| 5 | F | Extensie cu virgulă mobilă cu o singură precizie |
| 6 | G | Sunt prezente extensii standard suplimentare |
| 7 | H | Extensie hypervisor |
| 8 | I | RV32I/64I/128I bază ISA |
| 9 | J | Rezervat provizoriu pentru extensia Limbi traduse dinamic |
| 10 | K | Rezervat |
| 11 | L | Rezervat provizoriu pentru extensia Decimal Floating-Point |
| 12 | M | Extensia Integer Multiply/Divide |
| 13 | N | Sunt acceptate întreruperi la nivel de utilizator |
| 14 | O | Rezervat |
| 15 | P | Rezervat provizoriu pentru extensia Packed-SIMD |
| 16 | Q | Extensie în virgulă mobilă cu patru precizie |
| 17 | R | Rezervat |
| 18 | S | Modul supervizor implementat |
| 19 | T | Rezervat provizoriu pentru extensia memoriei tranzacționale |
| 20 | U | Modul utilizator implementat |
| 21 | V | Rezervat provizoriu pentru extensia Vector |
| 22 | W | Rezervat |
| 23 | X | Sunt prezente extensii non-standard |
| 24 | Y | Rezervat |
| 25 | Z | Rezervat |
- De example, pentru microprocesorul QingKe V3A, valoarea registrului este 0x401001105, ceea ce înseamnă că arhitectura setului de instrucțiuni acceptată este RV32IMAC și are implementarea modului utilizator.
Registrul de adrese de bază de excepție în modul mașină (mtvec)
- Acest registru este folosit pentru a stoca adresa de bază a excepției sau a gestionatorului de întreruperi, iar cei doi biți inferiori sunt utilizați pentru a configura modul și metoda de identificare a tabelului vectorial, așa cum este descris în Secțiunea 3.2.
Modul mașină stagregistru de operare (mscratch)
Tabelul 8-8 definițiile registrului mscratch
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | mscratch | MRW | Stocarea datelor | 0 |
Acest registru este un registru de 32 de biți care poate fi citit și scris în modul mașină pentru stocarea temporară a datelor. De exampla introducerea unei excepții sau a unui handler de întrerupere, indicatorul de stivă de utilizator SP este stocat în acest registru și pointerul de stivă de întreruperi este atribuit registrului SP. După ieșirea din excepție sau întrerupere, restabiliți de la zero valoarea indicatorului de stivă de utilizator SP. Adică, stiva de întreruperi și stiva de utilizator pot fi izolate.
Registrul indicator al programului de excepție în modul mașină (hartă)
Tabelul 8-9 definițiile registrului mepc
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | mepc | MRW | Indicatorul procedurii de excepție | 0 |
- Acest registru este folosit pentru a salva indicatorul programului atunci când introduceți o excepție sau întrerupere.
- Este folosit pentru a salva indicatorul PC cu instrucțiuni înainte de a introduce o excepție atunci când este generată o excepție sau o întrerupere, iar mepc este folosit ca adresă de retur atunci când excepția sau întreruperea este gestionată și utilizată pentru o excepție sau întrerupere.
- Cu toate acestea, este important să rețineți că.
- Când apare o excepție, mepc este actualizat la valoarea PC a instrucțiunii care generează în prezent excepția.
- Când apare o întrerupere, mepc este actualizat la valoarea PC a instrucțiunii următoare.
- Când trebuie să returnați o excepție după procesarea excepției, ar trebui să acordați atenție modificării valorii mepc, iar mai multe detalii puteți găsi în Capitolul 2 Excepții.
Registrul cauzei excepții în modul mașină (mcause)
Tabelul 8-10 definiția registrului de cauze
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| 31 | Întrerupe | MRW | Câmpul de indicare a întreruperii 0: Excepție
1: întrerupere |
0 |
| [30:0] | Cod de excepție | MRW | Pentru codurile de excepție, consultați Tabelul 2-1 pentru detalii | 0 |
- Acest registru este utilizat în principal pentru a stoca cauza excepției sau numărul de întrerupere al întreruperii. Cel mai înalt bit al său este câmpul de întrerupere, care este folosit pentru a indica dacă apariția curentă este o excepție sau o întrerupere.
- Bitul inferior este codul de excepție, care este folosit pentru a indica cauza specifică. Detaliile sale pot fi găsite în Capitolul 2 Excepții.
Registrul valorii de excepție în modul mașină (mtval)
Tabelul 8-11 definiția registrului mtval
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | mtval | MRW | Valoare de excepție | 0 |
- Acest registru este folosit pentru a păstra valoarea care a cauzat excepția atunci când apare o excepție. Pentru detalii precum valoarea și timpul de stocare, vă rugăm să consultați Capitolul 2 Excepții.
Registrul de configurare PMP (pmpcfg
- Acest registru este folosit în principal pentru configurarea unității de protecție a memoriei fizice, iar fiecare 8 biți ai acestui registru sunt utilizați pentru a configura protecția unei zone. Vă rugăm să consultați capitolul 4 pentru definiția detaliată.
Registrul adresei PMP (pmpaddr
- Acest registru este utilizat în principal pentru configurarea adresei unității de protecție a memoriei fizice, care codifică cei 32 de biți superiori ai unei adrese fizice de 34 de biți. Consultați capitolul 4 pentru metoda de configurare specifică.
Registru indicator al programului în modul de depanare (DPC)
- Acest registru este folosit pentru a stoca adresa următoarei instrucțiuni care urmează să fie executată după intrarea microprocesorului
- Modul de depanare și valoarea acestuia sunt actualizate cu reguli diferite în funcție de motivul pentru care ați introdus depanarea. Consultați Secțiunea 6.1 pentru o descriere detaliată.
Depanare registru de selectare a declanșatorului (selectare)
- Este valabil doar pentru microprocesoarele care acceptă puncte de întrerupere hardware și acceptă puncte de întrerupere pe 4 canale cel mult, iar cei 2 biți inferiori sunt validi.
- Când configurați fiecare punct de întrerupere a canalului, trebuie să selectați canalul corespunzător prin acest registru înainte de configurare.
Tabelul 8-12 selectați definiția registrului
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:2] | Rezervat | MRO | Rezervat | 0 |
| [1:0] |
SELECTA |
MRW |
Registrul de selecție a canalului punctului de întrerupere este configurat, adică după ce canalul corespunzător este selectat, registrele tdata1 și tdata2 pot fi operate pentru a configura un punct de întrerupere
informaţii. |
X |
Depanați registrul de date de declanșare 1 (tdata1)
Este valabil numai pentru microprocesoarele care acceptă puncte de întrerupere hardware. Microprocesoarele acceptă numai punctele de întrerupere pentru adresa de instrucțiuni și adresa de date, unde TIPUL de bit al registrului tdata1 este o valoare fixă de 2, iar alți biți se conformează definiției de control din standardul de depanare.
Tabelul 8-13 Definiția registrului tdata1
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:28] | TIP | MRO | Definiție tip breakpoint, tip control. | 0x2 |
|
27 |
DMODE |
MRO |
0: Registrele relevante ale flip-flop-ului pot fi modificate atât în modul mașină, cât și în modul de depanare;
1: Numai modul de depanare poate modifica registrele relevante ale flip-flop-ului. |
1 |
| [26:21] |
MASKMAX |
MRO |
Când MATCH=1, intervalul maxim de putere exponențială de potrivire este permis, adică intervalul maxim de potrivire permis este de 231 de octeți. |
0x1F |
| [20:13] | Rezervat | MRO | Rezervat | 0 |
|
12 |
ACŢIUNE |
MRW |
Setați modul de procesare la declanșarea unui punct de întrerupere:
0: La declanșare, introduceți punctul de întrerupere și apelați întreruperea; 1: Intrați în modul de depanare când este declanșat. |
0 |
| [11:8] | Rezervat | MRO | Rezervat | 0 |
|
7 |
MECI |
MRW |
Configurația politicii potrivite:
0: Se potrivește când valoarea declanșatorului este egală cu TDATA2; 1: Valoarea de declanșare se potrivește cu bitul m înalt al TDATA2, unde m = 31–n, iar n este primul citat 0 al TDATA2 (începând de la bitul scăzut). |
0 |
|
6 |
M |
MRW |
Activați flip-flop în modul M:
0: Dezactivează declanșatorul în modul M; 1: Activați declanșatorul în modul M. |
0 |
| [5:4] | Rezervat | MRO | Rezervat | 0 |
|
3 |
U |
MRW |
Activați declanșarea în modul U:
0: Dezactivați declanșatorul în modul U; 1: Activați declanșatorul în modul U. |
0 |
|
2 |
EXECUTA |
MRW |
Declanșatorul adresei de citire a instrucțiunii este activat: 0: Dezactivare;
1: Activați. |
0 |
|
1 |
MAGAZIN |
MRW |
Activat declanșarea adresei de scriere a datelor: 0: Dezactivare;
1: Activați. |
0 |
|
0 |
ÎNCĂRCA |
MRW |
Declanșatorul adresei de citire a datelor este activat: 0: Dezactivat;
1: Activați. |
0 |
Depanați registrul de date de declanșare 2 (tdata2)
Este valabil numai pentru microprocesoarele care acceptă puncte de întrerupere hardware și este folosit pentru a salva valoarea potrivită a declanșatorului.
Tabelul 8-14 Definiția registrului tdata2
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | TDATA2 | MRW | Folosit pentru a salva valorile care se potrivesc. | X |
Control de depanare și registru de stare (dcsr)
Acest registru este folosit pentru a controla și înregistra starea de funcționare a modului de depanare. Consultați Secțiunea 7.1 pentru detalii.
Indicator de program pentru modul de depanare (DPC)
Acest registru este folosit pentru a stoca adresa următoarei instrucțiuni care urmează să fie executată după ce microprocesorul intră în modul de depanare, valoarea acestuia este diferită în funcție de motivele intrării în modul de depanare, iar regulile de actualizare sunt și ele diferite. Consultați Secțiunea 7.1 pentru o descriere detaliată.
Modul de depanare stagregistru de înregistrare (dscratch0-1)
Acest grup de registre este folosit pentru stocarea temporară a datelor în modul Debug.
Tabelul 8-15 definițiile registrului dscratch0-1
| Pic | Nume | Acces | Descriere | Resetați valoarea |
| [31:0] | dscratch | DRW | Date mod de depanare stagvaloare ing | 0 |
Registrul CSR definit de utilizator
Registrul de activare a întreruperii globale a modului utilizator (gintenr)
- Acest registru este folosit pentru a controla activarea și masca întreruperii globale. Activarea și masca întreruperii globale în modul mașină pot fi controlate de biții MIE și MPIE în stare, dar acest registru nu poate fi operat în modul utilizator.
- În timp ce întreruperea globală permite înregistrarea, gintenr este maparea MIE și MPIE în stare.
- În modul utilizator, intenția poate fi utilizată pentru a seta și șterge MIE și MPIE, așa cum este descris în Secțiunea 3.2 pentru detalii.
Nota
- Întreruperile globale nu includ întreruperi nemascate NMI și excepții.
Întreruperea registrului de control al sistemului (intsyscr)
Acest registru este folosit în principal pentru a configura adâncimea de imbricare a întreruperii, presarea stivei hardware și alte funcții conexe, așa cum este descris în Secțiunea 3.2 pentru detalii.
Registrul de configurare a microprocesorului (corecfgr)
Acest registru este folosit pentru a controla dacă întreruperea NMI este permisă după depășirea întreruperii și dacă cererea de întrerupere este șters atunci când instrucțiunea de gard este executată. Vă rugăm să consultați Secțiunea 3.2 pentru definiția specifică.
Întreruperea registrului de control imbricat (inestcr)
Acest registru este folosit pentru a indica starea de imbricare a întreruperii și dacă depășește sau nu și pentru a controla nivelul maxim de imbricare. Vă rugăm să consultați Secțiunea 3.2 pentru definiția specifică.
Documente/Resurse
![]() |
Microprocesor WH V3 [pdfManual de utilizare Microprocesor V3, V3, Microprocesor |





