Open source hardware

Programovatelná hradlová pole se v budoucnu uplatní také v osobních počítačích. Open source software existuje už hezk...


Programovatelná hradlová pole se v budoucnu uplatní také v osobních počítačích.
Open source software existuje už hezkou řádku let a prakticky nikdo se nad ním
nepozastavuje. S rozmachem, který zažívají v posledních letech
rekonfigurovatelné logické systémy, se však objevila na první pohled zvláštní
analogie. Nový koncept bývá nejčastěji označován jako "open source hardware".
Hardware se od softwaru samozřejmě v řadě podstatných ohledů liší. Nelze ho
jednoduše zkopírovat, smazat nebo modifikovat, hotový čip se prostě nedá
"hacknout a předrátovat". Tak vypadají alespoň zažité představy.
Rekonfigurovatelná logika především na programovatelná hradlová pole (FPGA,
Field Programmable Gate Array) a příbuzné technologie se ale elegantně přenáší
přes všechna výše uvedená tvrzení.

Základy systému
Struktura rekonfigurovatelného systému je reprezentována základními logickými
prvky propojenými sítí spojů a programovatelných spínačů. Jednotlivé prvky jsou
hierarchicky sdruženy do bloků, které se periodicky opakují po celé ploše FPGA.
Kromě základních bloků jsou v systému obsaženy i moduly pro implementaci
složitějších funkcí (násobiček, velkých pamětí, ale např. i celý procesor Power
PC pro implementaci řídicích algoritmů). Funkce elementárních prvků i
složitějších bloků jsou přitom stejně jako propojovací matice programovatelné.
Konfigurace jednotlivých prvků a spínačů popsaného systému je uložena v
nejrůznějších druzích paměťových buněk. Nejtypičtější jsou systémy s
konfigurací ve statické paměti (SRAM), pro jiné aplikace mohou být vhodné
obvody s konfigurací v nevolatilní paměti, nebo případně i v nepřepisovatelných
buňkách (propalovaných propojkách).
Obvody s konfigurací uloženou ve volatilní paměti je nutné znovu konfigurovat
(personifikovat, doslova jim "vdechnout duši") po každém připojení napájecího
napětí. Potřebnou konfiguraci lze načíst buď z počítače připojeného k vývojové
desce, nebo a to je častější případ z pevné paměti připojené k FPGA. Takové
řešení je běžné u hotových aplikací. Naopak systémy postavené na nevolatilních
paměťových buňkách se jednou "vypálí" a pak už fungují pořád.

Programujeme křemík
Programovatelný obvod je tedy sám o sobě jen kus křemíku; teprve konkrétní
konfigurace mu vdechne život. Situace je analogická počítači ten je bez
programového vybavení také mrtvý.
Návrh hardwaru (tedy konkrétní konfigurace součástky) lze do jisté míry
přirovnat k programování. Vývoj hardwaru má samozřejmě svá specifika a je při
něm nutné přihlížet mj. i k charakteru cílové součástky. Návrh také probíhá na
nižší úrovni, než je tomu při implementaci softwaru. Dnes je pro něj
charakteristické především použití tzv. popisu na úrovni meziregistrových
přenosů (RTL, Register-Transfer Level) a programovacího jazyka s odpovídající
vyjadřovací schopností (VHDL, Very High speed integrated circuit Description
Language, případně Verilog, jsou dnes asi nejrozšířenějšími z těchto jazyků).
Návrh hardwaru je také provázen nutností zajistit bezchybnou funkci hotového
systému. Především je kladen důraz na důkladnou verifikaci, tedy simulaci a
ověření správnosti obvodu. Ani vývojové nástroje pro FPGA nejsou zatím tak
dobře dostupné, jak je běžné ve světě programování softwaru.

