lucrarea 3 implementarea structurii de microprocesor...

24
Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL - Lucrarea 3 Implementarea structurii de microprocesor (masina de stări) PicoBlaze pe un mediu hardware reconfigurabil. Scopul lucrării: Se va studia o versiune de procesor PicoBlaze™ pentru circuite FPGA de tip Virtex™, Virtex-E, Spartan™-II, Spartan-IIE, Spartan 3E. Caracteristici procesor: Instrucţiuni pe 18-biţi, 16 regiştri de uz general de 8 biţi, şi 15-intrări stivă. Regiştri de uz general Unitate logică aritmetică Arithmetic Logic Unit (ALU) cu flag-uri (semafoare) de CARRY si ZERO. Reset Intrari/Ieşiri – 256 porturi de intrare, respectiv 256 porturi de iesire Întreruperi Performante predictibile – fiecare instructiune se executa in 2 cicli de ceas, pana la 200 MHZ sau 100 MIPS pentru un circuit Virtex-II Pro (FPGA). Ocupa intr-un circuit Spartan 3, 96 de slice-uri si 0.5 pana la 1 bloc RAM. Asamblor Suport pentru circuite Spartan-6 si respectiv Virtex-6 Notă: Utilizarea unui microprocesor ca modul reconfigurabil în tehnologie FPGA simplifică foarte mult procesul de proiectare, facilitând dezvoltarea unor aplicaţii fără a face apel la cunostinţe avansate de programare VHDL. Aplicaţia se dezvoltă în principal sub forma unui program care rulează pe modulul PicoBlaze. În funcţie de capacitatea FPGA este posibilă dezvoltarea unor sisteme multiprocesor pe acelaşi chip, în funcţie de aplicaţia avută în vedere. Este o buna solutie de compromis intre o implementare folosind resursele FPGA si o implementare folosind un sistem clasic cu microcontroller.

Upload: tranxuyen

Post on 25-Jul-2019

251 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

Lucrarea 3 Implementarea structurii de microprocesor (masina de stări) PicoBlaze pe un mediu hardware reconfigurabil. Scopul lucrării: Se va studia o versiune de procesor PicoBlaze™ pentru circuite FPGA de tip Virtex™, Virtex-E, Spartan™-II, Spartan-IIE, Spartan 3E. Caracteristici procesor:

� Instrucţiuni pe 18-biţi, 16 regiştri de uz general de 8 biţi, şi 15-intrări stivă. • Regiştri de uz general • Unitate logică aritmetică Arithmetic Logic Unit (ALU) cu flag-uri

(semafoare) de CARRY si ZERO. • Reset • Intrari/Ieşiri – 256 porturi de intrare, respectiv 256 porturi de iesire • Întreruperi • Performante predictibile – fiecare instructiune se executa in 2 cicli de

ceas, pana la 200 MHZ sau 100 MIPS pentru un circuit Virtex-II Pro (FPGA).

• Ocupa intr-un circuit Spartan 3, 96 de slice-uri si 0.5 pana la 1 bloc RAM. • Asamblor • Suport pentru circuite Spartan-6 si respectiv Virtex-6

Notă: Utilizarea unui microprocesor ca modul reconfigurabil în tehnologie FPGA simplifică foarte mult procesul de proiectare, facilitând dezvoltarea unor aplicaţii fără a face apel la cunostinţe avansate de programare VHDL. Aplicaţia se dezvoltă în principal sub forma unui program care rulează pe modulul PicoBlaze. În funcţie de capacitatea FPGA este posibilă dezvoltarea unor sisteme multiprocesor pe acelaşi chip, în funcţie de aplicaţia avută în vedere. Este o buna solutie de compromis intre o implementare folosind resursele FPGA si o implementare folosind un sistem clasic cu microcontroller.

Page 2: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

PicoBlaze Logica FPGA Puncte tari

Usor de programat, indicat pentru masini de stare si aplicatii de control • Resursele raman constante odata cu cresterea complexitatii • Refolosirea resurselor logice, excelent pentru functii care nu necesita performante deosebite.

