12.1.1. A Picoblaze Core implementálása FPGA-ba

Hasonló dokumentumok
Egyszerű RISC CPU tervezése

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Dr. Oniga István DIGITÁLIS TECHNIKA 9

12. NYOMÓGOMBOK ÉS KAPCSOLÓK PERGÉSMENTESÍTÉSE A FEJLESZTŐLAPON

FPGA alapú robotkarvezérlés megvalósítása

A MiniRISC processzor

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

1. Kombinációs hálózatok mérési gyakorlatai

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Bev Be e v z e e z t e ő t az ISE re r nds nds e z r e használatához

Joint Test Action Group (JTAG)

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

Újrakonfigurálható eszközök

A PicoBlaze vezérlő alkalmazása a LOGSYS kártyán

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Mérési jegyzőkönyv. az ötödik méréshez

Újrakonfigurálható eszközök

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Számítógépek felépítése, alapfogalmak

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

1. Az utasítás beolvasása a processzorba

Az MSP430 energiatakarékos használata

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

ISE makró (saját alkatrész) készítése

Digitális elektronika gyakorlat

LOGIKAI TERVEZÉS. Előadó: Dr. Oniga István

DIGITÁLIS TECHNIKA. Szabó Tamás Dr. Lovassy Rita - Tompos Péter. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar LABÓRATÓRIUMI ÚTMUTATÓ

Hardver leíró nyelvek (HDL)

0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

Tervezési módszerek programozható logikai eszközökkel

Digitális rendszerek tervezése FPGA áramkörökkel LOGSYS példa

Budapesti Műszaki és Gazdaságtudományi Egyetem. A Verilog HDL II. Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) szeptember 26.

A TMS320C50 és TMS320C24x assembly programozására példák

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Hobbi Elektronika. A digitális elektronika alapjai: Újrakonfigurálható logikai eszközök

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

2008. október 9. Verzió

DIGITÁLIS TECHNIKA 13. Dr. Oniga István

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Előadó: Dr. Oniga István

Digitális rendszerek. I. rész. Dr. Turóczi Antal

(BMEVIMIM322) Az NI 9263 DA és NI 9239 AD kártyákra alapuló mérések NI crio-9074 platformon. (BME-MIT-Beágyazott Rendszerek Csoport)

PROTOTÍPUSKÉSZÍTÉS. Előadó: Dr. Oniga István

Vezérlés és irányítástechnológia (Mikroprocesszoros irányítás)

FPGA & Verilog ismertetı. BME Méréstechnika és Információs Rendszerek Tanszék

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Újrakonfigurálható eszközök

Verilog HDL ismertető 2. hét : 1. hét dia

Robotot vezérlő szoftverek fejlesztése Developing robot controller softwares

LOGIKAI TERVEZÉS. Előadó: Dr. Oniga István Egytemi docens

Az MSP430 mikrovezérlők digitális I/O programozása

Digitális elektronika gyakorlat

A számítógép alapfelépítése

Tervezési módszerek programozható logikai eszközökkel

AVR assembly és AVR C modulok együttes használata AVR C projektben. Összeállította: Sándor Tamás

A Számítógépek felépítése, mőködési módjai

LOGIKAI TERVEZÉS PROGRAMOZHATÓ. Elő Előadó: Dr. Oniga István

Perifériák hozzáadása a rendszerhez

Újrakonfigurálható eszközök

A Verilog HDL áttekintése

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Előadó: Dr. Oniga István

Fuzzy Rendszerek. 3. előadás Alkalmazások. Ballagi Áron egyetemi adjunktus. Széchenyi István Egyetem, Automatizálási Tsz.

Xilinx ChipScope ismertető

Attribútumok, constraint-ek

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Elektronikus dobókocka tervezési példa

