Návrh FPGA systémů. Jazyk VHDL, principy simulace. Ing. Jakub Št astný, Ph.D. 1

Rozměr: px
Začít zobrazení ze stránky:

Download "Návrh FPGA systémů. Jazyk VHDL, principy simulace. Ing. Jakub Št astný, Ph.D. 1"

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 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íce

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Koncept 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íce

Příklady popisu základních obvodů ve VHDL

Pří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íce

Návrh. číslicových obvodů

Ná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íce

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitá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íce

Násobičky, Boothovo překódování. Demonstrační cvičení 7

Ná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íce

Souhrn Apendixu A doporučení VHDL

Souhrn 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íce

7. Popis konečného automatu

7. 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íce

12. VHDL pro verifikaci - Testbench I

12. 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íce

Návrh ovládání zdroje ATX

Ná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. 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íce

Sčítačky Válcový posouvač. Demonstrační cvičení 6

Sčí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íce

Vzorový 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. 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íce

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitá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íce

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitá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 Čí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íce

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitá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íce

Vzorový 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. 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íce

1. Seznamte se s výukovou platformou FITkit (http://merlin.fit.vutbr.cz/fitkit/).

1. 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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

Implementace čítačů v číslicových systémech 2 Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

Implementace čí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íce

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Jazyk 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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

PROGRAMOVATELNÉ LOGICKÉ OBVODY

PROGRAMOVATELNÉ 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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

Cíle. Teoretický úvod

Cí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íce

2. Entity, Architecture, Process

2. 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íce

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Základní logická hradla, Booleova algebra, De Morganovy zákony Student

Cí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íce

Struktura a architektura počítačů (BI-SAP) 4

Struktura 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íce

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitá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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

Architektura počítačů Logické obvody

Architektura 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íce

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Jazyk 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íce

PROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL

PROGRAMOVATELNÁ 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íce

Implementace čítačů v číslicových systémech Jakub Šťastný

Implementace čí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íce

Návrh obvodů založených na programovatelných hradlových polích

Ná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íce

Y36SAP Y36SAP-2. Logické obvody kombinační Formy popisu Příklad návrhu Sčítačka Kubátová Y36SAP-Logické obvody 1.

Y36SAP 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íce

Y36SAP 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 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íce

Architektura počítačů Logické obvody

Architektura 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íce

Kó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 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íce

LOGICKÉ OBVODY X36LOB

LOGICKÉ 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íce

14. Složitější konstrukce

14. 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íce

Struktura a architektura počítačů (BI-SAP) 3

Struktura 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íce

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitá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íce

Použití jazyka VHDL pro návrh číslicových obvodů

Použ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íce

3. Aritmetika nad F p a F 2

3. 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íce

Algoritmická 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. 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íce

Integrované obvody. Obvody malé, střední a velké integrace Programovatelné obvody

Integrované 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íce

Pokročilé využití jazyka VHDL. Pavel Lafata

Pokroč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íce

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Evropský 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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

Vývoj VHDL. Verilog HDL

Vý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íce

4. Elektronické logické členy. Elektronické obvody pro logické členy

4. 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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

1 Stručný popis jazyku VHDL

1 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?

Čí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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

Digitální návrh. Postup návrhu digitálních IO. Co to jsou HDL jazyky? Příklad Verilog kódu pro D klopný obvod

Digitá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íce

OVLÁDACÍ OBVODY ELEKTRICKÝCH ZAŘÍZENÍ

OVLÁ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íce

Direct Digital Synthesis (DDS)

Direct 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íce

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Evropský 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íce

9. Praktická verifikace

9. 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íce

FPGA + mikroprocesorové jádro:

FPGA + 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íce

Obsah DÍL 1. Předmluva 11

Obsah 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íce

LOGICKÉ OBVODY 2 kombinační obvody, minimalizace

LOGICKÉ 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íce

Jakub Š 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íce

Simulace číslicových obvodů na hradlové úrovni: model návrhu Jakub Šťastný ASICentrum, s.r.o. Katedra teorie obvodů FEL ČVUT Praha

Simulace čí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íce

Programovatelná logika

Programovatelná 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íce

Příklad č. 1 Přepis informace ze vstupů (SW0 až SW3) na ledky (LEDG0 až LEDG3)

Pří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íce

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt

7. 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íce

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Procesor. 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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

Organizace předmětu, podmínky pro získání klasifikovaného zápočtu

Organizace 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íce

BDIO - Digitální obvody

BDIO - 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íce

r90>25=.nt>+>7z5n2k<1561/+;5n{.57u07k{16;5=.nt>+>7z5n2k<15n>29l.05,90>2/3k5n2k7,50{10;<o5>/>?ˆ581:+z6,561/+;

r90>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. 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íce

Zá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.

Zá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íce

Návrh základních kombinačních obvodů: dekodér, enkodér, multiplexor, demultiplexor

Ná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

... 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íce

LOGICKÉ SYSTÉMY PRO ŘÍZENÍ

LOGICKÉ 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íce

2. Synchronní číslicové systémy

2. 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íce

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Evropský 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íce

SEKVENČNÍ LOGICKÉ OBVODY

SEKVENČ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íce

Verifikace pomocí assertions: případové studie Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

Verifikace 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

Ú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íce

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace čí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íce

Struktura a architektura počítačů

Struktura 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íce

Zpracování obrazu v FPGA. Leoš Maršálek ATEsystem s.r.o.

Zpracová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íce

Když procesor nestačí, FPGA zaskočí

Když 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íce

Boundary 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í 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íce

Logické funkce a obvody, zobrazení výstupů

Logické 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íce

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Sbě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íce

Případová studie Řadič I2C rozhraní

Pří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íce

Hardwarová realizace konečných automatů

Hardwarová 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íce

Metody návrhu systémů na bázi FPGA

Metody 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íce

SYSTÉMY NAČIPU MI-SOC

SYSTÉ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íce

11. Logické analyzátory. 12. Metodika měření s logickým analyzátorem

11. 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íce

Pohled do nitra mikroprocesoru Josef Horálek

Pohled 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íce

Vstupně výstupní moduly. 13.přednáška

Vstupně 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