• Performante semnificativ mai bune • Excelent pentru operatii paralele • Implementarea paralela duce la optimizarea performantelor si/sau al costului. • Raspuns rapid la intrari multiple, simultane

Puncte slabe • Executii secventiale • Performantele scad odata cu cresterea complexitatii • Memoria de program creste odata cu cresterea complexitatii; • Raspuns lent la intrari simultane.

• Aplicatiile de tip masina de stare sau de control sunt mai greu de programat. • Resursele logice cresc odata cu cresterea complexitatii.

Desfăşurarea lucrării: Se va descrie structura de procesor şi setul de instrucţiuni disponibil pentru PicoBlaze, modul de programare, compilare şi asamblare precum şi modalitatea de integrare în circuitul FPGA de tip Spartan 3E. Noţiuni introductive : O tendinţă în producerea de FPGA-uri este de a creste granularitatea arhitecturii prin combinarea blocurilor logice reprogramabile tradiţionale din FPGA cu microprocesoare încorporate incluzând periferice aferente microporcesorului. Astfel, se formează un sistem integrat complet („Sistem On Chip”). Exemple de astfel de tehnologii hibride pot fi găsite în circuitele Virtex-II PRO şi Virtex-4 ale firmei Xilinx care includ unul sau mai multe microprocesoare PowerPC împreună cu FPGA-ul tradiţional. Un alt exemplu este FPSLIC al firmei Atmel care foloseşte microprocesorul AVR. O alternativă la folosirea de microprocesoare încapsulate pe acelaşi cristal de siliciu este crearea de microprocesoare virtuale prin programarea corespunzătoare a elementelor logice ale FPGA-urilor. Acest tip de microprocesor se numeşte procesor soft şi este de fapt un program sursă pentru înscrierea într-un FPGA. Programul sursă se numeşte „IP core“1.

1 „Intellectual Property core“ ceea ce se traduce prin nucleu Proprietate Intelectuală.

Page 3: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

Pornind de la ideea arătată mai sus că unele FPGA-uri pot fi programate in timp ce o parte din porţi execută programul încris în ele, apare ideea de sisteme reconfigurabile, adica unităţi de procesare care se autoreconfigurază în funcţie de sarcina pe care o au de îndeplint. Un exemplu de astfel de procesor reconfigurabil implementat pe un FPGA este Mitrion Virtual Processor al firmei Mitrionics. Acesta nu are suport pentru o reconfigurare dinamica, în timpul rulării unui program, dar în schimb se autoadaptează unui anumit program. În plus încep să apară arhitecturi reconfigurabile non-FPGA. Un astfel de exemplu sunt microprocesoarele configurabile software cum ar fi Stretch S5000 care adoptă o abordare hibridă furnizând o matrice de nuclee de procesoare şi un nucleu asemănător unui FPGA pe acelaşi cristal de siliciu. Sunt multe nuclee de procesoare soft disponibile în lumea tehnologică de azi atât cu surse publice cât şi cu surse private. Este de menţionat faptul că pentru o anumită arhitectură de microprocesor, impelmentarea fizică întodeauna va depăşi în perfomanţe implemetarea soft. În tabelul următor sunt prezentate câteva dintre cele mai cunoscute microprocesoare soft.

Procesor Producător Cod sursă Magistrală Observaţii Proiect

iniţial

TSK3000 Altium Privat, de vânzare

WishBone

Arhitectură Harvard modificată RISC pe 32 biţi.

Altium TSK3000

TSK51x/52x Altium Privat, de vânzare

WishBone/

80C51

Compatibil cu 80C51 pe 8 biţi, depăşeşte cele mai multe derivate ale lui 80C51

TSK51x TSK52x

TSK80 Altium Privat, de vânzare

Z80 bus

Set de instrucţiuni optimizat compatibil cu Z80 pe 8 biţi.

TSK80

MicroBlaze Xilinx Disponibil prin licenţa Xilinx