LOGSYS EGYSZERŰ ALKALMAZÁS KÉSZÍTÉSE A LOGSYS KINTEX-7 FPGA KÁRTYÁRA A XILINX VIVADO FEJLESZTŐI KÖRNYEZET HASZNÁLATÁVAL június 16. Verzió 1.

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Jelfeldolgozó processzorok (DSP) Rekonfigurálható eszközök (FPGA)

16F628A megszakítás kezelése

Mikrorendszerek tervezése

VHDL alapismeretek. (Xilinx FPGA-k programozása VHDL nyelven) Oktatási jegyzet. Összeállította: dr. Zigó Tamás

Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium

Újrakonfigurálható eszközök

Digitális elektronika gyakorlat. A VHDL leírástípusok

FPGA áramkörök alkalmazásainak vizsgálata

Digitális technika Xilinx ISE GUI használata

Számítógépek felépítése, alapfogalmak

14. TARTALOM FUTTATÁSA A FEJLESZTŐLAP HÉTSZEGMENSES KIJELZŐJÉN

LOGSYS LOGSYS SPARTAN-3E FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 19. Verzió

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Budapesti Műszaki- és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar MIT. Nagyteljesítményű mikrovezérlők tantárgy [vimim342]

PROGRAMOZHATÓ LOGIKAI ESZKÖZÖK. Elıadó: Dr. Oniga István Egytemi docens

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

Digitális rendszerek tervezése FPGA áramkörökkel Szimuláció és verifikáció

E7-DTSZ konfigurációs leírás

Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium

Constraint-ek. Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Mikrorendszerek tervezése

Mikrorendszerek tervezése

The modular mitmót system. A DPY-LED perifériakártya

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Egyszerű mikroprocesszor RTL modellek (VHDL)

Átírás:

12.1.1. A Picoblaze Core implementálása FPGA-ba A Picoblaze processzor Ebben a fejezetben kerül bemutatásra a Pikoblaze-zel való munka. A Picoblaze szoftveres processzort alkotója Ken Chapman a Xilinx vállalatból. Az itt bemutatásra kerülő változat Verilog nyelven a Spartan6 FPGA-ra lett írva. A Picoblaze egy ingyenes szoftvercsomagban érkezik, amely tartalmazza a szoftveres processzor forráskódját, valamint az összes szükséges programot és dokumentációt. A tananyag követéséhez, ebben a fejezetben a következő anyagokra lesz szükség: Xilinx Webpack 13.1-as vagy újabb fejlesztőeszköz, le kell tölteni a Picoblaze KCPSM6 -t a Xilinx honlapjáról, ##LINK: www.xilinx.com/picoblaze ## a Xilinx szoftver eszközök által támogatott JTAG programozó. A Xilinx honlapjáról letöltött KCPSM6_Release4_30April12.zip fájl tartalmazza a Pikoblazeval való munkához szükséges minden elemet. A tömörített csomagban található a KCPSM6_User_Guide_30April12.pdf részletes leírást tartalmaz a Picoblaze változatos használatával kapcsolatban. Az anyagokban megtalálható a szoftveres processzor Verilog és VHDL nyelvű kivitelezése is. A következőkben csak a szükséges alapvető lépések lesznek bemutatva. Ezek segítségével lehet megismerni ezt a 8 bites szoftveres processzort. A későbbiekben eme kezdeti lépések és az említett PDF anyag alapján lehet tovább ismerkedni a Picoblaze-zel. Gyakran felteszik a kérdést: mi értelme és célja megvalósítani egy kis szoftveres processzort a komplex FPGA áramkörön belül? Erre az egyik lehetséges válasz a következő: az FPGA áramkör hatékonyan meg tud valósítani összetett párhuzamos logikai struktúrákat, amelyek zökkenőmentesen és nagy sebességgel tudják elvégezni a feladataikat. Ezek a logikai/vezérlési struktúrák véges automaták útján vannak megvalósítva. És ezen a ponton leljük meg a probléma lényegét: nevezetesen, rendkívül nehéz, összetett véges állapotú gépeket tervezni. Ebből a szempontból, egy kicsi és szekvenciálisan működő processzor használata nagyon kényelmes és egyszerű megoldás. Az FPGA áramkörbe betölthető processzorok száma csak az FPGA áramkör kialakításától és erőforrásaitól függ. Az 1. ábrán a Pikoblaze szoftveres, 8 bites processzor felépítése van bemutatva.

