Návrh FPGA systémů. Jazyk VHDL, principy simulace. Ing. Jakub Št astný, Ph.D. 1
|
|
- Mária Sedláčková
- před 7 lety
- Počet zobrazení:
Transkript
1 Návrh FPGA systémů Jazyk VHDL, principy simulace Ing. Jakub Št astný, Ph.D. 1 1 stastnj1@seznam.cz FPGA laboratory under the Biosignal processing laboratory Department of Circuit Theory, FEE CTU Prague Technická 2, Praha 6, Cvičení SČS
2 Varování Pozor! Tato verze přednášky obsahuje materiál třetích stran. Je určena pouze k internímu použití a vystavení na WWW stránkách Laboratoře biologických signálů, Katedry teorie obvodů ČVUT FEL, Praha!
3 1 Software pro návrh Prerekvizity Co je FPGA? Návrhový software 2 Příklady ve VHDL Kombinační funkce Sekvenční funkce Triviální DSP bloky 3 Pro ty, co chtějí vědět víc... Více o syntéze
4 Co už máte umět Booleovská algebra minimalizace logické funkce (Karnaugh, Quine-McCluskey) realizace logické funkce (hradla, úplná množina log. funkcí, Rottova mřížka) časové parametry log. prvků 1 zpoždění na hradlech 2 předstih (setup) DFF 3 přesah (hold) DFF 4 zotavení po resetu (reset recovery) DFF 5 min. perioda hodin minimální požadavky pro zaměstnání
5 Základní studijní literatura Dostupné na WWW stránkách: perfektní bakalářká práce Milana Křemečka Implementace základních funkcí na FPGA viz WWW stránky J. Št astný, Použití jazyka VHDL pro návrh číslicových obvodů. Automatizace, vol. 52, no. 7-8, pp , J. Št astný, Návrh obvodů založených na programovatelných hradlových polích. Automatizace, vol. 52, no. 5, pp , J. Št astný, Programovatelná hradlová pole (Field Programmable Gate Arrays). Automatizace, vol. 52, no. 1, pp. 9-13, J. Št astný, Návrh specifických struktur na programovatelných hradlových polích. Automatizace, vol. 52, no. 11, pp , J. Št astný, Návrh aritmetických operátorů na FPGA.
6 Software pro návrh FPGA obvodů
7 Co je FPGA?
8 Co je FPGA? SET_n X G1 G2 G3 G4 LUT4 D S Q XQ R CLK Y F1 F2 F3 F4 LUT4 D S Q YQ R RES_n
9 Design flow vodopád nástrojů Specifikace system (systemova) algorithmic (algoritmicka) systémový návrh volba FPGA hotové RTL constraints netlist constraints konfigurace FPGA Návrh systému Kódování návrhu (Design Capture) Syntéza Rozmístení+propojení (Place & Route) RTL simulace Gate level simulace Statická casová analýza Urovne abstrakce RTL (register transfer level) gate level (hradlova) physical, transistor (fyzicka, tranzistorova)
10 Návrh systému invertor 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 4 ENTITY invertor IS 5 PORT ( 6 x : IN std_logic; 7 y : OUT std_logic 8 ); 9 END ENTITY invertor; ARCHITECTURE rtl OF invertor IS 12 BEGIN 13 y<=not(x); 14 END ARCHITECTURE rtl; Specielní jazyky, VHDL 1 VHSIC Hardware Description Language 2 Very High Speed Integrated Circuit 3 std. IEEE ADA 5 striktní typová kontrola 6 simulace, podmnožina pro syntézu 7 Američani...
11 Návrhový software v FPGA laboratoři dig. simulátor Mentor Graphics, ModelSim PE (doma ModelSim XE Free, omezení) syntéza,pnr Xilinx Foundation (doma ISE WebPACK) odkud odkaz ISE WebPACK další... FPGA Advantage 7.2, LS, PS
12 VHDL v příkladech
13 Kombinační logika
14 Invertor 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 4 ENTITY invertor IS 5 PORT ( 6 x : IN std_logic; 7 y : OUT std_logic 8 ); 9 END ENTITY invertor; ARCHITECTURE rtl OF invertor IS 12 BEGIN 13 y<=not(x); 14 END ARCHITECTURE rtl; std_logic_ std_logic 2 std_logic_vector 3 9-ti stavová logika 4 aproximace reálného analogového světa 5 10XHLUZW-
15 Invertor 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 4 ENTITY invertor IS 5 PORT ( 6 x : IN std_logic; 7 y : OUT std_logic 8 ); 9 END ENTITY invertor; ARCHITECTURE rtl OF invertor IS 12 BEGIN 13 y<=not(x); 14 END ARCHITECTURE rtl; Rozhraní bloku x INVERTOR y
16 Invertor 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 4 ENTITY invertor IS 5 PORT ( 6 x : IN std_logic; 7 y : OUT std_logic 8 ); 9 END ENTITY invertor; ARCHITECTURE rtl OF invertor IS 12 BEGIN 13 y<=not(x); 14 END ARCHITECTURE rtl; Implementace bloku x INVERTOR y
17 AND konfigurace bloků 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 ENTITY and_gate IS 4 GENERIC ( 5 n : natural := 3 6 ); 7 PORT ( 8 x : IN std_logic_vector(n 1 DOWNTO 0); 9 y : OUT std_logic 10 ); 11 END ENTITY and_gate; 12 ARCHITECTURE rtl OF and_gate IS 13 BEGIN 14 gate_output : PROCESS (x) 15 VARIABLE cnt : natural; 16 BEGIN 17 y <= 1 ; 18 FOR cnt IN 0 TO n 1 LOOP 19 IF x(cnt)/= 1 THEN 20 y <= 0 ; 21 END IF; 22 END LOOP; 23 END PROCESS gate_output; 24 END ARCHITECTURE rtl; Rozhraní bloku n x(0) AND x(1) x(n 1) y
18 AND konfigurace bloků 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 ENTITY and_gate IS 4 GENERIC ( 5 n : natural := 3 6 ); 7 PORT ( 8 x : IN std_logic_vector(n 1 DOWNTO 0); 9 y : OUT std_logic 10 ); 11 END ENTITY and_gate; 12 ARCHITECTURE rtl OF and_gate IS 13 BEGIN 14 gate_output : PROCESS (x) 15 VARIABLE cnt : natural; 16 BEGIN 17 y <= 1 ; 18 FOR cnt IN 0 TO n 1 LOOP 19 IF x(cnt)/= 1 THEN 20 y <= 0 ; 21 END IF; 22 END LOOP; 23 END PROCESS gate_output; 24 END ARCHITECTURE rtl; Implementace bloku n x(0) AND x(1) x(n 1) y
19 AND konfigurace bloků 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 ENTITY and_gate IS 4 GENERIC ( 5 n : natural := 3 6 ); 7 PORT ( 8 x : IN std_logic_vector(n 1 DOWNTO 0); 9 y : OUT std_logic 10 ); 11 END ENTITY and_gate; 12 ARCHITECTURE rtl OF and_gate IS 13 BEGIN 14 gate_output : PROCESS (x) 15 VARIABLE cnt : natural; 16 BEGIN 17 y <= 1 ; 18 FOR cnt IN 0 TO n 1 LOOP 19 IF x(cnt)/= 1 THEN 20 y <= 0 ; 21 END IF; 22 END LOOP; 23 END PROCESS gate_output; 24 END ARCHITECTURE rtl; Sekvenční prostředí 1 sekvenční výpočet 2 delta-čas 3 nekonečně rychlé vykonání
20 Chování procesu kauzalita a nekonečná rychlost VHDL kód 1 log: PROCESS (a,b,c) 2 BEGIN 3 d <= a AND b; 4 y <= d OR c; 5 END PROCESS log; b a c g5 d andor1d1
21 Chování procesu kauzalita a nekonečná rychlost VHDL kód 1 log: PROCESS (a t,b t,c t ) 2 BEGIN 3 d t+1 <= a t AND b t ; 4 y t+1 <= d t OR c t ; 5 END PROCESS log; b a c g5 d andor1d1
22 Chování procesu kauzalita a nekonečná rychlost VHDL kód 1 log: PROCESS (a t,b t,c t,d t ) 2 BEGIN 3 d t+1 <= a t AND b t ; 4 y t+1 <= d t OR c t ; 5 END PROCESS log; b a c g5 d andor1d1
23 NOR instance bloků 1 2 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; 3 4 ENTITY nor_gate IS 5 PORT ( 6 a : IN std_logic; 7 b : IN std_logic; 8 y : OUT std_logic 9 ); END ENTITY nor_gate; ARCHITECTURE rtl OF nor_gate IS 14 SIGNAL or_result : std_logic; COMPONENT invertor IS PORT ( 18 x : IN std_logic; 19 y : OUT std_logic 20 ); 21 END COMPONENT invertor; BEGIN 24 or_result <= a OR b; inv_i : invertor 27 PORT MAP ( x => or_result, y => y 30 ); END ARCHITECTURE rtl; Rozhraní bloku nor_gate a b or_result INVERTOR x y y
24 NOR instance bloků 1 2 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; 3 4 ENTITY nor_gate IS 5 PORT ( 6 a : IN std_logic; 7 b : IN std_logic; 8 y : OUT std_logic 9 ); END ENTITY nor_gate; ARCHITECTURE rtl OF nor_gate IS 14 SIGNAL or_result : std_logic; COMPONENT invertor IS PORT ( 18 x : IN std_logic; 19 y : OUT std_logic 20 ); 21 END COMPONENT invertor; BEGIN 24 or_result <= a OR b; inv_i : invertor 27 PORT MAP ( x => or_result, y => y 30 ); END ARCHITECTURE rtl; Komponenty nor_gate a b or_result INVERTOR x y y
25 NOR instance bloků 1 2 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; 3 4 ENTITY nor_gate IS 5 PORT ( 6 a : IN std_logic; 7 b : IN std_logic; 8 y : OUT std_logic 9 ); END ENTITY nor_gate; ARCHITECTURE rtl OF nor_gate IS 14 SIGNAL or_result : std_logic; COMPONENT invertor IS PORT ( 18 x : IN std_logic; 19 y : OUT std_logic 20 ); 21 END COMPONENT invertor; BEGIN 24 or_result <= a OR b; inv_i : invertor 27 PORT MAP ( x => or_result, y => y 30 ); END ARCHITECTURE rtl; Implementace bloku nor_gate a INVERTOR b or_result x y y
26 NOR instance bloků 1 2 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; 3 4 ENTITY nor_gate IS 5 PORT ( 6 a : IN std_logic; 7 b : IN std_logic; 8 y : OUT std_logic 9 ); END ENTITY nor_gate; ARCHITECTURE rtl OF nor_gate IS 14 SIGNAL or_result : std_logic; COMPONENT invertor IS PORT ( 18 x : IN std_logic; 19 y : OUT std_logic 20 ); 21 END COMPONENT invertor; BEGIN 24 or_result <= a OR b; inv_i : invertor 27 PORT MAP ( x => or_result, y => y 30 ); END ARCHITECTURE rtl; Paralelní prostředí a b simulace HW paralelismus! event-driven sim. nor_gate INVERTOR or_result x y y
27 Sekvenční logika
28 Jednoduchý registr 1 2 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; 3 4 ENTITY flipflop IS 5 PORT ( 6 clk : IN std_logic; 7 res : IN std_logic; 8 9 x : IN std_logic; 10 we : IN std_logic; y : OUT std_logic 13 ); 14 END ENTITY; ARCHITECTURE rtl OF flipflop IS 17 BEGIN ff_process : PROCESS (clk, res) 20 reacts just to the clk/res changes 21 BEGIN IF res= 1 THEN 24 y <= 0 ; reset ELSIF clk= 1 AND clk EVENT THEN active edge IF we= 1 THEN y <= x; write enable 29 END IF; 30 END IF; END PROCESS ff_process; END ARCHITECTURE rtl; Rozhraní bloku res 0 D Q 1 x clk we y
29 Jednoduchý registr 1 2 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; 3 4 ENTITY flipflop IS 5 PORT ( 6 clk : IN std_logic; 7 res : IN std_logic; 8 9 x : IN std_logic; 10 we : IN std_logic; y : OUT std_logic 13 ); 14 END ENTITY; ARCHITECTURE rtl OF flipflop IS 17 BEGIN ff_process : PROCESS (clk, res) 20 reacts just to the clk/res changes 21 BEGIN IF res= 1 THEN 24 y <= 0 ; reset ELSIF clk= 1 AND clk EVENT THEN active edge IF we= 1 THEN y <= x; write enable 29 END IF; 30 END IF; END PROCESS ff_process; END ARCHITECTURE rtl; Write enable res 0 D Q 1 x clk we NE! hradlování hodin y
30 1 LIBRARY IEEE; 2 USE IEEE.STD_LOGIC_1164.ALL; 3 USE IEEE.STD_LOGIC_UNSIGNED.ALL; 4 5 ENTITY cnt IS 6 PORT ( 7 clk : IN std_logic; 8 res : IN std_logic; 9 outp : OUT std_logic_vector(3 downto 0) 10 ); 11 END CNT; ARCHITECTURE rtl OF cnt IS 14 SIGNAL cnt_in : std_logic_vector (3 DOWNTO 0); 15 SIGNAL cnt_out : std_logic_vector (3 DOWNTO 0); 16 BEGIN cnt: PROCESS (clk, res) 19 BEGIN 20 IF res= 1 THEN 21 cnt_out <= "0000"; 22 ELSIF clk EVENT AND clk= 1 THEN 23 cnt_out <= cnt_in; 24 END IF; 25 END PROCESS cnt; cnt_in <= cnt_out+1 WHEN cnt_out /= "1100" ELSE 28 (OTHERS => 0 ); not possible to read output inside! 31 outp <= cnt_out; END ARCHITECTURE rtl; Čítač
31 Aritmetika ve VHDL 27 cnt_in <= cnt_out+1 WHEN cnt_out /= "1100" ELSE 28 (OTHERS => 0 ); std_logic_unsigned detaily: MXE_prog_dir\vhdlsrc\synopsys\ mti_std_logic_unsigned.vhd +,-,ABS,<,>,<=,>=,=,/=,shl,shr,* std_logic_vector = std_logic_vector op std_logic_vector std_logic_vector = std_logic_vector op integer když potřebujete jen unsigned operátory
32 Aritmetika ve VHDL 2 27 cnt_in <= cnt_out+1 WHEN cnt_out /= "1100" ELSE 28 (OTHERS => 0 ); std_logic_unsigned function "+"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) r eturn STD_LOGIC_VECTOR is - - pragma label_applies_to plus constant length: INTEGER := maximum(l length, R length); variable result : STD_LOGIC_VECTOR (length-1 downto 0); begin result := UNSIGNED(L) + UNSIGNED(R);- pragma label plus return std_logic_vector(result); end;
33 Aritmetika ve VHDL 3 27 cnt_in <= cnt_out+1 WHEN cnt_out /= "1100" ELSE 28 (OTHERS => 0 ); std_logic_signed detaily: MXE_prog_dir\vhdlsrc\synopsys\ mti_std_logic_signed.vhd +,-,ABS,<,>,<=,>=,=,/=,shl,shr,* std_logic_vector = std_logic_vector op std_logic_vector std_logic_vector = std_logic_vector op integer když potřebujete jen signed operátory
34 Aritmetika ve VHDL 4 27 cnt_in <= cnt_out+1 WHEN cnt_out /= "1100" ELSE 28 (OTHERS => 0 ); std_logic_signed function "+"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) r eturn STD_LOGIC_VECTOR is - - pragma label_applies_to plus constant length: INTEGER := maximum(l length, R length); variable result : STD_LOGIC_VECTOR (length-1 downto 0); begin result := SIGNED(L) + SIGNED(R); - pragma label plus return std_logic_vector(result); end;
35 Aritmetika ve VHDL 5 27 cnt_in <= cnt_out+1 WHEN cnt_out /= "1100" ELSE 28 (OTHERS => 0 ); std_logic_arith detaily: MXE_prog_dir\vhdlsrc\synopsys\ mti_std_logic_arith.vhd využíváno signed i unsigned knihovnou +,-,ABS,<,>,<=,>=,=,/=,shl,shr,* konverze std_logic číslo datové typy signed, unsigned unsigned/signed = unsigned/signed op unsigned/signed unsigned/signed = unsigned/signed op integer když potřebujete signed i unsigned operátory
36 Aritmetika ve VHDL 6 konverze uns. std_logic_vector číslo num := conv_integer(unsigned(sig)); sig. std_logic_vector číslo num := conv_integer(signed(sig)); std_logic_vector uns. číslo sig := std_logic_vector(conv_unsigned(num,n)); std_logic_vector sig. číslo sig := std_logic_vector(conv_signed(num,n));
37 Široký multiplexer užití konverzí 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_arith.ALL; 4 5 ENTITY mux IS 6 PORT ( 7 in_data : IN std_logic_vector (255 DOWNTO 0); 8 sel_dat : IN std_logic_vector (7 DOWNTO 0); 9 out_dat : OUT std_logic 10 ); 11 END ENTITY mux; ARCHITECTURE rtl OF mux IS 14 BEGIN 15 out_dat <= in_data(conv_integer(unsigned(sel_dat))); 16 END ARCHITECTURE rtl;
38 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 4 ENTITY automat IS 5 PORT ( 6 clk : IN std_logic; 7 res : IN std_logic; 8 9 sc : OUT std_logic; 10 rdy : IN std_logic; we1 : OUT std_logic; 13 we2 : OUT std_logic 14 ); 15 END ENTITY automat; ARCHITECTURE rtl OF automat IS TYPE t_state IS (gen_sc, rdy_wait, we1_gen, we2_gen); 20 SIGNAL current_s : t_state; 21 SIGNAL next_s : t_state; SIGNAL rdy_sc1 : std_logic; 24 SIGNAL rdy_sc2 : std_logic; BEGIN FSM
39 next state next_state_gen : PROCESS (current_s, rdy_sc2) BEGIN CASE current_s IS WHEN gen_sc => next_s <= rdy_wait; WHEN rdy_wait => IF rdy_sc2= 1 THEN next_s <= we1_gen; ELSE next_s <= rdy_wait; END IF; WHEN we1_gen => next_s <= we2_gen; WHEN we2_gen => next_s <= gen_sc; WHEN OTHERS => next_s <= gen_sc; END CASE; END PROCESS next_state_gen; FSM
40 1 output signals 2 outputs : PROCESS (current_s) 3 BEGIN 4 CASE current_s IS 5 WHEN gen_sc => 6 we1 <= 0 ; 7 we2 <= 0 ; 8 sc <= 1 ; 9 WHEN rdy_wait => 10 we1 <= 0 ; 11 we2 <= 0 ; 12 sc <= 0 ; 13 WHEN we1_gen => 14 we1 <= 1 ; 15 we2 <= 0 ; 16 sc <= 0 ; 17 WHEN we2_gen => 18 we1 <= 0 ; 19 we2 <= 1 ; 20 sc <= 0 ; 21 WHEN OTHERS => 22 we1 <= 0 ; 23 we2 <= 0 ; 24 sc <= 0 ; 25 END CASE; 26 END PROCESS outputs; END ARCHITECTURE rtl; FSM
41 Triviální DSP
42 Akumulátor 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_signed.ALL; 4 5 ENTITY acc IS 6 GENERIC ( 7 n : natural := 4; 8 a : natural := 2 9 ); 10 PORT ( 11 clk : IN std_logic; 12 res : IN std_logic; ctrl : IN std_logic; x : IN std_logic_vector (n-1 DOWNTO 0); 17 y : OUT std_logic_vector (n+a-1 DOWNTO 0) 18 ); 19 END ENTITY acc; ARCHITECTURE rtl OF acc IS 22 SIGNAL in_ext : std_logic_vector (n+a-1 DOWNTO 0); 23 SIGNAL feedback : std_logic_vector (n+a-1 DOWNTO 0); 24 SIGNAL added : std_logic_vector (n+a-1 DOWNTO 0); 25 BEGIN sign extension 28 in_ext(n-1 DOWNTO 0) <= x; 29 in_ext(n+a-1 DOWNTO n) <=(OTHERS => x(n-1)); sumation (signed) 32 added <= in_ext + feedback; accumulator : PROCESS (res, clk) 35 BEGIN 36 IF res= 1 THEN 37 feedback <= (OTHERS => 0 ); 38 ELSIF clk= 1 AND clk EVENT THEN 39 IF ctrl= 1 THEN 40 feedback <= added; 41 END IF; 42 END IF; 43 END PROCESS accumulator; y <= feedback; END rtl; Trocha DSP n-bitů vstupu a-bitů pro saturaci 2 s cpl: 2 MSB fraction formát < 1;+1 2 n+1 > součet 2 a čísel OK detailní rozbor: zpráva #Z05-2 WWW laboratoře, stránka Publikace
43 Akumulátor 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_signed.ALL; 4 5 ENTITY acc IS 6 GENERIC ( 7 n : natural := 4; 8 a : natural := 2 9 ); 10 PORT ( 11 clk : IN std_logic; 12 res : IN std_logic; ctrl : IN std_logic; x : IN std_logic_vector (n-1 DOWNTO 0); 17 y : OUT std_logic_vector (n+a-1 DOWNTO 0) 18 ); 19 END ENTITY acc; ARCHITECTURE rtl OF acc IS 22 SIGNAL in_ext : std_logic_vector (n+a-1 DOWNTO 0); 23 SIGNAL feedback : std_logic_vector (n+a-1 DOWNTO 0); 24 SIGNAL added : std_logic_vector (n+a-1 DOWNTO 0); 25 BEGIN sign extension 28 in_ext(n-1 DOWNTO 0) <= x; 29 in_ext(n+a-1 DOWNTO n) <=(OTHERS => x(n-1)); sumation (signed) 32 added <= in_ext + feedback; accumulator : PROCESS (res, clk) 35 BEGIN 36 IF res= 1 THEN 37 feedback <= (OTHERS => 0 ); 38 ELSIF clk= 1 AND clk EVENT THEN 39 IF ctrl= 1 THEN 40 feedback <= added; 41 END IF; 42 END IF; 43 END PROCESS accumulator; y <= feedback; END rtl; Akumlátor y(5:0) ctrl x(3:0) S clk res Q D CE R cin cout a(5:0) d(5:0) + b(5:0)
44 Akumulátor 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_signed.ALL; 4 5 ENTITY acc IS 6 GENERIC ( 7 n : natural := 4; 8 a : natural := 2 9 ); 10 PORT ( 11 clk : IN std_logic; 12 res : IN std_logic; ctrl : IN std_logic; x : IN std_logic_vector (n-1 DOWNTO 0); 17 y : OUT std_logic_vector (n+a-1 DOWNTO 0) 18 ); 19 END ENTITY acc; ARCHITECTURE rtl OF acc IS 22 SIGNAL in_ext : std_logic_vector (n+a-1 DOWNTO 0); 23 SIGNAL feedback : std_logic_vector (n+a-1 DOWNTO 0); 24 SIGNAL added : std_logic_vector (n+a-1 DOWNTO 0); 25 BEGIN sign extension 28 in_ext(n-1 DOWNTO 0) <= x; 29 in_ext(n+a-1 DOWNTO n) <=(OTHERS => x(n-1)); sumation (signed) 32 added <= in_ext + feedback; accumulator : PROCESS (res, clk) 35 BEGIN 36 IF res= 1 THEN 37 feedback <= (OTHERS => 0 ); 38 ELSIF clk= 1 AND clk EVENT THEN 39 IF ctrl= 1 THEN 40 feedback <= added; 41 END IF; 42 END IF; 43 END PROCESS accumulator; y <= feedback; END rtl; Akumlátor y(5:0) ctrl x(3:0) S clk res Q D CE R cin cout a(5:0) d(5:0) + b(5:0)
45 Akumulátor 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_signed.ALL; 4 5 ENTITY acc IS 6 GENERIC ( 7 n : natural := 4; 8 a : natural := 2 9 ); 10 PORT ( 11 clk : IN std_logic; 12 res : IN std_logic; ctrl : IN std_logic; x : IN std_logic_vector (n-1 DOWNTO 0); 17 y : OUT std_logic_vector (n+a-1 DOWNTO 0) 18 ); 19 END ENTITY acc; ARCHITECTURE rtl OF acc IS 22 SIGNAL in_ext : std_logic_vector (n+a-1 DOWNTO 0); 23 SIGNAL feedback : std_logic_vector (n+a-1 DOWNTO 0); 24 SIGNAL added : std_logic_vector (n+a-1 DOWNTO 0); 25 BEGIN sign extension 28 in_ext(n-1 DOWNTO 0) <= x; 29 in_ext(n+a-1 DOWNTO n) <=(OTHERS => x(n-1)); sumation (signed) 32 added <= in_ext + feedback; accumulator : PROCESS (res, clk) 35 BEGIN 36 IF res= 1 THEN 37 feedback <= (OTHERS => 0 ); 38 ELSIF clk= 1 AND clk EVENT THEN 39 IF ctrl= 1 THEN 40 feedback <= added; 41 END IF; 42 END IF; 43 END PROCESS accumulator; y <= feedback; END rtl; Akumlátor y(5:0) ctrl x(3:0) S clk res Q D CE R cin cout a(5:0) d(5:0) + b(5:0)
46 FIR8 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_signed.ALL; 4 5 ENTITY fir_8 IS 6 PORT ( 7 clk : IN std_logic; 8 res_n : IN std_logic; 9 x : IN std_logic_vector (31 DOWNTO 0); 0 y : OUT std_logic_vector (31 DOWNTO 0) 1 ); 2 END ENTITY fir_8; 3 4 ARCHITECTURE rtl OF fir_8 IS 5 TYPE t_vzorky IS ARRAY(7 DOWNTO 1) OF std_logic_vector (31 DOWNTO 0); 6 7 SIGNAL vzorky : t_vzorky; 8 SIGNAL add_01 : std_logic_vector (31 DOWNTO 0); 9 SIGNAL add_23 : std_logic_vector (31 DOWNTO 0); 0 SIGNAL add_45 : std_logic_vector (31 DOWNTO 0); 1 SIGNAL add_67 : std_logic_vector (31 DOWNTO 0); 2 SIGNAL add_0123 : std_logic_vector (31 DOWNTO 0); 3 SIGNAL add_4567 : std_logic_vector (31 DOWNTO 0); 4 SIGNAL add_all : std_logic_vector (31 DOWNTO 0); 5 BEGIN 6 7 pameti : PROCESS (clk, res_n) 8 VARIABLE citac : NATURAL; 9 BEGIN 0 globalni asynchronni reset 1 IF res_n= 0 THEN 2 FOR citac IN 7 DOWNTO 1 LOOP 3 vzorky(citac) <= (OTHERS => 0 ); 4 END LOOP; 5 ELSIF clk= 1 AND clk EVENT THEN 6 posuv vzorku 7 vzorky(1) <= x; 8 FOR citac IN 7 DOWNTO 2 LOOP 9 vzorky(citac) <= vzorky(citac 1); 0 END LOOP; 1 END IF; 2 END PROCESS pameti; Klouzavé průměry y[n] <= x[n 7]+x[n 6]+...+x[n] 8
47 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_signed.ALL; 4 5 ENTITY fir_8 IS 6 PORT ( 7 clk : IN std_logic; 8 res_n : IN std_logic; 9 x : IN std_logic_vector (31 DOWNTO 0); 0 y : OUT std_logic_vector (31 DOWNTO 0) 1 ); 2 END ENTITY fir_8; 3 4 ARCHITECTURE rtl OF fir_8 IS 5 TYPE t_vzorky IS ARRAY(7 DOWNTO 1) OF std_logic_vector (31 DOWNTO 0); 6 7 SIGNAL vzorky : t_vzorky; 8 SIGNAL add_01 : std_logic_vector (31 DOWNTO 0); 9 SIGNAL add_23 : std_logic_vector (31 DOWNTO 0); 0 SIGNAL add_45 : std_logic_vector (31 DOWNTO 0); 1 SIGNAL add_67 : std_logic_vector (31 DOWNTO 0); 2 SIGNAL add_0123 : std_logic_vector (31 DOWNTO 0); 3 SIGNAL add_4567 : std_logic_vector (31 DOWNTO 0); 4 SIGNAL add_all : std_logic_vector (31 DOWNTO 0); 5 BEGIN 6 7 pameti : PROCESS (clk, res_n) 8 VARIABLE citac : NATURAL; 9 BEGIN 0 globalni asynchronni reset 1 IF res_n= 0 THEN 2 FOR citac IN 7 DOWNTO 1 LOOP 3 vzorky(citac) <= (OTHERS => 0 ); 4 END LOOP; 5 ELSIF clk= 1 AND clk EVENT THEN 6 posuv vzorku 7 vzorky(1) <= x; 8 FOR citac IN 7 DOWNTO 2 LOOP 9 vzorky(citac) <= vzorky(citac 1); 0 END LOOP; 1 END IF; 2 END PROCESS pameti; FIR8
48 1 scitacky 2 add_01 <= x + vzorky(1); 3 add_23 <= vzorky(2) + vzorky(3); 4 add_45 <= vzorky(4) + vzorky(5); 5 add_67 <= vzorky(6) + vzorky(7); 6 add_0123 <= add_01 + add_23; 7 add_4567 <= add_45 + add_67; 8 add_all <= add_ add_4567; 9 10 vystupni_registr : PROCESS (clk, res_n) BEGIN globalni asynchronni reset IF res_n= 0 THEN y <= (OTHERS => 0 ); ELSIF clk= 1 AND clk EVENT THEN zapis vzorku 17 y <= add_all; END IF; END PROCESS vystupni_registr; END ARCHITECTURE rtl; FIR8
49 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_signed.ALL; 4 5 ENTITY fir_8 IS 6 PORT ( 7 clk : IN std_logic; 8 res_n : IN std_logic; 9 x : IN std_logic_vector (31 DOWNTO 0); 0 y : OUT std_logic_vector (31 DOWNTO 0) 1 ); 2 END ENTITY fir_8; 3 4 ARCHITECTURE rtl OF fir_8 IS 5 TYPE t_vzorky IS ARRAY(7 DOWNTO 1) OF std_logic_vector (31 DOWNTO 0); 6 7 SIGNAL vzorky : t_vzorky; 8 SIGNAL add_01 : std_logic_vector (31 DOWNTO 0); 9 SIGNAL add_23 : std_logic_vector (31 DOWNTO 0); 0 SIGNAL add_45 : std_logic_vector (31 DOWNTO 0); 1 SIGNAL add_67 : std_logic_vector (31 DOWNTO 0); 2 SIGNAL add_0123 : std_logic_vector (31 DOWNTO 0); 3 SIGNAL add_4567 : std_logic_vector (31 DOWNTO 0); 4 SIGNAL add_all : std_logic_vector (31 DOWNTO 0); 5 BEGIN 6 7 pameti : PROCESS (clk, res_n) 8 VARIABLE citac : NATURAL; 9 BEGIN 0 globalni asynchronni reset 1 IF res_n= 0 THEN 2 FOR citac IN 7 DOWNTO 1 LOOP 3 vzorky(citac) <= (OTHERS => 0 ); 4 END LOOP; 5 ELSIF clk= 1 AND clk EVENT THEN 6 posuv vzorku 7 vzorky(1) <= x; 8 FOR citac IN 7 DOWNTO 2 LOOP 9 vzorky(citac) <= vzorky(citac 1); 0 END LOOP; 1 END IF; 2 END PROCESS pameti; FIR8 něco není v pořádku!
50 FIR8 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_signed.ALL; 4 5 ENTITY fir_8 IS 6 PORT ( 7 clk : IN std_logic; 8 res_n : IN std_logic; 9 x : IN std_logic_vector (31 DOWNTO 0); 0 y : OUT std_logic_vector (31 DOWNTO 0) 1 ); 2 END ENTITY fir_8; 3 4 ARCHITECTURE rtl OF fir_8 IS 5 TYPE t_vzorky IS ARRAY(7 DOWNTO 1) OF std_logic_vector (31 DOWNTO 0); 6 7 SIGNAL vzorky : t_vzorky; 8 SIGNAL add_01 : std_logic_vector (31 DOWNTO 0); 9 SIGNAL add_23 : std_logic_vector (31 DOWNTO 0); 0 SIGNAL add_45 : std_logic_vector (31 DOWNTO 0); 1 SIGNAL add_67 : std_logic_vector (31 DOWNTO 0); 2 SIGNAL add_0123 : std_logic_vector (31 DOWNTO 0); 3 SIGNAL add_4567 : std_logic_vector (31 DOWNTO 0); 4 SIGNAL add_all : std_logic_vector (31 DOWNTO 0); 5 BEGIN 6 7 pameti : PROCESS (clk, res_n) 8 VARIABLE citac : NATURAL; 9 BEGIN 0 globalni asynchronni reset 1 IF res_n= 0 THEN 2 FOR citac IN 7 DOWNTO 1 LOOP 3 vzorky(citac) <= (OTHERS => 0 ); 4 END LOOP; 5 ELSIF clk= 1 AND clk EVENT THEN 6 posuv vzorku 7 vzorky(1) <= x; 8 FOR citac IN 7 DOWNTO 2 LOOP 9 vzorky(citac) <= vzorky(citac 1); 0 END LOOP; 1 END IF; 2 END PROCESS pameti; Co je tu špatně? Kolik je 1+1? 1 0xFFFFFFFF = 0xFFFFFFFF + 0xFFFFFFFF = 1FFFFFFFE Pro sečtení dvou čísel potřebujeme o bit víc, abychom zabránili přetečení nutno ošetřit
51 ADD4 pipelining Funkce Sčítáme 4 čtyřbitová čísla. Příklad pipeline v logice: mezi sčítačky vložíme registry abychom zvýšili maximální dosažitelnou hodinovou frekvenci. Rozbijeme tak dlouhou cestu kombinační logikou ze vstupu na výstup obvodu. Zvýší se ovšem latence obvodu. e <= a + b + c + d. e <= ((a + b) + (c + d)). všimněte si, že se výsledek rozšiřuje mezi 4 bity 5 bitu 6 bitu a b c d a_in b_in c_in d_in a_b c_d e_in e Pouze pro kladná císla! clk res
52 ADD4 pipelining 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_arith.ALL; 4 USE IEEE.std_logic_unsigned.ALL; 5 6 ENTITY add4 IS 7 PORT ( 8 clk : IN std_logic; 9 res : IN std_logic; 10 a : IN std_logic_vector (3 DOWNTO 0); 11 b : IN std_logic_vector (3 DOWNTO 0); 12 c : IN std_logic_vector (3 DOWNTO 0); 13 d : IN std_logic_vector (3 DOWNTO 0); 14 e : OUT std_logic_vector (5 DOWNTO 0) 15 ); 16 END ENTITY add4; ARCHITECTURE rtl OF add4 IS 19 SIGNAL a_b : std_logic_vector (4 DOWNTO 0); 20 SIGNAL c_d : std_logic_vector (4 DOWNTO 0); 21 SIGNAL a_in : std_logic_vector (3 DOWNTO 0); 22 SIGNAL b_in : std_logic_vector (3 DOWNTO 0); 23 SIGNAL c_in : std_logic_vector (3 DOWNTO 0); 24 SIGNAL d_in : std_logic_vector (3 DOWNTO 0); 25 SIGNAL e_in : std_logic_vector (5 DOWNTO 0); 26 BEGIN 27 a_b <= ( 0 &a_in) + ( 0 &b_in); 28 c_d <= ( 0 &c_in) + ( 0 &d_in); e_in <= ( 0 &a_b) + ( 0 &c_d); out_reg : PROCESS (clk, res) 33 BEGIN 34 IF res= 1 THEN 35 e <= (OTHERS => 0 ); 36 a_in <= (OTHERS => 0 ); 37 b_in <= (OTHERS => 0 ); 38 c_in <= (OTHERS => 0 ); 39 d_in <= (OTHERS => 0 ); 40 ELSIF clk= 1 AND clk EVENT THEN 41 e <= e_in; 42 a_in <= a; 43 b_in <= b; 44 c_in <= c; 45 d_in <= d; 46 END IF; 47 END PROCESS out_reg; 48 END ARCHITECTURE rtl; Porty bloku 4 bity a b c d a_in b_in c_in d_in 5 bitu a_b c_d 6 bitu e_in e Pouze pro kladná císla! clk res
53 ADD4 pipelining 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_arith.ALL; 4 USE IEEE.std_logic_unsigned.ALL; 5 6 ENTITY add4 IS 7 PORT ( 8 clk : IN std_logic; 9 res : IN std_logic; 10 a : IN std_logic_vector (3 DOWNTO 0); 11 b : IN std_logic_vector (3 DOWNTO 0); 12 c : IN std_logic_vector (3 DOWNTO 0); 13 d : IN std_logic_vector (3 DOWNTO 0); 14 e : OUT std_logic_vector (5 DOWNTO 0) 15 ); 16 END ENTITY add4; ARCHITECTURE rtl OF add4 IS 19 SIGNAL a_b : std_logic_vector (4 DOWNTO 0); 20 SIGNAL c_d : std_logic_vector (4 DOWNTO 0); 21 SIGNAL a_in : std_logic_vector (3 DOWNTO 0); 22 SIGNAL b_in : std_logic_vector (3 DOWNTO 0); 23 SIGNAL c_in : std_logic_vector (3 DOWNTO 0); 24 SIGNAL d_in : std_logic_vector (3 DOWNTO 0); 25 SIGNAL e_in : std_logic_vector (5 DOWNTO 0); 26 BEGIN 27 a_b <= ( 0 &a_in) + ( 0 &b_in); 28 c_d <= ( 0 &c_in) + ( 0 &d_in); e_in <= ( 0 &a_b) + ( 0 &c_d); out_reg : PROCESS (clk, res) 33 BEGIN 34 IF res= 1 THEN 35 e <= (OTHERS => 0 ); 36 a_in <= (OTHERS => 0 ); 37 b_in <= (OTHERS => 0 ); 38 c_in <= (OTHERS => 0 ); 39 d_in <= (OTHERS => 0 ); 40 ELSIF clk= 1 AND clk EVENT THEN 41 e <= e_in; 42 a_in <= a; 43 b_in <= b; 44 c_in <= c; 45 d_in <= d; 46 END IF; 47 END PROCESS out_reg; 48 END ARCHITECTURE rtl; Vnitřní signály 4 bity a b c d 5 bitu a_in b_in a_b c_in d_in c_d 6 bitu e_in e Pouze pro kladná císla! clk res
54 ADD4 pipelining 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_arith.ALL; 4 USE IEEE.std_logic_unsigned.ALL; 5 6 ENTITY add4 IS 7 PORT ( 8 clk : IN std_logic; 9 res : IN std_logic; 10 a : IN std_logic_vector (3 DOWNTO 0); 11 b : IN std_logic_vector (3 DOWNTO 0); 12 c : IN std_logic_vector (3 DOWNTO 0); 13 d : IN std_logic_vector (3 DOWNTO 0); 14 e : OUT std_logic_vector (5 DOWNTO 0) 15 ); 16 END ENTITY add4; ARCHITECTURE rtl OF add4 IS 19 SIGNAL a_b : std_logic_vector (4 DOWNTO 0); 20 SIGNAL c_d : std_logic_vector (4 DOWNTO 0); 21 SIGNAL a_in : std_logic_vector (3 DOWNTO 0); 22 SIGNAL b_in : std_logic_vector (3 DOWNTO 0); 23 SIGNAL c_in : std_logic_vector (3 DOWNTO 0); 24 SIGNAL d_in : std_logic_vector (3 DOWNTO 0); 25 SIGNAL e_in : std_logic_vector (5 DOWNTO 0); 26 BEGIN 27 a_b <= ( 0 &a_in) + ( 0 &b_in); 28 c_d <= ( 0 &c_in) + ( 0 &d_in); e_in <= ( 0 &a_b) + ( 0 &c_d); out_reg : PROCESS (clk, res) 33 BEGIN 34 IF res= 1 THEN 35 e <= (OTHERS => 0 ); 36 a_in <= (OTHERS => 0 ); 37 b_in <= (OTHERS => 0 ); 38 c_in <= (OTHERS => 0 ); 39 d_in <= (OTHERS => 0 ); 40 ELSIF clk= 1 AND clk EVENT THEN 41 e <= e_in; 42 a_in <= a; 43 b_in <= b; 44 c_in <= c; 45 d_in <= d; 46 END IF; 47 END PROCESS out_reg; 48 END ARCHITECTURE rtl; Sčítačky 4 bity a b c d a_in b_in c_in d_in 5 bitu a_b c_d 6 bitu e_in e Pouze pro kladná císla! clk res
55 ADD4 pipelining 1 LIBRARY IEEE; 2 USE IEEE.std_logic_1164.ALL; 3 USE IEEE.std_logic_arith.ALL; 4 USE IEEE.std_logic_unsigned.ALL; 5 6 ENTITY add4 IS 7 PORT ( 8 clk : IN std_logic; 9 res : IN std_logic; 10 a : IN std_logic_vector (3 DOWNTO 0); 11 b : IN std_logic_vector (3 DOWNTO 0); 12 c : IN std_logic_vector (3 DOWNTO 0); 13 d : IN std_logic_vector (3 DOWNTO 0); 14 e : OUT std_logic_vector (5 DOWNTO 0) 15 ); 16 END ENTITY add4; ARCHITECTURE rtl OF add4 IS 19 SIGNAL a_b : std_logic_vector (4 DOWNTO 0); 20 SIGNAL c_d : std_logic_vector (4 DOWNTO 0); 21 SIGNAL a_in : std_logic_vector (3 DOWNTO 0); 22 SIGNAL b_in : std_logic_vector (3 DOWNTO 0); 23 SIGNAL c_in : std_logic_vector (3 DOWNTO 0); 24 SIGNAL d_in : std_logic_vector (3 DOWNTO 0); 25 SIGNAL e_in : std_logic_vector (5 DOWNTO 0); 26 BEGIN 27 a_b <= ( 0 &a_in) + ( 0 &b_in); 28 c_d <= ( 0 &c_in) + ( 0 &d_in); e_in <= ( 0 &a_b) + ( 0 &c_d); out_reg : PROCESS (clk, res) 33 BEGIN 34 IF res= 1 THEN 35 e <= (OTHERS => 0 ); 36 a_in <= (OTHERS => 0 ); 37 b_in <= (OTHERS => 0 ); 38 c_in <= (OTHERS => 0 ); 39 d_in <= (OTHERS => 0 ); 40 ELSIF clk= 1 AND clk EVENT THEN 41 e <= e_in; 42 a_in <= a; 43 b_in <= b; 44 c_in <= c; 45 d_in <= d; 46 END IF; 47 END PROCESS out_reg; 48 END ARCHITECTURE rtl; Registry 4 bity a b c d a_in b_in c_in d_in 5 bitu a_b c_d 6 bitu e_in e Pouze pro kladná císla! clk res
56 Design flow vodopád nástrojů Specifikace system (systemova) algorithmic (algoritmicka) systémový návrh volba FPGA hotové RTL constraints netlist constraints konfigurace FPGA Návrh systému Kódování návrhu (Design Capture) Syntéza Rozmístení+propojení (Place & Route) RTL simulace Gate level simulace Statická casová analýza Urovne abstrakce RTL (register transfer level) gate level (hradlova) physical, transistor (fyzicka, tranzistorova)
57 Pro ty, co chtějí vědět víc...
58 Design flow zblízka Nejprve se podívejme na jednotlivé kroky při zpracování VHDL kódu.
59 Syntéza Konverze popisu systému na vysoké úrovni abstrakce do seznamu logických prvků dané technologie a jejich vzájemného propojení (netlist) Vstup: syntetizovatelná podmnožina VHDL Výstup: netlist (prvky FPGA jak používá) log. funkce, sekvenční logika, aritmetika, paměti,... Výsledek syntézy je ovlivněn 1 VHDL kódem (pragmas) 2 constraints 3 použitou technologií Optim. podle plochy vs. rychlosti (reálné vs. požadované zpoždění slack), aplikace transformací PicoCTRL WWW stránky!
60 Design flow vodopád nástrojů Specifikace system (systemova) algorithmic (algoritmicka) systémový návrh volba FPGA hotové RTL constraints netlist constraints konfigurace FPGA Návrh systému Kódování návrhu (Design Capture) Syntéza Rozmístení+propojení (Place & Route) RTL simulace Gate level simulace Statická casová analýza Urovne abstrakce RTL (register transfer level) gate level (hradlova) physical, transistor (fyzicka, tranzistorova)
61 Rozmístění a propojení Implementace netlistu v daném FPGA, 1 zobrazení na technologii (mapování) 2 rozmístění 3 propojení Mapování namapování logického netlistu na prvky na FPGA optimalizace logiky spojení FFs + LUTs do slices/clb př. kombinační logiku převede do LUT v CLB FPGA odstranění mrtvé logiky replikace registrů výstup technologicky závislý netlist
62 Implementace netlistu v daném FPGA, 1 zobrazení na technologii (mapování) 2 rozmístění 3 propojení Rozmístění na základě 1 hustoty vzájemných propojení bloků 2 požadovaných časových parametrů 3 constraint file (LOC, PAD) Rozmístění a propojení iterativní algoritmus (simulované žíhání) randomizovaný proces nelinerání proces, stačí malá změna v RTL kódu a prudce se změní parametry výsledného obvodu
63 Implementace netlistu v daném FPGA, 1 zobrazení na technologii (mapování) 2 rozmístění 3 propojení Propojení Rozmístění a propojení cíl: propojit jednotlivé rozmístěné bloky iterativní, randomizovaný algoritmus Shrnutí vlastností NP-těžká optimalizační úloha, ruční optimalizace výsledku velice obtížná raději nezaplňujte FPGA na víc jak cca 90%, při hodně zaplněném obvodu se budou prudce zhoršovat časové parametry návrhu
64 Implementace netlistu v daném FPGA, 1 zobrazení na technologii (mapování) 2 rozmístění 3 propojení Propojení Rozmístění a propojení cíl: propojit jednotlivé rozmístěné bloky iterativní, randomizovaný algoritmus Shrnutí vlastností NP-těžká optimalizační úloha, ruční optimalizace výsledku velice obtížná raději nezaplňujte FPGA na víc jak cca 90%, při hodně zaplněném obvodu se budou prudce zhoršovat časové parametry návrhu
65 Syntéza Nástroje pro syntézu se snaží výsledný obvod vždy optimalizovat. Optimalizace je prováděná podle více kritérií (snaha o dosažení minimální plochy, spotřeby, či maximální hodinové frekvence) a kriteria často jdou proti sobě" optimalizací podle jedhono parametru můžeme zhoršit vlastnosti obvodu z pohledu jiného parametru. Během syntézy je obvod optimalizován různými způsoby, některé z nich jsou předmětem následujících slíd.
66 Transformace pipelining cíl obvod který pracuje na f clk = 200MHz, realita běhá mi to na cca f clk = 66MHz, řešení vložení pipeline, ručně do obvodu vložím na konec" kombinační logiky registry úloha syntézy automatický posun připraveného registru (, reset) další efekty může snížit spotřebu a zvětšit plochu návrhu D Q Q 5ns 5ns 5ns D Q Q D Q Q D Q Q
67 Transformace register retiming realita kombinační obvod před pipeline registrem je o 3 ns pomalejší, než by měl být (omezuje max. dosažitelnou hodinovou frekvenci), kombinační obvod po registru o 4 ns rychlejší, než potřebujeme řešení posun registru vlevo", přesun části logiky z pomalejšího obvodu do rychlejšího úloha syntézy automatický posun normálního registru další efekty může snížit spotřebu a zvětšit plochu návrhu D Q Q 3ns D Q Q +4ns D Q Q D Q Q 3ns +3ns D Q +1ns Q D Q Q
68 Transformace register replication realita výstup některé buňky v obvodu má velkou zátěž je na něj zapojeno hodně vstupů dalších hradel, proto je pomalý velká kapacitní zátěž řešení znásobení buňky více paralelních kopií buzených stejnými signály a rozložení zátěže úloha syntézy automatická replikace další efekty může trošku zvětšit plochu návrhu 2ns D Q Q D Q Q +2ns D Q Q +1ns D Q Q D Q Q +1ns D Q Q D Q Q +1ns +1ns D Q Q D Q Q
69 Transformace opětovná syntéza realita logická funkce je z pohledu syntézy pomalá a existuje víc způsobů, jak ji implementovat řešení pokus o jinou realizaci úloha syntézy změna obsahu LUTů, spojů, apod. nástroj pro syntézu se pokusí funkci implementovat jinak
70 Syntéza 2 K tomu aby syntezátor mohl zvolit vhodnou optimalizační metodu, musí znát parametry obvodu velikost, zpoždění v obvodu. Zatímco velikost není velký problém odhadnout, odhad rychlosti logiky je velmi obtížný. Na rychlost obvodu má rozhodující vliv jak je rozmístěn a propojen na FPGA a tato informace není v době syntézy ještě známá. Ukažme si, k čemu to může vést.
71 Příklad odhadu f clk akumulátor,malé FPGA Jednoduchý akumulátor y = y + x
72 Příklad odhadu f clk akumulátor,malé FPGA Všimněte si: s rostoucí šířkou slova syntéza odhaduje lineární snížení hodinové frekvence (lineární zvýšení zpoždění ve sčítačce). Po rozmístění a propojení obvodu nicméně pro šířku slova vyšší než 14 bitů rapidně klesá dosažitelná hodinová frekvence pokles je nelineární. Umíte si to vysvětlit?
73 Příklad odhadu f clk akumulátor,malé FPGA Řešení je prosté. Pro sčítání jsou na FPGA dedikované kanály pro akceleraci přenosu, rozmístěné vertikálně modrý sloupec níže.
74 Příklad odhadu f clk akumulátor,malé FPGA Pro příliš široké slovo se sčítačka na výšku nevejde do FPGA a to, co se nevejde se umístí jinam. Výsledek je velké zpoždění na jednom jediném spoji, které sníží hodinovou frekvenci celého obvodu.
75 Fyzická syntéza Vidíme, že odhad zpoždění není jednoduchý. Pak ale ani optimalizace obvodu nemusí být správně vybrané. Řešení: syntezátor a rozmístění a propojení pracují v cyklech, po syntéze se provede předběžné" rozmístění a propojení a na jeho základě jsou určena zpoždění v obvodu. Potom se obvod optimalizuje a celé kolečko" se automaticky rozjede znovu. Proces se opakuje, dokud software není spokojen" s výsledkem. Toto nazýváme fyzická syntéza physical synthesis.
76 Syntéza řízení procesu Nástroje pro syntézu umožňují návrháři celý proces generování schématu z VHDL kódu jemně řídit a dolad ovat. Lze to dělat několika způsoby, viz následující slídy.
77 Pragmas VHDL code Pragmas" jsou komentáře ve VHDL kódu, které ovlivňují syntézní proces. Nejjednodušší jsou níže, nástroje typicky podporují významně širší škálu povelů. Pozor ale podporované pragmy" jsou závislé na konkrétním nástroji pro syntézu, níže uvedené jsou více-méně univerzální pragma synthesis_on pragma translate_on pragma synthesis_off pragma translate_off vše, co je v kódu mezi on a off pragmou" je syntézátorem ignorováno hodí se, pokud například chcete mít ve VHDL kódu kontrolu splnění nějaké podmínky pro simulaci (například kontrolu na přetečení akumulátoru a výpis chybového hlášení při simulaci)
78 Přepínače syntézy obecně Dále lze syntézu ovlivnit přepínači kterými každý nástroj pro syntézu disponuje. Obvykle lze zapnout optimalizaci na plochu optimalizaci na rychlost optimalizaci na spotřebu ovlivnit kódování stavů automatů (stavy kódované one-hot, binárně, v Grayově kódu, atd.) lze vynutit různé nastavení optimalizací pro dílčí bloky viz. PicoCTRL zpráva na WWW stránkách sekce publikace, je tam mnoho příkladů a srovnání Přepínače lze nastavit někdy v grafickém rozhraní nástroje, někdy pomocí například konfiguračního souboru či ve skriptu pro syntézu. Záleží na nástroji.
79 Design constraints Konečně lze celý proces implementace obvodu ovlivnit pomocí constraints". S těmi se na cvičení setkáme, definujeme je v tzv. constraint file", ovlivňují i rozmístění a propojení obvodu. Závislé na nástroji. nejtypičtější jsou definice mapování signálů na nožičky obvodu NET "clk" LOC="AA12"; připoj vstup CLK na pad AA12 FPGA obvodu NET "res_n" LOC="R2"; NET "cond_1" LOC="H1"; NET "cond_1" PULLUP/PULLDOWN; povol na vstupu pull up či pull down rezistor NET "cond_1" FAST/SLOW; pro výstup, nastavuje rychlost budiče na výstupu FPGA obvodu. FAST budič má vyšší rychlost přeběhu, ale současně generuje více rušení na napájecím napětí. TIMESPEC "TS_clk_raw" = PERIOD "clk" 100MHz HIGH 50%; specifikujeme, že na vstup clk budou
80 Něco o RTL popisu RTL popis není omezen jen na VHDL kód RTL je obecná úroveň abstrakce na které popisujeme integrovaný obvod. Formální definice RTL příkazu vypadá takto: K : (T, C)R d f(r S1,..., R Sn ), N, (1) kde jednotlivé symboly mají tento význam: K T C návěští příkazu, časování příkazu, logická podmínka podmiňující příkaz, R d cílový registr, f() funkce transformace obsahu zdrojových registrů, R S1,..., R Sn zdrojové registry operace, přenos dat, N skok na příkaz s návěštím N po vykonání operace, provede se vždy nezávisle na podmínce. Takhle to vypadá asi složitě, ve skutečnosti například akumulátor popsaný ve slidech o syntetizovatelném VHDL můžeme navrhnout" přibližně takto: checkreset : (0, res = 1)R y 0, acc, acc : (clk, res = 0)R y R x + R y, checkreset. Dále je nutno nadefinovat vlastnosti R y a + n bitový registr, unsigned formát a R x kopie vstupu obvodu, nemusí ani být registr, n bitů, unsigned formát, clk 1 perioda hodin. Celou problematiku jsme zde zjednodušili, ale hlavní myšlenka je snad stále zřejmá.
Digitální technika. Jazyk VHDL, základy návrhu. Ing. Jakub Št astný, Ph.D. 1
Digitální technika Jazyk VHDL, základy návrhu Ing. Jakub Št astný, Ph.D. 1 1 stastnj1@seznam.cz FPGA laboratory Department of Circuit Theory, FEE CTU Prague Technická 2, Praha 6, 166 27 http://amber.feld.cvut.cz/fpga
VíceKoncept pokročilého návrhu ve VHDL. INP - cvičení 2
Koncept pokročilého návrhu ve VHDL INP - cvičení 2 architecture behv of Cnt is process (CLK,RST,CE) variable value: std_logic_vector(3 downto 0 if (RST = '1') then value := (others => '0' elsif (CLK'event
VícePříklady popisu základních obvodů ve VHDL
Příklady popisu základních obvodů ve VHDL INP - cvičení 2 Michal Bidlo, 2008 bidlom@fit.vutbr.cz entity Circuit is port ( -- rozhraní obvodu ); end Circuit; Proces architecture Behavioral of Circuit is
VíceNávrh. číslicových obvodů
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
VíceDigitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.
Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D. Klopné obvody jsou nejjednodušší sekvenční součástky Záleží na předcházejícím stavu Asynchronní klopné obvody reagují na změny vstupu okamžitě Synchronní
VíceNásobičky, Boothovo překódování. Demonstrační cvičení 7
Násobičky, Boothovo překódování INP Demonstrační cvičení 7 Obsah Princip násobení Sekvenční a kombinační násobička Kombinační násobičky ve VHDL Násobení se znaménkem (FX) Boothovo překódování, VHDL Násobení
VíceSouhrn Apendixu A doporučení VHDL
Fakulta elektrotechniky a informatiky Univerzita Pardubice Souhrn Apendixu A doporučení VHDL Práce ke zkoušce z předmětu Programovatelné logické obvody Jméno: Jiří Paar Datum: 17. 2. 2010 Poznámka k jazyku
Více7. Popis konečného automatu
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Praktika návrhu číslicových obvodů Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Miloš
Více12. VHDL pro verifikaci - Testbench I
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti 12. VHDL pro verifikaci - Testbench I Praktika návrhu číslicových obvodů Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních
VíceNávrh ovládání zdroje ATX
Návrh ovládání zdroje ATX Zapínání a vypínání PC zdroj ATX se zapíná spojením řídicího signálu \PS_ON se zemí zapnutí PC stiskem tlačítka POWER vypnutí PC (hardwarové) stiskem tlačítka POWER a jeho podržením
VíceÚvod do jazyka VHDL. Jan Kořenek korenek@fit.vutbr.cz. Návrh číslicových systémů 2007-2008
Úvod do jazyka VHDL Návrh číslicových systémů 2007-2008 Jan Kořenek korenek@fit.vutbr.cz Jak popsat číslicový obvod Slovně Navrhněte (číslicový) obvod, který spočte sumu všech členů dané posloupnosti slovní
VíceSčítačky Válcový posouvač. Demonstrační cvičení 6
Sčítačky Válcový posouvač INP Demonstrační cvičení 6 Poloviční sčítačka (Half Adder) A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 A B HA S C S: A C: A 0 1 0 0 1 0 B 0 1 B S
VíceVzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:
Vzorový příklad. Zadání: Na přípravku realizujte kombinační obvod představující funkci logického součinu dvou vstupů. Mající následující pravdivostní tabulku. x 1 x 0 y 0 0 0 0 1 0 1 0 0 1 1 1 Rovnicí
VíceDigitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.
Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D. Realizace kombinačních logických funkcí Realizace kombinační logické funkce = sestavení zapojení obvodu, který ze vstupních proměnných vytvoří výstupní proměnné
VíceDigitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.
Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D. Stavové automaty enkódování Proces, který rozhoduje kolik paměťových prvků bude využito v paměťové části. Binární enkódování je nejpoužívanější. j počet stavů
VíceČíslicové obvody a jazyk VHDL
Číslicové obvody a jazyk VHDL Návrh počítačových systémů 2007-2008 Jan Kořenek korenek@fit.vutbr.cz Proč HW realizace algoritmu Vyšší rychlost paralelní nebo zřetězené zpracování, přizpůsobení výpočetních
VíceDigitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.
Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D. Základní invertor v technologii CMOS dva tranzistory: T1 vodivostní kanál typ N T2 vodivostní kanál typ P při u VST = H nebo L je klidový proud velmi malý
VíceVzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
Vzorový příklad. Zadání: Na přípravku realizujte kombinační obvod představující funkci logického součinu dvou vstupů. Mající následující pravdivostní tabulku. x 1 x 0 y 0 0 0 0 1 0 1 0 0 1 1 1 Rovnicí
Více1. Seznamte se s výukovou platformou FITkit (http://merlin.fit.vutbr.cz/fitkit/).
Zadání: Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Technika personálních počítačů, cvičení ITP FITkit Řízení 7mi-segmentového displeje Úloha č. 3. 1. Seznamte se s výukovou
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické
VíceImplementace čítačů v číslicových systémech 2 Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha
Tento článek je původním rukopisem textu publikovaného v časopise DPS Elektronika A-Z: J. Šťastný. Implementace čítačů v číslicových systémech 2, DPS Plošné spoje od A do Z, no 4, pp. 11-14, 2011. Bez
VíceJazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Jazyk VHDL konstanty, signály a proměnné Jazyk VHDL paralelní a sekvenční doména Kurz A0B38FPGA
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické
VícePROGRAMOVATELNÉ LOGICKÉ OBVODY
PROGRAMOVATELNÉ LOGICKÉ OBVODY (PROGRAMMABLE LOGIC DEVICE PLD) Programovatelné logické obvody jsou číslicové obvody, jejichž logická funkce může být programována uživatelem. Výhody: snížení počtu integrovaných
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické
VíceCíle. Teoretický úvod
Předmět Ú Úloha č. 7 BIO - igitální obvody Ú mikroelektroniky Sekvenční logika návrh asynchronních a synchronních binárních čítačů, výhody a nevýhody, využití Student Cíle Funkce čítačů a použití v digitálních
Více2. Entity, Architecture, Process
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Praktika návrhu číslicových obvodů Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Miloš
VíceCíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Základní logická hradla, Booleova algebra, De Morganovy zákony Student
Předmět Ústav Úloha č. DIO - Digitální obvody Ústav mikroelektroniky Základní logická hradla, ooleova algebra, De Morganovy zákony Student Cíle Porozumění základním logickým hradlům NND, NOR a dalším,
VíceStruktura a architektura počítačů (BI-SAP) 4
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 4 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
VíceDigitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.
Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D. Obvody s třístavovým výstupem dva tranzistory: vodivostní kanál typ N vodivostní kanál typ P X CS 3 stavový sa výstup Y P logika X 3 stavový výstup W N CS
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické
VíceArchitektura počítačů Logické obvody
Architektura počítačů Logické obvody http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics 2/36 Digitální
VíceJazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Jazyk VHDL zápis čísel, znaků a řetězců Jazyk VHDL základní datové typy a operátory Kurz
VícePROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL
PROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL Doc. Ing. Jaromír Kolouch, CSc. Ústav radioelektroniky FEKT VUT v Brně, Purkyňova 118, kolouch@feec.vutbr.cz Přednáška má přinést informaci o současném stavu v
VíceImplementace čítačů v číslicových systémech Jakub Šťastný
1 Úvod Implementace čítačů v číslicových systémech Jakub Šťastný Čítač je fundamentálním obvodovým blokem nezbytným pro návrh většiny číslicových systémů. Blok čítače je v číslicových obvodech používán
VíceNávrh obvodů založených na programovatelných hradlových polích
317 Návrh obvodů založených na programovatelných hradlových polích V předchozím článku (Automatizace č. 1/2008, str. 9) jsme se zabývali koncepcí a vlastnostmi programovatelných hradlových polí, jejich
VíceY36SAP Y36SAP-2. Logické obvody kombinační Formy popisu Příklad návrhu Sčítačka Kubátová Y36SAP-Logické obvody 1.
Y36SAP 26.2.27 Y36SAP-2 Logické obvody kombinační Formy popisu Příklad návrhu Sčítačka 27-Kubátová Y36SAP-Logické obvody Logický obvod Vstupy a výstupy nabývají pouze hodnot nebo Kombinační obvod popsán
VíceY36SAP 2007 Y36SAP-4. Logické obvody kombinační a sekvenční používané v číslicovém počítači Sčítačka, půlsčítačka, registr, čítač
Y36SAP 27 Y36SAP-4 Logické obvody kombinační a sekvenční používané v číslicovém počítači Sčítačka, půlsčítačka, registr, čítač 27-Kubátová Y36SAP-Logické obvody typické Často používané funkce Majorita:
VíceArchitektura počítačů Logické obvody
Architektura počítačů Logické obvody http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Digitální
VíceKódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP
Kódy pro odstranění redundance, pro zabezpečení proti chybám Demonstrační cvičení 5 INP Princip kódování, pojmy Tady potřebujeme informaci zabezpečit, utajit apod. zpráva 000 111 000 0 1 0... kodér dekodér
VíceLOGICKÉ OBVODY X36LOB
LOGICKÉ OBVODY X36LOB Doc. Ing. Hana Kubátová, CSc. Katedra počítačů FEL ČVUT v Praze 26.9.2008 Logické obvody - 1 - Úvod 1 Obsah a cíle předmětu Číslicový návrh (digital design) Číslicové obvody logické
Více14. Složitější konstrukce
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Praktika návrhu číslicových obvodů Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Miloš
VíceStruktura a architektura počítačů (BI-SAP) 3
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 3 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
VíceDigitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.
Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D. Základní pojmy digitální techniky Abstrakce v digitální technice: signály se pokládají za skokově proměnné, v nejjednodušším případě dvě možné hodnoty logická
VícePoužití jazyka VHDL pro návrh číslicových obvodů
440 A U T O M A T I Z A C E R O Č N Í K 5 1 Č Í S L O 7 Č E R V E N E C S R P E N 2 0 0 Použití jazyka VHDL pro návrh číslicových obvodů Předchozí díl volného pokračování seriálu seznámil čtenáře s kroky
Více3. Aritmetika nad F p a F 2
3. Aritmetika nad F p a F 2 m Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze c Martin Novotný, 2011 MI-BHW Bezpečnost a technické
VíceAlgoritmická syntéza. Rychlý návrh DSP systémů. Ing. Jakub Št astný, Ph.D.
Algoritmická syntéza Rychlý návrh DSP systémů Ing. Jakub Št astný, Ph.D. http://amber.feld.cvut.cz/fpga/prednasky/hll_synteza/hlls.html Osnova přednášky 1 Motivace Vývoj polovodičů Konverze DSP algoritmu
VíceIntegrované obvody. Obvody malé, střední a velké integrace Programovatelné obvody
Integrované obvody Obvody malé, střední a velké integrace Programovatelné obvody Integrovaný obvod zkratka: IO anglický termín: integrated circuit = IC Co to je? elekrotechnická součástka na malé ploše
VícePokročilé využití jazyka VHDL. Pavel Lafata
Pokročilé využití jazyka VHDL Pavel Lafata Autor: Pavel Lafata Název díla: Pokročilé využití jazyka VHDL Zpracoval(a): České vysoké učení technické v Praze Fakulta elektrotechnická Kontaktní adresa: Technická
VíceEvropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 7 ČASOVÁNÍ A SYNCHRONIZACE TECHNICKÉHO VYBAVENÍ doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické
VíceVývoj VHDL. Verilog HDL
Popis systémů pomocí VHDL Vývoj VHDL HDL - Hardware Description Language VHDL - Very High Speed Integrated Circuits HDL Vývoj od roku 1983 v rámci projektu VHSIC 1987 - standard IEEE 1076-1987 1993 - revize
Více4. Elektronické logické členy. Elektronické obvody pro logické členy
4. Elektronické logické členy Kombinační a sekvenční logické funkce a logické členy Elektronické obvody pro logické členy Polovodičové paměti 1 Kombinační logické obvody Způsoby zápisu logických funkcí:
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické
Více1 Stručný popis jazyku VHDL
1 Stručný popis jazyku VHDL Jazyk VHDL (Very High Speed Integrated Circuits Hardware Description Language) je spolu s jazykem Verilog HDL jedním z nejpoužívanějším jazykům pro popis hardwarových struktur
VíceČíselné vyjádření hodnoty. Kolik váží hrouda zlata?
Čísla a logika Číselné vyjádření hodnoty Au Kolik váží hrouda zlata? Dekadické vážení Když přidám osmé závaží g, váha se převáží => závaží zase odeberu a začnu přidávat závaží x menší 7 závaží g 2 závaží
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) imní semestr 2/2 Jiří Douša, katedra číslicového návrhu (K83), České vysoké učení technické v Prae,
VíceDigitální návrh. Postup návrhu digitálních IO. Co to jsou HDL jazyky? Příklad Verilog kódu pro D klopný obvod
Jak navrhnout systém se 700 mil. Tranzistorů? Digitální Časová analýza Návrh topologie Dělení u na subsystémy Návrh je rozdělen na jednotlivé bloky a ty na další sub-bloky Použití již existujících ů Rychlejší
VíceOVLÁDACÍ OBVODY ELEKTRICKÝCH ZAŘÍZENÍ
OVLÁDACÍ OBVODY ELEKTRICKÝCH ZAŘÍZENÍ Odlišnosti silových a ovládacích obvodů Logické funkce ovládacích obvodů Přístrojová realizace logických funkcí Programátory pro řízení procesů Akční členy ovládacích
VíceDirect Digital Synthesis (DDS)
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Direct Digital Synthesis (DDS) Přímá číslicová syntéza Tyto materiály vznikly za podpory
VíceEvropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 2 KOMUNIKACE NAČIPU, LATENCE, PROPUSTNOST, ARCHITEKTURY doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních
Více9. Praktická verifikace
Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt 9. Praktická verifikace EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI Pravidla, postupy Testovací prostředí
VíceFPGA + mikroprocesorové jádro:
Ú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
VíceObsah DÍL 1. Předmluva 11
DÍL 1 Předmluva 11 KAPITOLA 1 1 Minulost a současnost automatizace 13 1.1 Vybrané základní pojmy 14 1.2 Účel a důvody automatizace 21 1.3 Automatizace a kybernetika 23 Kontrolní otázky 25 Literatura 26
VíceLOGICKÉ OBVODY 2 kombinační obvody, minimalizace
LOGICKÉ OBVODY 2 kombinační obvody, minimalizace logické obvody kombinační logické funkce a jejich reprezentace formy popisu tabulka, n-rozměrné krychle algebraický zápis mapy 9..28 Logické obvody - 2
VíceJakub Š astný FPGA prakticky Realizace èíslicových systémù pro programovatelná hradlová pole Praha 2010 Tato publikace je vìnována praktickým aspektùm návrhu èíslicových systémù. Spíše, než popisu jazyka
VíceSimulace číslicových obvodů na hradlové úrovni: model návrhu Jakub Šťastný ASICentrum, s.r.o. Katedra teorie obvodů FEL ČVUT Praha
Tento článek je původním rukopisem textu publikovaného v časopise DPS Elektronika A-Z: J. Šťastný. Simulace číslicových obvodů na hradlové úrovni: model návrhu, DPS Elektronika od A do Z, pp. 6-12, leden/únor
VíceProgramovatelná logika
Programovatelná logika Přehled historie vývoje technologie programovatelných obvodů. Obvody PLD, GAL,CPLD, FPGA Příklady systémů a vývojových prostředí. Moderní elektrotechnický průmysl neustále stupňuje
VícePříklad č. 1 Přepis informace ze vstupů (SW0 až SW3) na ledky (LEDG0 až LEDG3)
VHAD - Návod k VHDL hadovi Obsah Příklad č. 1 Přepis informace ze vstupů (SW0 až SW3) na ledky (LEDG0 až LEDG3)... 1 Příklad č. 2 Blikající LED... 3 Příklad č. 3 Časovač 1s... 4 Příklad č. 4 Had 8 x LED
Více7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt
Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI 7. Pracovní postupy Posloupnosti analytických a syntetických
VíceProcesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru
Počítačové systémy Procesor Miroslav Flídr Počítačové systémy LS 2006-1/17- Západočeská univerzita v Plzni Víceúrovňová organizace počítače Digital logic level Microarchitecture level Processor Instruction
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické
VíceOrganizace předmětu, podmínky pro získání klasifikovaného zápočtu
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Organizace předmětu, podmínky pro získání klasifikovaného zápočtu Kurz A0B38FPGA Aplikace
VíceBDIO - Digitální obvody
BIO - igitální obvody Ústav Úloha č. 6 Ústav mikroelektroniky ekvenční logika klopné obvody,, JK, T, posuvný registr tudent Cíle ozdíl mezi kombinačními a sekvenčními logickými obvody. Objasnit principy
Vícer90>25=.nt>+>7z5n2k<1561/+;5n{.57u07k{16;5=.nt>+>7z5n2k<15n>29l.05,90>2/3k5n2k7,50{10;<o5>/>?ˆ581:+z6,561/+;
33069 306074760630396 01234567896945606 2926922 736963 73 093769!"674 279023 36&'(' 7362639226667 36709216369331 47699439416643748 933 20643994341 7163699699966373 9963639932 67#4$6% 69 ()!'*6)* de9065@f7ge)'*#6h'6'6i'j6klf
VíceČinnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus
Činnost CPU Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Hodinový cyklus CPU je synchronní obvod nutné hodiny (f CLK ) Instrukční cyklus IF = doba potřebná
VíceZákladní znaky. - Ve srovnání se Spice jsou velmi složité a vyžadují dlouhou dobu na plné osvojení. - Velmi nákladné simulační programy.
VHDL-AMS Počátek jazyků HDL sahá do šedesátých let. V průběhu doby vznikla celá řada jazyků FAS (Anacad 1988), SpetreHDL (Cadence 94), MAST (Analogy 1986) a jiné. V současné době hrají největší roli jazyky
VíceNávrh základních kombinačních obvodů: dekodér, enkodér, multiplexor, demultiplexor
Předmět Ústv Úloh č. 2 BDIO - Digitální obvody Ústv mikroelektroniky Návrh zákldních kombinčních obvodů: dekodér, enkodér, multiplexor, demultiplexor Student Cíle Porozumění logickým obvodům typu dekodér,
Více... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu
Předmět Ústav Úloha č. 10 BDIO - Digitální obvody Ústav mikroelektroniky Komplexní příklad - návrh řídicí logiky pro jednoduchý nápojový automat, kombinační + sekvenční logika (stavové automaty) Student
VíceLOGICKÉ SYSTÉMY PRO ŘÍZENÍ
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická LOGICKÉ SYSTÉMY PRO ŘÍZENÍ Doc. Ing. Jiří Bayer, CSc Dr.Ing. Zdeněk Hanzálek Ing. Richard Šusta 2000 Vydavatelství ČVUT Předmluva Skriptum
Více2. Synchronní číslicové systémy
Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt EVROPSKÝ SOCIÁLNÍ FON PRAHA & EU: INVESTUJENE O VAŠÍ BUOUCNOSTI 2. Synchronní číslicové systémy 1 Podmínky korektní funkce hranového
VíceEvropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 2 METODY VERIFIKACE SYSTÉMŮ NA ČIPU II doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
VíceSEKVENČNÍ LOGICKÉ OBVODY
Sekvenční logický obvod je elektronický obvod složený z logických členů. Sekvenční obvod se skládá ze dvou částí kombinační a paměťové. Abychom mohli určit hodnotu výstupní proměnné, je potřeba u sekvenčních
VíceVerifikace pomocí assertions: případové studie Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha
Tento článek je upraveným původním rukopisem textu publikovaného v časopise DPS Elektronika A-Z: J. Šťastný. Verifikace pomocí assertions: případové studie, DPS Elektronika od A do Z, no 3, pp. 10-13,
VíceÚvod do problematiky obvodů FPGA pro integrovanou výuku VUT a VŠB-TUO
FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Úvod do problematiky obvodů FPGA pro integrovanou výuku VUT a VŠB-TUO Garant předmětu: Ing. Michal Kubíček, Ph.D. Autoři
VíceSimulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické
VíceStruktura a architektura počítačů
Struktura a archtektura počítačů Logcké obvody - sekvenční Formy popsu, konečný automat Příklady návrhu České vysoké učení techncké Fakulta elektrotechncká Ver..2 J. Zděnek 24 Logcký sekvenční obvod Logcký
VíceZpracování obrazu v FPGA. Leoš Maršálek ATEsystem s.r.o.
Zpracování obrazu v FPGA Leoš Maršálek ATEsystem s.r.o. Základní pojmy PROCESOROVÉ ČIPY Křemíkový čip zpracovávající obecné instrukce Různé architektury, pracují s různými paměti Výkon instrukcí je závislý
VíceKdyž procesor nestačí, FPGA zaskočí
Když procesor nestačí, FPGA zaskočí Jan Fosfor Pospíšil 8. 12. 2015 Středisko UN*Xových technologií Úterní díl Bastlířských Střed Když procesor nestačí, FPGA zaskočí (8. 12. 2015) 2 Bastlířské středy (Ne)pravidelné
VíceBoundary Scan JTAG (Joined Test Action Group) IEEE 1149.X Zápis do rozhraní
Boundary Scan JTAG (Joined Test Action Group) IEEE 1149.X Zápis do rozhraní Testování obvodů přístup k obvodům omezen porty / vývody In-Circuit Testery (Bed of Nails) Fine Pitch / MCM Multilayer Coating
VíceLogické funkce a obvody, zobrazení výstupů
Logické funkce a obvody, zobrazení výstupů Digitální obvody (na rozdíl od analogových) využívají jen dvě napěťové úrovně, vyjádřené stavy logické nuly a logické jedničky. Je na nich založeno hodně elektronických
VíceSběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC
Informační systémy 2 Obsah: Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC ROM RAM Paměti typu CACHE IS2-4 1 Dnešní info: Informační systémy 2 03 Informační systémy
VícePřípadová studie Řadič I2C rozhraní
Případová studie Řadič I2C rozhraní ASICentrum, s.r.o. Ing. Jakub Šťastný, Ph.D. jakub.stastny@asicentrum.cz Page 1 Cíl přednášky ukázat, jak se dělá návrh číslicového bloku zákaznického integrovaného
VíceHardwarová realizace konečných automatů
BI-AAG - Automaty a gramatiky Katedra teoretické informatiky ČVUT FIT 11.1.21 Co potřebujeme Úvod Potřebujeme: zakódovat vstupní abecedu, zakódovat stavy automatu, pamatovat si současný stav, realizovat
VíceMetody návrhu systémů na bázi FPGA
Metody návrhu systémů na bázi FPGA Úvod Ve třetím dílu série článků o programovatelných logických obvodech bude nastíněna metodika návrhu systémů realizovaných právě pomocí FPGA. Současně budou zmíněny
VíceSYSTÉMY NAČIPU MI-SOC
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti SYSTÉMY NAČIPU MI-SOC doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii ČVUT v Praze Hana Kubátová
Více11. Logické analyzátory. 12. Metodika měření s logickým analyzátorem
+P12 11. Logické analyzátory Základní srovnání logického analyzátoru a číslicového osciloskopu Logický analyzátor blokové schéma, princip funkce Časová analýza, glitch mód a transitional timing, chyba
VícePohled do nitra mikroprocesoru Josef Horálek
Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická
VíceVstupně výstupní moduly. 13.přednáška
Vstupně výstupní moduly 13.přednáška Vstupně-výstupn výstupní modul (I/O modul) Přídavná zařízení sloužící ke vstupu a výstupu dat nebo k uchovávání a archivaci dat Nejsou připojována ke sběrnici přímo,
Více