OPB, FSL, LMB

Xilinx MicroBlaze

AEMB Shawn Tan Disponibil Wishbone

Nucleu compatibil Verilog MicroBlaze EDK 3.2

AEMB

PicoBlaze Xilinx Disponibil prin licenţa Xilinx

Xilinx PicoBlaze

Nios, Nios II Altera privat Altera Nios II

Mico32 Lattice Sursă publică LatticeMico32

Page 4: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

OpenFire Virginia Tech CCM Lab

Sursă publică OPB, FSL Compatibil cu MicroBlaze

VT OpenFire

PacoBlaze Pablo Bleyer Sursă publică Compatibil cu PicoBlaze

PacoBlaze

Microprocesorul Xilinx PicoBlaze este special proiectat şi optimizat pentru FPGA: Virtex, Spartan şi CoolRunner-II CPLD. Se consumă în acest mod mult mai puţine resurse, comparativ cu o arhitectură de microcontroler de 8-biţi. Este disponibil în mod gratuit, sursa este de tip VHDL ceea ce face ca să fie usor adaptabil noilor generaţii de familii de circuite FPGA/CPLD, ducând la costuri mici pentru dezvoltare. Un alt avantaj este faptul că are un compilator foarte uşor de utilizat furnizat ca un simplu program DOS executabil. În urma compilării programului se generează fişiere de tip VHDL sau Verilog pentru a defini programul într-un bloc de memorie. Alte unelte de dezvoltare includ interfeţe grafice de tip mediu de dezvoltare integrat (IDE - Integrated Development Environment, simulator grafic pentru setul de instrucţiuni (a graphical instruction set simulator (ISS)), cod sursa VHDL şi modele de simulare. 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.

Page 5: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

Comparaţie PicoBlaze pentru diferite familii de circuite:

PicoBlaze este cunoscut şi sub denumirea de KCPSM = Constant (k) Coded Programmable State Machine - Nucleul funcţional.

Diagrama bloc pentru microprocesorul integrat PicoBlaze ►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

Page 6: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

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. ►►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. Interfata semnalelor microprocesorului PicoBlaze este data in figura de mai jos:

Page 7: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

Declararea componentei KCPSM în VHDL

Instanţierea componentei KCPSM în VHDL

Asamblorul generează un fişier de tip VHDL în urma compilării fişierului sursă în care se definesc blocul RAM şi conţinutul iniţial. Acest fisier VHDL poate fi folosit pentru implementarea şi simularea procesorului. ►PicoBlaze-Setul de instrucţiuni

Page 8: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

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

►►Grupul instrucţiunilor logice

• LOAD sX,kk • AND sX,kk • OR sX,kk • XOR sX,kk • LOAD sX,sY • AND sX,sY • OR sX,sY • XOR sX,sY

►►Grupul instrucţiunilor aritmetice

• ADD sX,kk • ADDCY sX,kk • SUB sX,kk • SUBCY sX,kk • ADD sX,sY • ADDCY sX,sY • SUB sX,sY • SUBCY sX,sY

►►Grupul instrucţiunilor de rotire şi deplasare

• SR0 sX • SR1 sX • SRX sX • SRA sX • RR sX • SL0 sX

Page 9: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

• SL1 sX • SLX sX • SLA sX • RL sX

►►Input/Output Group

• INPUT sX,pp • INPUT sX,(sY) • OUTPUT sX,pp • OUTPUT sX,(sY)

►►Interrupt Group

• RETURNI ENABLE • RETURNI DISABLE • ENABLE INTERRUPT • DISABLE INTERRUPT

Mai multe detalii despre instrucţiunile procesorului se vor găsi pe site-ul Xilinx. ► 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

1) KCPSM3 - Asamblor

Este furnizat ca un fişier DOS executabil – KCPSM3.exe şi 3 fişiere template. Fişierele KCPSM3.EXE, ROM_form.vhd, ROM_form.coe, ROM_form.v se vor copia în directorul de lucru al utilizatorului. Programele se scriu cu ajutorul unui editor de text Notepad sau Wordpad. Fişierul sursă este salvat cu extensia .psm (8-caractere limită). Se deschide o fereastră DOS si pentru a asambla programul scris pentru PicoBlaze se va da comanda:

