close
Ugrás a tartalomhoz

PicoBlaze

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából

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.

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;

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.

  1. 1 2 "PicoBlaze 8-bit Microcontroller" (PDF). Xilinx, Inc. Hozzáférés: 2007. június 25.
  2. "PicoBlaze 8-bit Microcontroller" (angol nyelven). Xilinx, AMD. 2025.
  3. Pong P. Chu (2008). FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version. Wiley & Sons. ISBN 978-0-470-18531-5.
  4. "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.

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.

Bibliográfia

További információk

[szerkesztés | forrásszöveg szerkesztése]

Processzor és származékok:

Eszközök:

Kapcsolódó szócikkek

[szerkesztés | forrásszöveg szerkesztése]