1. ábra a Picoblaze szoftveres processzor felépítése Ahhoz, hogy a Picoblaze (KCPSM6) szoftveres processzort használhassák, elegendő csak két fájlt csatolni a projekthez: kcpsm6.v amely definiálja a processzort és a portjait, egy adatfájlt, amely egy memóriát definiál, amely tartalmazza azt a programkódot amit a szoftveres processzornak futtatnia kell. Ez az adatfájl a következő alakokban adható meg: Verilog, VHDL, vagy IP mag. Feladat: Írjon egy olyan Picoblaze processzor programot, amely az egyik kimeneten egy LED-et villogtat! Az elészült programot és egy Picoblaze szoftveres processzort helyezze el egy Spartan6-os FPGA áramkörben! Megoldás: 1. lépés: meg kell írni és le kell fordítani a Picoblase szoftveres processzor programját. A programot assemblyben kell megírni. Írja be egy újonnan létrehozott szövegfájlba a következő assembly programot:

start: LOAD S9, 00 ; az S9 betöltése drive_wave: OUTPUT S9, 02 ; az S9 regiszter kiiratása az ; userbit-be LOAD S2, 0F ; az S2 kezdőértéke loop2: LOAD S1, FF ; az S1 kezdőértéke loop1: LOAD S0, FF ; az S0 kezdőértéke loop0: SUB S0, 01 ; csökkentjük S0-át 1-el JUMP NZ, loop0 ; ugrás ha még nem nulla SUB S1, 01 ; csökkentjük S1-et 1-el JUMP NZ, loop1 ; ugrás ha még nem nulla SUB S2, 01 ; csökkentjük S2-őt 1-el JUMP NZ, loop2 ; ugrás ha még nem nulla ; XOR S9, FF ; negáljuk a regiszter bitjeit JUMP drive_wave ;feltétel nélküli ugrás az elejére A fájlt psm kiterjesztéssel pl. LED.PSM mentse el! 2. lépés: az elkészült programot le kell fordítani és el kell helyezni egy virtuális memóriában, amiből a szoftveres processzor kiolvashatja és futtathatja. A már említett KCPSM6_Release4_30April12.zip adattárban található a fordítóprogram (kcpsm6.exe) és a memória definícióját tartalmazó Verilog fájl (ROM_form.v).

Helyezze el az asszembly forráskódot tartalmazó LED.PSM valamint a ROM_form.v adatfájlokat és a fordítóprogramot egy közös könyvtárban! Indítsa el a kcpsm6.exe fordítóprogramot, majd adja meg a forráskódot tartalmazó fájl nevét (LED.PSM)! (2. ábra) A fordítóprogram lefordítja az assembly forráskódot, majd az eredményt összefűzi a ROM memóra definíciójával. Így keletkezik a kimeneten egy Verilog fájl: a LED.v. A feladat további részében erre a fájlra lesz szükségünk. 2. ábra az assembly forráskód fordítása 3. lépés: A Xilinx ISE fejlesztőkörnyezetben létre kell hozni a rendelkezésre álló hardverplatformnak megfelelő projektust. Ez a folyamat az előző fejezetek során lépésről-lépésre, részletesen be lett mutatva. Majd a szükséges fájlokat kell bemásolni a projektus munkakönyvtárába. Ezután létre kell hozni a legfelső szintű Verilog fájlt. Hozzon létre egy új projektust a Xilinx ISE-ben! (Ebben a példában Mars-MX2-es platform lett használva.) Ezután másolja be a led.v és a kcpsm6.v fájlokat az újonnan létrehozott projektus munkakönyvtárába!

