PuntControl S2 2021

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Examen Punt de Control S2

Assignatura: Introducció als Ordinadors


Data: 25 / 3 / 2021 - Curs: 2020/2021

Problema 1 (20 minuts, 2,5 punts)

Dissenyar un registre amb les característiques següents:


Register
16
D Q
EN
OE
2
M
T

Entrades:

- >: entrada de sincronisme del registre.


- D: bus d’entrada de dades paral·lel de 16 bits.
- EN: senyal d’enable que funciona per lògica negativa. És prioritària respecte de qualsevol altra entrada
del registre.
- OE: senyal d’output enable que funciona per lògica negativa.
- M: bus de control del mode d’operació del registre:
o M = “00”: reset asíncron del registre.
o M = “01”: càrrega de dades en paral·lel síncrona des del bus d’entrada D.
o M = “10”: shift right síncron d’1 bit. Els bits es desplacen una posició cap a la zona de menys
pes, introduint-se el nivell lògic de l’entrada D[15] como a nou bit de més pes.
o M = “11”: rotate right síncron de 4 bits. Els bits es desplacen 4 posicions cap a la zona de
menys pes, introduint-se com a nous 4 bits de més pes els 4 que ocupaven les posicions de
menys pes.

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]

Problema 2 (30 minuts, 2,5 punts)

Per a una implementació necessitem un comptador ancorat que segueixi la seqüència següent:

{ 001, 110, 010, 111, 011, 100 }

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

Basant-se en el cronograma de la figura anterior, identifica la correspondència entre els senyals A, B, C, D, F


i els senyals de control del comptador indicades a l’enunciat. La identificació del tipus de senyal ha ser
raonada. Així, s’ha de: (1) indicar clarament en el diagrama de temps del full de solució adjunt l’instant en el
qual el senyal provoca un canvi en la sortida, (2) si es tracta d’un comportament síncron o asíncron, (3) si el
senyal és de lògica positiva o negativa, i (4) explicar si el senyal es veu afectat per algun dels altres senyals.

Solució:

(no disponible)

Problema 3 (60 minuts, 5 punts)

En la carrera pel desenvolupament de vehicles de llançament i naus espacials reutilitzables, i després de no


quedar del tot satisfets amb les proves realitzades amb el model SN10, l’empresa SpaceX ha decidit contractar
els serveis de La Salle per dissenyar un nou sistema anomenat RPCS, el qual ha de controlar la vàlvula que
actua sobre l’únic coet Raptor en un nou model de nau. La vàlvula té dues posicions: oberta (coet encès) o
tancada (coet apagat). Per tant, per establir el nivell de propulsió de la nau, el que ha de fer el sistema és anar
indicant quan de temps estarà oberta la vàlvula (1) i quan de temps estarà tancada (0) en cada període de temps,
un comportament que també es coneix amb el nom de cicle de treball (duty-cycle). El temps en que la vàlvula
ha d’estar oberta i el temps total del període són dos valors que es van introduint en el sistema, de forma
constant i sincronitzada, cada cert interval de temps en mil·lisegons.
Una complexitat del sistema és que ha d’executar dos processos de forma paral·lela: (1) adquisició de dades, i
(2) generació del cicle de treball de la vàlvula en funció de les dades adquirides en el període anterior. És a dir,
les dades adquirides en un període de temps serviran per generar el cicle de treball de la vàlvula en el següent
període de temps. Per exemple, si els valors corresponents al temps de vàlvula activa i període total són 42 ms
i 53 ms, respectivament, un cop finalitzem la lectura serà quan els aplicarem en el següent període, el qual
haurà de durar 53 ms (veure el cronograma d’exemple proporcionat al final de l’enunciat). Podem assumir que
el temps de vàlvula activa sempre serà igual o inferior al del període de temps, el qual cal recordar que serà
variable.
Les entrades i sortides d’aquest sistema són les que es mostren en la següent figura:
Reset
RocketsON Rocket Power RocketValve
Data Control System … …
DataType 2
(RPCS) (Duty-cycle)
Clock

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ó.

Mòdul 1: Adquisició de dades


Reset
RocketsON 6 ValveActiveTime
Data MODULE 1 6
2 TotalPeriod
DataType
Clock

• 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]

6-bits Reg. ES/SP 6-bits Reg. EP/SP TotalPeriod[5..0]


Enable[2] Enable Enable
Reset Reset
Q
6 D0 6 Q 6
Data Data
6 D
Clock 1
‘30’ S
FirstPeriod
2 MSB
x
Counter 8-bits
Comp 6-bits
RocketON Reset
8 6 A>B
Reset Enable Q A
UpdateReg 0 UpdateReg
B
TotalPeriod[5..0] 6

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

You might also like