kcpsm3 <filename>[.psm]. Operaţia de complilare se întrerupe la găsirea unor erori şi afişează linia unde a fost detectată problema. Pentru a salva mesajele afişate de asamblor se foloseşte următoarea linie de comandă: (Procesul de asamblare se opreşte în momentul în care se detectează o eroare.)

kcpsm 3<filename>[.psm] > screen_dump.txt Asamblorul PicoBlaze Assembler ( KCPSM3.EXE) foloseşte cele 4 fişiere de intrare (programul sursa <filename.psm>, impreuna cu cele 3 fisiere template care initializeaza blocul RAM in diferite configuratii) si creaza 15 fisiere la iesire.

Page 10: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

Asamblorul KCPSM3.exe si fisierele de intrare/iesire

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 Toate versiunile de arhitecturi PicoBlaze sunt suportate de programul pBlazeIDE. Pentru a folosi circuitul Spartan 3E de pe placa de dezvoltare Digilent Basys2, se foloseste optiunea Picoblaze 3.

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.

Page 11: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

Diferentele dintre instructiunile KCPSM3 si pBlazeIDE

Page 12: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

►►Directive asamblor Ambele medii de programare (Xilinx KCPSM3 si respectiv Mediatronix pBlazeIDE) permit folosirea directivelor de asamblare, folosite pentru un control avansat al programului.

• Directiva ADDRESS - Furnizează o cale de a forţa asamblarea următoarei instrucţiuni începând de la o nouă valoare de adresa, ceea ce este util la separarea subrutinelor în locaţii specifice şi pentru a trata întreruperile. Adresele sunt specificate ca valori hexazecimale în intervalul 00 - FF. Directiva ADDRESS este folosită pentru a forţa ultima instrucţiune în locaţia cea mai mare în RAM (memoria program). Aceasta este adresa la care număratorul de program este forţat în timpul unei întreruperi active.

Directive pentru localizarea codului la o adresa data

� Directiva CONSTANT O constantă este globală, chiar dacă este definită la

sfârşitul programului, poate fi folosită oriunde în program. Prin folosirea constantelor, codul este mai uşor de urmărit şi permite modificări rapide.

• Directiva NAMEREG Această directivă permite atribuirea de nume oricărui registru din cele 16, ceea ce duce la o mai bună înţelegere a programului.

Directiva NAMEREG

� Daca se foloseste KCPSM3.exe – programul myprog.psm care se asambleza, va genera la iesire fisiere cu acelasi nume pentru diferite formate myprog.vhd sau myprog.v si vor corespunde pentru diferite blocuri de memorie interna a circuitelor FPGA (de regula, bloc de memorie RAM)

� Daca se foloseste pBlazeIDE – se va folosi o directiva care va specifica formatul de fisier obtinut in urma asamblarii.

Directiva pentru a obtine un fisier de iesire cu extensia vhdl.

Page 13: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

Exemplu practic Vom folosi placa de dezvoltare Basys2, implementarea aplicatiei se va realiza folosind procesorul soft PicoBlaze si mediul de programare pBlazeIDE. Se vor folosi led-urile de pe placa pentru un proces de numarare continuua. Pasul 1:

� Realizam codul sursa pentru microprocesor. o Se defineste un director (de exemplu numit program) in care se copiaza

fisierele pBlazeIDE.exe si respectiv fisierul template Rom_form.vhd; o Se defineste fisierul cod sursa cu extensia .psm care va gestiona operatia

de numarare.

