Diseño con esquemáticos y VHDL Trabajos Prácticos · memoria RAM en forma consecutiva a partir...

18
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

Transcript of Diseño con esquemáticos y VHDL Trabajos Prácticos · memoria RAM en forma consecutiva a partir...

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