Úvod: V tomto dokumentu je stručný popis programovatelných obvodů od firmy ALTERA
www.altera.com, které umožňují realizovat číslicové systémy s procesorem v jenom
programovatelném integrovaném obvodu (SOPC – System-On-a-Programmable-Chip)
s minimem vnějších součástek.
Historie číslicových systémů: První číslicové obvody a pomocí nich realizované číslicové systémy se objevily
v druhé polovině šedesátých let s technologií obvodů s malou (SSI) a dále střední (MSI)
hustotou integrace. Díky technologii obvodů s vysokou hustotou integrace (LSI) byl v první
polovině sedmdesátých let vyroben první mikroprocesor. Pro snadnější realizaci systémů, kde
nebylo vhodné použití procesorů se začaly vyrábět programovatelné obvody. Počátek výroby
v druhé polovině sedmdesátých let. Do začátku devadesátých let se jednotlivé druhy obvodů
vyvíjejí samostatně. Číslicový systém je zpravidla realizován jako mikroprocesorový
s podpůrnými obvody pomocí hradel. V devadesátých letech jsou programovatelné obvody
vyráběny pomocí nejmodernějších technologií (hustota 10.000 ekvivalentních hradel) a
číslicový systém je realizován pomocí mikroprocesoru a podpůrných obvodů
v programovatelném obvodu. V současnosti programovatelné obvody obsahují v jednom
pouzdře mimo programovatelné logiky i logické bloky (paměti, rozhraní, registry, čítače… ) a
mezi nimi také mikroprocesor. Číslicový systém lze realizovat na jednom čipu s minimem
vnějších součástek. Jedním z výrobců těchto obvodů je firma ALTERA www.altera.com.
FPGA + mikroprocesorové jádro: Mikroprocesorové jádro v programovatelném obvodu může být realizováno dvěma
odlišnými způsoby:
• Při použití nejmodernějších technologií výroby integrovaných obvodů je možné na
čipu k programovatelné části integrovat paměti, registry, čítače, ALU či celé jádro
vybraného nebo speciálně navrženého procesoru.
• Druhou možností je použití programovatelného obvodu s velkým počtem hradel
(1.000.000 EH - Ekvivalentních Hradel) a procesor realizovat z těchto hradel popisem
jazykem VHDL nebo Verilog HDL. V tomto případě jsou na čipu integrované některé
bloky např. paměti. (Dnes standardní bloky velkých programovatelných obvodů)
U obou verzí lze mikroprocesor modifikovat programovatelnou logikou na čipu. Firma
ALTERA vyrábí obě možné varianty. HW verzi s procesorovým jádrem ARM922T
v obvodech FPGA APEX 20KE pod označením Excalibur. SW verze má označení Nios je
určena pro tyto FPGA: Stratix, Cyclone, APEX, Mercury, Excalibur, FLEX10K nebo
použití pro HW realizaci v ASIC obvodech. Zajímavou kombinací je použití SW snadno
modifikovatelného jádra Nios v programovatelném obvodu s HW jádrem Excalibur.
V jednom obvodu je možné kombinovat několik modifikací Nios pokud je v použitém FPGA
dostatečný počet hradel. hradel. Jednotlivé mikroprocesory podporují operační systémy podle
tabulky Tab. 1.
Podpora mikroprocesorem Operační systém Výrobce
Excalibur Nios
Nucleus PLUS RTOS Accelerated Technology µC/OS-II, the Real-Time Kernel Micriµm
Linux Microtronix NORTi RTOS MiSPO
Linux MontaVista Software
OSE RTOS OSE Systems
KROS Shugyo Design
Tab. 1 Podporované operační systémy
Excalibur:
Excalibur je označení obvodů FPGA s integrovaným 32-bitovým RISCovým
procesorem ARM922T procujícím na frekvenci až 200MHz a dalšími částmi pro vytvoření
procesorového systému na jednom čipu. Bloková struktura obvodu je na Obr. 1. Činnost
systému je možné monitorovat pomocí rozhraní JTAG (Joint Test Action Group).
Obr. 1 Bloková struktura obvodu
Propojení jednotlivých bloků mikroprocesoru a vazba na programovatelnou logiku je
zobrazena na Obr. 2. Propojení je pomocí sběrnice s vysokým výkonem AHB. AHB1 –
master slouží k připojení pamětí a běží na frekvenci jádra tj. na 200MHz. Lze využívat vnitřní
(integrovanou) paměť, nebo rozšířenou externí paměť. AHB2 – slave slouží k připojení
periferií a tvoří mosty do FPGA části. Taktovací frekvence AHB2 je poloviční frekvencí
jádra. AHB je založena na sběrnici AMBA (Advancet Microcontroller Bus Architecture).
Obr. 2 Propojení mikroprocesoru a programovatelné logiky v obvodech Excalibur
Struktura procesoru ARM922T je na Obr. 3. a jeho bloková schéma na Obr. 4.
Obr. 3 Struktura procesoru ARM922T
Obr. 4 Blokové schéma ARM922T
Obvody Excalibur se vyrábějí s různou velikostí paměti a velikostí programovatelné
části FPGA (PLD) uváděné v počtu ekvivalentních hradel (EH). Označení jednotlivých verzí
je EPXA1, EPXA4, EPXA10. Označení v sobě nese údaj o počtu EH. (EPXA1 – 100 000 EH,
EPXA4 – 400 000 EH, EPXA10 – 1000 000 EH). Parametry jednotlivých verzí jsou shrnuty v
Tab. 2. (Pojmy: Logic Element - LE, Embedded Systém Block - ESB jsou přiblíženy
v příloze o FPGA). Přehled o integrovaných periferiích, dostupné paměti a velikosti FPGA
(PLD) dává Obr. 5.
Tab. 2 Vlastnosti jednotlivých verzí obvodů obsahujících jádro Excalibur
Obr. 5 Jednotlivé verze Excalibur
Na Obr. 6. je uveden příklad aplikace obvodu Excalibur.
Obr. 6 Příklad aplikace (Voice-Over Packet Gateway)
Nios:
Nios je softwareová verze procesorového jádra. Je určena pro tyto FPGA: Stratix,
Cyclone, APEX, Mercury, Excalibur, FLEX10K od firmy ALTERA, nebo použití pro
HW realizaci v ASIC obvodech. Procesor je popsán v jazyce VHDL. Sběrnice lze
nakonfigurovat, aby byly 16 nebo 32 bitové. Standardně jsou k dispozici bloky podle Obr. 7.
Obr. 7 Standardní bloky Nios
Příklad úpravy jádra uživatelem je na Obr. 8. Tímto způsobem je možné zajistit
požadované zpoždění kritických algoritmů (jsou realizovány hardwareově), přidat uživatelem
definované instrukce a upravit procesor pro DSP.
Obr. 8 Uživatelská úprava standardního bloku
Základní bloková struktura 32-bitového jádra procesoru Nios je zobrazena na Obr. 9.
Obr. 10 zobrazuje připojení periferií k jádru přes sběrnici PBM. Na dalších obrázcích Obr. 11
a Obr. 12 je uvedeno použití jádra Nios v FPGA APEX. Tab. 3 uvádí využití těchto obvodů.
Obr. 9 Jádro procesoru Nios
Obr. 10 Periferie procesoru Nios
Obr. 11 Použití Nios v FPGA APEX
Obr. 12 Použití více Nios v FPGA
Tab. 3 Využití dvou typů FPGA pro různou šířku sběrnic
Obr. 13. uvádí příklad ladění aplikace na čipu.
Obr. 13 Příklad ladění aplikace s Nios v FPGA
Struktura FPGA:
Obvody Excalibur vzniknou integrací RISCového procesoru ARM922T, peměti a
dalších bloků do FPGA APEX 20K. Softwareová verze procesoru Nios je doporučena pro
FPGA APEX 20K případně do ASIC obvodů. Z tohoto důvodu jsou dále uvedeny základní
vlastnosti obvodů APEX 20K.
Struktura obvodu je na Obr. 14. Základní bloky jsou programovatelný blok hodin,
programovatelné vstupně/výstupní buňky vestavěné (zabudované) bloky ESB (Embedded
System Block) a vlastní jádro FPGA programovatelné tabulkou LUT (Look-Up Tables).
Jednotlivé bloky jsou pospojovány výkonnou sběrnicí podle Obr. 15.
Obr. 14 Struktura APEX 20K
Obr. 15 Architektura jádra APEX20K
Základní stavební buňka je Logic Element (LE). Struktura LE je na Obr. 16. LE je
programovatelný tabulkou LUT. Deset LE tvoří LAB (Logic Array Block) viz. .Obr. 17.
Obr. 16 Struktura LE
Obr. 17 Struktura LAB
Větším stavebním prvkem je MegaLAB, který obsahuje 16 LAB, 1 ESB (zabudovaný
blok) a rychlou propojovací sběrnici MegaLAB Interconnect. Struktura MegaLAB je na
obrázcích Obr. 18. resp. Obr. 19. Na Obr. 19je zobrazeno začlenění MegaLAB do FPGA
podle Obr. 15.
Obr. 18 Struktura MegaLAB
Obr. 19 Struktura MegaLAB a jeho začlenění do FPGA
Závěr: Integrované obvody Excalibur od firmy ALTERA jsou perspektivní součástky pro
konstrukci mikroprocesorových systémů v jednom integrovaném obvodu (SOPC – System-
On-a-Programmable-Chip). Těchto možností bylo dosaženo spojením nejmodernějších
technologií pro konstrukci programovatelných obvodů. Lze předpokládat, že nové systémy
budou konstruovány způsobem SOPC.
Mezi hlavní výhody SOPC patří to, že není nutné používat rozsáhlých desek plošných
spojů (DPS). Na DPS jsou pouze silové obvody – napájení, akční členy apod. Tím se ušetří
rozměry a hmotnost, sníží se rušení, zvýší se spolehlivost, rychlost vývoje (odpadne vývoj
DPS) a ušetří značné finanční prostředky. Systém je možné libovolně konfigurovat a
upravovat podle potřeby. V případě větších sérií je možné použít ASIC obvody čímž se dále
sníží náklady.
Softwareová verze Nios nabízí možnost úpravy vlastního jádra procesoru a
přizpůsobit tak procesor aplikaci (zpracování signálů, volit šířku sběrnice, velikost ALU
apod.), což při klasické konstrukci systému není možné.