; se definesc adresele porturilor de IO pentru led-urile de pe placa Basys2 BASYS2_LEDS DSOUT 1 ;Directiva de asamblare pentru a specifica ce tip de template ROM se va folosi ; Numele fisierului vhdl care va rezulta VHDL "ROM_form.vhd", "PicoblazeProgramMemory.vhd", "PicoBlazeProgramROM" ;Programul incepe la address 0 ORG $0 start: DINT ;intreruperile sunt disable! LedCount: ADD s0,$1 ;registru S0 este folosit pentru a stoca numarul curent ;Se incrementeaza numaratorul

OUT s0,BASYS2_LEDS ;Valoarea numaratorului este trimisa porturilor desemnate pentru led-urile Basys2 ;; 3 bucle de intarziere

LOAD S1,$255 InnerLoop1: LOAD S2,$255 InnerLoop2: LOAD S3,$255 InnerLoop3: SUB S3,$1 JUMP NZ,InnerLoop3 SUB S2,$1 JUMP NZ,InnerLoop2 SUB S1,$1 JUMP NZ,InnerLoop1 JUMP LedCount ; se repeta la infinit !

Page 14: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Se copiaza codul sursa de mai sus intr-un fisier (de exemplu numit sursa.psm) in directorul creat (program)

� Din directorul program se executa programul pBlazeIDE; Se foloseste optiunea Settings->Picoblaze 3

� Se deschide fisierul sursa.psm File->Open � Se utilizeaza Simulate si cu F9 se porneste simularea care se poate opri cu

Reset (Ctrl F2). Se observa in simulator ca se obtine o numarare folosind cele 8 led-uri de pe placa.

� In directorul program apare un nou fisier numit PicoblazeProgramMemory.vhd care reprezinta formatarea programului intr-un bloc RAM de memorie 1024x18.

Pasul 2 Se foloseste Xilinx ISE Project Navigator in care se va genera un proiect nou, cu scopul de a implementa aplicatia pentru circuitul FPGA de pe placa Basys2. La generarea fisierului de configurare, se va obtine un sistem cu microprocesorul PicoBlaze pe care va rula programul definit intr-un bloc de memorie.

� Se foloseste File->New Project...Se va atribui un nume si o locatie pentru proiect. (de exemplu design3). Setarile circuitului folosit corespund placii de dezvoltare Digilent Basys2 si sunt dupa cum urmeaza:

Page 15: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Se adauga surselor proiectului fiserul kcpsm3.vhd aflat in arhiva corespunzatoare surselor procesorului PicoBlaze si care reprezinta descrierea in VHDL a acestuia; (click dreapta pe sursele proiectului si Add Source...)

Page 16: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Se adauga fisierul care reprezinta descrierea in vhdl pentru memoria de program – fisierul obtinut la pasul 1 cand s-a facut dezvoltarea software pentru PicoBlaze

� Se vor lega cele doua module intr-un sursa de top level – acest lucru se poate realiza in cele doua moduri studiate la lucrarea 2 de laborator. Astfel, putem defini o schema care sa conecteze aceste doua module, sau un nou fisier vhdl.

Daca alegem optiunea schematica, vom proceda in modul urmator:

� Se introduce o noua sursa in proiect.

Page 17: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Se creaza simbolurile schematice pentru cele doua module vhdl, pentru

descrierea procesorului in cod sursa si respectiv pentru blocul de memorie program; (Design Utilities->Create Schematic Symbol)

� Se deschide utilitarul de editare scheme – cu dublu click pe conectare.sch. Din Categories-> All Symbols se folosesc cele doua simboluri create, si se pozitioneaza pe schema.

Page 18: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Se conecteaza cele doua module din schema folosind: Add->Wire; Add->IO Marker si se editeaza corespunzator; Se pozitioneaza pe schema si un latch cu 8 iesiri care se conecteaza corespunzator; Simbolul de gnd este preluat din categoria General->Gnd

Page 19: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Se verifica corectitudinea schemei cu Tools->Check Schematic si se salveaza schema. In sursele proiectului se observa ca s-a schimbat ierarhia – modulul conectare.sch devine modul de top level care are in componenta cele doua module, procesorul si respectiv memoria de program.

� Se introduce fisierul de constrangeri – New Source-> Implementation Constraints File

