Sunteți pe pagina 1din 56

Procesoare Software

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
IP Core IP = Intellectual Property Modul hardware sau componenta
CPU, Ethernet MAC, controller memorie, DSP, etc in interiorul FPGA
“Soft”
•IP core implementat cu ajutorul resurselor logice FPGA.
•Se pot crea oricate instante (in functie de capacitatea FPGA)
•Se pot parametriza in momentul procesului de sinteza din cadrul
fluxului de proiectare specific FPGA
“Hard”
IP core implement in circuitul integrat. Se conecteaza la resursele FPGA
prin intermediul resurselor de rutare standard. Implica implementarea la
nivel silicon-level circuit in aria reconfigurabila FPGA ( terminologie
utilizata FPGA fabric).
Configuratia este predeterminata de fabricantul FPGA, este mai ieftin
si mai eficient dar mai putin flexibil.

Exemple:
PowerPC 405/440 CPU in Xilinx FX
Multichannel SDRAM / DDR controllers in Spartan6
DSP blocks in toate circuitele moderne Xilinx FPGA
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Limbajele de descriere hardware (HDL) permit implementarea
unitatilor Intellectual Property (IP) = IP cores = componente
reutilizabile care descriu si implementeaza functionalitati
hardware.

Firm IP cores

Au un grad mai mare de optimizare si sunt proiectate pentru


un anumit circuit sau arhitectura. Sunt mai putin portabile de
cat variantele soft core
Anantajele proiectarii folosind soft IP core:

•Design reuse - refolosirea unitatilor de proiect


•Simplifica proiectarea updatarea si modificarea unui proiect
•Foloseste modularitatea intr-un design

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tehnologia System-on-a-chip(SoC) reprezintă încapsularea într-un singur
circuit integrat a a tuturor circuitelor electronice necesare pentru funcţionarea
unui sistem (cum ar fi o camera digitală sau un telefon mobil).

De exemplu
• include memorii RAM şi ROM, microprocesor, diferite tipuri de interfeţe pentru
periferice, convertoare de date, logică de control, funcţii logice şi analogice,
precum şi alte componente care alcatuiesc un sistem informatic complex.

Aplicaţia tipică a acestor circuite o regasim în domeniul “embedded systems”.

Fluxul de proiectare pentru SoC implică atât dezvoltare pe parte de


hardware cât şi pe parte software pentru a controla unitatea de
microprocessor, modulele DSP, perifericele, interfeţele, etc.