Návrh obvodu
Ukažme si triviální příklad návrhu obvodu na programovatelném hradlovém poli.
Vytvoříme jednoduchý obvod pro měření časového intervalu od resetu systému do
výskytu události na vstupním signálu.
Náš systém bude obsahovat 16bitový čítač čítající hodinové impulzy, bude mít
hodinový vstup (signál clk), asynchronní reset (vstup rst), vstup indikující
událost pomocí pulzu o délce jednoho hodinového cyklu (signál event) a 16bitový
výstup, který indikuje naměřený čas (sběrnice pojmenovaná ctime). Popsané
chování a tím i výsledný blok jsou samozřejmě velmi zjednodušené, avšak pro
demonstrační účely postačující.
Jak tedy postupovat? Nejprve je nutno celý blok popsat pomocí syntetizovatelné
podmnožiny jazyka VHDL. Všimněte si, že popis hardwaru pomocí programovacího
jazyka umožňuje srozumitelný a snadno sdílitelný "zdrojový text" na poměrně
vysoké úrovni abstrakce. A právě tento popis může být volně šířen, a pokud k
tomu dojde, hovoříme o open source hardwaru.
Zpět k našemu konkrétnímu případu. Zakódované chování nyní můžeme ověřit pomocí
simulátoru (viz obrázek). Dalším krokem je konverze VHDL popisu do
konfiguračních dat pro programovatelné hradlové pole. Nejprve je provedena
syntéza převod VHDL na obecné a technologicky nezávislé schéma. Schéma je pak v
následujících krocích (mapování na technologii, rozmístění a propojení,
generování bitového toku) převedeno přímo na konfiguraci hradlového pole.

Další vývoj
K čemu je to všechno dobré? Open source hardware v tuto chvíli používá úzký
okruh lidí tak či onak spojených s výzkumem a vývojem v oblasti architektur
počítačů, zpracování signálu či počítačových sítí.
Na webových stránkách jsou k dispozici desítky různých návrhů od jednoduché
jednotky na výpočet klouzavého průměru po složité systémy namátkou uveďme
mikroprocesory (8051, Z80, různé DSP CPU), jednoúčelové jednotky (FFT, makra
pro číslicovou filtraci), ale např. i implementace běžných rozhraní (USB,
FireWire...). Jednu z velkých aplikačních oblastí programovatelných obvodů
představují telekomunikace. Telekomunikační systém implementovaný na
rekonfigurovatelném hardwaru je schopen pružně reagovat na změny síťových
protokolů pouhým načtením nové konfigurace svých komponent.
V budoucnu lze očekávat nasazení programovatelných systémů také přímo v
osobních počítačích. Takové PC bude vybaveno speciálním akcelerátorem s jedním
nebo více FPGA obvody. Běžící aplikace si do FPGA nahraje svůj konkrétní
hardware pro urychlení specifických operací, které by se jinak prováděly
aplikačním programem. Tento trend povede k dalšímu nárůstu výkonu domácích
počítačů. Současně dojde k postupnému stírání rozdílů mezi psaním softwaru a
návrhem hardwaru na programovatelných obvodech.
Open source hardware se nakonec stane stejně běžnou součástí našeho života,
jako je dnes open source software.

Zdrojový kód demonstračního příkladu
Připojení potřebných knihoven (podobně jako např. v jazyce C direktiva
#include).
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; Definice vstupních a výstupních signálů, tedy rozhraní bloku s vnějším světem.
Je to ekvivalentní definování parametrů procedury.
ENTITY citac IS
PORT ( res : IN std_logic; clk : IN std_logic; event : IN std_logic; ctime : OUT std_logic_vector(15 DOWNTO 0)); END citac; Následuje popis architektury vnitřku bloku.
ARCHITECTURE RTL OF citac IS
Vnitřní signál udržuje stav čítače.
SIGNAL cnt : std_logic_vector (15 DOWNTO 0); BEGIN
Implementace systému popis vlastního algoritmu.
citac_casu : PROCESS (clk, res)
BEGIN
Inicializace: při aktivním resetu vynuluj vnitřní stav čítače i výstup.
IF res='1' THEN
cnt ELSIF clk='1' AND clkEVENT THEN
Pokud se objeví na hodinách hrana (clkEVENT) hodiny jsou po hraně v log 1
detekce náběžné hrany hodin.
cnt Pokud je detekovaná událost na vstupu, nastav výstupní signál na okamžitou
hodnotu vnitřního stavu.
IF event = '1' THEN
ctime
Informace na internetu
Open Cores webové stránky s návrhy open source hardwaru: www.opencores.org
FPGA Journal magazín o návrhu na FPGA: www.fpgajournal.com
Xilinx jeden z výrobců FPGA: www.xilinx.com
Volně šiřitelná verze komerčního softwaru pro návrh na FPGA (Xilinx Webpack):
www.xilinx.com/xlnx/xebiz/
/designResources/
/ip_product_details.jsp?key=DS-ISE-WEBPACK
Další články o open source hardwaru:
www.us.design-reuse.com/articles/article8191.html,
lyrisoft.com/~gmp/papers/bmfosh-1.0.html









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.