Hozza létre a legfelső szintű Verilog fájlt amelybe másolja vagy gépelje be a következőket! : (Megjegyzés: a következő verilog fájl a kcpsm6_design_template.v fájl alapján íródott) //************************************************* module picoblaze_toggle( input ireset, input iclk, output oled0 ); clock = iclk; // reset is active high. // if no reset signal input // then tie reset to zero here. [11:0] address; [17:0] instruction; bram_enable; [7:0] port_id; [7:0] out_port; reg [7:0] in_port; write_strobe; k_write_strobe; read_strobe; interrupt; interrupt_ack; kcpsm6_sleep; kcpsm6_reset = ireset; cpu_reset; rdl = ireset; kcpsm6 #(.interrupt_vector (12'h3FF),.scratch_pad_memory_size(64),.hwbuild (8'h00)) processor (.address (address),

.instruction (instruction),.bram_enable (bram_enable),.port_id (port_id),.write_strobe (write_strobe),.k_write_strobe (k_write_strobe),.out_port (out_port),.read_strobe (read_strobe),.in_port (in_port),.interrupt (interrupt),.interrupt_ack (interrupt_ack),.reset (kcpsm6_reset),.sleep (kcpsm6_sleep),.clk (clock)); assign kcpsm6_sleep = 1'b0; assign interrupt = 1'b0; led #(.C_FAMILY ("S6"), //Family 'S6' or 'V6'.C_RAM_SIZE_KWORDS (1), //Program size '1', '2' or '4'.C_JTAG_LOADER_ENABLE (0)) //Include JTAG Loader when '1' led ( //Name to match your PSM file.rdl (rdl),.enable (bram_enable),.address (address),.instruction (instruction),.clk (clock)); // only one bit written to by picoblaze, the LED. // therefore don't need to decode port_id. // if write_strobe asserts, grab out_port[0] and // hold it in userbit. reg userbit = 0; always @(posedge clock) begin

if(write_strobe) begin userbit <= out_port[0]; end end assign oled0 = userbit; endmodule //************************************************* 4. lépés: Mint minden processzornak a Picoblase-nek is szüksége van órajelre és reszet jelre, ezen felül a feladat megvalósítása megkövetel egy kimenti jelet is, amellyel a LED-et lehet vezérelni. Ezért létre kell hozni a belső magot a külvilággal összekötő UCF fájlt. Hozza létre az UCF fájlt amelybe másolja vagy gépelje be a következőket! : NET "oled0" NET "iclk" NET "ireset" LOC = "F15" IOSTANDARD = "SSTL18_II"; LOC = "R8" IOSTANDARD = "LVCMOS33" FAST; LOC = "T2" IOSTANDARD = "LVCMOS33" FAST; 5. lépés Fordítsa le a projektust! Az eredmény bit-fájlt, a Xilinx Impact program segítségével programozza be az FPGA-ba! A lépések rövid összefoglalója: 0) A Xilinx honlapjáról le kell tölteni a KCPSM6_Release4_30April12.zip csomagot 1) Meg kell írni a led.psm fájlt, amelyet azonos könyvtárba kell elhelyezni a ROM_form.v fájllal és a kcpsm6.exe fordítóprogrammal. Elvégezni a PSM fájl fordítását. 2) Az ISE projektkönyvtárba mésolni a led.v és kcpsm6.v fájlokat és elkészíteni a legfelső szintű Verilog fájlt, pl. picoblaze_villog.v. Ehhez fel lehet használni a csomagban található kcpsm6_design_template.v sablont. 3) Meg kell írni a hardverplatformnak megfelelő UCF fájlt. 4) A projektus fordítása után a bit-fájlt a Xilinx Impact segítségével be kell tölteni a Spartan6 eszközbe.