Diapositivas Tema 4 (2013)

Apunte Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería de Sistemas de Telecomunicación - 2º curso
Asignatura Diseño Digital
Año del apunte 2013
Páginas 28
Fecha de subida 12/11/2014
Descargas 0
Subido por

Vista previa del texto

Disseny Digital T4 - 3 4.1 Màquines d'estats síncrones Introducció a les màquines d'estats Concepte i tipus de FSMs x(t) Sistema seqüencial z(t) z(t) = F [x(t), s(t)] FSM s(t) x(t) z(t) s(t+) = G [x(t), s(t)] Màquina de Mealy z(t) = F [x(-, t)] z(t) = F [x(t), s(t)] x(t)  I z(t)  O x(t)  I z(t)  O s(t)  S Màquina de Moore Per que el sistema sigui sintetitzable (màquina d’estats finits, FSM), on s(t) és un senyal intern anomenat estat Disseny Digital z(t) = F [s(t)] s(t+) = G [x(t), s(t)] T4 - 4 4.1 Màquines d'estats síncrones Introducció a les màquines d'estats Exemple 1: màquina de Mealy x(t) x(t)  {a,b} Màquina d’estats z(t) 1 si rebem tres o més entrades 'a' seguides 0 en qualsevol altre cas z(t) = Conjunt d’estats: z(t)  {0,1} s(t)  {0a, 1a, 2a} El nom de cada estat indica que s’han rebut n entrades x=a seguides fins l’instant t-  La sortida s’activa (z(t)=1) només quan l’estat és s(t)=2a i la entrada actual és x(t)=a Taula de veritat: s(t) 0a 1a 2a x(t)= a 1a / 0 2a / 0 2a / 1 x(t)=b 0a / 0 0a / 0 0a / 0 s (t+) / z(t)  b/0 b/0 b/0 0a a/0 1a a/1 a/0 Diagrama d’estats 2a Disseny Digital T4 - 5 4.1 Màquines d'estats síncrones Introducció a les màquines d'estats Exemple 2: màquina de Moore x(t)  {a,b} Màquina d’estats x(t) Conjunt d’estats: z(t) s(t)  {0a, 1a, 2a, 3a} s(t) x(t)= a x(t)=b z(t) 0 1a 0a 0a 0 1a 2a 0a 0 2a 3a 0a 1 3a 3a 0a + s (t ) Disseny Digital 1 si rebem tres o més entrades 'a' seguides 0 en qualsevol altre cas z(t) = El nom de cada estat indica que s’han rebut n entrades x=a seguides fins l’instant t- Taula de veritat: z(t)  {0,1} La sortida s’activa (z(t)=1) només quan l’estat és s(t)=3a  b b  0a/0 a 1a/0 a 2a/0 b a 3a/1 a b Diagrama d’estats 4.1 Màquines d'estats síncrones Introducció a les màquines d'estats Màquines asíncrones i síncrones FSM asíncrona  • Actualitza s(t) i z(t) cada cop que varia l’entrada x(t).
• Funcionament molt influit pels retards.
• Disseny poc còmode.
• Ràpida i de baix consum però difícil de controlar.
• Utilització poc freqüent i restringida a dissenys petits.
• Actualitza s(t) i z(t) només quan ho permet un senyal extern FSM síncrona  anomenat rellotge (clock).
• Funcionament poc dependent dels retards sempre que la freqüència del rellotge no sigui massa alta.
• Disseny sistemàtic força còmode.
• Lenta i d’alt consum però fàcil de controlar.
• Utilització molt freqüent en dissenys mitjans i grans.
T4 - 6 Disseny Digital T4 - 7 4.1 Màquines d'estats síncrones Introducció a les màquines d'estats Estructura i comportament d'una FSM síncrona Estructura canònica Versió Mealy Versió Moore Xarxa Combinacional (F,G) x(t) s(t) Registre d’estat Xarxa Comb. II (F) z(t) x(t) z(t) Xarxa Comb. I (G) s+(t) s(t) reset clock Reg. d’estat s+(t) reset clock z(t) = F [x(t), s(t)] s+(t) = G [x(t), s(t)] Disseny Digital z(t) = F [s(t)] = G [x(t), s(t)] s+(t) T4 - 8 4.1 Màquines d'estats síncrones Introducció a les màquines d'estats Estructura i comportament d'una FSM síncrona Exemple: Versions Moore i Mealy del detector de tres o més entrades 'a' seguides b b a 0a/0 1a/0 a a Versió Moore x(t) b b 3a/1 clk x(t) a b a b a 2a/0 s1(t) z1(t) 0a 1a 0a 1a 0a 1a 0a 1a 2a 3a 0a z1(t) clk Versió Mealy s2(t) z2(t) b/0 b/0 0a a/1 a/0 b/0 2a z2(t) 1a a/0 Cronograma 2a 0a Disseny Digital T4 - 9 4.1 Màquines d'estats síncrones Introducció a les màquines d'estats Estructura i comportament d'una FSM síncrona Rellotge real: tren periòdic de polsos 1 Tclk tW clk(%) = Tclk fclk = Tclk tW Per nivell alt: 100 canvi permès s+(t) s(t) Alguns modes de clk sincronització amb rellotge real Per flanc ascendent: s+(t) s(t) clk Disseny Digital x s + Canvi s permès només quan clk='1' clk Canvi s+ s permès només quan clk passa de '0' a '1' canvi permès T4 - 10 4.1 Màquines d'estats síncrones Biestables Introducció i tipus • Biestable = màquina de Moore amb sortida trivial, z=s=Q, i només dos estats, Q='0' i Q='1'.
• Es descriu un biestable mitjançant la seva funció de canvi d'estat.
• El biestable tipus D (delay) és el més utilitzat.
0 0 Q=0 nrst Biestable D síncron 1 Q=1 Diagrama d'estats 1 D Q Q Q+ clk Senyals d'E/S D Q+ 0 1 0 1 Q+ = D TdV i expressió algebraica 0 0 1 1 0 1 0 1 D 0 1 0 1 Taula de disseny Disseny Digital T4 - 11 4.1 Màquines d'estats síncrones Biestables Introducció i tipus J K Q+ 0 0 1 1 Q 0 1 Q 0 1 0 1 Memoritzar Forçar “0” Forçar “1” Invertir memorització nrst Descripcions de comportament d'un biestable JK síncron J x1 0x Q K Q=1 clk 1x Q+ = Q J + Q K Disseny Digital x0 Q=0 Q Q+ JK 0 0 1 1 0 1 x x 0 1 0 1 x x 1 0 T4 - 12 4.1 Màquines d'estats síncrones Biestables Realització amb components senzills Latch D (biestable D síncron per nivell) Biestable D síncron per flanc ascendent (master-slave) 0 Q MUX D 1 Q D s clk D D Q x D clk Latch D amb reset asíncron (actiu baix) clk nrst 0 MUX D 1 Q D Q D Q s clk nrst clk clk Q Q Disseny Digital T4 - 13 4.1 Màquines d'estats síncrones Biestables Realització amb components senzills • Podem transformar un biestable d'un tipus en un altre afegint-li elements combinacionals.
• Exemple: biestable JK fet a partir d'un biestable D.
nrst nrst J 0 MUX K 1 D Q s J Q Q K Q+ = D = Q J + Q K clk clk • Exercici: fer un biestable D a partir d'un biestable JK.
Disseny Digital T4 - 14 4.1 Màquines d'estats síncrones Biestables Descripció VHDL Els processos permeten descriure lògica seqüencial.
Exemple: latch tipus D: library ieee; use ieee.std_logic_1164.all; 0 Mux entity D_latch is port( D,clk : in std_logic; Q : out std_logic ); end D_latch ; architecture a of D_latch is begin process(D,clk) begin if clk='1' then Q <= D; end if; end process; end a; D 1 Q clk El procés s'executa cada cop que D o clk canvien.
Quan s'executa el procés i clk='1', s'escriu el valor de D en la sortida Q, altrament es manté el valor anterior de Q.
Disseny Digital 4.1 Màquines d'estats síncrones T4 - 15 Biestables Descripció VHDL Per descriure sistemes síncrons, cal detectar els flancs del rellotge.
La construcció signal_identifier'event indica quan un senyal canvia de valor.
Exemple: time s s’event t1 ‘0’ false t2 ‘1’ true t3 ‘1’ false t4 ‘1’ false t5 ‘1’ false t6 ‘1’ false t7 ‘0’ true t8 ‘0’ false ‘1’ s ‘0’ t1 t2 t3 t4 t5 t6 t7 t8 EVENT time EVENT Disseny Digital (s=’1’ and s’event) = true detecta flanc ascendent (s=’0’ and s’event) = true detecta flanc descendent 4.1 Màquines d'estats síncrones T4 - 16 Biestables Descripció VHDL Exemple Biestable tipus D amb reset asíncron library ieee; use ieee.std_logic_1164.all; entity D_ff is port( D,clk,nrst : in std_logic; Q : out std_logic ); end D_ff; architecture a of D_ff is begin process(clk,nrst) begin if nrst='0' then Q <= '0'; elsif clk'event and clk='1' then Q <= D; end if; end process; end a; D D Q clk Q nrst Senyals que permeten el canvi d'estat.
El reset asíncron és el senyal més prioritari, per tant s'avalua primer.
Si el reset asíncron no està activat, s'especifica el funcionament síncron: què fa en els flancs ascendents de clk.
Disseny Digital T4 - 17 4.1 Màquines d'estats síncrones Biestables Descripció VHDL Exemple Biestable tipus JK amb reset asíncron library ieee; use ieee.std_logic_1164.all; J K clk entity JK_ff is port(clk,nrst,J,K : in std_logic; Q : out std_logic); end JK_ff; J K Q Q nrst architecture arc of JK_ff is signal QQ : std_logic; begin process (clk,nrst) begin if nrst='0' then QQ <= '0'; elsif clk'event and clk='1' then if J='0' and K='1' then QQ <= '0'; elsif J='1' and K='0' then QQ <= '1'; elsif J='1' and K='1' then QQ <= not QQ; end if; end if; end process; Q <= QQ; end arc; Disseny Digital Descripció del comportament síncron: J K Q+ 0 0 1 1 Q 0 1 Q 0 1 0 1 Alternativa més simple: QQ <= ((not QQ) and J) or (QQ and (not K)) 4.1 Màquines d'estats síncrones Logigrama Mètode d'anàlisi Identificar senyals Mètode sistemàtic d'anàlisi de màquines d'estats síncrones canòniques  Entrades, sortides i estats.
 Tipus de màquina (Mealy o Moore).
 Cal fer anàlisi combinacional.
 Funcions: Identificar funcions combinacionals - de sortida - d’entrada als biestables Construir TdV de les funcions de canvi d’estat i de sortida Fer cronogrames  Cal utilitzar - funcions d’entrada als biestables - funcionament dels biestables Fer diagrama d’estats Descodificar variables Interpretació Especificació de la màquina T4 - 18 Disseny Digital T4 - 19 4.1 Màquines d'estats síncrones Mètode d'anàlisi Exemple 1 D2 z2 Q2 0 0/0 1 D1 z1 Q1 D0 3/3 1 0 5/5 1 7/7 1 z0 Q0 1 0 0 1 6/6 1 1 0 1/1 x 4/4 0 2/2 0 0 "Comptador" de doble seqüència: clk nrst Disseny Digital • per x='0' segueix l’ordre 0 2 4 6 0 ...
