ProcesoareSoftware -...
Transcript of ProcesoareSoftware -...
![Page 1: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/1.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Procesoare Software
![Page 2: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/2.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
IP Core IP = Intellectual Property Modul hardware sau componentaCPU, 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 cadrulfluxului 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 ( terminologieutilizata FPGA fabric).Configuratia este predeterminata de fabricantul FPGA, este mai ieftinsi mai eficient dar mai putin flexibil.
Exemple:PowerPC 405/440 CPU in Xilinx FX Multichannel SDRAM / DDR controllers in Spartan6DSP blocks in toate circuitele moderne Xilinx FPGA
![Page 3: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/3.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Limbajele de descriere hardware (HDL) permit implementareaunitatilor Intellectual Property (IP) = IP cores = componentereutilizabile care descriu si implementeaza functionalitatihardware.
Firm IP cores
Au un grad mai mare de optimizare si sunt proiectate pentruun anumit circuit sau arhitectura. Sunt mai putin portabile de cat variantele soft coreAnantajele proiectarii folosind soft IP core:
•Design reuse - refolosirea unitatilor de proiect•Simplifica proiectarea updatarea si modificarea unui proiect•Foloseste modularitatea intr-un design
![Page 4: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/4.jpg)
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.
![Page 5: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/5.jpg)
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ă.
![Page 6: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/6.jpg)
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 systemsresurse 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.
![Page 7: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/7.jpg)
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
![Page 8: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/8.jpg)
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 fiVerilog 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.
![Page 9: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/9.jpg)
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 multeastfel de procesoare soft/hard in acelasi “morphware” (de ex. FPGA) In cazul sistemelor “multi-core” resursele rar utilizatepot 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”.
![Page 10: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/10.jpg)
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 dintreblocurile logice si/sau blocurile functionale, cat si functiileacestor blocuri pot fi modificate individual prin downloading configware, in configuration memory (configuration RAM) pentruun chip morphware.
Este nevoie de 2 tipuri de surse de intrare: software pentruprogramarea fluxului de instructiuni si configware pentrureconfigurarea structurala.
![Page 11: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/11.jpg)
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.
![Page 12: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/12.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
![Page 13: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/13.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
![Page 14: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/14.jpg)
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 fiecareproducă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.
![Page 15: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/15.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple:
![Page 16: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/16.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Selectarea unui procesor de tip soft core pentru implementareaintr-unFPGA 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, efortuldepus 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 timpdefinit).
![Page 17: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/17.jpg)
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 executieFactori 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
![Page 18: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/18.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple de procesoare soft în varianta open-source
•S1 CoreResursele 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 Leon2Este o implementare a arhitecturii SPAECv8 pe 32 de biţi. Descriereacompletă a resurselor se regăşeste la http://www.gaisler.com/•OpenRisc1200Procesor 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 pentrucircuitele de la Lattice
![Page 19: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/19.jpg)
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 AlteraFirma XilinxMicroBlaze – 32 de biţi – numai pentru circuitele de la Xilinx•PicoBlaze – 8 biţi – numai pentru circuitele de la Xilinx, dar este învariantă 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.
![Page 20: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/20.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Studiu de caz: procesorul soft LerosProcesorul soft Leros este documentat pe site-ul OpenCores.org şiface 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.
![Page 21: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/21.jpg)
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.
![Page 22: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/22.jpg)
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 înFPGA.
![Page 23: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/23.jpg)
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.
![Page 24: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/24.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Microcontroller in FPGA – comparat cu logica implementata in FPGA
![Page 25: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/25.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Proiectarea hardwareimplică decât folosirea fişierului cod sursă pentru descriereaprocesorului (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 sauRom_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.
![Page 26: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/26.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FLUXUL DE PROIECTARE - PICOBLAZE
![Page 27: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/27.jpg)
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
![Page 28: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/28.jpg)
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.
![Page 29: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/29.jpg)
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şteptatpentru o unitate de procesare de 8 biţi. (operatii aritmetice de baza, cum ar fiadunarea si scaderea; operatii logice, cum ar fi AND, OR sau XOR; operatii aritmeticela nivel de biti; operatii de deplarare si rotatii). Toate operaţiile folosesc operandul furnizat de orice registru iar rezultatul este returnataceluiaş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ţiuneade 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 siRETURN 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.
![Page 30: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/30.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
►►Intrări/IeşiriModulul 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. ►►ÎntreruperiProcesorul 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.
![Page 31: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/31.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Declararea componentei KCPSM în VHDL
Instanţierea componentei KCPSM în VHDL
Interfata semnalelor microprocesorului PicoBlaze
![Page 32: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/32.jpg)
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 aaJUMP Z,aaJUMP NZ,aaJUMP C,aaJUMP NC,aaCALL aa //Call şi Return suportă o stivă până la 15 CALL Z,aaCALL NZ,aaCALL C,aaCALL NC,aaRETURNRETURN ZRETURN NZRETURN CRETURN NC
![Page 33: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/33.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
►►Grupul instrucţiunilor logiceLOAD sX,kkAND sX,kkOR sX,kkXOR sX,kkLOAD sX,sYAND sX,sYOR sX,sYXOR sX,sY
►►Grupul instrucţiunilor aritmeticeADD sX,kkADDCY sX,kkSUB sX,kkSUBCY sX,kkADD sX,sYADDCY sX,sYSUB sX,sYSUBCY sX,sY
►►Grupul instrucţiunilor de rotire şi deplasare
SR0 sXSR1 sXSRX sXSRA sXRR sXSL0 sXSL1 sXSLX sXSLA sXRL sX
►►Input/Output GroupINPUT sX,ppINPUT sX,(sY)OUTPUT sX,ppOUTPUT sX,(sY)
►►Interrupt GroupRETURNI ENABLERETURNI DISABLEENABLE INTERRUPTDISABLE INTERRUPT
![Page 34: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/34.jpg)
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
![Page 35: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/35.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Mediatronix pBlazeIDEEste 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->Importsi se selecteaza fisierul in format KCPSM3 - fisier.psm.
![Page 36: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/36.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VIVADO – Xilinx IDE
Dezvoltare de sisteme cu Procesorul Software Xilinx MicroBlaze
32-bit Reduced Instruction Set Computer (RISC)
![Page 37: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/37.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Diagrama bloc – proiectarehardware
Generate Block Design Flow Navigator
![Page 38: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/38.jpg)
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 sistingerea led-urilor de pe placa NexysDigilent
![Page 39: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/39.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
![Page 40: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/40.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
![Page 41: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/41.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
T h e A R M C o r t e x - M 0 P r o c e s s o r A r c h i t e c t u r e P a r t - 1
Studiu de caz - Procesoare software ARM
ARM- University Program
![Page 42: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/42.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM-based SoC 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…
SystemControl ROM Boot
ROM RAM ROMTable
AHBPeripheral
APBPeripheral
UART
Timers
Watchdog
AP
B B
us
DMA
Mux
Low latency AHB IOP
ARM AMBA 3 AHB-Lite System Bus AHB to APBBus bridge
ClockGenerator
PowerManagement Unit
JTAG/ Serial wire
RAM UART VGA GPIO Timer 7-segmentDisplay
ARM Cortex-M0Microprocessor
ARM AMBA 3 AHB-Lite System Bus
An example of ARM-based SoC
ARM- University Program
![Page 43: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/43.jpg)
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.
![Page 44: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/44.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM Processor Families Cortex-A series (Application)
High performance processors for open Operating Systems;
Applications include smartphones, digital TV, smart books, home gateways;
Cortex-R series (Real-time) Exceptional performance for real-time applications; Applications include automotive braking systems,
powertrains;
Cortex-M series (Microcontroller) Cost-sensitive solutions for deterministic
microcontroller applications; Applications include microcontrollers, mixed signal
devices, smart sensors, automotive body electronics and airbags;
SecurCore series High security applications.
Previous classic processors Include ARM7, ARM9, ARM11 families
Cortex-A
Cortex-A57Cortex-A53
Cortex-A15Cortex-A9Cortex-A8Cortex-A7Cortex-A5
Cortex-R7Cortex-R5Cortex-R4
Cortex-M4Cortex-M3Cortex-M1Cortex-M0+Cortex-M0
SC000SC100SC300
ARM11ARM9ARM7
Cortex-R
Cortex-M
SecurCore
Classic
As of Sept 2013
![Page 45: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/45.jpg)
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.
ARM-basedMCU Chip
ROM ARMprocessor RAM
System bus
Peripherals
External Interface
SoC
SoC Design Chip ManufactureLicensable IPs
IP librariesCortex-A9 Cortex-R5 Cortex-M0
ARM7 ARM9 ARM11
AXI bus AHB bus APB bus
GPIO I/O blocks Timer
DRAM ctrl FLASH ctrl SRAM ctrl
![Page 46: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/46.jpg)
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;
SystemControl ROM Boot
ROM RAM ROMTable
AHBPeripheral
ARM AMBA 3 AHB-Lite System Bus
RAM UART VGA GPIO Timer 7-segmentDisplay
ARM Cortex-M0Microprocessor
ARM AMBA 3 AHB-Lite System Bus
EDK: A simplified ARM-based SoC
![Page 47: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/47.jpg)
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
![Page 48: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/48.jpg)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM Cortex-M Series Family
Processor ARM
Architecture
CoreArchitect
ureThumb® Thum
b®-2
Hardware
Multiply
HardwareDivide
SaturatedMath
DSPExtens
ions
FloatingPoint
Cortex-M0 ARMv6-M Von Neumann Most Subs
et1 or 32 cycle No No No No
Cortex-M0+ ARMv6-M Von
Neumann Most Subset
1 or 32 cycle No No No No
Cortex-M1 ARMv6-M Von Neumann Most Subs
et3 or 33 cycle No No No No
Cortex-M3 ARMv7-M Harvard Entire Entire 1 cycle Yes Yes No No
Cortex-M4 ARMv7E-M Harvard Entire Entire 1 cycle Yes Yes Yes Optional
![Page 49: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/49.jpg)
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
![Page 50: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/50.jpg)
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
![Page 51: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/51.jpg)
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;
Fetch Decode Execute
Fetch Decode Execute
Fetch Decode Execute
Instruction 1 Instruction
2 Instruction 3 Fetch Decode ExecuteInstruction
4Time
![Page 52: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/52.jpg)
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;
![Page 53: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/53.jpg)
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; High registers (R8 – R12) sometimes cannot be accessed by
some Thumb instructions;
R13: Stack Pointer (SP) Records the current address of the stack Used for saving the context of a program while switching
between tasks Cortex-M0 has two SPs: Main SP, used in applications that
require privileged access e.g. OS kernel, and exception handlers, and Process SP, used in base-level application 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
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);
Data Data
PC
SP
Address
Low
High
PUSH POP
Stack
Code
Heap
![Page 54: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/54.jpg)
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.
![Page 55: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/55.jpg)
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
Byte0Byte1Byte2Byte3
Byte0Byte1Byte2Byte3
Byte0Byte1Byte2Byte3
0x00000000
0x00000004
0x00000008
Address [7:0][15:8][23:16][31:24]
Byte0 Byte1 Byte2 Byte3
Byte0 Byte1 Byte2 Byte3
Byte0 Byte1 Byte2 Byte3
[7:0][15:8][23:16][31:24]
Word 1
Word 2
Word 3
Word 1
Word 2
Word 3
Little endian 32-bit memory Big endian 32-bit memory
![Page 56: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar](https://reader033.fdocuments.in/reader033/viewer/2022041503/5e23363394fc3c69483d1828/html5/thumbnails/56.jpg)
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.