Digitální obvody
Doc. Ing. Lukáš Fujcik, Ph.D.
Sekvenční logické obvody 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 Např. klopný obvod RS Synchronní bistabilní klopný obvod N ř klopný Např. kl ý obvod b d D, D JK, JK T
Sekvenční logické obvody Asynchronní klopný obvod RS Většinou nebývá součástí technologické knihovny určenou pro syntézu
S 0 0 1 1
R 0 1 0 1
Q Q Q n-1 Q n-1 0 1 0
1 0 0
S=1,R=1 S=1 R=1 – zakázaný stav Problematický je přechod S=1,R=1 → S=0,R=0, metastabilní stav O t t í přechody Ostatní ř h d jsou j OK
Sekvenční logické obvody 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
Q
0 1 1 1 1
x 0 0 1 1
x 0 1 0 1
Q n-1 Q n-1
S
0 1 x
Q
clk R
Q
Sekvenční logické obvody Synchronní klopný obvod D – aktivní na úroveň hod. signálu clk Bývá součástí technologické knihovny – D latch
častější clk
D
Q
0 1 1
x 0 1
Q nn-11 0 1
nebo
Sekvenční logické obvody Synchronní kl. obvod D – aktivní na náběžnou hranu hod. signálu clk Bývá součástí technologické knihovny D D
Q Q
clk clk
Q
nebo D D clk
D
Q
0 ↑ ↑
x 0 1
Q n-1 0 1
častější j clk clk
Q Q
Sekvenční logické obvody Synchronní klopný obvod D – funkce při D=0 a clk ↑
Sekvenční logické obvody Synchronní klopný obvod D – funkce při D=1 a clk ↑
Sekvenční logické obvody Synchronní klopný obvod JK Bývá součástí technologické knihovny & J
K
1 1
D
Q
Q
clk
Q
Q
&
clk
J
K
Q
0 0 1 1
0 1 0 1
Q n-1
0 1 Q n-1
nebo
Sekvenční logické obvody Analýza klopného obvodu D - metastabilita Musí být dodržena doba předstihu(tsetup) a přesahu(thold) V případě porušení těchto časů dochází k přechodu do metastabilního stavu. N kkoncii metastabilního Na bil íh stavu klopný kl ý obvod b d přejde ř jd ddo stabilního bil íh stavu “0“ nebo “1“. Ukázka – KO typu yp D řízený ý náběžnou hranou hod. signálu g clk
tpLH
tpHL
thold tsetup
Sekvenční logické obvody 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é možné.
Sekvenční logické obvody Analýza klopného obvodu D tD – zpoždění KO tout – výstupní zpoždění tdata – zpoždění vstupu data k bodu A tclk – zpoždění vstupu clk k bodu B
Sekvenční logické obvody Analýza klopného obvodu D Příklad 1: tdata = 4.5 ns ; tclk = 1.5 ns; tsetup = 1 ns
stabilní / nestabilní Příklad 2: tdata = 4.5 ns ; tclk = 1.5 ns; thold = 2 ns
stabilní / nestabilní
Sekvenční logické obvody Popis klopného obvodu D typu Latch – aktivní na úroveň clk N d Nedoporučený č ý popis i !!!! Může Můž dojít d jít ke k chybě h bě při ři syntéze té tohoto t h t popisu i
špatně
entity latch is Port ( d,clk , : in STD_LOGIC; q : out STD_LOGIC); end latch;
X
architecture Behavioral of latch is signal q_int : STD_LOGIC; begin process (clk,d) p begin if (clk='1') then q_int <= d; else q_int <= q_int; end if; end process; clk q <= q_int; end Behavioral; d
špatně 1
&
X
1 &
q
Sekvenční logické obvody Popis klopného obvodu D typu Latch – aktivní na úroveň clk D Doporučený č ý popis i !!!! entity latch is Port ( d d,clk clk : in STD STD_LOGIC; LOGIC; q : out STD_LOGIC); end latch; architecture Behavioral of latch is Begin process (clk,d) begin if ( (clk='1') ) then q <= d; end if; p end process; end Behavioral;
Sekvenční logické obvody Popis klopného obvodu D – aktivní na náběžnou hranu clk D Doporučený č ý popis i !!!! Jiným Ji ý způsobem ů b t nelze to l popsatt Nejpoužívanější typ klopného obvodu při návrhu digitálních obvodů entity tit l latch t h i 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 (clk’event event and clk clk='1) 1) then q <= d; end if; end e d p process; ocess; end Behavioral;
D D
clk clk lklk
Q Q
Sekvenční logické obvody KO D – aktivní na náběžnou hranu clk s asynchronním reset Nedoporučený popis !!!! D Doporučený č ý popis i !!!! entity latch is Port ( d,clk,rst : in STD_LOGIC; q : out STD STD_LOGIC); LOGIC); end latch;
entity latch is Port ( d,clk,rst : in STD_LOGIC; q : out STD STD_LOGIC); LOGIC); end latch;
architecture Behavioral of latch is architecture Behavioral of latch is Begin Begin process (rst,clk) process (rst,clk) begin begin if rst='1' then if rst='1' then q <= < '0'; 0 ; q <= < '0'; 0 ; else elsif (clk’event and clk='1') then if (clk’event and clk='1') then q <= d; q <= d; end if; end if; end process; end if; end Behavioral; end process; end Behavioral;
Sekvenční logické obvody KO D – aktivní na náběžnou hranu clk se synchronním reset D Doporučený č ý popis i !!!! entity DFF is Port ( d,clk,rst : in STD_LOGIC; q : out STD_LOGIC); end DFF ; architecture hit t Behavioral B h i l of f DFF i is Begin process (clk) begin if (clk’event and clk='1') then if (rst='1') then q <= '0'; 0 ; else q <= d; end if; end if; end process; end Behavioral;
Sekvenční logické obvody záchytný N-bitový registr s KO D s asynchronním resetem entity DFF is Generic (N : Port (clk,rst: d : q : end DFF ;
integer :=8); in STD STD_LOGIC; LOGIC; in STD_LOGIC_VECTOR(N-1 downto 0); out STD_LOGIC_VECTOR(N-1 downto 0));
architecture Behavioral of DFF is Begin process (rst,clk) begin if rst='1' then q <= (others=>'0'); elsif (clk’event and clk='1') then q <= d; end if; end process; end Behavioral;
Sekvenční logické obvody KO JK – aktivní na náběžnou hranu clk D Doporučený č ý popis i !!!! 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(1 downto 0); signal g q_ q int : std_logic; g ; begin jk <= J & K; process(clk) begin g if (clk’event and clk='1') then case jk is when "01" => q_int <= '0'; when "10" => q_ q int <= '1'; when "11" => q_int <= not q_int; when others => q_int <= q_int; end case; end if; end process; q <= q_int; end Behavioral;
Sekvenční logické obvody 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
D
Q
clk
Qn
Q0
D
Q
clk
Qn
Q1
D
Q
clk
Qn
Q2
D
Q
clk
Qn
Q3
dout
clk
musí p platit tyto y p podmínky: y
t D ≥ th tclk ≥ t D + t s
Sekvenční logické obvody 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 lk : i in STD_LOGIC; din : in STD_LOGIC; dout : out STD_LOGIC); end shift shift_reg; reg; architecture Behavioral of shift_reg is signal q : std_logic_vector(3 downto 0); begin process (clk) ( lk) begin if (clk'event and clk='1') then q(0) q( ) <= din; ; q(1) <= q(0); q(2) <= q(1); q(3) <= q(2); end d if if; end process; dout <= q(3); end Behavioral;
Sekvenční logické obvody Čítače Ob d sloužící Obvody l ží í k čítaní čít í požadované ž d é sekvence, k děličk kmitočtu děličky k it čt apod. d Inkrementace nebo dekrementace je libovolná – záleží na zadání Rozdělují j se na asynchronní y a synchronní y 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ř. s KO typu D 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ů
Sekvenční logické obvody Asynchronní čítač s klop. obvody D A Asynchronní h í čítač čít č vpřed ř d a vzad d
clk
clk
Q0
Q0
Q1
Q1
Q2
Q2 0
1
2
3
4
5
6
7
0
0
7
6
5
4
3
2
1
0
Sekvenční logické obvody
...
...
...
Synchronní čítače V há j Vycházejme z obecného b éh zapojení j í – oddělená dděl á paměťové ěť é a kombinační k bi č í část. Klopné obvody D jsou nejvyuživanější Pomocí tohoto schématu se navrhují všechny složitější synchronní sekvenční k č í logické l i ké systémy é – stavové é automaty (pozdější ( dější přednáška) ř d ášk )
Příklad: synchronní 3-bitový 3 bitový čítač s KO D Vlastnosti: 1) Čítač inkrementuje svůj výstup o 1 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 Q
clk
Možnosti realizace: 1) Diskrétní dig. součástky – minimalizace, realizace pomocí diskrétních digitálních součástek řady 74.. nebo 40.. 2)) Ob Obvod od C CPLD nebo ebo FPGA G – není e po potřeba eba minimalizace, a ace, realizace ea ace v návrhovém á o é 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í p popis p + obvod CPLD nebo FPGA – behaviorální p popis p systému y 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 1)) 3-bitovýý synchronní y čítač – stavovýý automat,, u kterého jjsou výstupy přímo vyvedeny ze sekvenční části (KO D) 2) Jedná se o stavový automat Moorova typu
Neminimalizované funkce stav
Současný stav
Následující stav (b (buzení) í)
Q2
Q1
Q0
D2
D1
D0
s0
0
0
0
0
0
1
s1
0
0
1
0
1
0
s2
0
1
0
0
1
1
s3
0
1
1
1
0
0
s4
1
0
0
1
0
1
s5
1
0
1
1
1
0
s6
1
1
0
1
1
1
s7
1
1
1
0
0
0
D 2 = Q 2 ⋅ Q1 ⋅ Q0 + Q 2 ⋅ Q1 ⋅ Q0 + + Q 2 ⋅ Q1⋅ Q0 + Q 2 ⋅ Q1⋅ Q0
D1 = Q 2 ⋅ Q1⋅ Q0 + Q 2 ⋅ Q1 ⋅ Q 0 + + Q 2 ⋅ Q1 ⋅ Q 0 + Q 2 ⋅ Q1⋅ Q0 D 0 = Q 2 ⋅ Q1 ⋅ Q 0 + Q 2 ⋅ Q1⋅ Q0 + + Q 2 ⋅ Q1 ⋅ Q 0 + Q 2 ⋅ Q1⋅ Q0
Minimalizované funkce – domácí úkol ☺
Příklad: synchronní 3 3-bitový bitový čítač s KO D 1) Možnost realizovat minimalizované funkce z tabulky stavů 2) Možnost realizovat přímo z tabulky stavů (minimalizační optimalizační algoritmy zabudované v ISE WebPack)
a
entity counter is Port ( clk : in STD_LOGIC; Q : inout i STD_LOGIC_VECTOR (2 2 downto 0 0)); end counter; architecture hit t B Behavioral h i l of f counter t i is signal D : STD_LOGIC_VECTOR (2 downto 0); -- vnitrni -- signal pro buzeni sekvencni casti begin -- kombinacni cast D(2) <= (not Q(2) and Q(1) and Q(0)) or (Q(2) and not Q(1) and not Q(0)) or (Q(2) and not Q(1) and Q(0)) or (Q(2) andProgramovatelné Q(1) andlogické not Q(0)); obvody
Příklad: synchronní 3-bitový 3 bitový čítač s KO D D(1) <= (not Q(2) and not (not Q(2) and Q(1) (Q(2) and not Q(1) (Q(2) and Q(1) and
Q(1) and Q(0)) or and not Q(0)) or and Q(0)) or not Q(0));
D(0) <= (not Q(2) and not (not Q(2) and Q(1) (Q(2) and not Q(1) (Q(2) and Q(1) and
Q(1) and not Q(0)) or and not Q(0)) or and not Q(0)) or not Q(0));
-- sekvencni cast process (clk) begin if (clk’event and clk=‘1’) then Q <= D; end if; end process; end Behavioral;
Programovatelné logické obvody
Příklad: synchronní 3-bitový 3 bitový čítač s KO D - Behaviorální popis s využitím inkrementace signálu o 1 – 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 STD_LOGIC; LOGIC; Q : out STD_LOGIC_VECTOR (2 downto 0)); end counter; architecture Behavioral of counter is signal q_int : STD_LOGIC_VECTOR (2 downto 0); Begin process (clk) begin if (clk’event and clk=‘1’) then q_int <= q_int + 1; end if; end process; Q <= q_int; end Behavioral; Programovatelné logické obvody
Příklad: synchronní 3-bitový 3 bitový čítač s KO D – Doporučený styl zápisu !!! entity counter is Port ( clk : in STD_LOGIC; Q : out t STD STD_LOGIC_VECTOR LOGIC VECTOR (2 downto d t 0)); 0)) end counter; architecture Behavioral of counter is signal d_int,q_reg : STD_LOGIC_VECTOR (2 downto 0); begin -- oddelena pametova cast process (clk) ( lk) komb. logika begin d_int(0) if (clk’event and clk=‘1’) then q reg q_ g <= d_int; end if; d_int(1) end process;
paměťová část
D
Q
q_reg(0)
Q(0)
CLK
D
Q
q_reg(1)
Q(1)
Komb. logika
-- oddelena kombinanci cast process (q_reg) begin d_int <= q_reg + 1; end process; Q <= q_reg; Programovatelné logické obvody end Behavioral; clk
CLK d_int(2)
D
CLK
Q
q_reg(2)
Q(2)
Příklad: synchronní 3-bitový 3 bitový čítač s KO D - Schéma po syntéze komb. logika
Q0
1 Q0
Q1
1 Q1
Q2
1 Q2
paměťová část
D0
D
Q
Q0
CLK & &
D1
&
D
&
D2
D
&
CLK
clk
Q1
CLK
& &
Q
Q
Q2
výstupy
Příklad: synchronní 3-bitový 3 bitový čítač s KO D Obvodyy CPLD, FPGA, jjazyk y VHDL
- Simulace
Výsledky syntézy:
1) 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_1i/data/fise/xst/chap02/xst02000.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