• per x='1' segueix l’ordre 1 3 5 7 1 ...
T4 - 20 4.1 Màquines d'estats síncrones Mètode d'anàlisi Exemple 2 nrst J1 K1 Q1 x J0 K0 S0 z Q0 1/0 clk 1/0 1/0 1/0 0/0 S3 S1 0/0 0/1 0/0 S2 Detector de 3 o més entrades x='0' seguides clk x estat z S0 S1 S2 S0 S1 S0 • Canvi d’estat sempre síncron.
• Sortida síncrona en els estats S0, S1 i S3.
• Sortida asíncrona en l'estat S2 si ho és x.
Disseny Digital T4 - 21 4.1 Màquines d'estats síncrones Mètode d'anàlisi Exercici Demostreu que aquestes dues màquines d’estats són equivalents.
x clk Disseny Digital D2 Q2 z2 J2 K2 Q2 z2 D1 Q1 z1 J1 K1 Q1 z1 D0 Q0 z0 J0 K0 Q0 z0 x clk nrst nrst 4.1 Màquines d'estats síncrones T4 - 22 Necessitats Mètode de síntesi Mètode sistemàtic de síntesi de màquines d'estats síncrones canòniques Definir dades  ntrades, sortides i estats.
 Triar tipus de màquina.
Construir TdV de les funcions de canvi d’estat i de sortida  Podem partir d’un diagrama d’estats.
 Caldrà codificar les dades.
 Cal triar abans el tipus de Identificar les funcions d’entrada als biestables Optimitzar funcions combinacionals Logigrama biestables que utilitzarem.
 Cal utilitzar la taula de disseny del biestable.
 Adaptar les funcions als recursos disponibles per implementar-les.
 Normalment les simplificarem.