Page 20: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Se foloseste optiunea User Constraints->Create Area Constraints si respectiv utilitarul Xilinx Pace.

Page 21: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

S-au folosit pentru fisierul de constrangeri urmatorii pini: NET "clk" LOC = "B8" ; NET "led<0>" LOC = "M5" ; NET "led<1>" LOC = "M11" ; NET "led<2>" LOC = "P7" ; NET "led<3>" LOC = "P6" ; NET "led<4>" LOC = "N5" ; NET "led<5>" LOC = "N4" ; NET "led<6>" LOC = "P4" ; NET "led<7>" LOC = "G1" ;

� Se salveaza fisierul de constrangeri si ne intoarcem in fereastra surselor proiectului. Se realizeaza fisierul de configurare folosind procesul Generate Programming File care se va incarca pe placa de dezvoltare in circuitul FPGA.

Page 22: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Se configureaza circuitul Spartan 3E de pe placa de dezvoltare Digilent Basys2 folosind programul Digilent Adept. Se alege fisierul conectare.bit si se foloseste comanda Program.

� Se verifica functionarea pe placa a numaratorului care va folosi pentru afisare cele 8 led-uri de pe placa de dezvoltare.

Exercitii:

� Sa se schimbe in acelasi proiect modulul de top level – acesta va fi codat in limbajul de dezvoltare hardware VHDL. (In locul modulului schematic, asa cum am procedat in lucrarea de laborator 2)

o Se vor folosi instructiunile component si respectiv port map pentru a realiza codul sursa in vhdl care corespunde descrierii ierarhiei.

� Pentru aplicatia software (programul in limbaj de asamblare care foloseste

instructiunile PicoBlaze), sa se foloseasca asamblorul KCPSM3.exe, pentru acesta urmand ca si program sursa *.psm sa se modifice corespunzator. Se va folosi apoi fisierul *.vhd obtinut dupa asamblare ca rezultat intr-un proiect pentru circuite FPGA (in mediul Xilinx ISE Project Navigator). Se reiau toti pasii prezentati in detaliu in platforma de laborator pana la obtinerea fisierului de configurare.

Page 23: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

Ioana Dogaru – SISTEME RECONFIGURABILE DE CALCUL -

� Sa se implementeze functionarea unui buton de reset (utilizand un buton de pe placa). Se va modifica corespunzator programul pentru PicoBlaze (se vor folosi intreruperile) precum si proiectul in Xilinx.

� Sa se implementeze o aplicatie functionala controlata de procesorul PicoBlaze in care sa se utilizeze cele 8 Led-uri de pe placa si cele 8 switch-uri corespunzatoare.

Concluzii:

S-au prezentat noţiuni introductive de procesoare soft, exemplificându-se un

astfel de procesor - PicoBlaze oferit de firma Xilinx şi s-a realizat o aplicaţie simplă plecand de la definirea problemei pană la înscrierea si configurarea circuitului FPGA.

S-a remercat faptul ca utilizatorul dezvolta aplicatia pe doua planuri: un plan software care presupune codarea in limbaj de asamblare pentru codul sursa care va rula pe microprocesor; si un plan hardware care va consta din generarea unui sistem bazat pe procesorul PicoBlaze si memoria de program conectate intr-un intreg functional.

Uneltele de dezvoltare folosite sunt in mod corespunzator: � pentru programul in asamblor se pot folosi 2 procedee:

o KCPSM3.exe (din arhiva Xilinx) o pBlazeIDE – interfata grafica de la Mediatronix.

Pentru conectarea procesorului cu memoria de program intr-un sistem se va folosi mediul de lucru pentru circuite FPGA – Xilinx ISE Project Navigator.

Rezultatul va fi un fisier de configurare cu extensia *.bit care va programa

circuitul FPGA de pe placa de dezvoltare.

Page 24: Lucrarea 3 Implementarea structurii de microprocesor ...atm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-Lucrarea 3.pdf · Utilizarea unui microprocesor ca modul reconfigurabil

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������