Rosa Corti
2012
Digital II
Diseño RTL ad-hoc integrando
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
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 2 -
Reset
S
L
Bus H
Clk
Reset
L
S
Bus
Clk
RAM
16X4
FIN
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 la
secuencia 101 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 –3. 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). 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. Los módulos de detección de inicio y fin y el bloque
comparador con signo deberán diseñarse en VHDL e incorporarse al esquemático general del
sistema.
Ejemplo de funcionamiento:
L 1 1 0 1 1 0 1 1 0 0 1 0 X 1 0 0 1
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
RAM llena
(*) Los datos 1º y 3º se suponen > -3º (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 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 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 – 5 º, deberá transmitirse
en serie por la línea S, lo antes posible comenzando por el bit menos significativo. La
Se espera
Inicio
Inicio
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 3 -
Reset
L
S
Bus
Clk
RAM
16X4
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), y el módulo de detección de inicio se deberán diseñar en VHDL e
incorporarse 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 P1 P2 P3 PS 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 > -5º.
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 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) y la memoria RAM,
deberán 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
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 4 -
Reset
S
L
Bus
H
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, 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 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 Clk, 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 F.
O sea, el primer dato se comparará con el número guardado en la dirección F, el segundo dato
con el número de la dirección E 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
que controla su lectura, y el 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 F de la ROM.
S2 será el mayor entre D2 y el número de la dirección E de la ROM.
S3 será el mayor entre D3 y el número de la dirección D 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.
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 5 -
Reset
L
S
Bus
Clk
RAM
16X4
Reset H
L
Clk S
ROM
16X4
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 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 cada dirección guarda
el mismo valor como dato. El inicio del ciclo de trabajo se
indica por la llegada por la línea L de tres unos consecutivos
seguidos por un cero. 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. 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, el módulo comparador con signo y el que
genera H, deberán diseñarse en VHDL e incorporarse al esquemático general del sistema.
Ejemplo de funcionamiento:
L 1 1 1 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 6:
Se debe diseñar un circuito como el mostrado, en el cual se incluye
una memoria RAM de 16X4 completamente cargada con la palabra
“0000”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á
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 6 -
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 016. Cuando esto ocurra se levantará
la señal S por exactamente dos bit-times 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, la
generación de la señal de escritura y el bloque encargado de generar Fin deberán 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 0 1
Bus X X X X Dir1 D1 X X Dir2 D2 Dir3 D3 X 016 016 X X X X
S 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 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 016, 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 7:
Diseñar un sistema como el mostrado, con una memoria ROM de
32 x 5 completamente cargada con datos en C2, de forma que en
cada locación se guarda como dato el valor de la dirección
correspondiente. Cada vez que la línea I asume el valor 1 durante
exactamente un bit-time, por la línea L ingresan datos de formato
variable (3 a 5 bits contando el bit de signo), también en C2
comenzando por el bit de signo. La cantidad variable de bits N se
indica por el Bus (3 bits) cada vez que arriba un nuevo dato,
cuando la línea I es igual a 1. El sistema debe obtener el
promedio de cada dato recibido por L con uno de los datos almacenados en la memoria ROM. El
primer dato recibido por L se promediará con el último almacenado en la ROM, el segundo dato
con el penúltimo almacenado en la ROM y así sucesivamente. Cada resultado se presentará
durante exactamente un bit-time en el bus S a partir del bit-time inmediato posterior al ingreso
del último bit significativo por L. S permanecerá con todos sus bits en cero salvo cuando
presenta los promedios. Cuando por dos veces consecutivas el promedio obtenido resulte menor
a -3, se deberán volver a utilizar los datos desde el final de la ROM para obtener los promedios
que corresponda calcular a continuación. El funcionamiento del sistema continuará en forma
indefinida.
La memoria ROM cargada de datos, el módulo que la direcciona y la detección de la
ocurrencia de dos veces consecutivas deberán diseñarse en VHDL e incorporarse al
esquemático general del sistema.
Se espera Inicio
I
Clk
S ROM
32 x 5Bus (3)
L
Reset
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 7 -
Reset
ST Fin
Clk
Bus
RAM
16X4
Ejemplo de funcionamiento:
L X X Es1 E3
1 E2
1 E1
1 X Es
2 E4
2 E3
2 E2
2 E1
2 X … X ES
n E2
n E1
n …
I 0 1 0 0 0 0 1 0 0 0 0 0 0 … 1 0 0 0 …
Bus X 4 X X X X 5 X X X X X X … 3 X X X …
S 0 0 0 0 0 0 P1 0 0 0 0 0 P2 0 0 0 0 0 Pn
Notas:
1. La señal de Reset lleva al sistema a condiciones iniciales cada vez que asume en valor 1.
2. El Clock del sistema es único y debe ingresar a la entrada de Clock de todos los elementos
sincrónicos.
3. Se garantiza que las ocurrencias de I = 1 no se producirán mientras ingresan datos serie por
L, siendo el caso más ajustado el que se ejemplifica en el diagrama entre los daos 1 y 2.
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 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 promedio
entero de cada grupo y grabarlo en la memoria RAM en forma
consecutiva a partir de la dirección F. O sea, el primer promedio
se grabará en la dirección F, el siguiente en la dirección E y así
siguiendo hasta la dirección 0. Cuando se complete la grabación
de la memoria se deberá hacer 1 la señal de Fin durante
exactamente dos bit-times. 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,
generación de la señal Fin y direccionamiento de la RAM deberán 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 1 0 0
FIN Se espera inicio
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.
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 8 -
Reset
A Fin
B
Clk
RAM
16X4
Problema 9:
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
bloque de inicio y los módulos de recepción de los datos serie que ingresan por A y B, deberán
diseñarse en VHDL e incorporarse 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.
Problema 10:
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 dos bit-times consecutivos y luego en forma
inmediata, el valor lógico 0 durante otros dos bit-times. 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
Primer dato Segundo dato
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 9 -
Reset Fin
B
ST S
Clk H
Bus
ROM
16X4
A
H
B
S
Clk Fin
Reset
deberán restarse (número que ingresa por B menos número
que ingresa por A). El resultado de cada grupo deberá
transmitirse en serie por la línea S siempre que resulte menor a
4, comenzando por el bit menos significativo. Si el resultado
resulta igual o mayor a 4 no deberá tomarse acción alguna. La
transmisión deberá validarse con la línea H en cero mientras
por S se presenten datos válidos (en todo otro momento H es
igual a 1).
El ciclo de trabajo finalizará cuando por dos veces
consecutivas, el resultado de la operación (cualquiera ella sea) resulte ser un número positivo
impar. El módulo de detección de inicio y el módulo responsable de evaluar las condiciones de
finalización y generar la señal Fin deberán 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 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1
B 0 1 1 0 0 1 1 0 1 0 1 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 0 1
H 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0
Primer grupo: Los números son de distinto signo, se realizará A+B = 6 + (- 3) = 3, que es
menor que 4 por lo que se transmitirá por S, comenzando por el bit menos significativo,
validado por H en 0. Es una ocurrencia de la condición de positivo e impar.
Segundo grupo: Los números son de igual signo, se realizará B – A = 7 – 1 = 6, que es mayor
a 4 y por lo tanto no se transmite subiendo H a uno.
Tercer grupo: Los números son de distinto signo, se realizará A + B = (-7) + 1 = -6, que es
menor a 4 y por lo tanto se transmite, comenzando por el bit menos significativo, validado
por H en cero.
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 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 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
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 10 -
A
H
B
S
Ck
Reset
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 menor de ambos deberá transmitirse en serie por la línea S comenzando
por el bit menos 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 0 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 que el dato de la ROM 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 tanto el dato de B 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 F, guarda el 0000 como dato. Los datos almacenados en la ROM 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.
Problema 12: Diseñar un circuito como el mostrado. La señal B en cero y A
en uno 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 menos significativo.
Deberá compararse la cantidad de unos de cada palabra ingresada por A con el número ingresado
al mismo tiempo por B:
Primer dato Segundo dato
Otros ST = 1 que deben ignorase.
Bit-time 1
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 11 -
Reset
B
ST Fin
Clk
Bus
ROM
16X4
RAM
16X4
1. Si la cantidad de unos del dato ingresado por A resulta mayor 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 (en todo otro momento H = 0).
2. Si la cantidad de unos resulta menor al número ingresado por B 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 y el módulo que cuenta la cantidad de unos de A se
deberán diseñar en VHDL e incorporarse al esquemático general del sistema.
Ejemplo de funcionamiento:
Clk
A 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1
B 0 0 0 0 1 1 1 0 0 1 0 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 se transmite
validado por H en 1 (mientras se recibe el segundo dato)
Segundo dato: Cantidad de unos de A = 1, 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 13:
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 (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 los dos
dato comparados deberá almacenarse en forma consecutiva en la memoria RAM, a partir de la
dirección cero. Cuando se complete la grabación de la memoria se deberá hacer 1 la señal de Fin
Primer dato Segundo dato
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 12 -
Reset
A
B Fin
Clk
RAM
16X4
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
recibe los datos serie, y el que realiza la escritura de la RAM (generación de dirección y señal
de escritura), se deberán diseñar en VHDL e incorporar como bloques 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 1 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 14:
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 menos
significativo. 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á 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.
Primer dato Segundo dato
Otros ST = 1 que deben ignorase. Bit-time 1
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 13 -
A
H
B
S
Clk Fin
Reset
b) Por dos 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 inicio y el módulo de detección de la condición b de
finalización se deberán diseñar en VHDL e incorporarse al esquemático general del sistema.
Ejemplo de funcionamiento:
Inicio 1º grupo 2º grupo 3º grupo
A 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1
B 0 1 1 0 0 0 1 0 0 1 1 0 0 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, lo que
ocasiona que finalice el ciclo de trabajo.
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 15: Diseñar el siguiente sistema: A y B son dos líneas
sincrónicas con Clk. El ciclo de trabajo se inicia cuando
la señal A asume el valor lógico 0 por un bit-time y
luego en forma inmediata, el valor lógico 1 durante otros
tres 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. Los dos
números que ingresan simultáneamente deberán sumarse
obteniéndose un resultado representado con 4 bits. Si
el resultado de la operación es correcto deberá transmitirse en serie por la línea S, comenzando
por el bit menos significativo. Si el resultado resulta incorrecto no deberá tomarse acción alguna.
La transmisión deberá validarse con la línea H en cero mientras por S se presenten datos válidos
(en todo otro momento H es igual a 1).
El ciclo de trabajo finalizará cuando por dos veces consecutivas, el resultado de la operación
resulte incorrecto. Para indicar la finalización del ciclo de trabajo se deberá levantar la señal Fin
durante exactamente dos bit-times. Cuando Fin transicione de uno a cero, el sistema deberá
estar en condiciones de detectar otro inicio.
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 14 -
Reset
Fin
A
B
Clk S
ROM
16X4
El módulo de detección de inicio y el módulo responsable de evaluar la condición de
finalización y generar la señal Fin deberán diseñarse en VHDL, e incorporarse al
esquemático general del sistema.
Ejemplo de funcionamiento:
Inicio 1º grupo 2º grupo 3º grupo
A 1 0 1 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1
B X X X X X 1 1 0 1 0 1 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 0 1
H 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0
Primer grupo: Se realizará A+B = 6 + (- 3) = 3 que se transmite en serie comenzando por el
bit menos significativo.
Segundo grupo: Se realizará A+B = 2 + 7 = 9, primer resultado incorrecto.
Tercer grupo: Se realizará A + B = (-7) + 1 = -6, que se transmite en serie comenzando por el
bit menos significativo.
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 16: 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 0 y B asume el valor lógico 1 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 menos significativo. 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 entero. 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 menor o igual al contenido de la memoria se colocará la señal S en uno.
El ciclo de trabajo finalizará cuando por tres veces consecutivas, el promedio del grupo resulte
ser mayor 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 direccionar la ROM y el que obtiene el promedio entero deberán
diseñarse en VHDL e incorporarse como bloques al esquemático general del sistema.
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 15 -
Reset
Menor
A
H
C
Fin
Clk
Ejemplo de funcionamiento:
Inicio 1º grupo 2º grupo 3º grupo
A 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 1 0 0 1
B 0 1 1 1 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 F de la
ROM (que contiene el dato D). Si resulta menor o igual debe levantarse la señal S.
Segundo grupo: Se calcula el promedio y se compara con el contenido de la dirección E de la
ROM (que contiene el dato C). Si resulta menor o igual debe levantarse la señal S.
Tercer grupo: Se calcula el promedio y se compara con el contenido de la dirección D de la
ROM (que contiene el dato B) y así siguiendo. Si resulta menor o igual debe levantarse la
señal S.
Se deben ir contabilizando la cantidad de veces consecutivas que el promedio resulta mayor
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 17:
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 tres bit times consecutivos y un cuarto bit-time
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 permanece siempre en
uno). En el bit-time correspondiente al 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á verificar 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 el bit-
time posterior a la finalización del ingreso de cada dato
(en todo otro momento H será cero). Los datos incorrectos
no se consideran para la comparación. Por lo tanto, el
sistema comenzará a presentar datos en el bus de salida
Menor a partir de la recepción del primer dato correcto.
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.
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 16 -
A `
V
B
Clk F
Reset
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 debe diseñar en VHDL. Lo mismo se hará con el
módulo de generación de Fin, ambos bloques deberán incorporarse al esquemático general
del sistema.
Ejemplo de funcionamiento:
A X X X X 1 0 Ds D3 D2 D1 DP 1 0 Ds” D3” D2” D1” DP” 1
C 1 1 1 0 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 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.
Problema 18:
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 dos bit-times consecutivos y luego ambas
el valor 0 durante otros dos bit-times consecutivos. 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 cinco 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 bloque que detecta el inicio y el módulo responsable de evaluar la condición 2 y generar la
señal de salida F deberán diseñarse en VHDL e incorporarse como bloques al esquemático
general del sistema.
Bit start
con C = 0
Bit start
con C = 1
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 17 -
Reset
Fin
ST
Bus
Clk A
RAM
16X4
Ejemplo de funcionamiento:
Inicio Ciclo de funcionamiento
A 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 1
B 0 1 1 0 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 (5 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 registrarse.
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
Problema 19:
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.
El módulo de detección de paridad impar y el que se ocupa de la detección de inicio y
validación de ciclo, deberán diseñarse en VHDL e incorporarse como bloques al esquemático
general del sistema.
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 18 -
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 20: 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 cumplirse 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 F 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, así como el que se ocupa de definir la señal de alarma L se deberán diseñar en
VHDL e incorporarse como bloques 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
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 19 -
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 anterior.
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 21:
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
entero 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, y el bloque que
genera Fin se deberán diseñar en VHDL e incorporar 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
Diseño con esquemáticos y VHDL - Trabajos prácticos 2012
- 20 -
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 22:
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