Návrh číslicových obvodů
SW Aritmetika HW Periférie CPU function AddSub(a,b,s); var c; a b k k a+b mpx c if (s==1) c=a+b; else c=a-b; a-b return c; End; PAMĚŤ s Princip: univerzální stroj Výhoda: univerzalita Princip: jednoúčelová krabička Výhoda: cena, výkon
SW Generátor tónu HW bitx Periferie CPU Repeat Forever set bitx=1; delay 50ms; set bitx=0; delay 50ms; End; PAMĚŤ t
Ústřední téma počítačového inženýrství je hledání rovnováhy mezi poměrem CENA vs VÝKON: Co je výhodnější implementace dané funkce? Program na univerzálním procesoru nebo speciální HW? Odpověď: závisí na zadání problému, požadavku na výkonnost, počtu vyráběných kusů
Typy číslicových obvodů v číslicovém zařízení 5V 7400 7496 PAL interface 68HC11 FPGA jednoduché IO další prvky jednočipový programovatelné součástky mikropočítač FPGA=Field Programmable Gate Array ASIC=Application Specific Integrated Circuit
Jednoduché integrované obvody Pro realizaci jednoduchých kombinačních a sekvenčních obvodů. Pro realizaci malých sérií vyráběných zařízení.
PAL-PLA-GAL-CLPD (Re)programovatelná zařízení, ale s relativně hodně předdefinovanou strukturou. Pro realizaci složitějších kombinačních obvodů, zejména dekodérů.
PAL
GAL
Př. Sčítačka v GAL20V8 GAL20V8A in:(a[3~0], B[3~0], C[0]), Add.pld io:(c[4~1], S[3~0]) Title: "Four-bit ripple adder" i=3~0: { S[i] = (A[i] + B[i] + C[i])[0] C[i+1] = (A[i] + B[i] + C[i])[1] } GAL20V8 OrCAD/PLD Add.jed Programátor Add.lst naprogramovaný GAL20V8 přiřazení vývodů
Programátor
FPGA programovatelné hradlové pole FPGA pole programovatelných elementů propojovací síť Configurable Logic Block konfigurační paměť RAM Programovatelný spoj Programovatelný I/O Kapacita: miliony hradel! konfigurační data FPGA
Deska s Xilinx FPGA
K čemu jsou FPGA? FPGA Levnější alternativa k ASIC. Pro realizaci složitých číslicových obvodů např. speciálních procesorů, FFT, MPEG (de)komprese IP makro = funkce (komponenta) v SW Lze je konfigurovat přes Internet. Rekonfigurovatelné počítání = v průběhu výpočtu se mění HW!
Co musíme navrhnout při konstrukci číslicového zařízení? Algoritmus řešení úlohy (popsaný pomocí logických funkcí, automatů) Obvodovou realizaci můžeme použít: jednoduché IO programovatelné obvody To vše se dělá (skoro) stejně jako návrh SW. univerzální procesor Desku plošných spojů Konfigurace (algoritmy) programovatelných součástek (PAL, PLA, FPGA) pokud nepoužijeme jednoduché IO Program pro procesor (pokud je použit).
Složitost číslicových zařízení Jednoduché několik malých IO (blikač na vánoční stromeček) Složitější (palubní počítač do auta, karta do sběrnice ISA) s mikrokontrolerem (+návrh programu) s programovatelnými součástkami (+návrh vnitřní konfigurace) Složité (rozhraní ke kameře, filtrace a komprese obrazu) - s FPGA, s dalšími složitými ASIC a standardním rozhraním, např. PCI, ISA musíme navrhnout vnitřní konfiguraci (funkci) FPGA
Tradiční návrh jednoduchých obvodů (bez použití počítače) Nakreslíme schéma zapojení. Nakreslíme rozmístění a propojení součástek na (obvykle jednostranné desce) s plošnými spoji. Vyrobíme desku a osadíme součástky. Zapojení obvykle funguje hned napoprvé. Př. světelné efekty na vánoční stromeček.
Posuvný registr a vánoční stromeček T=0; 21 D D D D D D D D D D clk 1 T=1 T=2 T=9 T=10 T=11 T=12 T=19 T=20
Počítačový návrh složitějšího HW specifikace problému, analýza, návrh logiky, návrh schématu, simulace obvodu, (naprogramování programovatelné součástky), návrh, implementace a oživení prototypu, návrh a realizace plošného spoje, sestavení a oživení finálního zařízení.
7400 8b registry Kreslení schémat a výroba plošných spojů: -OrCAD -Eagle - Ferda Mravenec -Protel GAL karta ISA RAM STISKEM TLAČÍTKA =>
Př. Karta pro podporu návrhu adaptérů pro sběrnici ISA
Vytvoření prototypu Nepájivé kontaktní pole bread board
Vytvoření prototypu univerzální prototypová deska
Návrh s obvody FPGA Zařízení se navrhuje stejně jako v předcházejícím případě. Podstatná část funkce je umístěna v FPGA. Existují speciální techniky a nástroje pro návrh obvodů s využitím FPGA. Zde se HW navrhuje stejně jako SW!
Jazyky pro popis hardware VHDL standard, Verilog Handel-C, System-C knihovny pro C, C++ Poskytují konstrukce jako běžné programovací jazyky definice, cykly, selekce. Musí být možné popsat paralelismus. Vývojové nástroje umožňují editování, překlad, ladění a simulaci obvodu. Obvody se popisují na úrovni strukturální komponenty+vodiče behaviorální popíšeme požadované chování
Jednoduchý kombinační obvod ve VHDL library IEEE; use IEEE.std_logic_1164.all; entity xor4 is port ( i1: in STD_LOGIC; i2: in STD_LOGIC; i3: in STD_LOGIC; i4: in STD_LOGIC; o1: out STD_LOGIC ); end xor4; i1 i2 i3 i4 xor4 XOR o1 architecture xor4 of xor4 is begin o1 <= i1 xor i2 xor i3 xor i4; end xor4;
Dekodér ve VHDL library IEEE; use IEEE.std_logic_1164.all; entity dec3to8 is port ( addr: in STD_LOGIC_VECTOR (2 downto 0); y: out STD_LOGIC_VECTOR (7 downto 0) ); end dec3to8; dec3to8 y architecture dec3to8 of dec3to8 is begin with addr select y <= "10000000" when "111", "01000000" when "110", "00100000" when "101", "00010000" when "100", "00001000" when "011", "00000100" when "010", "00000010" when "001", "00000001" when others; end dec3to8; addr dekodér
Čítač 0000-1001 ve VHDL (behaviorální popis) entity cnt is port ( Q: out STD_LOGIC_VECTOR (3 downto 0); RESET: in STD_LOGIC; clk: in STD_LOGIC ); end cnt; architecture cnt of cnt is begin process (CLK, RESET) variable Qint: STD_LOGIC_VECTOR (3 downto 0); begin if RESET='1' then Qint := "0000"; else if CLK'event and CLK='1' then if Qint<9 then Qint:=Qint+1; else Qint:="0000"; end if; end if; end if; Q <= Qint; end process; end cnt; RESET cnt cnt čítač Q
Simulace obvodu Překlad zdrojových textů. Nastavení hodnot signálů (RESET=0), frekvence hodin (clk=40mhz) apod.
Kroky návrhu pro FPGA Vstup odladěný zdrojový kód (např. ve VHDL) nebo schéma zapojení požadavek na celkové zpoždění, plochu vhodné FPGA (počet CLB, fmax, počet I/O, cena) Syntéza (plně automaticky!) transformace zdrojového kódu na zapojení na úrovni hradel (systém nakreslí schéma zapojení!) optimalizace/minimalizace rozmístění a propojení elementů v FPGA Vygenerování konfiguračního souboru Nahrání konfiguračního souboru do RAM v FPGA
Schéma zapojení vygenerované podle popisu ve VHDL (filtr)
Umístění obvodu na čipu
Propojení obvodu v FPGA
Poznámka na závěr Co by mohli umět absolventi informatiky na ekonomické fakultě: programovat(?) informatiky na PřF OU: programovat, teoretickou informatiku informačních technologií na elektrofakultě: programovat, teoretickou informatiku a navrhovat číslicové obvody