Disseny Digital T4 - 23 4.1 Màquines d'estats síncrones Mètode de síntesi Exemple 1 (I) Dissenyeu una màquina d'estats síncrona que, mentre la seva entrada sigui '1' doni la seqüència de sortides 0,1,3,7,6,4,0,1,3,... i que s'aturi quan l'entrada sigui '0'. Feu-la emprant biestables D i un nombre mínim de portes lògiques estàndard i utilitzeu el mateix codi pels estats i per la sortida.
I) Definir senyals i tipus de màquina x  {stop, run} Màquina d'estats x z  {0,1,3,4,6,7} z s  {0,1,3,4,6,7} nrst clk • Màquina de Moore amb sortida trivial (estat=sortida) run run 0/0 1/1 run Disseny Digital 3/3 stop stop stop run run 7/7 stop 6/6 stop run 4/4 stop T4 - 24 4.1 Màquines d'estats síncrones Mètode de síntesi Exemple 1 (II) IV i V) Simplificar funcions i dibuixar logigrama II i III) Construir TdV de les funcions de canvi d’estat i de sortida. Amb biestables D, les funcions de canvi d'estat són ja les d'entrada als biestables (Qi+=Di).
z2 z1 z0 q2 q1 q0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 x=0 x=1 q2+q1+q0+ q2+q1+q0+ 0 0 x 0 1 x 1 1 0 0 x 1 0 x 1 1 0 1 x 1 0 x 0 1 0 0 x 1 0 x 1 1 0 1 x 1 0 x 0 1 1 1 x 1 0 x 0 0 00 01 11 10 00 0 0 0 0 01 x x 1 0 D2  q2  x  q1  x D1  q1  x  q0  x 11 1 1 1 1 D0  q0  x  q2  x 10 1 0 x x 00 01 11 10 00 0 0 1 0 01 x x 1 1 11 1 0 1 1 10 0 0 x x 00 01 11 10 00 0 1 1 1 01 x x 1 1 11 0 0 0 1 10 0 0 x x D2 Q2 z2 D1 Q1 z1 D0 Q0 z0 x q0 x q2 q1 clk nrst Disseny Digital T4 - 25 4.1 Màquines d'estats síncrones Mètode de síntesi Exemple 2 Màquina de Moore x(t) z(t) z(t) = Q 1Q 0 0a/0 0 1 1 1a/0 0 2a/0 1 0 0a 1a 2a 3a 3a/1 0 1 00 01 10 11 1 si rebem tres o més entrades '0' seguides 0 en qualsevol altre cas x  {0,1} z  {0,1} x=0 x=1 01 00 10 00 11 00 11 00 Q1+Q0+ z 0 0 0 1 D 1 z D0 Q T4 - 26 Mètode de síntesi Síntesi "one-hot" • Idea: utilitzar un codi "1 de n" pels estats.
• Logigrama resultant amb tants biestables com estats = no mínim.
• Avantatge: síntesi trivial a partir del diagrama d'estats = només cal aplicar aquestes regles de transformació: B x=0 D Q D Q D Q B A 0 1 D Q C x=1 ...
A Sortida 'estil Moore' Sortida d'un biestable Sortida 'estil Mealy' Sortida d'un DMux Sortida múltiple Unir amb portes OR D Q x ...
D Q Canvis d'estat 0 nrst 4.1 Màquines d'estats síncrones A 1 x clk Disseny Digital Q Sortides Disseny Digital 4.1 Màquines d'estats síncrones T4 - 27 Mètode de síntesi Síntesi "one-hot". Exemple II) Codi '1 de 4' pels estats I) Diagrama d’estats del detector de tres o més '0' seguits, versió Moore 1 1 0 0a/0 estat 1a/0 0 0a 1a 2a 3a 1 2a/0 0 Q3 Q2 Q1 Q0 3a/1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 III) Logigrama z 1 P D3 Q3 DMx Q2 0 R 1 P D2 DMx 1 P D1 Q1 0 P D0 Q0 R DMx 1 0 0 R DMx Reset no trivial !! R nrst clk x Disseny Digital 4.1 Màquines d'estats síncrones T4 - 28 Descripció VHDL de FSMs Introducció Procediment: Xarxa Combinacional (F,G) x Registre d’estat s nrst z Definir un tipus enumerat i un senyal a mida pels estats de la màquina.
Descriure els canvis d'estat amb un procés depenent del reset i el rellotge, utilitzant ...
s+ clk Versió Mealy Versió Moore z = F [x,s] s+ = G [x,s] s+ = z = F [s] G [x,s] ... una sentència if per prioritzar els comportaments asíncron i síncron.
... una sentència case per descriure els canvis d'estat síncrons (G).
Descriure la funció de sortida (F) mitjançant assignacions concurrents.
Disseny Digital T4 - 29 4.1 Màquines d'estats síncrones Descripció VHDL de FSMs Introducció Com definir tipus enumerats o vectorials a mida: type identifier is (list of values); sintaxi type identifier is array (index) of type; Exemples type colours is (red, green, blue, yellow); type machine_states is (idle, init, run, stop); type boolean is (true, false); -- this type already exists! type data_word is array (7 downto 0) of std_logic; type my_memory is array (0 to 127) of data_word; Disseny Digital 4.1 Màquines d'estats síncrones T4 - 30 Descripció VHDL de FSMs Exemple 1 (I) library ieee; use ieee.std_logic_1164.all; entity moorex is port( nrst,clk,x : in std_logic; z : out std_logic ); end moorex; Moore FSM x clk z nrst x, z  {0,1} s  {0a,1a,2a,3a} 1 1 0a/0 1 0 1a/0 0 2a/0 1 0 3a/1 0 Utilitza procés pels canvis d'estat + assignació concurrent per la funció de sortida.
architecture a of moorex is type FSM_sts is (s0a,s1a,s2a,s3a); -- tipus a mida signal m_st : FSM_sts; -- senyal "estat de la FSM" begin process(clk,nrst) begin if nrst='0' then m_st <= s0a; elsif clk'event and clk='1' then case m_st is when s0a => if x='0' then m_st <= s1a; end if; when s1a => if x='0' then m_st <= s2a; else m_st <= s0a; end if; when s2a => if x='0' then m_st <= s3a; else m_st <= s0a; end if; when s3a => if x='1' then m_st <= s0a; end if; end case; end if; end process; z <= '1' when m_st=s3a else '0'; end a; Disseny Digital 4.1 Màquines d'estats síncrones T4 - 31 Descripció VHDL de FSMs Exemple 1 (II) library ieee; use ieee.std_logic_1164.all; entity moorex is port( nrst,clk,x : in std_logic; z : out std_logic ); end moorex; Moore FSM x clk z nrst x, z  {0,1} s  {0a,1a,2a,3a} 1 1 0a/0 0 1a/0 0 2a/0 1 0 3a/1 0 1 Variant: un procés fa de registre d'estat + una assignació concurrent per a cada funció.
architecture b of moorex is type FSM_sts is (s0a,s1a,s2a,s3a); signal curr_st, next_st : FSM_sts; begin process(clk,nrst) begin if nrst='0' then curr_st <= s0a; elsif clk'event and clk='1' then curr_st <= next_st; end if; end process; next_st <= s0a when x='1' else s1a when curr_st=s0a and x='0' else s2a when curr_st=s1a and x='0' else s3a when (curr_st=s2a or curr_st=s3a) and x='0'; z <= '1' when curr_st=s3a else '0'; end b; Disseny Digital Índex • 4.1 Màquines d'estats síncrones • Introducció a les màquines d'estats • Biestables • Anàlisi i de síntesi de màquines d'estats • Descripció VHDL de màquines d'estats • 4.2 Mòduls seqüencials síncrons • Registres • Registres de desplaçament • Comptadors • 4.3 Aspectes avançats • Temporització de circuits síncrons • Estats espuris T4 - 32 Disseny Digital T4 - 33 4.2 Mòduls seqüencials síncrons Registres Descripció i realització Mòdul seqüencial síncron que pot carregar i memoritzar un vector de n bits. Les transferències són sempre en paral·lel.
D LD n Register Q  0 si reset=1 Func. asíncron reset clk Q si LD=0 Q+ = D si LD=1 n Func. síncron (per reset=0) Q d3 Exemple: Registre de 4 bits fet amb biestables i multiplexors.
d1 d0 1 0 1 0 1 0 1 0 MUX MUX MUX MUX D D D D Q Q Q Q LD clk reset q3 Disseny Digital d2 q2 q1 4.2 Mòduls seqüencials síncrons q0 T4 - 34 Registres Descripció VHDL library ieee; use ieee.std_logic_1164.all; entity reg_8b is port( nrst,nset,clk,ld : in std_logic; d : in std_logic_vector(7 downto 0); q : out std_logic_vector(7 downto 0) ); end reg_8b ; architecture a of reg_8b is begin process(clk,nrst,nset) begin if nrst='0' then q <= x"00"; elsif nset='0' then q <= x"FF"; elsif clk'event and clk='1' then if ld='1' then q <= d; end if; end if; end process; end a; Exemple 1: Registre de 8 bits amb càrrega síncrona i preset i reset asíncrons, ambdós actius baixos.
La simulació mostra canvis síncrons (taronja) i asíncrons (verd): Disseny Digital T4 - 35 4.2 Mòduls seqüencials síncrons Registres Descripció VHDL library ieee; use ieee.std_logic_1164.all; entity reg_8bs is port( nrst,nset,clk,ld : in std_logic; d : in std_logic_vector(7 downto 0); q : out std_logic_vector(7 downto 0) ); end reg_8bs; Exemple 2: Registre de 8 bits amb càrrega, preset i reset síncrons, els dos darrers actius baixos.
architecture a of reg_8bs is begin process(clk) begin if clk'event and clk='1' then if nrst='0' then q <= "00000000"; elsif nset='0' then q <= "11111111"; elsif ld='1' then q <= d; end if; end if; end process; end a; Disseny Digital La simulació mostra que tots els canvis són síncrons: T4 - 36 4.2 Mòduls seqüencials síncrons Registres de desplaçament Descripció i realització Registre que, apart de memoritzar un vector de n bits, permet moure les dades entre biestables.
sIN Exemple 1: Registre de desplaçament a dretes sèrie / paral·lel de 4 bits fet amb biestables i multiplexors.
1 0 1 0 1 0 1 0 MUX MUX MUX MUX D D D D Q Q Q Q shr clk reset q3 sIN q2 q1 Q  0 si reset=1 shr q0 Func. asíncron reset clk 4 q3..0 q3+q2+q1+q0+ = q3 q2 q1 q0 si shr=0 sIN q3 q2 q1 si shr=1 Func.
síncron (per reset=0) Disseny Digital T4 - 37 4.2 Mòduls seqüencials síncrons Registres de desplaçament Descripció i realització Exemple 2: Registre de desplaçament bidireccional de 4 bits fet amb biestables i multiplexors.
mode 2 d3 d2 d1 d0 3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0 MUX MUX MUX MUX D D D D Q Q Q Q reset clk q2 q3 q1 q0 d3..0 mode 4 mode 2 00 01 10 11 reset clk 4 q3+ q2+ q1+ q0+ q3 q2 d3 d3 q2 q1 q3 d2 q1 q0 q0 d0 q2 q1 d1 d0 memorització despl. esquerra despl. dreta Funcionament síncron (per reset=0) càrrega paral·lel q3..0 Disseny Digital 4.2 Mòduls seqüencials síncrons library ieee; use ieee.std_logic_1164.all; entity shreg_8b mode : d : q : end shreg_8b; T4 - 38 Registres de desplaçament is port(nrst,clk : in std_logic; in std_logic_vector(1 downto 0); in std_logic_vector(7 downto 0); out std_logic_vector(7 downto 0)); Descripció VHDL architecture a of shreg_8b is signal qq : std_logic_vector(7 downto 0); begin process(clk,nrst) begin if nrst='0' then qq <= (others => '0'); elsif clk'event and clk='1' then case mode is when "01" => qq <= qq(6 downto 0) & d(0); when "10" => qq <= d(7) & qq(7 downto 1); when "11" => qq <= d; when others => null; end case; end if; end process; q <= qq; end a; ld shl-0 Exemple: Registre de desplaçament de 8 bits amb càrrega i desplaçament bidireccional síncrons, i reset asíncron actiu baix.
Exemple de funcionament: shl-0 shr-0 shr-0 ld Disseny Digital T4 - 39 4.2 Mòduls seqüencials síncrons Comptadors Descripció i utilització de comptadors Mòdul seqüencial que emmagatzema un vector de n bits i pot incrementar el valor del seu contingut. Pot disposar d’entrades d’habilitació de comptar (ce), de càrrega paral·lela (ld), i/o per triar entre incrementar i decrementar (up).
Q  0 si reset=1 D n ce ld up n-bit counter n Q reset clk Func. asíncron D si ld=1 (Q+1)mod 2n si ld=0 i ce=up=1 (Q -1)mod 2n si ld=up=0 i ce=1 Q si ld=ce=0 Q+ = Func.
síncron (per reset=0) TC TC = ce up m0(Q) + ce up m2n-1(Q) La sortida tc s’activa quan el comptador arriba al(s) seu(s) valor(s) extrem(s) i ha de seguir comptant en el mateix sentit. S’utilitza per fer encadenaments.
Disseny Digital T4 - 40 4.2 Mòduls seqüencials síncrons Comptadors Descripció i utilització de comptadors Exemple 1: funcionament del comptador anterior per n=4 bits (mòdul 16).
clk D reset 4 D ce ld up 4-bit counter 4 Q tc reset clk 0011 0101 0011 ld ce up Q 1011 1100 1101 1110 1111 0000 0101 0000 1111 1110 reset -1 -1 0100 tc +1 +1 stop +1 +1 +1 load -1 Disseny Digital T4 - 41 4.2 Mòduls seqüencials síncrons Comptadors Descripció i utilització de comptadors d7..4 d3..0 4 4 Exemple 2: Comptador mòdul 256 fet encadenant dos comptadors mòdul 16.
reset R 4-bit counter clk R LD 4-bit counter CE LD ld CE ce TC TC 4 4 tc q3..0 q7..4 clk reset D 00 A2 25 ld ce Q 2B 2C +1 2D stop +1 Disseny Digital 2E +1 2F +1 30 +1 A 2 A3 load 00 01 reset +1 +1 02 +1 T4 - 42 4.2 Mòduls seqüencials síncrons Comptadors Descripció i utilització de comptadors Càrrega del valor mínim (0000) 3 2 1 0 Exemple 3: Comptador decimal (mòdul 10) fet a partir d’un d'hexadecimal (mòdul 16).
CE ce LD 4-bit counter R TC 3 2 1 0 Detecció del valor màxim (1xx1) q3..0 clk reset ce 0001 Q 0100 0101 0110 0111 1000 1001 0000 0000 0001 0010 ld +1 +1 stop +1 +1 +1 load +1 reset +1 +1 reset clk Disseny Digital T4 - 43 4.2 Mòduls seqüencials síncrons Comptadors Realització de comptadors Exemple 1: Utilitzem el mètode sistemàtic de síntesi de màquines d’estats per fer un comptador ascendent de 4 bits.
reset clk 4-bit up counter ce tc, ce  {0,1} Q  {0,1,...,15} tc q3 D Q q3 Q q2 Q q1 Q q0 4 q3..0 tc q2 1 1 0 1 1 ...
0 0 1 14 0 1 D 15 q1 0 d 0  q0  ce d 2  q2  q1q0 ce d1  q1  q0 ce d 3  q3  q2 q1q0 ce D q0 tc  q3 q2 q1q0 ce D clk reset ce Disseny Digital T4 - 44 4.2 Mòduls seqüencials síncrons Comptadors Realització de comptadors Exemple 2: Afegim càrrega en paral·lel al comptador ascendent de l'exemple anterior.
d3..0 tc 4 q3 ld 4-bit counter ce reset clk 4 q3..0 tc • Si ld=1, 0 d3 D 1 qi+ = qi ce qi-1... q1q0 q3 Q q2 Q q1 Q q0 q2 0 d2 D 1 q1 0 d1 D 1 qi+ = di • Si ld=0, Q q0 0 d0 1 (comptador anterior) ce ld D clk reset Disseny Digital T4 - 45 4.2 Mòduls seqüencials síncrons Comptadors Realització de comptadors Exercici: Demostreu que utilitzant aquest mòdul podem fer un comptador de mida arbitrària, reversible, amb càrrega en paral·lel síncrona i reset asíncron.
...
qn-1 ld up 0 0 1 ce qn-2... q0 Disseny Digital In ce qn-2...q0 D Q 1 clk qn reset T4 - 46 4.2 Mòduls seqüencials síncrons Comptadors Descripció VHDL La funció 'comptar' es pot descriure fàcilment emprant les operacions aritmètiques del VHDL.
Com que el tipus std_logic no és numèric, cal declarar els paquets adients per poder fer operacions aritmètiques amb ell.
Exemple 1 (I) Comptador mòdul 16, amb entrades síncrones de càrrega (ld), habilitació (ce) i sentit de compte (up); reset asíncron actiu baix.
d[3:0] ce ld up q  0 si nrst=0 4 mod-16 counter 4 q[3:0] tc nrst clk q+ = Func. asíncron d si ld=1 (q+1)mod 16 si ld=0 i ce=up=1 (q -1)mod 16 si ld=up=0 i ce=1 q si ld=ce=0 tc = ce up m0(q) + ce up m15(q) Func.
síncron (per nrst=1) Disseny Digital library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity m16cnt is port( nrst,clk,ld,ce,up : in std_logic; d : in std_logic_vector(3 downto 0); q : out std_logic_vector(3 downto 0) ); end m16cnt; architecture a of m16cnt is signal qq : std_logic_vector(3 downto 0); begin process(clk,nrst) begin if nrst='0' then qq <= x"0"; elsif clk'event and clk='1' then if ld='1' then qq <= d; elsif (up='1' and ce='1') then qq <= qq+1; elsif (up='0' and ce='1') then qq <= qq-1; end if; end if; end process; q <= qq; end a; Disseny Digital T4 - 47 4.2 Mòduls seqüencials síncrons Comptadors Descripció VHDL Exemple 1 (II) Comptador mòdul 16, amb entrades síncrones de càrrega (ld), habilitació (ce) i sentit de compte (up); reset asíncron actiu baix.
Exemple de funcionament: T4 - 48 4.2 Mòduls seqüencials síncrons Comptadors Descripció VHDL. Exemple 2 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity BCDcnt is port( nrst,clk,ce : in std_logic; q : out std_logic_vector(3 downto 0) ); end BCDcnt; architecture a of BCDcnt is signal qq : std_logic_vector(3 downto 0); begin process(clk,nrst) begin if nrst='0' then qq <= x"0"; elsif clk'event and clk='1' then if (ce='1' and qq < x"9") then qq <= qq+1; elsif ce='1' then qq <= x"0"; end if; end if; end process; q <= qq; end a; ce BCD counter nrst clk 4 q[3:0] Comptador decimal (mòdul 10) ascendent, amb d'habilitació de compte síncrona i reset asíncron actiu baix.
Exemple de funcionament: Disseny Digital 4.2 Mòduls seqüencials síncrons Comptadors T4 - 49 library ieee; use ieee.std_logic_1164.all; Descripció VHDL. Exemple 3 entity f_div is port( nrst,clkin : in std_logic; clkout : out std_logic ); end f_div; nrst clkout f_div clkin Divisor de freqüència, programable canviant M i D: fclkout = fclkin / M clkout (%) = D Exemple de funcionament: architecture dni of f_div is constant M : integer :=25; constant D : integer :=20; constant n : integer :=D*M/100; signal q : integer range 0 to M-1; begin process(clkin,nrst) begin if nrst='0' then clkout <= '0'; q <= 0; elsif clkin'event and clkin='1' then if q < M-1 then q <= q+1; else q <= 0; end if; if q < n then clkout <= '1'; else clkout <= '0'; end if; end if; end process; end dni; Disseny Digital Índex • 4.1 Màquines d'estats síncrones • Introducció a les màquines d'estats • Biestables • Anàlisi i de síntesi de màquines d'estats • Descripció VHDL de màquines d'estats • 4.2 Mòduls seqüencials síncrons • Registres • Registres de desplaçament • Comptadors • 4.3 Aspectes avançats • Temporització de circuits síncrons • Estats espuris T4 - 50 Disseny Digital T4 - 51 4.3 Aspectes avançats Temporització Temps de setup i hold nrst Funcionament esperat d'un biestable clk D Q tW D t1 t2 clk Q tCQ • S’han de complir tres condicions: I) t1  tSU II) t2  tH I) tW  tWmin on tCQ= retard rellotge-sortida, tSU= temps d’establiment (setup), tH = temps de manteniment (hold) i tWmin = ample mínim del pols de rellotge, són paràmetres del biestable donats pel fabricant.
Disseny Digital T4 - 52 4.3 Aspectes avançats Temporització Temps de setup i hold • Si alguna condició no es compleix, el biestable pot entrar en metastabilitat.
• Generalitzable a qualsevol circuit seqüencial síncron: registre, màquina d'estats, comptador, etc.
clk X Q tram metastable valor següent desconegut • Problema greu: un circuit seqüencial es pot comportar d'una forma del tot inesperada, perdre dades, etc.
• Solució habitual: baixar la freqüència del rellotge, per tal de complir sempre les condicions anteriors.
Disseny Digital T4 - 53 4.3 Aspectes avançats Temporització Anàlisi temporal de circuits síncrons 1 Xarxa comb. 1 X Reg1 Xarxa comb. 2 Reg2 Xarxa comb. 3 Z clk • Camins interns: de sortides de components síncrons a entrades de components síncrons.
• Cal complir les condicions de setup i hold en cadascun: 1 Tclk  tCQ1  t DXC 2  t SU 2 De Reg1 a Reg2 tCQ1  t DXC 2  t H 2 • Condició de setup en el camí crític  màxima freqüència de rellotge aplicable.
• La condició de hold no acostuma a ser problema per que tCQ>tH.
Disseny Digital T4 - 54 4.3 Aspectes avançats Temporització Anàlisi temporal de circuits síncrons 2 Xarxa comb. 1 X 3 Reg1 Xarxa comb. 2 Reg2 Xarxa comb. 3 Z clk • Camins d’entrada: d’entrades a entrades de components síncrons.
Temps equivalents de setup i hold per a cadascun: 2 De X a Reg1 t SU  t DXC1  t SU 1 t H  t H 1  t DXC1 • Camins de sortida: de sortides de components síncrons a sortides.
Retards equivalents rellotge - sortida per a cadascun: 3 De Reg2 aZ tCZ  tCQ 2  t DXC 3 Disseny Digital T4 - 55 4.3 Aspectes avançats Temporització Anàlisi temporal de circuits síncrons Exemple (I) b D1 a D0 Q1 z Q0 nrst tSU = 2.5 ns tH = 1 ns tCQ = 2 ns tDNOT = 0.5 ns tDNAND = 2.5 ns clk Destí Origen D1 D0 z a tSU = 2tDNAND + tSU1 = 7.5 ns tH = tH1 - 2tDNAND = -4 ns - - b tSU = 2tDNAND + tSU1 = 7.5 ns tH = tH1 - 2tDNAND = -4 ns tSU = 2tDNAND + tSU0 = 7.5 ns tH = tH0 - 2tDNAND = -4 ns - Q1 Tclk  tCQ1 + tDNOT + 2tDNAND + tSU1 = 10 ns Tclk  tCQ1 + tDNAND + tSU0 = 7 ns - Q0 Tclk  tCQ0 + 2tDNAND + tSU1 = 9.5 ns Tclk  tCQ0 + 2tDNAND + tSU0 = 9.5 ns tCZ = tCQ0 = 2 ns Disseny Digital 4.3 Aspectes avançats Temporització Anàlisi temporal de circuits síncrons Exemple (II) b a nrst D1 Q1 D0 Q0 z tSU = 2.5 ns tH = 1 ns tCQ = 2 ns tDNOT = 0.5 ns tDNAND = 2.5 ns clk • Resultats: • Entrades: tSU = 7.5 ns i tH = -4 ns.
• Sortides: tCZ = 2 ns.
• Camí crític: TCLKmin = 10 ns  fCLKmax = 1/(10 ns) = 100 MHz.
• Criteris pràctics: • Considerar sempre el pitjor cas.
• Sincronitzar sempre les entrades.
• No tocar els senyals de rellotge i de reset asíncron.
T4 - 56 Disseny Digital 4.3 Aspectes avançats T4 - 57 Estats espuris Exemple (I) Màquina d’estats agafada d’un exemple anterior.
Aplicant-li el mètode sistemàtic d’anàlisi, s’obté: 1 z2 D2 Q2 1 0/0 1/1 3/3 1 0 6/6 1 0 1 2/2 x 7/7 1 0 z1 D1 Q1 1 0 0 0 1 4/4 0 5/5 0 z0 D0 Q0 • Estats espuris o inesperats = no previstos clk quan es va dissenyar la FSM.
nrst • Si la FSM “cau” en un d’ells, queda atrapada i deixa de funcionar com s’espera.
Disseny Digital 4.3 Aspectes avançats T4 - 58 Estats espuris Exemple (II) • Causa: • Disseny fet deixant inespecificats els estats que “sobren”.
• Remeis: • Posar un reset que porti a un estat de la seqüència correcta.
• Dissenyar tenint en compte sempre 2n estats, per exemple ...
1 0/0 0 1 1 0 2/0 1/1 0 1 1 0 3/3 0 1 7/7 0 1 6/6 0 5/0 Els estats espuris "2" i "5" són còpies de l'estat "0" • Pot passar sintetitzant el circuit a partir de VHDL? 1 4/4 0 ...