se debe diseñar un circuito que procesará los valores … · se debe diseñar un circuito que ......

20
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

Upload: letruc

Post on 19-Sep-2018

221 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 2: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 3: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 4: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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.

Page 5: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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á

Page 6: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 7: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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.

Page 8: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 9: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 10: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 11: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 12: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 13: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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.

Page 14: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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.

Page 15: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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.

Page 16: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 17: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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.

Page 18: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 19: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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

Page 20: Se debe diseñar un circuito que procesará los valores … · Se debe diseñar un circuito que ... momento el contenido de Bus es ... Cuando esto ocurra se levantará la señal S

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