Rosa Corti
2009
Digital II
Diseño con esquemáticos y VHDL
Trabajos Prácticos
Departamento de Sistemas e Informática
Escuela de Electrónica
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Universidad Nacional de Rosario
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 2 -
Reset
L
S
Bus
Clk
ROM
16X4
Reset
S
L
Bus H
Clk
?
Problema 1:
Se debe diseñar un circuito que procesará los valores de
temperatura de un dispositivo y enviará información a otro
sistema. Los valores de temperatura son de 4 bits con signo
en C2 e ingresan por el Bus de 4 bits, validados por la señal
L. El inicio del ciclo de trabajo se indica por la llegada de
tres unos consecutivos por la línea L. A partir de allí, cada
vez que la línea L, sincrónica con el Clk, asume el valor uno,
por el Bus se presentará un valor de temperatura válida (en
todo otro momento el contenido de Bus es irrelevante). Los
valores de temperatura pueden llegar en forma consecutiva o estar separados por varios bit-times
sin información válida. Los datos recibidos deben considerarse en grupos de cuatro y obtener el
promedio entero de cada grupo. Si el promedio resulta ser mayor que – 4 º, deberá transmitirse
en serie por la línea S, lo antes posible comenzando por el bit de signo. La transmisión se
validará con la señal H en cero, teniendo en cuenta que dicha línea deberá permanecer en todo
otro momento en uno. Una vez que el funcionamiento del sistema inicie, continuará en forma
indefinida. El subsistema encargado de la transmisión serie (que genera la señal S y la señal
H), se deberá diseñar en VHDL e incorporarse como un bloque más al esquemático general
del sistema.
Ejemplo de funcionamiento:
L 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 1
Bus X X X X X T1 X X T2 T3 X T4 T1’ X X T2’ X T3’ T4’
H 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1
S X X X X X X X X X X X X PS P3 P2 P1 X X X
Inicio Recepción 1º grupo Recepción 2º grupo (*)
(*) También se indica la transmisión del 1º promedio que se supone > -4º.
Notas:
1. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume el valor 1.
3. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 2:
Se debe diseñar un circuito que procesará los valores de
temperatura de un dispositivo y enviará información a otro
sistema. Los valores de temperatura son de 4 bits con signo en
C2 e ingresan por el Bus de 4 bits, validados por la señal L. El
inicio del ciclo de trabajo se indica por la llegada de tres ceros
consecutivos por la línea L. A partir de allí, cada vez que la
línea L, sincrónica con el Clk, asume el valor cero, por el Bus
se presentará un valor de temperatura válida (en todo otro
momento el contenido de Bus es irrelevante). Estos valores de temperatura deben grabarse en la
memoria RAM en forma consecutiva a partir de la dirección 0 siempre y cuando superen el valor
–2. Una vez que la memoria esté completamente grabada, finalizará el ciclo de trabajo poniendo
en cero por exactamente un bit-time la señal S (que en todo otro momento permanecerá en uno).
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 3 -
FIN
Reset
L
S
Bus
Clk
ROM
16X4
Cuando la señal S transiciona de cero a uno, el sistema debe quedar en condiciones de detectar la
situación de inicio y comenzar otro ciclo. El módulo de detección de inicio y el comparador con
signo deberán diseñarse en VHDL e incorporarse al esquemático general del sistema.
Ejemplo de funcionamiento:
L 1 0 0 0 1 0 1 1 0 0 1 0 X 1 0 1 0
Bus X X X X X T1 X X T2 T3 X Tn X X X X X
WE 0 0 0 0 0 1(*) 0 0 0 1(*) 0 1 0 0 0 0 0
S 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
Inicio RAM llena
(*) Los datos 1º y 3º se suponen > -2º (se graban en la RAM).
Notas:
1. El Clock del sistema es único y debe ingresar a todos los bloques sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 3:
Se debe diseñar un circuito como el mostrado, en el cual se
incluye una memoria RAM de 16X4 completamente cargada
con la palabra “1111”en todas sus direcciones. El inicio del
ciclo de trabajo se indica por la línea L en uno durante un
bit-time. A partir de allí, en forma sincrónica con el Clk, por
el Bus de 4 bits se presentarán en forma consecutiva una
dirección seguida por un dato. Cada dato deberá almacenarse
en la dirección que lo precede siempre que sea posible. La
grabación se considerará posible si antes no se ha grabado otro dato en el mismo ciclo de trabajo.
El ciclo finalizará cuando por tres veces consecutivas no pueda grabarse la memoria. Cuando
esto ocurra se levantará la señal S por exactamente un bit-time debiendo quedar el sistema en
condiciones de iniciar un nuevo ciclo con la llegada de L = 1 (recordar que la memoria debe
volver a quedar grabada con los valores iniciales antes indicados). El módulo de fin de ciclo
(detección de tres veces consecutivas y generación de S), deberá diseñarse en VHDL e
incorporarse al esquemático general del sistema.
Ejemplo de funcionamiento:
Deben ignorarse Otro inicio válido
L 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1
Bus X X Dir1 D1 Dir2 D2 Dir3 D3 Dir4 D4 Dn X X X X Dir1’
S 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Inicio
FIN
Se espera
Inicio
Se espera
Inicio
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 4 -
Reset
L
S
Bus
Clk
ROM
16X4
Notas: 1. El Clock del sistema es único y debe ingresar a la entrada Clock de todos los elementos
sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Se garantiza que no se presentará el dato F16.
4. L = 1 puede repetirse durante el ciclo de trabajo y es responsabilidad del diseñador que el
sistema lo ignore.
5. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 4:
Se debe diseñar un circuito como el mostrado, en el cual se
incluye una memoria RAM de 16X4 completamente cargada
con la palabra “1111”en todas sus direcciones. El inicio del
ciclo de trabajo se indica por la llegada de tres unos
consecutivos por la línea L. A partir de allí, en forma
sincrónica con el Clk, cada vez que la señal L asuma el valor
“1”, por el Bus de 4 bits se presentarán en forma consecutiva
una dirección seguida por un dato. Cada dato deberá
almacenarse en la dirección que lo precede siempre que sea
posible. La grabación se considerará posible si antes no se ha
grabado otro dato en el mismo ciclo de trabajo. El ciclo finalizará cuando tanto la dirección
como el dato sean ambas iguales a F16. Cuando esto ocurra se levantará la señal S por
exactamente un bit-time debiendo quedar el sistema en condiciones de iniciar un nuevo ciclo
(recordar que la memoria debe volver a quedar grabada con los valores iniciales antes indicados).
El módulo de evaluación de la condición de grabación del dato y generación de la señal de
escritura, deberá diseñarse en VHDL e incorporarse al esquemático general del sistema.
Ejemplo de funcionamiento:
L 0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1
Bus X X X X Dir1 D1 X X Dir2 D2 Dir3 D3 X F F X X
S 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
Inicio
FIN
Notas: 1. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Se garantiza que no se presentará el dato F16, a no ser que se indique final de ciclo.
4. Una vez iniciado el ciclo, se garantiza que L = 1 se producirá a lo sumo un bit-time por
medio, siendo 1 mientras se presenta la dirección y 0 al llegar el dato en el bit- time siguiente.
5. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 5:
Se debe diseñar un circuito como el mostrado, que incluye una memoria ROM completamente
cargada con números de 4 bits positivos y negativos en C2, de forma que en cada dirección se
guarda el mismo valor como dato. El inicio del ciclo de trabajo se indica con la señal L en uno
Se espera
Inicio
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 5 -
Reset
S
L
Bus
H
Clk
ROM
16X4
Reset H
L
Clk S
ROM
16X4
durante un bit-time. En el bit time en el cual L = 1 por Bus se
presenta un número de 4 bits positivo sin signo que indica la
cantidad de datos a procesar. A partir de allí, en forma
sincrónica con el Ck, y cada vez que L sea igual a 1, se
presentará por el Bus un número de 4 bits positivo o negativo
en C2. Cada número deberá compararse con la información
guardada en la memoria ROM a partir de la dirección 0. O
sea, el primer dato se comparará con el número guardado en la
dirección 0, el segundo dato con el número de la dirección uno
y así sucesivamente. El mayor de ambos valores se mostrará
por el bus de salida S de 4 bits, validado por la señal H en 1 (H será 1 cuando se presente un dato
válido y será 0 en todo otro momento). El ciclo finalizará cuando se hayan procesado la cantidad
de datos indicados, debiendo quedar el sistema en condiciones de detectar otro L = 1 e iniciar
otro ciclo de trabajo. El módulo ROM completamente cargado con valores así como el módulo
comparador y generador de la señal H, deberán diseñarse en VHDL e incorporarse al
esquemático general del sistema.
Ejemplo de funcionamiento:
Inicios de ciclo
L 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1
Bus X 5 X D1 X D2 X X D3 D4 X X X X D5 X X 7 D1’
H 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1
S X X X S1 X S2 X X S3 S4 X X X X S5 X X X S1’
Ciclo de trabajo Espera otro inicio
S1 será el mayor entre D1 y el número de la dirección 0 de la ROM.
S2 será el mayor entre D2 y el número de la dirección 1 de la ROM.
S3 será el mayor entre D3 y el número de la dirección 2 de la ROM, y así sucesivamente.
Notas:
1. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. El diseñador debe garantizar la carga inicial de los datos pedidos en la ROM.
4. Es responsabilidad del diseñador sincronizar las señales de entrada.
Problema 6:
Se debe diseñar un circuito como el mostrado, que incluye
una memoria ROM completamente cargada con números de 4
bits positivos y negativos en C2, de forma que cada dirección
guarda el mismo valor como dato. El inicio del ciclo de
trabajo se indica por la llegada de cuatro ceros consecutivos
por la línea L. A partir de allí, en forma sincrónica con el Clk,
por L ingresan datos de cuatro bits, positivos y negativos en
C2, comenzando por el bit de signo. Estos datos se compararán con los números guardados en la
ROM y el mayor de ambos deberá transmitirse en serie por la línea S, lo antes posible
comenzando por el bit de signo. O sea, el primer dato se comparará con el número almacenado
en la dirección 0, el segundo con el número almacenado en la dirección 1 y así siguiendo.
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 6 -
Reset
ST Fin
Clk
Bus
RAM
16X4
Cuando se llegue a la última dirección de la ROM, se volverá a comenzar la comparación desde
la dirección 0. La transmisión de los valores se validará con la señal H en cero, teniendo en
cuenta que dicha línea deberá permanecer en todo otro momento en uno. Una vez que el
funcionamiento del sistema inicie, continuará en forma indefinida. El módulo que controla la
lectura de la memoria ROM, y el módulo comparador con signo deberán diseñarse en VHDL
e incorporarse al esquemático general del sistema.
Ejemplo de funcionamiento:
L 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1
Bus X X X X D1s D13 D12 D11 D2s D23 D22 D21 D3s D33 D32 D31 D4s
H 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
S X X X X X X X X P1s P13 P12 P11 P2s P23 P22 P21 P3s
Inicio 1º dato 2º dato 3º dato
P1 será el mayor entre D1 y el número almacenado en la dirección 0.
P2 será el mayor entre D2 y el número almacenado en la dirección 1.
P3 será el mayor entre D3 y el número almacenado en la dirección 2 y así sucesivamente.
Notas:
1. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. El diseñador debe garantizar la carga inicial de los datos pedidos en la ROM.
4. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 7:
Diseñar un circuito como el mostrado. La señal ST en 1 durante
un bit-time, indica el comienzo del funcionamiento del sistema.
En el bit-time siguiente a ST = 1 comienzan a llegar datos
válidos de 4 bits por el bus (el contenido anterior del bus no es
de interés). Estos datos son positivos y negativos, en C2 y deben
analizarse en grupos de 4 datos. Deberá encontrarse el mayor de
cada grupo y grabarlo en la memoria RAM en forma consecutiva a partir de la dirección 0.
Cuando se complete la grabación de la memoria se deberá hacer 1 la señal de Fin durante
exactamente un bit-time. Una vez ocurrido esto, el sistema deberá quedar en condiciones de
iniciar un nuevo ciclo a partir de la llegada de un nuevo ST = 1. El módulo de control de ciclo y
validación de ST deberá diseñarse en VHDL e incorporarse al esquemático general del
sistema.
Ejemplo de funcionamiento:
Inicio de ciclo Deben ignorarse Otro inicio
ST 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1
Bus X X D1 D2 D3 D4 D1’ D2’ D3’ D4’ D4n
X X X X
Fin 0 0 0 0 0 0 0 0 0 0 1 0 0 0
FIN Se espera inicio
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 7 -
Reset
A Fin
B
Clk
RAM
16X4
Notas:
1. ST = 1 puede repetirse durante el ciclo de trabajo y es responsabilidad del diseñador que el
sistema lo ignore.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
4. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 8:
Diseñar un circuito como el mostrado. La señal B en 1 durante
tres bit-times consecutivos, indica el inicio del funcionamiento
del sistema. En el bit-time siguiente al inicio comienzan a llegar
datos válidos de 4 bits por las líneas A y B (el contenido anterior
de ambas no es de interés). Los datos de 4 bits que ingresan por
A deben interpretarse como palabras de las cuales deberá
contarse la cantidad de unos que posee cada una. Los datos de 4
bits que ingresan por B comenzando por el bit de signo, deben interpretarse como números
positivos y negativos de 3 bits y signo en C1. Deberá compararse la cantidad de unos de cada
palabra ingresada por A con el número ingresado al mismo tiempo por B:
1. Si la cantidad de unos del dato ingresado por A resulta menor o igual al número ingresado
por B, el dato deberá grabarse en la memoria RAM en forma consecutiva (no deben quedar
direcciones intermedias sin grabar), a partir de la dirección 0.
2. Si la cantidad de unos resulta mayor no deberá tomarse acción alguna.
Cuando se complete la grabación de la memoria se deberá hacer 1 la señal de Fin durante
exactamente un bit-time. Al transicionar Fin de uno a cero, el sistema deberá quedar en
condiciones de iniciar un nuevo ciclo con la llegada de tres unos consecutivos por la línea B. El
módulo de recepción de los datos serie que ingresan por A y B, deberá diseñarse en VHDL e
incorporarse como un bloque más al esquemático general del sistema.
Ejemplo de funcionamiento:
Clk
A X X X X 0 1 0 1 1 1 1 1 0 0 1
B 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0
Inicio Ciclo de trabajo
Primer dato: Cantidad de unos de A = 2, B = 2. El dato de A se graba en dirección 0.
Segundo dato: Cantidad de unos de A = 4, B = - 4. No se toma acción alguna.
Notas:
1. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Primer dato Segundo dato
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 8 -
Reset Fin
B
ST S
Clk H
Bus
ROM
16X4
Problema 9:
Diseñar un circuito como el mostrado. La señal ST en 1
durante un bit-time, indica el inicio del funcionamiento del
sistema. En ese bit-time de inicio ingresa un número N de 4
bits positivo sin signo por el bus. Este número N >= 1 indica el
bit-time en el cual comienzan a ingresar en forma consecutiva
por la línea serie B datos de 4 bits positivos y negativos en C2,
comenzando siempre por el bit de signo (considerando bit-time
1 al inmediato posterior a ST = 1). Los datos de 4 bits que
ingresan por B deben compararse con los datos almacenados
en la memoria ROM incluida en el circuito. La ROM debe
estar completamente cargada con números positivos y negativos en C2, de forma que cada
dirección guarda como valor la dirección que le sigue (interpretada como un número en C2). El
mayor de ambos deberá transmitirse en serie por la línea S comenzando por el bit más
significativo. La transmisión se validará con la señal H en 1 mientras se presentan datos válidos.
Una vez que se ha barrido toda la ROM, y se ha terminado de transmitir el último dato, la señal
de Fin caerá a cero durante exactamente un bit-time (en todo otro momento Fin es igual a uno).
Al transicionar Fin de cero a uno, el sistema deberá quedar en condiciones de iniciar un nuevo
ciclo a partir de la llegada de un nuevo ST = 1. El bloque de control de ciclo, que incluye la
detección del bit-time en que comienzan a llegar los datos y la validación de ST, deberá
diseñarse en VHDL e incorporarse al esquemático del sistema como un bloque más.
Ejemplo de funcionamiento:
Clk 1 2 3 4
ST 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0
bus X 4 X X X X X X X X X X X X X
B X X X X X 0 1 1 0 1 1 1 0 0 0
Primer dato: Debe compararse con el dato de la dirección 0 de la ROM (que guarda el dato
0001), por lo tanto el dato de B se transmitirá en serie por S, validado con H en 1.
Segundo dato: Debe compararse con el dato almacenado en la dirección 1 de la ROM (que es
0010), por lo que el dato de la ROM se transmitirá en serie por S, validado con H en 1.
Notas:
1. El Clock es único y debe ingresar a la entrada de Clock de todos los elementos sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. La señal ST puede repetirse durante el ciclo y el circuito diseñado deberá ignorarla.
4. La dirección 1111, guarda el 0000 como dato. Los datos deben interpretarse como números
en C2.
5. El diseñador debe garantizar la carga inicial de los datos pedidos en la ROM.
6. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Primer dato Segundo dato
Otros ST = 1 que deben ignorase.
Bit-time 1
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 9 -
A
H
B
S
Ck
? Reset
Problema 10: Diseñar un circuito como el mostrado. La señal B en uno y A en
cero durante tres bit-times consecutivos, indican el inicio del
funcionamiento del sistema. En el bit-time siguiente al inicio
comienzan a llegar datos válidos de 4 bits por las líneas A y B
(el contenido anterior de ambas no es de interés). Los datos de 4
bits que ingresan por A deben interpretarse como palabras de las
cuales deberá contarse la cantidad de unos que posee cada una.
Los datos de 4 bits que ingresan por B deben interpretarse como
números positivos y negativos de tres bits y signo en C2, que
ingresarán por el bit de signo. Deberá compararse la cantidad de
unos de cada palabra ingresada por A con el número ingresado al mismo tiempo por B:
1. Si la cantidad de unos del dato ingresado por A resulta menor o igual al número ingresado
por B, el dato deberá transmitirse en serie, comenzando por el bit más significativo,
validando su presentación por la línea S con la señal H en 1.
2. Si la cantidad de unos resulta mayor no deberá tomarse acción alguna y por lo tanto la señal
de validación de transmisión H permanecerá en 0.
Se supone que el funcionamiento del sistema continúa indefinidamente una vez iniciado. El
módulo de detección de inicio de ciclo se deberá diseñar en VHDL e incorporar al
esquemático del sistema como un bloque más.
Ejemplo de funcionamiento:
Clk
A 1 0 0 0 0 1 0 1 1 1 1 1 0 0 1
B 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0
S X X X X X X X X 0 1 0 1 X X X
H 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0
Inicio Ciclo de trabajo
Primer dato: Cantidad de unos de A =2, B = 2. El dato ingresado por A transmite validado
por H en 1 (mientras se recibe el segundo dato)
Segundo dato: Cantidad de unos de A = 4, B = - 5. No se toma acción alguna (H cae a cero y
por lo tanto el contenido de S es irrelevante).
Notas:
1. El Clock del sistema es único y se debe ingresar a la entrada de Clock de todos los
elementos sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 11:
Diseñar un circuito como el mostrado. La señal ST en 1 durante un bit-time, indica el inicio del
funcionamiento del sistema. En ese bit-time de inicio ingresa un número N de 4 bits positivo sin
signo por el bus. Este número N >= 1 indica el bit-time en el cual comienzan a ingresar en forma
consecutiva por la línea serie B datos de 4 bits en C2 comenzando siempre por el bit de signo
Primer dato Segundo dato
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 10 -
Reset
B
ST Fin
Clk
Bus
ROM
16X4
RAM
16X4
(considerando bit-time 1 al inmediato posterior a ST = 1). Los datos de 4 bits que ingresan por B
deben compararse con los datos almacenados en
la memoria ROM incluida en el circuito. En la
memoria ROM cada dirección deberá almacenar
como valor la dirección anterior, y los datos
almacenados deben interpretarse como datos en
C2. El mayor de ambos deberá almacenarse en
forma consecutiva en la memoria RAM, a partir
de la dirección
Cuando se complete la grabación de la memoria
se deberá hacer 1 la señal de Fin durante
exactamente un bit-time. Al transicionar Fin de
uno a cero, el sistema deberá quedar en
condiciones de iniciar un nuevo ciclo a partir de la llegada de un nuevo ST = 1. El módulo que
realiza la escritura de la RAM (generación de dirección y señal de escritura), se deberá
diseñar en VHDL e incorporar como un bloque en el esquemático general del sistema.
Ejemplo de funcionamiento
Clk 1 2 3
ST 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0
bus X 2 X X X X X X X X X X X X X
B X X X 0 0 0 1 0 0 0 1 1 0 0 0
Primer dato: Debe compararse con el dato almacenado en la dirección 0 de la ROM (que
guarda el dato 1111), el mayor de ambos se grabará en la dirección 0 de la RAM
Segundo dato: Debe compararse con el dato almacenado en la dirección 1 de la ROM (que
guarda el dato 0000), el mayor de ambos se grabará en la dirección 1 de la RAM.
Notas:
1. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. En la ROM la dirección 0 guarda el dato 1111, la dirección 1111 guarda el dato 1110 y así
siguiendo. Los datos almacenados deben interpretarse como números en C2.
4. La señal ST puede repetirse durante el ciclo y el circuito diseñado deberá ser capaz de
ignorarla.
5. El diseñador debe garantizar la carga inicial de los datos pedidos en la ROM.
6. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 12:
Diseñar el siguiente sistema: A y B son dos líneas sincrónicas con Ck. El ciclo de trabajo se
inicia cuando ambas asumen el valor lógico 1 por 2 bit-times consecutivos y luego el valor
lógico 0 durante el tercer y cuarto bit-time. A partir de ese momento la información que ingresa
por A y B deberá interpretarse como números de 4 bits cada uno, positivos y negativos en C2,
ingresando ambos por el bit de signo. Si los dos números que ingresan simultáneamente son de
Primer dato Segundo dato
Otros ST = 1 que deben ignorase. Bit-time 1
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 11 -
Reset
A
B Fin
Clk
RAM
16X4
A
H
B
S
Clk Fin
? Reset
distinto signo, deberán sumarse. Si los números son del mismo signo deberán restarse (número
que ingresa por A menos número que ingresa por B). El
resultado de cada grupo deberá almacenarse en la
memoria RAM a partir de la dirección 0 y en forma
consecutiva (sin direcciones vacías intermedias).
El ciclo finalizará cuando se presente alguna de estas
situaciones:
a) La memoria queda completamente cargada.
b) Por tres veces consecutivas, el resultado de la
operación (cualquiera ella sea) resulta ser un
número positivo par.
En ambos casos, se deberá levantar la señal de Fin por exactamente un bit-time, debiendo
quedar el sistema en condiciones de reiniciar su funcionamiento al transicionar Fin de uno a
cero. El módulo de detección de la condición b de finalización se deberá diseñar en VHDL e
incorporar al esquemático general del sistema como un bloque.
Ejemplo de funcionamiento:
Inicio 1º grupo 2º grupo 3º grupo
A 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 0 1
B 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0
Primer grupo: Los números son de distinto signo, se realizará A+B = (-6) + 2 = - 4, que se
graba en la dirección 0 de la RAM.
Segundo grupo: Los números son de igual signo, se realizará A – B = 5 – 3 = 2, que se graba
en la dirección 1 y cumple con la condición de ser positivo y par.
Tercer grupo: Los números son de distinto signo, se realizará A + B = (-2) + 6 = 4, se grabará
en la dirección 2, por 2º vez consecutiva se cumple que el resultado es positivo y par.
Notas:
1. El Clk del sistema es único y debe ingresarse en forma obligatoria a la entrada de Clk de
todos los elementos sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 13: Diseñar el siguiente sistema: A y B son dos líneas sincrónicas
con Clk. El ciclo de trabajo se inicia cuando ambas asumen el
valor lógico 1 por tres bit-times consecutivos y luego en forma
inmediata, el valor lógico 0 durante el cuarto bit-time. A partir
de ese momento la información que ingresa por A y B deberá
interpretarse como números de 4 bits cada uno, positivos y
negativos en C2, ingresando ambos por el bit de signo. Si los
dos números que ingresan simultáneamente son de distinto
signo, deberán sumarse. Si los números son del mismo signo
deberán restarse (número que ingresa por A menos número que
ingresa por B). El resultado de cada grupo deberá transmitirse en serie por la línea S siempre
que resulte menor a 2, comenzando por el bit de signo. Si el resultado resulta igual o mayor a 2
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 12 -
Reset
Fin
A
B
Clk S
ROM
16X4
no deberá tomarse acción alguna. La transmisión deberá validarse con la línea H en uno
mientras por S se presenten datos válidos.
El ciclo de trabajo finalizará cuando por tres veces consecutivas, el resultado de la
operación (cualquiera ella sea) resulte ser un número negativo par. El módulo responsable de
evaluar las condiciones de finalización y generar la señal Fin deberá diseñarse en VHDL, e
incorporarse al esquemático general del sistema.
Ejemplo de funcionamiento:
Inicio 1º grupo 2º grupo 3º grupo
A 1 1 1 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1
B 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0
S X X X X X X X X X 1 1 0 0 X X X X 1 0
H 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1
Primer grupo: Los números son de distinto signo, se realizará A+B = (-6) + 2 = - 4, que es
menor que 2 por lo que se transmitirá por S validado por H en 1. Es una ocurrencia de la
condición de negativo y par.
Segundo grupo: Los números son de igual signo, se realizará A – B = 6 – 3 = 3, que es mayor
a 2 y por lo tanto no se transmite bajando H a cero.
Tercer grupo: Los números son de distinto signo, se realizará A + B = ( -7) + 1 = -6 , que es
menor a 2 y por lo tanto se transmite. Es una ocurrencia de la condición de negativo y par.
Notas:
1. El Clk del sistema es único y debe ingresarse en forma obligatoria a la entrada de Clk de
todos los elementos sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Es responsabilidad del diseñador sincronizar las señales de entrada
Problema 14: Diseñar un sistema como el mostrado, que contiene una
memoria ROM completamente cargada con datos de 4 bits
positivos y negativos en C2. A y B son dos líneas
sincrónicas con Clk. El ciclo de trabajo se inicia cuando A
asume el valor lógico 1 y B asume el valor lógico 0 por 3 bit-
times consecutivos. A partir de ese momento la información
que ingresa por A y B deberá interpretarse como números de
4 bits cada uno, positivos y negativos en C2, ingresando
ambos por el bit de signo. Cada dirección de la ROM
almacenará como valor la dirección + 2, interpretado como
número en C2. Los números que ingresan por A y B en serie
serán tratados como grupos de 2 números de los cuales se obtendrá el promedio. El promedio de
cada grupo se comparará con el contenido de la memoria ROM a partir de la dirección 1111 en
forma decreciente y consecutiva. Cada vez que el promedio resulte mayor o igual al contenido de
la memoria se colocará la señal S en uno.
El ciclo finalizará cuando por tres veces consecutivas, el promedio del grupo resulte ser menor
al valor correspondiente contenido en la memoria. En este caso, se deberá levantar la señal de
Fin por exactamente un bit-time, debiendo quedar el sistema en condiciones de reiniciar su
funcionamiento al transicionar Fin de uno a cero. El módulo responsable de obtener el
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 13 -
A `
V
B
Clk F
? Reset
promedio deberá diseñarse en VHDL e incorporarse como un bloque al esquemático general
del sistema.
Ejemplo de funcionamiento:
Inicio 1º grupo 2º grupo 3º grupo
A 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0 1
B 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0
Primer grupo: Se calcula el promedio y se compara con el contenido de la dirección 1111 de
la ROM (que contiene el dato 0001). Si resulta menor debe levantarse la señal S.
Segundo grupo: Se calcula el promedio y se compara con el contenido de la dirección 1110
de la ROM (que contiene el dato 0000). Si resulta menor debe levantarse la señal S.
Tercer grupo: Se calcula el promedio y se compara con el contenido de la dirección 1101 de
la ROM (que contiene el dato 1111) y así siguiendo. Si resulta menor debe levantarse la
señal S.
Se deben ir contabilizando la cantidad de veces consecutivas que el promedio resulta menor
que el contenido correspondiente de la ROM
Notas:
1. El Clk del sistema es único y debe ingresarse en forma obligatoria a la entrada de Clk de
todos los elementos sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. El diseñador debe garantizar la carga inicial de los datos pedidos en la ROM.
4. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 15:
Diseñar el siguiente sistema: A y B son dos líneas sincrónicas
con Clk. El ciclo de trabajo se inicia cuando ambas asumen el
valor lógico 1 durante tres bit-times consecutivos y luego
ambas el valor 0 durante el cuarto bit-time. A partir de ese
momento deberá analizarse la información que ingresa por A
y B para detectar alguna de estas dos situaciones:
1. Por seis bit-times consecutivos, A y B asumen el mismo
valor (sin importar si es uno o cero). En este caso se levantará la señal V por exactamente un
bit-time.
2. En dos ocasiones distintas, o sea separadas por al menos un bit-time en que la condición no
se cumple, A y B asumen distinto valor durante cuatro bit-times consecutivos. En este caso
se levantará la señal F por exactamente un bit time.
En ambas situaciones, se dará por finalizado el ciclo de trabajo al transicionar V o F de uno a
cero, y el sistema deberá quedar en situación de poder detectar un nuevo inicio y comenzar
entonces con un nuevo ciclo de funcionamiento. El módulo responsable de evaluar la condición
2 y generar la señal F deberá diseñarse en VHDL e incorporarse como un bloque más al
esquemático del sistema.
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 14 -
Reset
Fin
ST
Bus
Clk A
RAM
16X4
Ejemplo de funcionamiento:
Inicio Ciclo de funcionamiento
A 1 1 1 1 0 1 0 1 0 0 1 0 0 1 1 1 0 0 1
B 0 1 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0
S X X X X X X X X X 1 1 0 0 X X X X X X
H 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
1º Situación 2º Situación
1º Situación: A y B asumen el mismo valor por cuatro bit-times consecutivos, pero no
alcanza para cumplir con la condición impuesta (6 bit-times consecutivos), por lo que la
condición deberá ser evaluada de nuevo cuando A y B asuman otra vez valores iguales.
2º Situación: A y B asumen valores distintos por exactamente cuatro bit-times consecutivos
(el quinto bit-time asumen el mismo valor). Por lo tanto, es la primera ocurrencia de la segunda
situación, y debe recordarse.
Notas:
1. El Clk del sistema es único y debe ingresarse en forma obligatoria a la entrada de Clk de
todos los elementos sincrónicos.
2. Es responsabilidad del diseñador sincronizar las señales de entrada
3. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
Problema 16:
Diseñar un circuito como el mostrado. La señal ST en 1
durante un bit-time, indica el inicio del funcionamiento
del sistema. En ese bit-time de inicio ingresa un número
N de 4 bits positivo sin signo por el bus. Este número N
>= 1 indica el bit-time en el cual comienzan a ingresar
por el mismo bus, datos válidos para el sistema de 4 bits
(considerando bit-time 1 al inmediato posterior a ST = 1).
Se deberá detectar la paridad de dichos datos, y aquellos
que tengan paridad impar deben grabarse a partir de la
dirección 0 y en forma consecutiva (no deben quedar
direcciones intermedias sin grabar) en la RAM incluida en el circuito.
El ciclo de trabajo finalizará cuando se presente alguna de las siguientes situaciones:
1. Por el bus ingresa el dato “1111”. En cuyo caso se levantarán las señales A y Fin
durante exactamente un bit-time.
2. Se graba toda la memoria con datos. En este caso una vez que se ha completado la
grabación se levantará la señal Fin por exactamente un bit-time.
En ambos casos, al transicionar Fin de uno a cero, el sistema deberá quedar en condiciones de
iniciar un nuevo ciclo a partir de la llegada de un nuevo ST = 1. Los módulos de detección de
paridad impar y validación de ciclo deberán diseñarse en VHDL e incorporarse como bloques
al esquemático general del sistema.
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 15 -
Reset
Fin
A
B
Clk L
RAM
16X4
Ejemplo de funcionamiento:
Clk 1 2 3
ST 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0
bus X 2 X 1 3 4 0 2 6 0 5 10 11 1 8
Notas:
1. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. La señal ST puede repetirse durante el ciclo y el sistema deberá ser capaz de ignorarla.
4. Es responsabilidad del diseñador sincronizar las señales de entrada al sistema.
Problema 17: Diseñar el siguiente sistema: A y B son dos líneas
sincrónicas con Clk. El ciclo de trabajo se inicia cuando
ambas asumen el valor lógico 1 durante tres bit-times
consecutivos y cero en el siguiente. A partir de ese
momento la información que ingresa por A deberá
interpretarse como palabras de 4 bits a verificar
utilizando la información que ingresa al mismo tiempo
por B. La misma también consiste en palabras de 4 bits,
pero que bit a bit son las negadas de las que se presentan
al mismo tiempo por A. En caso de no ocurrir lo antes
mencionado se interpretará que ha ocurrido algún error
en la transmisión y se levantará por exactamente un bit-
time la señal de alarma L.
Todas las palabras recibidas por A y que resulten correctas, deberán almacenarse en la
memoria RAM sincrónica en forma consecutiva a partir de la dirección 15 en forma decreciente.
El ciclo de trabajo se dará por terminado cuando por tres veces consecutivas se detecten
palabras con errores. En este caso se levantará la señal de Fin por exactamente un bit-time,
debiendo quedar el sistema en condiciones de detectar otra condición de inicio y comenzar un
nuevo ciclo de trabajo. El módulo responsable de direccionar la RAM y generar la señal de
escritura deberá diseñarse en VHDL e incorporarse como un bloque al esquemático general
del sistema.
Ejemplo de funcionamiento:
Inicio Ciclo de funcionamiento
A 0 1 1 1 0 1 0 1 0 0 1 0 0 1 1 1 0 1 1
B 1 1 1 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0
L 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0
1º Palabra 2º Palabra 3º Palabra
Datos con paridad impar por lo que se graban en la RAM
Otros ST = 1 que deben ignorase. Bit-time 1
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 16 -
N
Fin
Reset
Clk
Clk
Mayor
A
B
ROM
16X4
Primer palabra: Resulta correcta pues bit a bit la palabra que ingresa por B al mismo tiempo
es la negada. Por lo tanto deberá grabarse en la RAM (en la dirección 1111).
Segunda palabra: Resulta incorrecta pues la palabra que ingresa por B no es la negada bit a
bit y por lo tanto no se graba en la memoria y se levanta L por un bit-time. También se tiene
en cuenta para una eventual condición de Fin.
Tercer palabra: Tampoco es correcta por lo que se procede igual que en el caso de la segunda
palabra.
Notas:
1. Se garantiza que la condición de Fin se presentará antes de que la memoria esté
completamente cargada.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. El Clk del sistema es único y debe ingresarse en forma obligatoria a la entrada de Clk de
todos los elementos sincrónicos.
4. Es responsabilidad del diseñador sincronizar las señales de entrada
Problema 18:
Diseñar un sistema como el mostrado: El ciclo de
trabajo inicia con las señales A y B en 1 por cuatro
bit-times consecutivos. En el cuarto bit-time se
presenta por el bus N un número de 4 bits positivo
sin signo >= 1, que indica la cantidad de grupos de
dos datos que deberá procesar el sistema durante
el ciclo. Los datos de 4 bits ingresan por A y B en
forma seriada a partir del bit-time posterior al
inicio, comenzando por el bit de signo. Se deben
interpretar como números en C2 y obtenerse el promedio de cada grupo de dos datos. Dicho
promedio se deberá almacenar en la memoria RAM a partir de la dirección 1111 en forma
decreciente y consecutiva. El ciclo finalizará cuando se hayan procesado los N grupos de datos.
En el bit- time siguiente a la grabación del último promedio, se deberá hacer cero la señal Fin
(que en todo otro momento deberá valer 1), durante exactamente un bit-time. La señal Fin en
cero validará la presentación del mayor de los promedios obtenidos en el ciclo que deberá
mostrarse en el bus de salida Mayor. Luego de que la señal Fin transicione de cero a uno, el
sistema debe quedar en condiciones de iniciar otro ciclo y procesar otros N grupos de datos. El
módulo de control de ciclo que lleva el conteo de la cantidad de grupos procesados, e informa
que ha finalizado el ciclo de trabajo, se deberá diseñar en VHDL e incorporar como un bloque
al esquemático general del sistema.
Ejemplo de funcionamiento:
Inicio Ciclo de funcionamiento
A 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1
B 1 1 1 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0
N X X X X 2 X X X X X X X X X X X X X X
Fin 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
1º Grupo 2º Grupo Se espera inicio
Se presenta el
mayor promedio
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 17 -
Reset
H
A
C
Clk S
ROM
16X4
Notas:
1. El Clk del sistema es único y debe ingresarse en forma obligatoria a la entrada de Clk de
todos los elementos sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Es responsabilidad del diseñador sincronizar las señales de entrada
Problema 19:
El sistema mostrado recibe por la línea A datos serie en C1 de
formato variable. Además el sistema incluye una memoria
ROM de 16 x 4 completamente cargada con datos en C1. En
particular, cada dirección de la memoria guardará un dato que
se obtiene de negarla bit a bit. La línea de datos A permanece
en 1 mientras no ingresa información relevante. La llegada de
un dato se informa con un bit de Start en cero. En ese bit-time,
la línea C de control indica la cantidad de bits del dato que
está llegando de la siguiente forma:
C = 1 Indica que el dato es de 4 bits (incluyendo el bit de signo).
C = 0 Indica que el dato es de 3 bits (incluyendo el bit de signo).
Una vez ingresado el dato serie, se garantiza que A permanecerá en uno al menos durante un
bit_time.
Cada dato recibido deberá compararse con los datos almacenados en la memoria ROM
comenzando por la dirección 0. El menor de ambos deberá transmitirse en serie, lo antes posible
por la línea S comenzando por el bit menos significativo. La transmisión se validará con la señal
H en 1. En todo otro momento la línea H permanece en cero. Una vez iniciado el funcionamiento
del sistema ya no se detendrá. Cuando se haya recorrido toda la ROM, se deberá volver a
comparar con la dirección cero. El módulo encargado de detectar la llegada y recibir los datos
que ingresan por A deberá diseñarse en VHDL e incorporarse como un bloque al esquemático
general del sistema.
Ejemplo de funcionamiento:
A 1 1 0 Ds D3 D2 D1 1 0 Ds’ D2’ D1’ 1 1 0 Ds” D3” D2” D1”
C X X 1 X X X X X 0 X X X 1 1 1 0 1 0 0
H 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0
1ºDato (4bits) 2º Dato (3 bits) 3ºDato (4bits)
Notas:
1. El Clk del sistema es único y debe ingresarse en forma obligatoria a la entrada de Clk de
todos los elementos sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. El diseñador debe garantizar la carga inicial de los datos pedidos en la ROM.
4. Es responsabilidad del diseñador sincronizar las señales de entrada
Bit start
con C = 1
Bit start
con C = 1
Bit start
con C = 0
Digital II – TP diseño con esquemáticos y VHDL – Año 2009
- 18 -
Reset
Menor
A
H
C
Fin
Clk
?
Problema 20:
El sistema mostrado recibe por la línea A datos serie de
4 bits en C2, más un bit de paridad. El ciclo de trabajo
inicia con la señal C en uno por dos bit times
consecutivos y un tercero en cero. A partir del inicio
pueden presentarse datos en A. La llegada de un dato se
anuncia con un bit de Start en cero (durante el ciclo de
trabajo, si no presenta datos, A está en uno). En el bit-
time del bit de Start, C indicará la modalidad de trabajo
del sistema a saber:
C = 1 Indica que el sistema trabaja con paridad par, para ese dato.
C = 0 Indica que el sistema trabaja con paridad impar, para ese dato.
De cada dato recibido, se deberá testear la paridad, de acuerdo con la modalidad que
corresponda. El sistema debe obtener siempre el menor de todos los datos correctos recibidos
hasta el momento, y presentarlo en el bus de salida Menor validado con H en uno durante un bit-
time (en todo otro momento H será cero). Los datos incorrectos no se consideran para la
comparación.
El ciclo de trabajo finalizará cuando por tres veces consecutivas se reciban datos incorrectos de
acuerdo con la paridad que corresponda. Cuando esto ocurra, se levantará la señal Fin durante un
bit- time y el sistema deberá quedar a la espera del inicio de otro ciclo de trabajo. El módulo que
verifica si los datos recibidos son correctos e identifica y almacena el menor de todos ellos
para presentarlo al finalizar, se deberá diseñar en VHDL e incorporarse al esquemático
general del sistema.
Ejemplo de funcionamiento:
A X X X 1 1 0 Ds D3 D2 D1 DP 1 0 Ds” D3” D2” D1” DP” 1
C 1 1 0 X X 1 X X X X X X 1 1 1 0 1 0 0
H 0 0 0 0 0 0 0 0 0 0 0 1(*) 0 0 0 0 0 0 1($)
Inicio 1ºDato + bit paridad 2º Dato + bit paridad
(*) H será 1 si el dato recibido es correcto, sino quedará en cero.
($) H será 1 si llegó algún dato correcto (de los 2 recibidos). Si los dos datos s fueron correctos,
en el bus Menor se mostrará el menor de ambos. Si sólo uno fue correcto, se mostrará ese dato.
Notas:
1. El Clk del sistema es único y debe ingresarse en forma obligatoria a la entrada de Clk de
todos los elementos sincrónicos.
2. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
3. Es responsabilidad del diseñador sincronizar las señales de entrada.
Bit start
con C = 0
Bit start
con C = 1
Top Related