Ú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. Operační systém Nucleus PLUS RTOS µc/os-ii, the Real-Time Kernel Linux NORTi RTOS Linux OSE RTOS KROS Výrobce Accelerated Technology Micriµm Microtronix MiSPO MontaVista Software OSE Systems Shugyo Design Podpora mikroprocesorem Excalibur Nios 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é.