SoC pot fi implementate ca şi circuite de tip ASIC (circuite integrate pentru


aplicaţii specifice - Application-Specific Integrated Circuit) sau utilizând circuite
de tip FPGA (Field Programmable Gate Array care se pot configura cu scopul
de a realiza orice circuit digital dorit.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
O definiţie foarte generală pentru un embedded systems
 orice dispozitiv care include un computer programabil, dar fără a
fi însă un computer de uz general. Mai mult, calculatoarele
personale sunt folosite în mod uzual pentru a construi un sistem
integrat.
Orice sistem care este realizat folosind un microprocesor este
un embedded computing systems, ceea ce conduce la faptul că
există numeroare produse în care se aplică acest tip de proiectare,
cum ar fi automobile, telefoane mobile până la aparatura
electrocasnică.
Proiectantul va gândi o platformă hardware şi va implementa partea
de software care va realiza funcţia dorită.
Tot în procesul de proiectare vor trebui rezolvate problemele legate
de resursele optime de care avem nevoie, eficientizarea consumului
de putere, posibilitatea de upgradare a sistemului etc. Un
embedded system nu va fi proiectat de sine stătător, el va
implica spre exemplu şi parte mecanică sau analogică.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Proiectarea de embedded systems folosind
componentele de tip FPGA prezintă numeroase avantaje.

•Circuitele se pot configura după procesul de fabricaţie,


după ce au fost instalate într-un produs sau chiar şi în
momentul în care produsul a fost livrat către utilizator.
• Un FPGA va furniza proiectantului de embedded systems
resurse hardware programabile şi reconfigurabile.
•FPGA-urile cunosc o dezvoltare rapidă atât din punct de
vedere al capacităţii logice (dat de numărul de porţi logice
echivalente) cât şi din punct de vedere al capabilităţilor
funcţionale (dat de blocurile funcţionale integrate).
•Ca rezultat al dezvoltării circuitelor, circuitele FPGA pot
integra procesoare, controllere de memorie,
multiplicatoare, interfete reţea etc.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Platforma FPGA
Specifica un circuit care include suficiente resurse şi
funcţionalitate pentru a permite definirea şi implementarea unui
sistem complex folosind un singur circuit.
Pâna de curând un circuit FPGA era privit ca o componentă
folosită pentru a implementa circuite periferice.
O platformă FPGA este definită ca având un rol central într-un
sistem de calcul. Un astfel de exemplu este platforma Zynq- de
la firma Xilinx

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Procesoare integrate în circuite de tip FPGA
În acest domeniu se remarcă două tipuri de abordări:

•Procesoare “hard”- Familii de circuite FPGA care au integrat fizic un


procesor în aria circuitului.
•Procesoare “soft” care folosesc resursele generale ale circuitelor de
tip FPGA. Un astfel de processor este descris într-un limbaj de
descriere hardware – Hardware Description Language (HDL) cum ar fi
Verilog sau VHDL, sau poate fi descris sub formă de netlist (listă de
legaturi). Pentru ambele cazuri, memoriile locale, magistralele,
controllerele de memorie, controllerele pentru periferice se crează
folosind resursele logice interne reconfigurabile ale circuitelor de tip
FPGA.
•Procesoarele soft au avantajul flexibilităţii, al costului şi faptul că
se pot cu usurinţă realiza sisteme multi-procesor. Faţă de
procesoarele hard din circuitele FPGA, procesoarele soft au însă
dezavantajul performanţelor, al ariei ocupate (tipic dat de
resursele FPGA folosite pentru implementare) şi al puterii
consumate.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Din Wikipedia:
Un procesor soft (sau “softcore microprocessor”, sau “soft
processor”) este implementat integral prin sinteza logica

- are o descriere configware


-Poate fi implementat pe diferite suporturi (morphware) de ex:
FPGA, CPLD.
- este de fapt un program sursa pentru înscrierea într-un
FPGA/CPLD. Programul sursa se numeste IP core.

Desi majoritatea sistemelor se bazeaza pe un singur “soft


processor” tendinta actuala este de a “impacheta” mai multe
astfel de procesoare soft/hard in acelasi “morphware” (de ex.
FPGA) In cazul sistemelor “multi-core” resursele rar utilizate
pot fi accesate intre toate nucleele (procesoarele) grupate intr-
un “cluster” . Este valabila regula lui Jan: Jan's Razor: “In a
chip multiprocessor design, strive to leave out all but the
minimal kernel set of features from each processing element,
so as to maximize processing elements per die”.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Explicare termeni:
Morphware – paradigma noua introdusa in principal de
disciplina embedded system design care vizeaza System on
Chip (SoC). (alternativa la modelul care foloseste o platforma de
calcul de uz general bazata pe memorie RAM)
Structural este hardware programabil, interconexiunile dintre
blocurile logice si/sau blocurile functionale, cat si functiile
acestor blocuri pot fi modificate individual prin downloading
configware, in configuration memory (configuration RAM) pentru
un chip morphware.
Este nevoie de 2 tipuri de surse de intrare: software pentru
programarea fluxului de instructiuni si configware pentru
reconfigurarea structurala.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Granularity – granularitatea Termenul se refera la data path
width . Pentru FPGA folosirea unui element de procesare de 1
bit in cazul CLB configurable logic blocks = fine-grained
computing or fine-grained reconfigurability.
In cazul in care se folosesc resurse de 32 bits microprocessor
CPUs sau data-stream-driven data path units (DPU) in rDPU =
coarse-grained computing coarse-grained reconfigurability.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Implementarea SoC folosind procesoare soft în circuite de tip
FPGA.
Studii de caz: familiile de circuite FPGA de la Xilinx, Altera si Lattice.

Ce trebuie să ştim pentru proiectare

• Familiile de circuite FPGA (resurse disponibile) de la fiecare


producător în parte.
• Uneltele de dezvoltare pentru proiecte care folosesc circuite de tip
FPGA
• Procesoarele soft pe care le putem integra, arhitectura acestora,
limbaj de programare, precum si uneltele de dezvoltare
hardware/software

Procesoarele software se găsesc atât în variantă comercială, cât şi în


varianta open-source. De asemenea, pot fi dezvoltate, proiectate şi
optimizate pentru anumite familii de circuite, sau pot fi folosite în
mod general. Anumite variante comerciale pot avea şi clone de tip
open-source.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple:

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Selectarea unui procesor de tip soft core pentru implementarea
intr-un
FPGA tine cont de:
•costul implementarii
•Performantele de operatii
•Puterea consumata
•Design-ul si uneltele de dezvoltare
•Considerente referitoare la sistemul de operare
•Optiuni de debug si capabilitati

Costul tipic este unul dintre factorii cei mai importanti in proiecte. Este o
combinatie intre costul hardware-ului si cel al dezvoltarii. Conteaza:
reutilizarea, flexibilitatea, portabilitatea, rezistenta la invechire, efortul
depus la implementare si durata de invatare.

Pentru compararea performantelor: se foloseste un benchmark. In mod


curent se foloseste DMIPS (Dhrystone Million Instructions Per Second)
benchmark (care se bazeaza pe executia unui algoritm folosind un
procesor pentru a masura capabilitatile de procesare intr-un timp
definit).
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Factori care se evalueaza:
•Tipul si marimea memoriilor si a bus-ului
•Marimea si tipul spatiului de adrese
•Tipul si marimea pentru cache (Instruction/data)
•Tipul de controlere cum ar fi DMA si structura de intreruperi
•Capabilitati de accelerare hardware (functionalitate co-processor)
•Unitati functionale cum ar fi registri si unitati de executie
Factori care influenteaza puterea consumata: viteza operatiilor,
numarul si tipul resurselor necesare pentru a implementa core-ul de soft
processor, caracteristicile componentelor FPGA, puterea consumata,
temperatura.

Procesul de debug
•Simularea (behavioral si timing)
•Analiza de timp
•Analiza logicii integrate
•Simularea software
•Debugger software in timp real
•Controlul porturilor de intrare/iesire
•Interfata standardizata JTAG
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple de procesoare soft în varianta open-source

•S1 Core
Resursele pentru acest procesor se găsesc la http://www.srisc.com/
Reprezintă o implementare simplificată a arhitecturii SPARCv9 şi este
un procesor pe 64 de biţi.
•Leon4, Leon3 şi Leon2
Este o implementare a arhitecturii SPAECv8 pe 32 de biţi. Descrierea
completă a resurselor se regăşeste la http://www.gaisler.com/
•OpenRisc1200
Procesor pe 32 de biţi cu arhitectura de tip OpenRISC 1000 dezvoltat
de comunitatea OpenCores.org

•De la firma Lattice

•LatticeMico32 – 32 de biţi de la – open source şi nu este limitat


numai pentru circuitele de la Lattice
•LatticeMico8 – 8 biţi– open source şi nu este limitat numai pentru
circuitele de la Lattice
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple de procesoare soft în varianta comercială
Firma Altera
•NIOS II – 32 de biţi în 3 variante de arhitecturi (NIOS II/f, NIOS II/s,
NIOS II/e)– numai pentru circuitele de la Altera
Firma Xilinx
MicroBlaze – 32 de biţi – numai pentru circuitele de la Xilinx
•PicoBlaze – 8 biţi – numai pentru circuitele de la Xilinx, dar este în
variantă gratuită

Exemple de procesoare soft în varianta open-source care


reprezintă clone ale procesoarelor soft comerciale
•AeMB (clonă MicroBlaze)
•OpenFire (clonă MicroBlaze)
•PacoBlaze (clonă pentru procesorul PicoBlaze de la Xilinx)
•Leros (clonă îmbunătăţită open-source pentru procesorul PicoBlaze)
Din punct de vedere al arhitecturii, interesează în mod general:
•Numărul de cicli pentru executarea instrucţiunilor
•Resursele necesare din circuitele FPGA pentru implementare
•Unitate de calcul în virgulă mobilă, etc.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Studiu de caz: procesorul soft Leros
Procesorul soft Leros este documentat pe site-ul OpenCores.org şi
face parte din categoria procesoarelor de tip open-source
Un procesor de 16 biţi, optimizat pentru circuite de tip FPGA. Pentru
a fi implementat, acesta consumă mai puţin de 200 de celule logice
şi de 1 sau 2 memorii on-chip.
Este programat folosind un limbaj de asamblare si într-un subset de
instrucţiuni în Java.
Autorul prezintă acest proiect ca un bun competitor cu procesorul
soft PicoBlaze de la Xilinx, fiind o versiune îmbunătăţită a acestuia.
Avantaje:
•nu există restricţii pentru mărimea codului sau mărimea datelor.
•instrucţiunile se execută într-un singur clock, spre deosebire de
PicoBlaze unde instrucţiunile se execută în 2 cicli de ceas.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fluxul de proiectare constă din:

•Aplicaţia în Java (fişierul cod sursă cu extensia .java) este


compilată folosind un compilator standard de Java (javac).
Rezultatul este un fişier cu extensia .class care reprezintă intrarea în
compilatorul Muvium care va genera un singur fişier cu extensia
.asm => programul procesorului

Fişierul cu extensia .asm va fi intrare pentru asamblorul Leros care


va genera un fişier cod sursă în VHDL, corespunzător memoriei
program.

 partea software dezvoltată pentru procesorul soft Leros.


Partea hardware a procesorului Leros este dată de
fişierul Leros.vhdl – care reprezintă descrierea procesorului
folosind limbajul de descriere hardware VHDL. Acest fişier face
parte dintre resursele care se pot descărca de pe site-ul
OpenCores.org.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Partea hardware şi partea software se vor reuni în continuare
într-un proiect dezvoltat folosind uneltele de la Xilinx sau de la
Altera (depinzând de circuitul pentru care se face această
dezvoltare).
Aceste unelte sunt Xilinx ISE şi respectiv Altera Quartus II.

Respectând fluxul de proiectare pentru aplicaţii în FPGA, se


obtine un fişier de configurare care poate fi înscris într-un
circuit FPGA. Vom avea astfel un sistem cu procesor intergat în
FPGA.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Studiu de caz: procesorul soft PicoBlaze
dezvoltat de Ken Chapman, Xilinx
•PicoBlaze este descris în limbaj de descriere hardware, respectiv în
limbajul VHDL sau Verilog.
De pe site-ul firmei (după ce există un cont utilizator cu parolă)se
descarca arhiva care conţine toate resursele utile pentru dezvoltarea de
proiecte, şi implicit fişierul cod sursă pentru descrierea procesorului
(kcpsm6.vhd sau kcpsm6.v).
•procesor pe 8 biţi care poate să execute până la 4K instrucţiuni.
Fiecare instrucţiune este pe 18 biţi şi fiecare instrucţiune se execută în
2 cicli de ceas. Frecvenţa maximă este dependentă de circuitul în care
se integrează (de exemplu pentru Virtex-6, această frecventă de lucru
este până la 240 Mhz)
La fel ca la procesorul Leros, proiectarea presupune o parte
software, una hardware, precum şi o integrare intr-un proiect
pentru FPGA folosind uneltele de la Xilinx.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Microcontroller in FPGA – comparat cu logica implementata in FPGA

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Proiectarea hardware
implică decât folosirea fişierului cod sursă pentru descrierea
procesorului (kcpsm6.vhd sau kcpsm6.v).

Proiectarea software implică


scrierea unui cod sursă în limbaj de asamblare specific
procesorului PicoBlaze. Acest cod sursă se va gasi într-un fişier cu
extensia .psm.

Asamblarea acestui cod sursă folosind asamblorul kcpsm6.exe


împreună cu 1 fişier template numit Rom_form.vhd sau
Rom_form.v (depinzând de formatul pe care îl dorim ca rezultat –
descriere în limbajul VHDL sau Verilog)

Rezultatul asamblării va fi un fişier care descrie in cod VHDL


sau Verilog memoria program.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FLUXUL DE PROIECTARE - PICOBLAZE

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Diagrama bloc pentru microprocesorul integrat PicoBlaze

PicoBlaze este cunoscut şi sub denumirea de KCPSM =


Constant (k) Coded Programmable State Machine

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Performanţe: PicoBlaze execută 44 până la 100 millioane de
instrucţiuni pe secunda (MIPS) în funcţie de familia de circuite şi
gradul de viteză (speed grade) – ceea ce înseamnă că este mult
mai rapid decât microcontrolerele comerciale.

Dimensiunea minimă a logicii — PicoBlaze ocupă 192 celule


logice (ceea ce reprezinta 5% din circuitul Spartan-3 XC3S200),
76 celule logice Spartan-IIE (adica 9% din XC2S50E si 2.5% din
circuitul XC2S300E). Deoarece ocupă numai o fracţiune din
circuitul FPGA, se pot integra mai multe “PicoBlaze” pe un astfel
de circuit.

Are 100% capacităţi de integrare: PicoBlaze este total integrabil în


FPGA sau CPLD şi nu necesită nicio resursa externă. Un alt
avantaj ar fi acela că funcţionalitatea de bază poate fi extinsă prin
conectarea logicii adiţionale la porturile de intrare/ieşire ale
microcontrollerului.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
►Arhitectura PicoBlaze

►►Regiştrii de uz general: în număr de 16, specificaţi ca s0 - sF (pot fi redenumiţi


în asamblor). Toate operaţiile cu regiştri sunt complet flexibile, fără regiştri rezervaţi.
Nu există acumulator, dar oricare registru poate fi folosit pe post de acumulator.
Unitatea aritmetică logică (ALU) asigură toate operaţiile simple care sunt de aşteptat
pentru o unitate de procesare de 8 biţi. (operatii aritmetice de baza, cum ar fi
adunarea si scaderea; operatii logice, cum ar fi AND, OR sau XOR; operatii aritmetice
la nivel de biti; operatii de deplarare si rotatii).
Toate operaţiile folosesc operandul furnizat de orice registru iar rezultatul este returnat
aceluiaşi registru. Pentru operaţii ce necesita un al doilea operand, se va folosi un al
doilea registru sau o valoare constantă de 8-biţi.
Pentru operaţii care necesită mai mult de 8-biţi, adunare sau scădere există opţiunea
de a include CARRY. Sunt disponibili operatori la nivel de bit: LOAD, AND, OR, XOR.
Operaţiile ALU afectează flag-urile ZERO şi CARRY. Aceste informaţii determină
secvenţa de execuţie a unui program folosind instrucţiunile condiţionale şi ne-
condiţionale. JUMP – specifică adresa absolută în spaţiul de program; CALL si
RETURN furnizează facilităţile sub-rutinelor. Comanda CALL este facută către o
adresa absolută, în timp ce se salvează adresa de întoarcere în stiva contorului de
program.
Comanda RESET forţează procesorul să se întoarcă la starea iniţială. Programul este
executat de la adresa 00 şi întreruperile sunt inactive. “Flag”-urile de status şi stivă
CALL/RETURN sunt de asemenea resetate, dar de notat ca regiştrii nu sunt afectaţi.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
►►Intrări/Ieşiri
Modulul PicoBlaze are 256 porturi de intrare şi 256 porturi de ieşire. O adresă de 8-biţi
furnizată la magistrala PORT_ID împreună cu semnalele READ_STROBE sau
WRITE_STROBE indică portul care este accesat. Adresa portului poate fi în program o
valoare absolută, sau poate fi specificată în mod indirect fiind înscrisă într-unul dintre cei
16 regiştri. Adresarea indirectă este ideală pentru accesarea unui bloc de memorie.
Pentru o operaţie de intrare (indicată de READ_STROBE), valoarea la portul de intrare
este transferată către oricare din cei 16 regiştri. Pentru o operatie de ieşire
(WRITE_STROBE), conţinutul oricărui registru din cele 16 este transferat la portul de
ieşire.
►►Întreruperi
Procesorul dispune de un singur semnal de întrerupere. Semnalul de întrerupere este
implicit inactiv şi este controlat de program pentru a fi activat sau nu. Activarea unei
întreruperi forţează PicoBlaze macro să iniţieze o subrutina “CALL FF” (care apelează
ultima locaţie de memorie program).
În mod automat se salvează flag-urile ZERO şi CARRY şi sunt inactivate întreruperile
viitoare. O comandă specială RETURNI asigură ca la finalul servirii rutinei de întrerupere
să se refacă starea tuturor flag-urilor şi să controleze activarea viitoarelor întreruperi.
Modulul PicoBlaze poate fi privit ca o maşină de stare bazată pe constante (valori
constante pentru operaţii în ALU, adrese constante pentru porturi, valori constante de
adrese pentru controlul execuţiei unui program)
Toate instrucţiunile, în toate condiţiile sunt executate în 2 cicli de ceas. Lungimea
programului este de 1024 instrucţiuni. PicoBlaze este furnizat sub forma de cod VHDL
(kcpsm.vhd), care nu se va modifica în niciun fel.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Interfata semnalelor
microprocesorului
PicoBlaze

Declararea componentei KCPSM în VHDL

Instanţierea componentei KCPSM în VHDL

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
PicoBlaze-Setul de instrucţiuni pentru a descrie instrucţiunile:
1. “X” si “Y” se referă la regiştrii de stocare “s” în
intervalul 0 - F.
2. “kk” – valori constante în intervalul 00 - FF.
3. “aa” – adrese în intervalul 00 - FF.
4. “pp” – adresa unui port în intervalul 00 - FF.

►►Grupul instrucţiunilor pentru controlul programului


JUMP aa
JUMP Z,aa
JUMP NZ,aa
JUMP C,aa
JUMP NC,aa
CALL aa //Call şi Return suportă o stivă până la 15
CALL Z,aa
CALL NZ,aa
CALL C,aa
CALL NC,aa
RETURN
RETURN Z
RETURN NZ
RETURN C
RETURN NC
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
►►Grupul instrucţiunilor de
►►Grupul instrucţiunilor logice
rotire şi deplasare
LOAD sX,kk
SR0 sX
AND sX,kk
SR1 sX
OR sX,kk
SRX sX
XOR sX,kk
SRA sX
LOAD sX,sY
RR sX
AND sX,sY
SL0 sX
OR sX,sY
SL1 sX
XOR sX,sY
SLX sX
SLA sX
►►Grupul instrucţiunilor aritmetice
RL sX
ADD sX,kk
ADDCY sX,kk ►►Input/Output Group
SUB sX,kk INPUT sX,pp
SUBCY sX,kk INPUT sX,(sY)
ADD sX,sY OUTPUT sX,pp
ADDCY sX,sY OUTPUT sX,(sY)
SUB sX,sY ►►Interrupt Group
SUBCY sX,sY RETURNI ENABLE
RETURNI DISABLE
ENABLE INTERRUPT
DISABLE INTERRUPT
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
► Uneltele de dezvoltare pentru aplicatii cu procesorul PicoBlaze

Exista doua tipuri de unelte de dezvoltare:

•program asamblor DOS numit Kcpsm3.exe;


•o aplicatie cu interfata utilizator care include asamblor, set de instructiuni,
posibilitatea de depanare a aplicatiei precum si vizualizare a continutului
registrilor – Mediatronix pBlazeIDE

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Mediatronix pBlazeIDE
Este un program gratuit, cu interfata utilizator care se poate descarca de
pe site-ul firmei Mediatronix http://www.mediatronix.com/pBlazeIDE.htm

Sintaxa si instructiunile pBlazeIDE sunt diferite de cea in care se foloseste


asamblorul Xilinx KCPSM3.exe. Programul pBlazeIDE foloseste un
convertor care importa surse KCPSM3 pentru a fi folosit in mediul
pBlazeIDE. Pentru a realiza acest import se va folosi optiunea File->Import
si se selecteaza fisierul in format KCPSM3 - fisier.psm.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Dezvoltare de sisteme cu Procesorul Software Xilinx MicroBlaze
32-bit Reduced Instruction Set Computer (RISC)

VIVADO – Xilinx IDE


Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Diagrama bloc – proiectare
hardware

Generate Block Design Flow Navigator

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Generate Bitstream (fisierul de configurare)

File -> Export -> Export Hardware…. Include bitstream -


>OK.

Proiectarea software (programarea procesorului)


File -> Launch SDK to open SDK.


Programarea procesorului in C/C++

Exemplu de program: aprinderea si


stingerea led-urilor de pe placa Nexys
Digilent

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Studiu de caz - Procesoare software ARM

T h e A R M C o rte x -M 0 P ro c e s s o r
A r c h ite c tu r e P a r t-1

ARM- University Program

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM-based SoC ARM- University Program

 An basic ARM-based SoC usually consists of


 An ARM processor, such as Cortex-M0;
 Advanced Microcontroller Bus Architecture (AMBA), e.g. AMBA3 or AMBA4;
 Physical IPs (or peripherals) from ARM or third parties;
 Additionally, some SoCs may have a more advanced architecture, such as multi-bus
system with bus bridge, DMA engine, clock and power management, etc…

Clock Power
Generator Management Unit Watch
JTAG/ Serial wire dog
DMA
Low latency ARM Cortex-M0
Microprocessor

APB Bus
AHB IOP Timers
Mux

AHB to APB UART


ARM AMBA 3 AHB-Lite System Bus
Bus bridge

System Boot ROM 7-segment


AHB APB
RAM UART
ROM VGA GPIO
RAM Timer
Control ROM Table Peripheral
Display Peripheral

An example of ARM-based SoC


Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
What is ARM Architecture
 ARM architecture is a family of RISC-based processor architectures
 Well-known for its power efficiency;
 Hence widely used in mobile devices, such as smartphones, and tablets
 Designed and licensed to a wide eco-systems by ARM.

 ARM Holdings
 The company designs ARM-based processors;
 Does not manufacture, but licenses designs to semiconductor partners who fabricate
and sell to their customers;
 Also offer other designs available, such as physical IPs, graphics cores, and
development tools.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM Processor Families
 Cortex-A series (Application) Cortex-A57
Cortex-A53
 High performance processors for open Operating
Cortex-A15
Systems;
 Applications include smartphones, digital TV, smart
Cortex-A9 Cortex-A
Cortex-A8
books, home gateways; Cortex-A7

 Cortex-R series (Real-time) Cortex-A5


Cortex-R7
 Exceptional performance for real-time applications; Cortex-R5
 Applications include automotive braking systems, Cortex-R4 Cortex-R
powertrains; Cortex-M4

 Cortex-M series (Microcontroller) Cortex-M3


Cortex-M1
 Cost-sensitive solutions for deterministic Cortex-M0+ Cortex-M
microcontroller applications; Cortex-M0
 Applications include microcontrollers, mixed signal SC000
devices, smart sensors, automotive body electronics SC100
and airbags; SC300 SecurCore
 SecurCore series ARM11
ARM9
 High security applications. ARM7 Classic
 Previous classic processors
 Include ARM7, ARM9, ARM11 families
As of Sept 2013

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Design an ARM-based SoC
 Select a set of IP cores from ARM or other third-party IP vendors;
 Integrate IP cores into a single chip design;
 Give design to semiconductor foundries for chip fabrication.

IP libraries SoC
Cortex-A9 Cortex-R5 Cortex-M0 ARM
ROM RAM
processor
ARM7 ARM9 ARM11
System bus
ARM-based
DRAM ctrl FLASH ctrl SRAM ctrl MCU Chip
Peripherals
AXI bus AHB bus APB bus

GPIO I/O blocks Timer


External Interface

Licensable IPs SoC Design Chip Manufacture

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Design a Simple ARM-based SoC
 In this set of teaching materials we are going to design a simplified version of
ARM-based SoC and prototype it onto a FPGA chip. The SoC will consist only
some basic components:

 An ARM Cortex-M0 microprocessor;

 A single AHB Lite bus;

 Customer-made physical IPs;

ARM Cortex-M0
Microprocessor

ARM AMBA 3 AHB-Lite System Bus

System Boot ROM 7-segment


AHB
RAM UART
ROM VGA GPIO
RAM Timer
Control ROM Table Peripheral
Display

EDK: A simplified ARM-based SoC


Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM Cortex-M Series Family
 Cortex-M series: Cortex-M0, M0+, M1, M3, M4.
 Energy-efficiency
 Lower energy costs, longer battery life
 Smaller code
 Lower silicon costs
 Ease of use
 Faster software development and reuse
 Embedded applications
 Smart metering, human interface devices, automotive and industrial control systems,
white goods, consumer products and medical instrumentation

As of Sept 2013
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM Cortex-M Series Family
ARM Core Hardwar DSP
Thum Hardware Saturated Floating
Processor Architectu Architect Thumb® e Extens
b®-2 Divide Math Point
re ure Multiply ions

Von Subs 1 or 32
Cortex-M0 ARMv6-M Most No No No No
Neumann et cycle

Cortex- Von Subs 1 or 32


ARMv6-M Most No No No No
M0+ Neumann et cycle

Von Subs 3 or 33
Cortex-M1 ARMv6-M Most No No No No
Neumann et cycle

Cortex-M3 ARMv7-M Harvard Entire Entire 1 cycle Yes Yes No No

ARMv7E-
Cortex-M4 Harvard Entire Entire 1 cycle Yes Yes Yes Optional
M

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cortex-M0 Processor
 The smallest ARM processor
 Exceptionally small silicon area
 Ultra-low gate count (approx. 12k gates at minimum configuration)
 High code density
 Fundamental base of 16-bit Thumb instructions
 Additional powerful 32-bit instructions
 Lower power
 16µW/MHz (90LP process, minimal configuration)
 Simplicity
 Only 56 instructions
 C friendly
 More deterministic response time
 Uses ARMv6-M Architecture

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cortex-M0 Overview
 32-bit Reduced Instruction Set Computing (RISC) processor
 Von-Neumann architecture
 Both data and instructions share a single bus interface;

 Instruction set
 56 instructions as a subset of Thumb-1 (16-bit) and Thumb-2 (16/ 32-bit);

 Supported Interrupts
 Non-maskable Interrupt (NMI) + 1 to 32 physical interrupts

 Supports Sleep Modes

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cortex-M0 Block Diagram
 Processor core
 Contains internal registers, the ALU, data path, and some control logics;
 Three-stage pipeline: fetch, decode, and execution;
 Registers include sixteen 32-bit registers for both general and special usages.
 Nested Vectored Interrupt Controller (NVIC)
 Up to 32 interrupt request signals and a non-maskable interrupt (NMI);
 Automatically handles nested interrupts, such as comparing priorities between interrupt
requests and the current priority level;

Instruction Fetch Decode Execute


1 Instruction Fetch Decode Execute
2 Instruction Fetch Decode Execute
3 Instruction Fetch Decode Execute
4
Time
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cortex-M0 Registers
 Processor registers
 The internal registers are used to store and process temporary data within the
processor core;
 All registers are inside the processor core hence can be accessed more
quickly;
 Load-store architecture
 To process a data in the memory, they have to be loaded from the
memory to a register, processed inside the processor, and then written
back to the memory if needed;
 Cortex-M0 register
 Register bank
 Sixteen 32-bit registers (thirteen are used for general-purpose);
 Special registers;

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cortex-M0 Registers
 R0 – R12: general purpose registers
 Low registers (R0 – R7) can be accessed by any instruction; Data Data
 High registers (R8 – R12) sometimes cannot be accessed by
some Thumb instructions; PUSH POP

 R13: Stack Pointer (SP) Low

 Records the current address of the stack


 Used for saving the context of a program while switching Stack Address

between tasks SP
 Cortex-M0 has two SPs: Main SP, used in applications that High
require privileged access e.g. OS kernel, and exception PC

handlers, and Process SP, used in base-level application Heap


code (when not running an exception handler)
 Program Counter (PC)
 Records the address of the current instruction code;
 Automatically incremented by 4 at each operation (for 32-bit Code
instruction code), except branching operations;
 A branching operation, such as function calls, will change the
PC to a specific address, meanwhile save the current PC to
the Link Register (LR);

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cortex-M0 Memory Map
 The Cortex-M0 processor has 4 GB of memory address space

 The 4GB memory space is architecturally defined as a number of regions.


 Each region is given for recommended usage;

 Easy for software programmer to port between different devices.

 Nevertheless, despite of the default memory map, the actual usage of the
memory map can also be flexibly defined by the user, except some fixed
memory addresses, such as internal private peripheral bus.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cortex-M0 Endianness
 Endian refers to the order of bytes stored in the memory

 Little endian: lowest byte of a word-size data is stored in the bit 0 to bit 7

 Big endian: lowest byte of a word-size data is stored in the bit 24 to bit 31

 Cortex-M0 supports both little endian and big endian

 However, Endianness only exists in the hardware level

Address [31:24] [23:16] [15:8] [7:0] [31:24] [23:16] [15:8] [7:0]

0x00000008 Byte3 Byte2 Byte1 Byte0 Byte0 Byte1 Byte2 Byte3


Word 3 Word 3

0x00000004 Byte3 Byte2 Byte1 Byte0 Byte0 Byte1 Byte2 Byte3


Word 2 Word 2

0x00000000 Byte3 Byte2 Byte1 Byte0 Byte0 Byte1 Byte2 Byte3


Word 1 Word 1

Little endian 32-bit memory Big endian 32-bit memory

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cortex-M0 Exception Handling
 Exception Priority

 The exceptions (or interrupts) are commonly divided into multiple levels of priorities;

 A higher priority exception can be triggered and serviced during a lower priority
exception;

 Commonly known as a nested exception.

 Exceptions can be disabled or enabled by software.

 Cortex-M0 Interrupt Controller

 Supports up to 32 IRQ inputs and a non-maskable interrupt (NMI) inputs;

 NMI is similar to IRQ but cannot be disabled and has the highest priority, useful for
safety critical systems such as industrial control or automotive.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

S-ar putea să vă placă și