Cuprins:

Proiectarea unui controler de întrerupere programabil în VHDL: 4 pași
Proiectarea unui controler de întrerupere programabil în VHDL: 4 pași

Video: Proiectarea unui controler de întrerupere programabil în VHDL: 4 pași

Video: Proiectarea unui controler de întrerupere programabil în VHDL: 4 pași
Video: Lucram intens la solutii moderne de iluminat cu leduri 2024, Noiembrie
Anonim
Proiectarea unui controler de întrerupere programabil în VHDL
Proiectarea unui controler de întrerupere programabil în VHDL

Sunt copleșit de felul de răspunsuri pe care le primesc în acest blog. Mulțumesc băieți că mi-ați vizitat blogul și m-ați motivat să vă împărtășesc cunoștințele. De data aceasta, voi prezenta designul unui alt modul interesant pe care îl vedem în toate SOC-urile - Controler de întrerupere.

Vom proiecta un controler de întrerupere programabil simplu, dar puternic. Este un design complet configurabil și parametrizat, care este portabil pe platforme. Am proiectat acest lucru după ce am citit multe despre unele arhitecturi populare ale controlerelor de întrerupere, cum ar fi NVIC, 8259a, RISC-V PLIC, Microblaze's INTC, etc. cu ajutorul unui controler de întrerupere.

Pasul 1: Specificații

Următoarele sunt specificațiile IP:

  • Interfață AHB3-Lite.
  • Parametri configurabili static:

    • Nr. Surse de întrerupere externe; acceptă până la 63 de întreruperi.
    • Nr. De niveluri de prioritate; suportă până la 63 de niveluri.
    • Nr. Niveluri de cuibărit; suportă până la 8 niveluri de cuibărit. 
    • Latimea autobuzului; 32 sau 64.
  • Întreruperi mascabile la nivel global și local.
  • Nivel de prioritate configurabil dinamic pentru fiecare întrerupere.
  • Două moduri de funcționare - modul complet imbricat și modul prioritate egală.
  • Suportă întreruperi sensibile la nivel înalt activ.

Specificațiile RISC-V PLIC sunt folosite în proiect mecanismul de strângere a mâinii de întrerupere inspirat.

Preempțiunea de întrerupere este inspirată din 8259a

Altele citesc: Microblaze INTC, NVIC

Pasul 2: Prezentare generală a PIC

Prezentare generală a PIC
Prezentare generală a PIC

Controlerul de întrerupere programabil (PIC) primește mai multe întreruperi de la periferice externe și le îmbină într-o singură ieșire de întrerupere la un nucleu procesor țintă.

PIC este controlat prin registre de stare și control. Toate registrele PIC sunt mapate de memorie și accesate prin interfața magistralei AHB3-Lite.

Banca de registre este formată din registru de configurare, registre de activare, registre în așteptare, registre în serviciu, registre de priorități și registru de identificare, care sunt tipice în controlerele de întrerupere.

Registrul de configurare este utilizat pentru a seta modul de funcționare al PIC. Poate funcționa fie în modul complet imbricat, fie în modul cu prioritate egală.

Fiecărei întreruperi li se pot atribui priorități și pot fi mascate individual. Mascarea globală a tuturor întreruperilor este, de asemenea, acceptată.

Banca de registru interacționează cu Priority Resolver și BTC (Binary-Tree-Comparator) pentru a rezolva prioritățile întreruperilor în așteptare și pentru a afirma întreruperea procesorului în consecință. Registrul ID conține ID-ul celei mai mari priorități în așteptare.

Pasul 3: Proiectare și implementare RTL

Proiectare și implementare RTL
Proiectare și implementare RTL

Proiectul PIC accentuează reducerea latenței rezolvării priorităților, care este cea mai importantă parte a timpului în proiectare. Deoarece proiectarea rezolvă prioritățile într-un singur ciclu de ceas, performanța se degradează odată cu creșterea numărului de surse cu o complexitate Log2.

Proiectarea a fost implementată cu succes și sincronizarea a fost verificată până la următoarele frecvențe pe FPGA Artix-7.

  • Până la 15 surse: 100 MHz
  • Până la 63 de surse: 50 MHz

Latența de întrerupere adăugată doar de PIC este de 3 cicluri de ceas (Cu excepția timpului de comutare a contextului procesorului și a primului timp de preluare a instrucțiunilor ISR).

Pasul 4: Note importante și fișiere atașate

Notite importante:

  • Dacă interfața AHB3-Lite nu este dorită, puteți schimba modulul superior și puteți utiliza scheletul PIC. Cu toate acestea, banca de testare furnizată este pentru IP cu interfață AHB3-Lite.
  • PIC IP v1.0 este un design RTL complet portabil.
  • Verificat funcțional pentru a funcționa în ambele moduri.

Fișiere atașate:

  • Coduri de proiectare și testbench în VHDL.
  • Documentație IP completă.

Este un design open-source … Simțiți-vă liber să folosiți …

Pentru orice întrebări, oricând:

Mitu Raj

Recomandat: