Ejercicio Resuelto 3 (2013)

Ejercicio 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 4
Fecha de subida 12/11/2014
Descargas 2
Subido por

Vista previa del texto

4.21 Considereu la descripció VHDL donada d’una màquina d’estats síncrona xx.
Es demana, a) Dibuixeu un diagrama de blocs de la màquina on cada bloc correspongui a un process. Especifiqueu quins senyals comuniquen els blocs entre si i amb les entrades i sortides de la màquina i raoneu quins blocs són combinacionals i quins seqüencials.
b) Raoneu si es tracta d’una màquina de Moore o de Mealy i descriviu-la en forma de diagrama d’estats o de TdV.
c) Proposeu una descripció d’arquitectura equivalent per xx, que contingui només aquestes dues sentències concurrents:  un process, per fer la funció de canvi d’estat.
 una assignació concurrent, per fer la funció de sortida.
library ieee; use ieee.std_logic_1164.all; entity xx is port( clk, nrst, x1, x2 : in std_logic; z : out std_logic ); end xx; architecture arc of xx is type st: is (sa, sb, sc); signal s_act, s_seg : st; begin p1: process (nrst,clk) begin if nrst='0' then s_act <= sa; elsif clk'event and clk='1' then s_act <= s_seg; end if; end process p1; p2: process (s_act,x1,x2) begin if (s_act=sa and x1=‘0’) then s_seg <= sb; elsif ((s_act=sa and x1=’1’) or (s_act=sb) or (s_act=sc and x2=‘0’)) then s_seg <= sc; else s_seg <= sa; end if; end process p2; p3: process (s_act) begin if s_act=sb then z <= ‘1’; else z <= ‘0’; end if; end process p3; end architecture arc; Solució a) En el diagrama, s’han posat entre parèntesi els senyals de la llista de sensibilitat de cada process, i que per tant poden ‘disparar-lo’. Les entrades de la màquina són x1, x2, nrst i clk, mentre que la sortida és z.
x1 x2 p2 (x1, x2, s_act) s_seg s_act p1 (clk, nrst) En els blocs/processos p2 i p3 tots els senyals d’entrada estan a la llista de sensibilitat, per tant aquests blocs són combinacionals i fan les funcions s_seg(x1,x2,s_act) i z(s_act).
clk nrst p3 (s_act) z Per altra banda, el procés p1 es dispara amb nrst i clk, però dona com a resultat un valor de s_act constant o igual a s_seg. Per tant descriu un registre síncron amb entrada s_seg i sortida s_act, on clk i nrst són el rellotge i el reset asíncron.
b) Identificant p1 com a registre d’estat i p2 i p3 com blocs combinacionals que fan les funcions de transició d’estats i de sortida, tenim una màquina de Moore.
1x1 xx z sa / 0 x2 clk 0- sb / 1 -- sc / 0 x0 -1 nrst entrada (x1,x2) estat (s_act) 00 01 11 10 sortida (z) sa sb sc sb sc sc sb sc sa sc sc sa sc sc sc 0 1 0 estat següent (s_seg) c) El codi demanat pot ser, per exemple, el següent architecture arc2 of xx is type st: is ( sa, sb, sc ); signal s_act : st; begin process (nrst,clk) begin if nrst='0' then s_act <= sa; elsif clk'event and clk='1' then case s_act is when sa => if x1='0' then s_act <= sb; else s_act <= sc; end if; when sb => s_act <= sc; when sc => if x2='1' then s_act <= sa; end if; when others => s_act <= sa; end case; end if; end process; x1,x2 with s_act select z <= '1' when sb, '0' when others; end arc2; 4.26 El sistema seqüencial de la figura 1 és un cronòmetre amb habilitació (run) i reset asíncron (nrst), que funciona a partir d’un tren de polsos clk1 amb Tclk1=15s. El sistema conté dos blocs síncrons que compten en BCD hores i minuts (BH i BM); així les sortides de BM són valors entre ‘00’ i ‘59’, mentre que les de BH són entre ‘00’ i ‘23’.
hores 4 4 BH minuts 4 z BM clk1 4 15s run DivF Figura 1 nrst clk2 a) Utilitzant el registre de desplaçament de la figura 2 i portes estàndard, dissenyeu DivF, que a partir de clk1 proporciona clk2, un tren de polsos amb Tclk2=60s i clk225%.
60s shift Q0 Q1 b) Proposeu una realització alternativa de DivF utilitzant un mínim de biestables D i de portes estàndard.
Q2 Q3 reset Figura 2 c) El circuit de la figura 3 és una realització de BH que funciona incorrectament.
Expliqueu quines errades de disseny conté i corregiu-les.
hores (desenes) hores (unitats) Figura 3 ld 3 2 1 0 BCD ce tc ld 3 2 1 0 BCD ce tc 3 2 1 0 3 2 1 0 counter z counter clk2 nrst Solució a) Cal fer un divisor de freqüència per 4. La solució és immediata si ens adonem que el registre mostra sempre a les sortides un codi ‘1 de 4’, desplaçant l’1 un lloc a l’esquerra cada període de rellotge, de manera que després de 4 períodes torna a l’estat inicial: clk1 sh clk1 Q0 Q1 Q2 nrst 1 rs Q3 nrst Q3 Q2 Q1 clk2 Q0 Qualsevol sortida Qi és un tren de polsos de 60s de període i =25%. S’ha triat clk2=Q2 per que és per on apareix el pols més aviat desprès de fer un reset.
b) La sortida de més pes d’un comptador mòdul 4 amb ce=1 té la freqüència del rellotge dividida per 4. Per dissenyar aquest comptador podem utilitzar el mètode sistemàtic de síntesi de màquines d’estats, tot i que el resultat ja és conegut: Q1Q0 Q+1Q+0 D1D0 clk1 00 01 10 11 nrst Q0 Q1 01 10 11 00 01 10 11 00 D1 = Q 1  Q 0 D0 = Q 0 TQ1=60s Q1=50% D0 Q0 D1 Q1 clk2 clk1 nrst c) Dos comptadors BCD encadenats compten valors entre ‘00’ i ‘99’. En el cas de BH el rang de valors ha d’anar de ‘00’ a ‘23’, per tant cal trencar la seqüència carregant ‘00’ quan el valor comptat sigui ‘23’ i s’hagi de seguir comptant (z=’1’).
Així, el senyal de càrrega en paral·lel d’ambdós comptadors hauria de ser, ld|des = ld|uni = [desenes=’0010’] & [unitats=’0011’] & [z=’1’] = = [desenes=’xx1x’] & [unitats=’xx11’] & [z=’1’] A la figura 3 tenim, per separat, ld|des = [desenes=’xx10’] & [z=’1’] i ld|uni = [unitats=’xx11’] & [z=’1’] Això implica que el comptador d’unitats només va de ‘0’ a ‘3’ i que el de desenes està sempre clavat a ‘0’. Conclusió: una versió correcta seria, hores (desenes) hores (unitats) ld 3 2 1 0 BCD ce tc ld 3 2 1 0 BCD ce tc 3 2 1 0 3 2 1 0 counter nrst z counter clk2 ...