Professional Documents
Culture Documents
PuntControl S2 2021
PuntControl S2 2021
PuntControl S2 2021
Entrades:
Sortida:
- Q: sortida d’1 bit, que mostra el nivell lògic del bit de menys pes memoritzat en el registre.
Es demana el disseny del registre a nivell de biestables i els components addicionals que els han d’acompanyar
per a implementar les funcions indicades.
Solució:
M1 M0 EN
‘X’ D0
Di D1
D0 R
Qi+1 D2 D Q Qi Q0 Q
Qi D1 i
Q(i+4 mo d 1 6) D3 T OE
E0
E1 E0 S
EN
M1 M0 ‘0’
I ⸦ [0,15]
En i=15, Qi+1 = Q1 6 D[15]
Per a una implementació necessitem un comptador ancorat que segueixi la seqüència següent:
A més, necessitem que aquest comptador inclogui els senyals de control següents: Up/Down (U/D), Enable
(En), Reset síncron (Rs), Set asíncron (Sa) i Càrrega asíncrona –en paral·lel– (La). Els senyals de control
segueixen l’ordre de prioritat següent, de més a menys: En, La, Rs, Sa.
Aquest comptador té una característica particular i és que a el fer un reset o set el comptador no va sempre a
l’estat inicial “001” o a l’estat final “100”, sinó que dependrà del senyal Up/Down que indicarà quin és l’estat
inicial i final de la seqüència, de manera que si el comptador està en mode UP l’estat inicial és “001” i el final
és “100”, mentre que si està en mode DOWN l’estat inicial és “100” i el final és “001”.
Hem perdut el datasheet (full de característiques tècniques) del comptador i en el circuit integrat només
s’identifiquen alguns dels senyals (tal com es mostra en la següent figura): el senyal de clock (T), el senyal de
sortida (Out [2..0]) de 3 bits, i el senyal de la valor a carregar paral·lela (Ca [2..0]) de 3 bits.
Per poder identificar la resta de senyals (A, B, C, D, E, F), fem una prova amb el circuit integrat, introduint
una sèrie de valors per cadascuna de les entrades, aconseguint el resultat que es mostra en el cronograma:
Es demana
Solució:
(no disponible)
Entrades
• Reset: entrada d’1 bit per a on es reinicia el sistema.
• RocketsON: entrada d’1 bit per a on s’activa el sistema.
• Data: entrada d’1 bit per a on s’introdueixen en sèrie els dos valors de temps per cada període:
1. Temps vàlvula activa: senyal de 6 bits que indica el número de mil·lisegons en els que la vàlvula ha
d’estar activada. El rang de valors possibles anirà de 0 a 63.
2. Temps total del període: senyal de 6 bits que indica el número de mil·lisegons que dura el període.
El rang de valors possibles anirà de 30 a 63.
Es pot assumir que els valors proporcionats en cada cas sempre estaran dins dels intervals indicats.
• DataType: entrada de 2 bits per on s’indica el tipus de dada a llegir en sèrie per l’entrada Data, o bé, si
no hi ha cap dada a llegir, en funció de la següent codificació:
• 00: indica que no hi ha cap dada a llegir per l’entada Data.
• 01: indica que la dada a llegir és el Temps vàlvula activa.
• 10: indica que la dada a llegir és el Temps total del període.
• Clock: senyal de rellotge de període igual a un mil·lisegon (ms).
Sortides
• RocketValve: sortida d’1 bit per a on s’anirà proporcionant el senyal d’activació de la vàlvula del coet
amb la durada i cicle de treball corresponents.
Es demana
• Realitzar la implementació a través dels dos Mòduls que es descriuen a continuació.
• S’encarrega d’emmagatzemar els valors: (1) Temps vàlvula activa, i (2) Temps total del període, que
arriben en sèrie per l’entrada Data, facilitant-los per les respectives sortides ValveActiveTime i
TotalPeriod un cop ha finalitzat el temps del període actual. A partir d’aquest moment, els valors s’han de
mantenir en les dues sortides duran tot el període que ve a continuació fins que no comenci el següent,
moment en el que seran actualitzats pels nous valors.
• Un cop s’inicia el sistema (després d’haver fet un Reset i haver activat el senyal RocketsON), el primer
període ha de durar un valor per defecte de 30 ms, ja que s’estan llegint els primers valors i encara no es
disposa de cap temps de període anterior (veure el cronograma d’exemple més avall).
• Cal considerar que els valors que s’introdueixen per l’entrada Data ho fan de forma sincronitzada. És a
dir, quan el valor de DataType passi de 00 a 01, voldrà dir que cal començar a llegir el primer bit del valor
del temps de vàlvula activa en l’entrada Data, i així successivament de forma ordenada amb la resta de
bits en cada mil·lisegon, així com pels bits del valor del període.
Mòdul 2: Generació de períodes
• Aquest mòdul s’encarrega de generar el cicle de treball de la vàlvula per cada interval de temps.
Reset
RocketsON RocketValve
ValveActiveTime 6 MODULE 2
… …
TotalPeriod 6
(Duty-cycle)
Clock
Exemple
6 6 18 6 6 41 6 6 49
Clock
Reset
RocketsON
Data XXX 42 53 XXX 4 61 XXX 17 41 XXX
DataType 0 1 2 0 1 2 0 1 2 0
RocketValve
30 ms 53 ms 61 ms
(default initial value) 42 ms 4 ms
Indicacions
• Per fer la implementació es poden utilitzar biestables, portes lògiques i altres blocs funcionals estàndard
que s’hagin vist a classe.
• Pel que fa referència als comptadors, poden tenir els senyals que calgui d’entrada i de sortida, amb la única
condició que han de ser comptadors de 4 bits.
• No cal fer la implementació interna de cap comptador ni registre.
Nota: etiquetar i indicar el número de bits en tots el busos que siguin de més d’un bit. Posar noms a totes les
entrades i sortides de cada bloc, registre, comptador, etc., amb la nomenclatura correcta (ni massa llargs ni
massa curts, lletra clara i que s’entengui).
Solució:
Hi ha varies solucions per resoldre la implementació del Mòdul 1. Una manera es començar per crear
un comptador de 8 bits a partir de dos comptadors de 4 bits (donada que aquesta és una de les
restriccions que ens imposen).
Comptador
Counter 8-bits
Reset
Counter 4-bits Counter 4-bits MSB
4 Q[7..0]
Reset Q Reset Q
Enable RCI RCO RCI RCO
LSB
Clock 4
Mòdul 1
DECO 2x4
Biestable RS
2 4
DataType[1..0] Enable[3..0] Enable[1] R Q FirstPeriod
Reset S
RocketON
Reset
6-bits Reg. ES/SP 6-bits Reg. EP/SP
Enable[1] Enable Enable
Reset Reset 6
6 Q
Data Q Data
ValveActiveTime[5..0]
FirstPeriod
RockedON
Mòdul 2
Comp 6-bits
6 A>B
TotalPeriod[5..0] A
B
Reset
2 MSB
x
Counter 8-bits Comp 6-bits
Reset 8 6 RocketValve
Q A<B
RocketON Enable A
Clock B
ValveActiveTime[5..0] 6