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í klopné obvody reagují až na změnu hodinového signálu Klopné obvody: Monostabilní - jeden stabilní stav Bistabilní dva stabilní stavy, v digitální návrhu jsou nejvíce využívané Astabilní žádný stabilní stav Asynchronní bistabilní klopný obvod Asynchronní bistabilní klopný obvod Např. klopný obvod RS Synchronní bistabilní klopný obvod Např. klopný obvod D, JK, T
Asynchronní klopný obvod RS Většinou nebývá součástí technologické knihovny určenou pro syntézu S R n- n- S=,R= zakázaný stav Problematický je přechod S=,R= S=,R=, metastabilní stav Ostatní t přechodyř jsou OK
Synchronní klopný obvod RS aktivní na úroveň hod. signálu clk Většinou nebývá součástí technologické knihovny určenou pro syntézu clk S R x n- n- x x S clk R
Synchronní klopný obvod D aktivní na úroveň hod. signálu clk Bývá součástí technologické knihovny Dlatch častější clk D x n- n nebo
Synchronní kl. obvod D aktivní na náběžnou hranu hod. signálu clk Bývá součástí technologické knihovny D clk nebo D clk D častějšíj x n- clk
Synchronní klopný obvod D funkce při D= a clk
Synchronní klopný obvod D funkce při D= a clk
Synchronní klopný obvod JK Bývá součástí technologické knihovny & J K & D clk clk J K n- nebo n-
Analýza klopného obvodu D - metastabilita Musí být dodržena doba předstihu(t setup ) a přesahu(t hold ) V případě porušení těchto časů dochází k přechodu do metastabilního stavu. Na konci metastabilního stavu klopný obvod přejde ř do stabilního stavu nebo. Ukázka KO typu D řízený ý náběžnou hranou hod. signálu clk t plh t phl t hold t setup
Analýza klopného obvodu D - metastabilita Metastabilní stav se dá představit jako balancování na vrcholku kopce. Obvod teoreticky může setrvávat v metastabilním stavu do nekonečna, ale reálně to není možné.
Analýza klopného obvodu D t D zpoždění KO t out výstupní zpoždění t data zpoždění vstupu data k bodu A t clk zpoždění vstupu clk k bodu B
Analýza klopného obvodu D Příklad : t data = 4.5 ns ; t clk =.5 ns; t setup = ns stabilní / nestabilní Příklad 2: t data = 4.5 ns ; t clk =.5 ns; t hold = 2 ns stabilní / nestabilní
Popis klopného obvodu D typu Latch aktivní na úroveň clk Nedoporučený č popis!!!! Může dojít ke chybě při syntéze tohoto t popisu entity latch is Port ( d,clk : in STD_ LOGIC; q : out STD_LOGIC); end latch; špatně X architecture Behavioral of latch is signal q_int : STD_LOGIC; begin process (clk,d) begin if (clk='') then q_int <= d; else q_int <= q_int; end if; end process; q <= q_int; end Behavioral; clk d & & špatně X q
Popis klopného obvodu D typu Latch aktivní na úroveň clk Doporučenýč popis!!!! entity latch is Port ( d,clk : in STD_LOGIC; q : out STD_LOGIC); end latch; architecture Behavioral of latch is Begin process (clk,d) begin if (clk='') then q <= d; end if; end process; end Behavioral;
Popis klopného obvodu D aktivní na náběžnou hranu clk Doporučenýč popis!!!! Jiným způsobemů tonelze popsat Nejpoužívanější typ klopného obvodu při návrhu digitálních obvodů entity latch is Port ( d,clk : in STD_LOGIC; q : out STD_LOGIC); end latch; architecture Behavioral of latch is Begin process (clk,d) begin if (clk event and clk=') then q <= d; end if; end process; end Behavioral; D clk lklk
KO D aktivní na náběžnou hranu clk s asynchronním reset Doporučenýč popis!!!! Nedoporučený popis!!!! entity latch is Port ( d,clk,rst : in STD_LOGIC; q : out STD_LOGIC); end latch; entity latch is Port ( d,clk,rst : in STD_LOGIC; q : out STD_LOGIC); end latch; architecture Behavioral of latch is Begin process (rst,clk) begin if rst='' then q <= ''; elsif (clk event and clk='') then q <= d; end if; end process; end Behavioral; architecture Behavioral of latch is Begin process (rst,clk) begin if rst='' then q <= ''; else if (clk event and clk='') then q <= d; end if; end if; end process; end Behavioral;
KO D aktivní na náběžnou hranu clk se synchronním reset Doporučenýč popis!!!! entity DFF is Port ( d,clk,rst : in STD_LOGIC; q : out STD_LOGIC); end DFF ; architecture t Behavioral of DFF is Begin process (clk) begin if (clk event and clk='') then if (rst='') then q <= ''; else q <= d; end if; end if; end process; end Behavioral;
záchytný N-bitový registr s KO D s asynchronním resetem entity DFF is Generic (N : integer :=8); Port (clk,rst: in STD_LOGIC; d : in STD_LOGIC_VECTOR(N- downto ); q : out STD_LOGIC_VECTOR(N- downto )); end DFF ; architecture Behavioral of DFF is Begin process (rst,clk) begin if rst='' then q <= (others=>''); elsif (clk event and clk='') then q <= d; end if; end process; end Behavioral;
KO JK aktivní na náběžnou hranu clk Doporučenýč popis!!!! entity jkff is Port ( j, k, clk : in STD_LOGIC; q : out STD_ LOGIC); end jkff; architecture Behavioral of jkff is signal jk: std_logic_vector( downto ); signal q_ int : std_ logic; begin jk <= J & K; process(clk) begin end if; end process; q <= q_int; end Behavioral; if (clk event and clk='') then case jk is when "" => q_int <= ''; when "" => q_ int <= ''; when "" => q_int <= not q_int; when others => q_int <= q_int; end case;
Posuvné registry Kaskádní zapojení klopných obvodů D Vyžívají se např. při komunikaci po sériové lince apod. Lze vytvářet různé modifikace s paralelními vstupy, obousměrné apod. din 2 3 D D D D dout clk n clk n clk n clk n clk musí platit tyto podmínky: t t D h t t + clk D t s
Posuvný registr v jazyku VHDL Je zde využita jedna vlastnost procesu jaká??? Bude záležet na pořadí řádků v samotném procesu??? entity shift_reg is Port ( clk : in STD_LOGIC; din : in STD_LOGIC; dout : out STD_LOGIC); end shift_reg; architecture Behavioral of shift_reg is signal q : std_logic_vector(3 downto ); begin process (clk) begin if (clk'event and clk='') then q() <= din; q() <= q(); q(2) <= q(); q(3) <= q(2); end if; end process; dout <= q(3); end Behavioral;
Čítače Obvody sloužící í k čítaníí požadované sekvence, děličky kmitočtu apod. Inkrementace nebo dekrementace je libovolná záleží na zadání Rozdělují senaasynchronní a synchronní Asynchronní čítače Hodinový signál clk je přiveden na první klopný obvod Jsou méně využívány Asynchronní čítače jsou vhodné pro nenáročné aplikace na čas Lze je poskládat např. skotypud Nevýhodou je příliš velké zpoždění!!! Výhodou je malá plocha pouze klopné obvody!!! Synchronní čítače Hodinový signál clk je přiveden na všechny klopné obvody Nevýhodou je příliš velká plocha klop. obvody i komb. obvody!!! Výhodou je dosažení velkých pracovních kmitočtů
Asynchronní čítač s klop. obvody D Asynchronní čítačč vpředř a vzad clk clk 2 2 2 3 4 5 6 7 7 6 5 4 3 2
Synchronní čítače Vycházejme z obecného zapojení oddělená paměťové a kombinační č část. Klopné obvody D jsou nejvyuživanější Pomocí tohoto schématu se navrhují všechny složitější synchronní sekvenční logické systémy stavové automaty (pozdější přednáška).........
Příklad: synchronní 3-bitový čítač skod Vlastnosti: ) Čítač inkrementuje svůj výstup o 2) Změna výstupu nastává vždy při změně náběžné hrany hodinového signálu 3-bitový synchronní čítač 3 clk Možnosti realizace: ) Diskrétní dig. součástky minimalizace, realizace pomocí diskrétních digitálních součástek řady 74.. nebo 4.. 2) Obvod CPLD nebo FPGA není potřeba minimalizace, ace, realizace ace vnávrhovém systému ISE Webpack v jazyce VHDL do obvodu CPLD nebo FPGA (návrhový systém má v sobě zabudované minimalizační a optimalizační algoritmy) 3) Behaviorální popis p + obvod CPLD nebo FPGA behaviorální popis p systému v jazyce VHDL, není potřeba tabulka stavů (převod v ISE WebPack)
Příklad: synchronní 3-bitový čítač s KO D
Příklad: synchronní 3-bitový čítač s KO D
Příklad: synchronní 3-bitový čítač s KO D Příklad: synchronní 3-bitový čítač s KO D ) 3-bitový synchronní čítač stavový automat, u kterého jsou ) ý y ý, j výstupy přímo vyvedeny ze sekvenční části (KO D) 2) Jedná se o stavový automat Moorova typu 2 2 2 D Neminimalizované funkce Současný stav Následující stav 2 2 2 2 2 D + + + + = 2 2 D + + = stav Současný stav (buzení) 2 D2 D D s 2 2 D + + = 2 2 2 2 D + + + + = s s2 s3 2 2 + + Minimalizované funkce domácí s3 s4 s5 Minimalizované funkce domácí úkol s6 s7
Příklad: synchronní 3-bitový čítač s KO D ) Možnost realizovat minimalizované funkce z tabulky stavů 2) Možnost realizovat přímo z tabulky stavů (minimalizační a optimalizační algoritmy zabudované v ISE WebPack) entity counter is Port ( clk : in STD_LOGIC; : inout STD_LOGIC_VECTOR (2 downto )); end counter; architecture t Behavioral of counter is signal D : STD_LOGIC_VECTOR (2 downto ); -- vnitrni -- signal pro buzeni sekvencni casti begin -- kombinacni cast D(2) <= (not (2) and () and ()) or ((2) and not () and not ()) or ((2) and not () and ()) or ((2) and () and not ()); Programovatelné logické obvody
Příklad: synchronní 3-bitový čítač s KO D D() <= (not (2) and not () and ()) or (not (2) and () and not ()) or ((2) and not () and ()) or ((2) and () and not ()); D() <= (not (2) and not () and not ()) or (not (2) and () and not ()) or ((2) and not () and not ()) or ((2) and () and not ()); -- sekvencni cast process (clk) begin if (clk event and clk= ) then end if; end process; end Behavioral; <= D; Programovatelné logické obvody
Příklad: synchronní 3-bitový čítač s KO D - Behaviorální popis s využitím inkrementace signálu o nejúspornější popis, ale vhodný pro jednoduché popisy. Je vhodnější oddělit sekvenční a kombinační část (2 a více procesů) entity counter is Port ( clk : in STD_LOGIC; : out STD_LOGIC_VECTOR (2 downto )); end counter; architecture Behavioral of counter is signal q_int : STD_LOGIC_VECTOR (2 downto ); Begin process (clk) begin if (clk event and clk= ) then q_int <= q_int + ; end if; end process; <= q_int; end Behavioral; Programovatelné logické obvody
Příklad: synchronní 3-bitový čítač s KO D Doporučený styl zápisu!!! entity counter is Port ( clk : in STD_LOGIC; : out STD_LOGIC_VECTOR (2 downto )); end counter; architecture Behavioral of counter is signal d_int,q_reg : STD_LOGIC_VECTOR (2 downto ); begin -- oddelena pametova cast process (clk) komb. logika begin d_int() if (clk event and clk= ) then end if; end process; q_ reg <= d_ int; d_int() paměťová část D q_reg() CLK q_reg() D () () -- oddelena kombinanci cast process (q_reg) begin d_ int <= q_ reg + ; end process; <= q_reg; end Behavioral; Programovatelné logické obvody clk Komb. logika d_int(2) D CLK CLK q_reg(2) (2)
Příklad: synchronní 3-bitový čítač s KO D - Schéma po syntéze komb. logika paměťová část D D 2 2 CLK & & & D D výstupy & CLK & & D2 D 2 & CLK clk
Příklad: synchronní 3-bitový čítač s KO D Obvody CPLD, FPGA, jazyk VHDL - Simulace Výsledky syntézy: ) Ve všech případech popisu 3-bitového čítače v jazyce VHDL dojde ke stejnému výsledku syntézy!!!!!!! 2) Návrhový systém rozpozná danou konstrukci jako 3-bitový synchronní čítač.
Jazyk VHDL - dobrá reference http://toolbox.xilinx.com/docsan/3_i/data/fise/xst/chap2/xst2.htm
ISE WebPack IP cores Automaticky generované funkční bloky Od základních bloků po složité bloky pro zpracování signálů, komunikační rozhraní apod. Ukázka generování IP coru a vložení do schematického návrhu