PicoBlaze
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.[1]
Az UltraScale, Virtex 7, Kintex 7, Artix 7, Zynq és a régebbi AMD FPGA családokon alkalmazható.[2]
Az architektúra elemei
[szerkesztés | forrásszöveg szerkesztése]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é.[1]
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.[3] 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
[szerkesztés | forrásszöveg szerkesztése]Egy PicoBlaze mikroprocesszor VHDL nyelven történő példányosításakor a megfelelő KCPSM komponensnevet kell használni.[4] 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
[szerkesztés | forrásszöveg szerkesztése]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
[szerkesztés | forrásszöveg szerkesztése]- 1 2 "PicoBlaze 8-bit Microcontroller" (PDF). Xilinx, Inc. Hozzáférés: 2007. június 25.
- ↑ "PicoBlaze 8-bit Microcontroller" (angol nyelven). Xilinx, AMD. 2025.
- ↑ Pong P. Chu (2008). FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version. Wiley & Sons. ISBN 978-0-470-18531-5.
- ↑ "PicoBlaze 8-bit Embedded Microcontroller User Guide" (PDF). Xilinx, Inc. 2007. szeptember 27. dátummal az eredeti (PDF) címről archiválva. Hozzáférés: 2007. június 25.
Fordítás
[szerkesztés | forrásszöveg szerkesztése]Ez a szócikk részben vagy egészben a PicoBlaze című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
Források
[szerkesztés | forrásszöveg szerkesztése]- Bibliográfia
- Ivanov Vl. Using a PicoBlaze Processor to Traffic Light Control. Archiválva 2020. augusztus 6-i dátummal a Wayback Machine-ben Cybernetics és Information Technologies, 15, 5, Marin Drinov, 2015, Online ISSN 1314-4081, DOI: 10.1515/cait-2015-0023, pp. 131 – 139. SJR:0.212
További információk
[szerkesztés | forrásszöveg szerkesztése]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[halott link]
- 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