FACULTAD DE INGENIERIA DISEÑO LÓGICO
UNIVERSIDAD DE LA REPUBLICA Febrero 2021
Mínimo para pasar al oral: un problema Deben estar numeradas y la primer
Cada hoja debe tener Nombre y CI. hoja debe decir el total de hojas
Utilice solo un lado de las hojas Incluya un solo problema por hoja
Sea prolijo
Problema 1
Se desea diseñar un circuito modo reloj capaz de controlar la intersección de dos vías férreas. Ambas
vías son unidireccionales (los trenes no pueden ir marcha atrás) y tienen un camino en común como se
observa en la figura.
Se cuenta con dos detectores (D1 y D2), uno en cada vía, que indican con un 0 en su salida cuando un
tren se encuentra llegando al cruce y vuelve a su estado de reposo en 1 cuando el tren terminó de pasar
por el cruce.
Para controlar el cruce de los trenes se dispone de dos semáforos (S1 y S2) ubicados uno en cada vía.
Los mismos se encuentran en rojo cuando en su entrada se coloca un 1 lógico y se encuentran en verde
cuando se coloca un 0. Estos semáforos deberán estar en rojo, mientras no se esté dando paso a un
tren. El pasaje de un semáforo de rojo a verde debe realizarse de manera síncrona con el reloj del
sistema mientras que el pasaje de verde a rojo se debe realizar de manera asíncrona.
Adicionalmente, la vía común es cruzada por una avenida que cuenta con barreras. Al detectar la
presencia de un tren por cualquiera de las dos vías se deberá bajar inmediatamente la barrera para cortar
el paso colocando un 0 lógico en B (ambas barreras se manejan con la misma señal B). Para garantizar
que la barrera esté completamente baja, esta necesitará al menos un periodo de reloj completo en bajo
antes de poder dar luz verde para el paso del tren. Una vez que no se detecte la presencia de trenes, se
debe subir la barrera en forma síncrona poniendo B=1.
Al detectar un tren por alguna de las vías se deberá bajar la barrera, esperar el tiempo requerido por la
barrera, y luego prender la luz verde del semáforo correspondiente. Al detectar que el tren finalizó su
pasaje se debe subir la barrera y volver el semáforo a rojo. Si durante el pasaje de un tren se detecta la
llegada de un tren en la otra vía, se deberá esperar a que finalice de pasar el tren en curso, luego
cambiar su semáforo a rojo para posteriormente dar paso al otro tren colocando su semáforo en verde;
todo esto sin levantar la barrera. Si ocurriera que se detecta la llegada de trenes por ambas vías antes de
darle paso a ninguno, se le deberá dar prioridad al tren de la vía 1.
Se garantiza que los trenes demoran varios ciclos de reloj en atravesar el cruce.
Se pide implementar el circuito modo reloj completo en forma mínima.
FACULTAD DE INGENIERIA DISEÑO LÓGICO
UNIVERSIDAD DE LA REPUBLICA Febrero 2021
Problema 2
Se desea diseñar un circuito RTL para recepcionar y decodificar una trasmisión de datos serial. Cada
palabra trasmitida será de 9 bits y al decodificarla se obtendrá una palabra de 8 bits, el inicio de cada
trasmisión se señaliza con un pulso de 1 Tclk por la señal init y los datos se reciben por la señal data.
La codificación es tal que para la palabra trasmitida
out_0[5..0]
t[8..0] y su correspondiente decodificación d[7..0]
out_1[5..0]
se cumple que: init RTL out_2[5..0]
d[n] = t[n+1] xor t[n] n = 0,1,..,7 data out_3[5..0]
ready
De cada palabra decodificada los 2 bits más
blk
significativos (d[7..6]) indican qué salida se deberá
actualizar con los 6 bits menos significativos (d[5..0]).
out_0[5..0] = d[5..0] si d[7..6] = 00
out_1[5..0] = d[5..0] si d[7..6] = 01
out_2[5..0] = d[5..0] si d[7..6] = 10
out_3[5..0] = d[5..0] si d[7..6] = 11
Luego de un reset las salidas deben tener los valores: ready=0, blk=0 y out_i[]= 000000.
La salida out_i[] se debe actualizar en el período de reloj siguiente a la recepción del último bit (t[0]) y el
dato en cada salida se debe mantener hasta que se actualice dicha salida con un nuevo dato.
Cada vez que se actualiza una salida out_i[] se debe dar un pulso de 1 Tclk por la salida ready (ver
diagrama de tiempos).
Si el dato decodificado d[5..0] es 111111, NO se debe actualizar ninguna salida out_i[] a partir de ese
momento. Además, se debe subir la señal blk en el siguiente período de reloj de recibido dicho dato. El
circuito debe permanecer así hasta la ocurrencia de un reset.
Se debe considerar que las trasmisiones comienzan por el bit más significativo (t[8]) y que son posibles
las trasmisiones consecutivas (luego de t[0] viene un nuevo t[8]).
Se pide descripción RTL, bloque de datos y bloque de control.
FACULTAD DE INGENIERIA DISEÑO LÓGICO
UNIVERSIDAD DE LA REPUBLICA FEBRERO 2021
SOLUCIÓN
PROBLEMA 1
Diagrama
Tabla de Estados
qt+1 S1-S2-B
qt \ D1D2 00 01 11 10 00 01 11 10
q0 q1 q1 q0 q1 110 110 111 110
q1 q2 q2 X q3 110 110 X 110
q2 q2 q2 q0 q3 010 010 110 110
q3 q3 q2 q0 q3 100 110 110 100
Minimización
Es mínimo
Codificación de estados
FACULTAD DE INGENIERIA DISEÑO LÓGICO
UNIVERSIDAD DE LA REPUBLICA FEBRERO 2021
SOLUCIÓN
qt+1 S1-S2-B
y1y0 00 01 11 10 00 01 11 10
00 (q0) 01 01 00 01 110 110 111 110
01 (q1) 10 10 X 11 110 110 X 110
10 (q2) 10 10 00 11 010 010 110 110
11 (q3) 11 10 00 11 100 110 110 100
Elijo FF tipo D
Mapas K
FF_D1 = !y1y0 + !D1y1 + !D2y1 FF_D0 = D1!D2 + !D1!y1!y0 + !D2y1y0
S1 = D1 + !y1 + y0 S2 = D2 + !y0 + !y1
FACULTAD DE INGENIERIA DISEÑO LÓGICO
UNIVERSIDAD DE LA REPUBLICA FEBRERO 2021
SOLUCIÓN
B = D1D2!y1
Circuito
FACULTAD DE INGENIERIA DISEÑO LÓGICO
UNIVERSIDAD DE LA REPUBLICA FEBRERO 2021
SOLUCIÓN
PROBLEMA 2
SECUENCIA
MODULE: EJ_RTL
INPUTS: data, init
OUTPUTS: out_0[6], out_1[6], out_2[6], out_3[6], ready, blk
MEMORY: Cont[3], Aux, Mem_out_0[6], Mem_out_1[6] , Mem_out_2[6], Mem_out_3[6], Dir[2], Word[5]
0 Mem_out_0[5..0] 000000
Mem_out_1[5..0] 000000
Mem_out_2[5..0] 000000
Mem_out_3[5..0] 000000
1 Cont[2..0] 000
(init, /init) / (2, 1)
2 Dir[1..0] Dir[0], bit_in
Cont[] inc (Cont[])
(Cont=001, /Cont=001) / (3, 2)
3 Word[4..0] Word[3..0], bit_in
Cont[] inc (Cont[])
Mem_out_0[5..0] * /Dir[1]./Dir[0] . (Cont[]=111) . /fin Word[4..0], bit_in
Mem_out_1[5..0] * /Dir[1].Dir[0] . (Cont[]=111) ./fin Word[4..0], bit_in
Mem_out_2[5..0] * Dir[1]./Dir[0] . (Cont[]=111) ./fin Word[4..0], bit_in
Mem_out_3[5..0] * Dir[1].Dir[0] . (Cont[]=111) ./fin Word[4..0], bit_in
(/Cont[]=111) , (Cont[]=111) . /fin , (Cont[]=110) . fin)/ (3,4,5)
4 ready = 1
(init, /init) / (2, 1)
5 blk = 1
(5)
END SEQUENCE
CONTROL RESET(0)
bit_in = Aux xor data
Aux data
out_0[] = Mem_out_0[]
out_1[] = Mem_out_1[]
out_2[] = Mem_out_2[]
out_3[] = Mem_out_3[]
fin = ((Word[4..0], bit_in) = 111111))
END
FACULTAD DE INGENIERIA DISEÑO LÓGICO
UNIVERSIDAD DE LA REPUBLICA FEBRERO 2021
SOLUCIÓN
BLOQUE DE CONTROL
Reset CSL0
CSL1 AND2
DFF
PRN CSL0 CSL1 AND2 OR3 DFF
init inst10
D Q PRN CSL1
D Q
init_n inst8 inst7 CSL2 AND2 OR3 DFF
GND PRN CSL2
CK CLRN
CLRN
D Q
inst1 CSL4 AND2
CK inst (Cont=001)_n inst13 inst11
CK
Reset AND2
CLRN
init_n inst9 CSL4 inst5
Reset
AND2 init inst12
CSL2
OR2 DFF
(Cont=001) inst15 PRN CSL3 CSL3
D Q AND3
inst14 (Cont=111) OR2 DFF
CSL3 AND2 PRN CSL5
CK D Q
CLRN CSL3 fin inst19
(Cont=111)_n inst2 inst16
inst17 CK
Reset AND3 DFF
CSL5 CLRN
(Cont=111) PRN CSL4 inst4
D Q
inst18 Reset
fin_n CK CLRN
inst3
Reset
BLOQUE DE DATOS
CSL3 AND2 DFFE
PRN Mem_out_0[5..0]
Word[4..0],bit_in D Q CSL3 AND2 DFFE
inst PRN Mem_out_1[5..0]
Word[4..0],bit_in D Q
CSL0 CLK ENA WIRE
out_0[5..0]
CSL3 CLRN
inst16
OR2 inst11 inst48 CSL0 CLK ENA WIRE
out_1[5..0]
AND4 CSL3 CLRN
Dir[0]_n AND2 OR2 inst15 inst49
Dir[1]_n inst12 AND4
Dir[0] AND2
(Cont=111)
inst14 Dir[1]_n inst17
fin_n WIRE
(Cont=111) CSL4 ready
inst13 fin_n inst19
inst54
CSL3 inst18
AND2 DFFE
PRN Mem_out_2[5..0]
Word[4..0],bit_in D Q CSL3 AND2 DFFE
inst21 PRN Mem_out_3[5..0]
WIRE Word[4..0],bit_in D Q
CSL0 CLK ENA out_2[5..0]
CSL3 CLRN
inst26
OR2 inst20 inst51 CSL0 CLK ENA WIRE
out_3[5..0]
AND4 CSL3 CLRN
Dir[0]_n AND2 OR2 inst25 inst50
Dir[1] inst22 AND4
Dir[0] AND2
(Cont=111)
inst24 Dir[1] inst27
fin_n
(Cont=111) WIRE
inst23 inst29 CSL5 blk
fin_n
inst55
CSL2 inst28
AND2
INC OR2 DFFE Cont[0] AND3
Cont[] inst34 PRN Cont[2..0] Cont[1] (Cont[]=111) NOT
(Cont[]=111)_n
in out D Q
AND2 Cont[2] inst37
inst33 inst36
ENA
CLK CLRN
inst3 inst35 inst30 Cont[0]
AND3
CSL1
Cont[1] NOT
(Cont[]=001) NOT
(Cont[]=001)_n
CSL3 OR3
CSL2 inst40 inst39
inst38
inst31 Cont[2] NOT
CSL3
inst41
Word[0] AND6
Word[1]
DFFE DFFE
XOR Word[2]
DFFE Dir[0],bit_in PRN Dir[1..0] Dir[0],bit_in PRN Word[4..0] fin NOT
fin_n
bit_in D Q D Q Word[3]
data PRN Aux inst57
D Q CLK CLK Word[4]
CLK inst45 ENA ENA bit_in
ENA
CSL2 CLRN CSL3 CLRN
VCC CLRN inst46 inst47 inst56
inst43