A PicoBlaze a Xilinx három szabad szoft processzormagból álló sorozatának megnevezése, melyeket a Xilinx gyártmányú FPGA és CPLD termékekben történő felhasználásra terveztek. Ezek egy 8 bites RISC architektúrán alapulnak és elérhetik a max. 100 MIPS sebességet a Virtex 4 FPGA családban. A processzoroknak 8 bites cím- és adatportjuk van a perifériák széles választékához való hozzáféréshez. A magok licence lehetővé teszi szabad felhasználásukat, bár csak a Xilinx eszközökön, és használatukhoz elérhetők a megfelelő fejlesztőeszközök. Harmadik féltől származó eszközök is rendelkezésre állnak, a Mediatronix és más cégektől. Hasonlóan, BSD licenc alatt elérhető a PacoBlaze kialakítás, ami a magok eszközfüggetlen viselkedésazonos implementációja. A PauloBlaze egy nyílt forráskódú VHDL implementáció az Apache licenc alatt.
A PicoBlaze tervezetet eredetileg KCPSM-nek nevezték, aminek a jelentése „Constant(K) Coded Programmable State Machine” (Konstans Kódolású Programozható Állapotgép, avagy korábban „Ken Chapman's PSM”). Ken Chapman a Xilinx rendszertervezője volt, ő fejlesztette ki és valósította meg a mikrovezérlőt.
Az UltraScale, Virtex 7, Kintex 7, Artix 7, Zynq és a régebbi AMD FPGA családokon alkalmazható. Az architektúra elemei A PicoBlaze processzorok Harvard felépítésűek, így külön adat- és külön programmemóriával rendelkeznek. Utasításaik rögzített hosszú 16 bites szavak. 8 bites adatokat dolgoznak fel. Utasításkészletük RISC típusú, 16 db 8 bites általános célú regiszterük van, 31 elemű hardveres hívási veremmel, 256 bemeneti és 256 kimeneti porttal rendelkeznek. Az ALU 8 bites, Z (zérus) és C (átvitel) jelzőbitekkel. Az adatmemória 64 bájt. Az utasítások címmezője 10 bit, ez max. 1024 utasításos programokat tesz lehetővé.
A Xilinx dokumentációja szerint a PicoBlaze mindössze 96 FPGA szeletet igényel. A kis megvalósítási méretet részben úgy érték el, hogy az utasítássorozat-kezelési oldalt (programszámláló, hívási-visszatérési verem, beleértett veremmutató, és megszakításengedélyező bit) meglehetősen mereven elválasztották a végrehajtási oldaltól (ALU, regiszterfájl, gyorstár (scratchpad) RAM, Z/C állapotbitek). Az egyedüli információ, amely a számítási oldaltól az utasítássor-kezelési oldalra áramlik, az ALU zéró és átvitel jelzőbitjei, a feltételes ugrás és szubrutinhívás (JUMP és CALL) utasítások teszt részében. Nem lehetséges számított ugrások vagy függvénymutatók megvalósítása. Az egyedüli információ amely az utasítássor-kezelési oldalról a végrehajtási oldalra áramlik, az operandusmezők adatai: célregiszter (4 bit), ALU opkód (hat bit), opcionális forrásregiszter (4 bit), opcionális 8 bites közvetlen érték / portcím, opcionális 6 bites gyorstár-cím. Nincs mechanizmus a megszakításengedélyező bit, a veremmutató értékének és a 31 bejegyzésű verem vagy a programmemória tartalmának vizsgálatára.
Az utasítássor-kezelő logika nem tartalmaz összeadót, így relatív elágazások és pozíciófüggetlen kód megvalósítása nem lehetséges. Minden ugrás és hívási cím abszolút címzésű.
A PicoBlaze nem nagyon alkalmas lefordított nyelveken való programozásra, mint amilyen a C. A függvénymutatók támogatásának hiánya mellett, nincsenek utasítások vagy címzési módok a veremalapú hívási konvenció meggyorsítására. A PicoBlaze processzornál két utasításra van szükség a PUSH vagy a POP művelet megvalósításához és két utasításra a relatív címzés megvalósítására a szoftveresen kialakított veremmutatóval. A PicoBlaze sokkal inkább megfelel a kézzel optimalizált regiszteralapú hívási konvenciónak. Ez nem zárja ki a Forth-szerű adatverem használatát, és a PicoBlaze ténylegesen alkalmas is erre a megközelítésre, ha a 64 bájtos gyorsmemória (scratchpad) elegendő helyet nyújt ehhez. Példányosítás Egy PicoBlaze mikroprocesszor VHDL nyelven történő példányosításakor a megfelelő KCPSM komponensnevet kell használni. Ezt mutatja egy PicoBlaze3 processzor esetén az alábbi kódrészlet: component kcpsm3 is port ( address : out std_logic_vector(9 downto 0); instruction : in std_logic_vector(17 downto 0); port_id : out std_logic_vector(7 downto 0); write_strobe : out std_logic; out_port : out std_logic_vector(7 downto 0); read_strobe : out std_logic; in_port : in std_logic_vector(7 downto 0); interrupt : in std_logic; interrupt_ack : out std_logic; reset : in std_logic; clk : in std_logic ); end component;
Teljesítmény A processzor minden utasítást, minden körülmények között két órajelciklus alatt hajt végre, ezért az alap utasításkészlet teljesítménye determinisztikus. A megszakításokra adott reakcióidő nem több, mint öt órajelciklus. Erőforrás-optimalizálásként lehetséges, hogy két PicoBlaze mag közösen használja ugyanazt az 1k × 18 bites utasítás PROM-ot, kihasználva ennek a blokknak a kétportos megvalósítását a Xilinx FPGA-kon. Jegyzetek
Fordítás
Források Bibliográfia Ivanov Vl. Using a PicoBlaze Processor to Traffic Light Control. Cybernetics és Information Technologies, 15, 5, Marin Drinov, 2015, Online , , pp. 131 – 139. SJR:0.212
További információk Processzor és származékok: PicoBlaze a Xilinx weboldalán PicoBlaze felhasználói kézikönyv PicoBlaze felhasználói erőforrások Implementation of picoblaze in LabVIEW FPGA on the Xilinx Spartan 3E Starter board PacoBlaze: a PicoBlaze nyílt forráskódú szintetizálható és azonos viselkedésű Verilog klónja a PacoBlaze implementáció leírása NanoBlaze: VHDL modell generikusokkal a különböző méretek meghatározásához PauloBlaze: nyílt forráskódú VHDL modell, teljesen kompatibilis a kcpsm6 ISA-val Eszközök: Nyílt forráskódú Picoblaze assembler PicoBlaze Debugger, Software and RTL Hardware development with ModelSim MDS, Professzionális IDE Linux és Windows rendszerekhez FIDEx, assembler IDE Linux, MAC és Windows operációs rendszerekhez pBlazASM, nyílt forráskódú assembler és szimulátor Windowshoz pBlazIDE, assembler IDE Windowshoz kpicosim, nyílt forráskódú assembler IDE Linuxhoz Opbasm, keresztplatformos Open Picoblaze makroassembler a kcpsm3 és kcpsm6 típusokhoz PicoBlaze szimulátor JavaScriptben
Kapcsolódó szócikkek MicroBlaze
Kategória:Szoft mikroprocesszorok Kategória:Mikroprocesszorok