Cuaderno de prácticas de la asignatura Laboratorio de Tecnolog´ıa

advertisement
Cuaderno de prácticas de la
asignatura Laboratorio de Tecnologı́a
de Computadores
José Luis Risco Martı́n
José Miguel Montanana
ii
Índice general
1. Sumador/Restador
1
1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.4. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2. Conversor de código
3
2.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.4. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.5. Anexo: Código Gray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
3. Reconocedor de secuencias
5
3.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.4. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
4. Generador de secuencias
7
4.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
4.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
4.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
5. Ascensor
9
iii
ÍNDICE GENERAL
iv
5.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
5.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
5.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
5.4. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
6. Números primos y múltiplos de siete
11
6.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
6.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
6.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
6.4. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
7. Generador de secuencias
13
7.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
7.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
7.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
7.4. Módulos disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
8. Máquina tragaperras
15
8.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
8.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
8.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
8.4. Módulos disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
9. Algorı́tmico
17
9.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
9.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
9.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
9.4. Módulos disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
9.5. Algoritmos necesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
10.Circuito ası́ncrono
21
10.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
10.2. Realización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
ÍNDICE GENERAL
10.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
v
21
vi
ÍNDICE GENERAL
Práctica 1
Sumador/Restador
1.1.
Objetivos
1. Diseñar una red iterativa combinacional que realice la suma de 2 números de 2 bits en
binario.
2. Diseñar un sumador/restador para números de 4 bits en complemento a 2 usando un
sumador binario.
1.2.
Realización
1. El diseño constará de 2 celdas iguales, cada una para realizar la suma de uno de los bits.
Para realizar el circuito vamos a utilizar puertas lógicas: XOR (7486) y NAND (7400,
7410).
2. Usaremos un sumador binario de 4 bits (7483) y puertas lógicas para la función de complemento en caso de resta y para el desbordamiento: XOR, NAND, NOT (7404).
1.3.
Simulación
Hacer el diseño en papel y luego implementarlo utilizando Xilinx para ejecutar varias simulaciones. En el caso del apartado a), diseñar primero un elemento de la red iterativa, generar un
sı́mbolo a partir de este, y diseñar entonces el sumador final combinando dos sı́mbolos.
Cuando se obtenga el resultado esperado, realizar el diseño en el entrenador. Los sı́mbolos
necesarios para diseñar los esquemáticos son:
XOR: XOR2
NAND: NAND2, NAND3
NOT: INV
1
2
PRÁCTICA 1. SUMADOR/RESTADOR
Sumador de 4 bits: ADD4. El sumador ADD4 incorpora, al contrario que el CI 7483, una
salida de desbordamiento llamada OFL. Ignorar esta salida.
1.4.
Pruebas
Realizar las siguientes pruebas, tanto en el simulador como en el entrenador, para verificar que
todo funciona correctamente:
1. Verificar primero un elemento de la red iterativa (el sı́mbolo generado en el caso de Xilinx),
para todos los posibles valores de las entradas. Finalmente, verificar el diseño completo,
con los siguientes valores:
1 + 1 = 2, 1 + 2 = 3, 3 + 3 = 2 (acarreo de salida)
2. Verificar el diseño con las siguientes pruebas:
3 + 4 = 7, 5 + (-2) = 3, (-3) + (-4) = -7, 3 - (-4) = 7, 5 - 2 = 3, (-3) - 4 = -7
6 + 3 = 9 (Desbordamiento), (-7) + (-7) = -14 (Desbordamiento)
6 - (-3) = 9 (Desbordamiento), (-7) - 7 = -14 (Desbordamiento)
Práctica 2
Conversor de código
2.1.
Objetivo
Diseñar un sistema combinacional que realice la conversión de código Gray de 4 bits a binario.
Y
4
Conversor codigo Gray
4
Z
a binario
2.2.
Realización
Para realizar el circuito utilizaremos multiplexores 4 a 1 (74153) y puertas NAND (7400).
2.3.
Simulación
Los sı́mbolos necesarios para diseñar el esquemático son:
Multiplexores 4 a 1: M4 1E
Entradas constantes: VCC, GND
El resto de sı́mbolos están enumerados en prácticas anteriores.
2.4.
Pruebas
Comprobar las 16 conversiones, tanto en el simulador como en el entrenador, para verificar que
todo funciona correctamente. Por ejemplo:
3
4
PRÁCTICA 2. CONVERSOR DE CÓDIGO
Entrada
0100
1000
1100
2.5.
Salida
0111
1111
1000
Anexo: Código Gray
El Código Gray es un caso particular de código binario (patentado por Frank Gray en 1953).
Consiste en una ordenación de 2n números binarios de tal forma que cada número sólo tenga un
dı́gito binario distinto a su predecesor.
Un código Gray de 2 bits serı́a:
00
01
11
10
Una forma sencilla de construir un código Gray de n bits es utilizar un código Gray de n − 1 bits
y añadirle un cero por la izquierda. A continuación para completar el código Gray añadiremos
un 1 por la izquierda al código Gray de n − 1 bits empezando por el último elemento. De este
modo, podremos obtener un código Gray de 3 bits a partir del código de 2 bits definido arriba.
0
0
0
0
1
1
1
1
00
01
11
10
10
11
01
00
Esta técnica de codificación se originó cuando los circuitos lógicos digitales se realizaban con
válvulas de vacı́o y dispositivos electromecánicos. Los contadores necesitaban potencias muy
elevadas a la entrada y generaban picos de ruido cuando varios bits cambiaban simultáneamente.
El uso de código Gray garantizó que en cualquier transición variarı́a tan sólo un bit.
En la actualidad, el código Gray se sigue empleando para el diseño de cualquier circuito electrónico combinacional mediante el uso de un Mapa de Karnaugh, ya que el principio de diseño de
buscar transiciones más simples y rápidas entre estados sigue vigente, a pesar de que los problemas de ruido y potencia se hayan reducido.
Práctica 3
Reconocedor de secuencias
3.1.
Objetivo
Diseñar un reconocedor de números de 4 bits que pertenezcan al intervalo 0100-1011.
reset
Reconocedor
estado
0100−1011
salida
bit
clk
3.2.
Realización
Se trata de diseñar un circuito secuencial capaz de reconocer si la entrada (un número de 4
bits que se recibe a través de una lı́nea serie durante 4 ciclos consecutivos) está en el intervalo
0100-1011. Para realizar el diseño se estudiarán dos posibilidades según el orden de llegada de los
bits: que el primer bit sea el más significativo o que sea el menos significativo. Se realizarán las
máquinas de estados de cada caso y se seleccionará la más sencilla para realizar la implementación
final.
La llegada de los bits está sincronizada por una señal de reloj. La salida será 1 cuando se
produzca la llegada del cuarto bit y el número esté en el intervalo especificado. En todos los
demás casos será cero.
5
6
PRÁCTICA 3. RECONOCEDOR DE SECUENCIAS
Cada cuatro pulsos de reloj el circuito volverá automáticamente al estado inicial. El circuito
debe tener una entrada ası́ncrona (reset) que permita llevarlo al estado inicial. El estado del
circuito se podrá visualizar en los leds para facilitar la depuración.
Para la práctica se pueden utilizar cualquier tipo de puertas de 2 y 3 entradas, biestables tipo D
(7474) e inversores. Para las entradas tanto la serie, como la de reloj, como la de reset se deben
utilizar los conmutadores. Los pulsos de reloj también se introducirán utilizando un conmutador.
3.3.
Simulación
Hacer el diseño en papel y luego implementarlo utilizando Xilinx para ejecutar varias simulaciones. Cuando se obtenga el resultado esperado, realizar el diseño en el entrenador. Los sı́mbolos
necesarios para diseñar los esquemáticos son:
Biestable D, con clear y preset: FDCP
Puertas AND, OR, NOT, ...: AND2, AND3, OR2, OR3, INV, ...
El resto de sı́mbolos están enumerados en prácticas anteriores.
3.4.
Pruebas
Realizar cuatro pruebas al azar, de forma que dos de ellas pertenezcan al intervalo y las otras
dos no.
Práctica 4
Generador de secuencias
4.1.
Objetivo
Diseñar un generador de secuencia sı́ncrono.
4.2.
Realización
Utilizando biestables JK (7476), diseñar un contador sı́ncrono descendente módulo 10 con entrada reset que genere la cuenta (en binario) 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 8, . . . La salida
deberá coincidir con el estado, es decir, que si el estado actual es S7 , la salida será 0111. Al
pulsar reset, el contador volverá a 9.
Utilizando el contador anterior y añadiendo las puertas lógicas necesarias, realice un generador
de secuencia sı́ncrono que produzca, de forma cı́clica, la siguiente secuencia de salida Z = 0, 0,
1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, . . .
4.3.
Simulación
Hacer el diseño en papel y luego implementarlo utilizando Xilinx para ejecutar una simulación.
Cuando se obtenga el resultado esperado, realizar el diseño en el entrenador. Los sı́mbolos
necesarios para diseñar los esquemáticos son:
Biestable JK: El CI 7476 contiene JKs con señales clear y preset ası́ncronas. Por ello, en
Xilinx habrá que combinar el uso de FJKC y FJKP, dependiendo de si el JK se quiere
poner a 0 al pulsar reset (FJKC) o si se quiere poner a 1 (FJKP).
El resto de sı́mbolos están enumerados en prácticas anteriores.
7
8
PRÁCTICA 4. GENERADOR DE SECUENCIAS
Práctica 5
Ascensor
5.1.
Objetivo
Diseño modular de un sistema secuencial sı́ncrono que funciona como un ascensor.
5.2.
Realización
Utilizando un contador ascendente/descendente (74169) y puertas lógicas habrá que construir
un circuito secuencial que actúe como un ascensor. El bloque básico del sistema será el contador,
cuya salida S coincide con la salida del circuito. El ascensor constará, además, de una entrada
externa A de 3 bits.
En todo momento la entrada es comparada con la salida, de modo que:
Si A=S, el contador no hará nada, lo que es equivalente a decir que el ascensor se encuentra
en el piso en el que estamos.
Si A>S, el ascensor tiene que subir, con lo cual se activará la cuenta ascendente del contador
hasta que A=S, parándose en ese momento.
Si A<S, entonces el ascensor tendrá que bajar, de modo que se activará la cuenta descendente del contador de nuevo hasta que A=S.
Mostrar la salida y la entrada del circuito en los displays 7 segmentos.
Para comparar las entradas A y S se puede utilizar un sumador de 4 bits (7483).
5.3.
Simulación
Hacer el diseño en papel y luego implementarlo utilizando Xilinx para ejecutar varias simulaciones. Cuando se obtenga el resultado esperado, realizar el diseño en el entrenador. Los sı́mbolos
necesarios para diseñar los esquemáticos son:
9
10
PRÁCTICA 5. ASCENSOR
Contador ascendente/descendente: CB4CLED
El resto de sı́mbolos están enumerados en prácticas anteriores.
5.4.
Pruebas
Realizar las siguientes peticiones al ascensor (tanto en el simulador como en el entrenador), en
el orden dado: 0, 7, 0, 3, 3, 6, 1
Práctica 6
Números primos y múltiplos de siete
6.1.
Objetivo
Diseño modular de un sistema secuencial sı́ncrono usando módulos estándar.
6.2.
Realización
La práctica constará de dos partes:
1. Diseñar un sistema secuencial utilizando un registro de desplazamiento (74194). El sistema
tendrá una entrada serie A (el primer bit que entra es el menos significativo) que tras 4
ciclos de reloj aparecerá almacenada en el registro. Una vez cargado el registro, comprobar
si su salida corresponde a un número primo o a un número múltiplo de 7. Las salidas de
ambos reconocedores deberán ir cada una a un led de modo que éste se iluminará tras 4
pulsos de reloj si el número es primo o si es múltiplo de 7.
2. Introducir en el circuito anterior una entrada de control externa C, que tras 4 pulsos de
reloj, hará que si C=0 y el número es primo se incremente un contador (74169) en una
unidad, y si C=1 y el número es múltiplo de 7 se decremente el contador. La salida del
contador será otra de las salidas del sistema y se visualizará en uno de los displays 7
segmentos.
6.3.
Simulación
Hacer el diseño en papel y luego implementarlo utilizando Xilinx para ejecutar varias simulaciones. Cuando se obtenga el resultado esperado, realizar el diseño en el entrenador. Los sı́mbolos
necesarios para diseñar los esquemáticos son:
Registro de desplazamiento: SR4CLED
El resto de sı́mbolos están enumerados en prácticas anteriores.
11
12
PRÁCTICA 6. NÚMEROS PRIMOS Y MÚLTIPLOS DE SIETE
6.4.
Pruebas
Realizar las siguientes pruebas, tanto en el simulador como en el entrenador1 :
1. 0000 (0-0), 0010 (1-0), 0011 (1-0), 0100 (0-0), 0111 (1-1), 1110 (0-1)
2. C=0, 0000 (0-0-0000), 0001 (0-0-0000), 1011 (1-0-0001), 0010 (1-0-0010)
3. C=1, 0011 (1-0-0010), 0111 (1-1-0001), 1110 (0-1-0000), 0111 (1-1-????)
1
Los números se representan en orden (de más a menos significativo). La salida se indica entre paréntesis
(primo, múltiplo de 7, estado del contador en el apartado 2)
Práctica 7
Generador de secuencias
7.1.
Objetivo
Diseño e implementación de un sistema secuencial sı́ncrono sobre FPGAs.
7.2.
Realización
La práctica constará de dos partes:
1. Generador de secuencias en los leds: Se debe diseñar un circuito que genere una secuencia
de tal forma que se visualice en la placa un led encendido que va desplazándose al siguiente
cada segundo. Para saber cuándo ha pasado un segundo se utilizará un divisor de frecuencias que se encuentra disponible en el Campus Virtual. Las entradas del circuito serán
reset, reloj y cambio y las salidas los 8 leds. Al empezar todos los leds estarán apagados, al
detectarse un flanco de cambio se encenderá el primer led, pasado un segundo el segundo
led, y ası́ sucesivamente mientras no se detecte ningún flanco en la entrada cambio. Un
flanco en la entrada cambio retornarı́a el sistema al estado inicial (todos los leds apagados).
2. Generador de secuencias en un display 7-segmentos: Se debe añadir al circuito anterior la
posibilidad de elegir entre dos secuencias a visualizar. La primera secuencia es la explicada
en el apartado anterior. La segunda secuencia es sobre un display 7-segmentos, mostrando
un segmento encendido, que va rotando al segmento adyacente cada segundo. Inicialmente
todos los leds y segmentos del display estarán apagados. Al detectarse un flanco en cambio
se comenzará a visualizar la primera secuencia. Al siguiente flanco se pasará a la segunda
y un tercer flanco retornarı́a el sistema al estado inicial.
7.3.
Simulación
Hacer el diseño en papel y luego sintetizarlo utilizando la herramienta ISE. Es imprescindible
realizar una simulación de cada uno de los apartados, durante la cual se pueda demostrar que
13
14
PRÁCTICA 7. GENERADOR DE SECUENCIAS
funciona para todas las posibles combinaciones de las entradas. Se recuerda que para simular
es necesario quitar el divisor de frecuencias, y sólo cuando se haya terminado de simular y se
esté seguro de que el circuito funciona, se añadirá el divisor de frecuencias y se generará el mapa
de bits para volcarlo sobre la FPGA.
7.4.
Módulos disponibles
Para la realización de los circuitos se dispone de los siguientes módulos:
Pads de entrada salida IBUF y OBUF (no utilizar IBUF4 ni OBUF4)
Biestables D con señal de clear ası́ncrona FDC
Registros de 4 bit con señal de reset sı́ncrona y capacitación CE (señal de carga) FD4RE
y entrada paralela de 4 bits.
Contadores módulo 16 con señal de reset sı́ncrona y señal de cuenta (RE) CB4RE.
Descodificador de 3 entradas D3 8E.
Registro con desplazamiento de 8 bits con señal de capacitación y reset sı́ncrono SR8RE.
Multiplexores del tamaño necesario (M2 1E, M4 1E, M8 1E)
Puertas lógicas. (AND, INV, OR, XOR . . . )
Pueden utilizarse otros módulos disponibles en las bibliotecas de Xilinx
Práctica 8
Máquina tragaperras
8.1.
Objetivo
Diseño e implementación de un sistema secuencial sı́ncrono modular sobre FPGAs.
8.2.
Realización
La práctica constará de dos partes:
1. Máquina tragaperras con 2 premios: Se debe diseñar un circuito que genere tres números
aleatorios de 2 bits. Las entradas del circuito serán jugar, reset, y reloj y las salidas Num1,
Num2, Num3 (de 2 bits cada uno, que se visualizan en el banco de leds) y dos premios
Premio grande y Premio medio (que se visualizan en los display 7 segmentos). La señal de
reset inicializa todos los registros y contadores a 0.
reset
jugar
2
Num1
2
Num2
2
Num3
Premio_grande
Premio_medio
reloj
El flanco de bajada de la entrada jugar se utiliza para generar tres números aleatorios:
el primer flanco de bajada genera el 1er número (Num1 ), el segundo flanco de bajada
el segundo (Num2 ) y el 3er flanco de bajada el 3er número (Num3 ). Los 3 números se
visualizan en los leds (2 bits por numero, en total 6 leds). Los premios por la jugada son:
15
16
PRÁCTICA 8. MÁQUINA TRAGAPERRAS
Premio grande: los 3 números son iguales
Premio medio: hay 2 números iguales
Si el premio es el grande se enciende el segmento superior de un display 7 segmentos. Si
el premio es el medio se enciende sólo el segmento central. Hasta que no se generan los 3
números no se visualiza el premio. Se puede jugar de nuevo volviendo a generar un flanco
de bajada de la entrada jugar.
2. Máquina tragaperras con luces intermitentes: Hay que modificar el diseño anterior para
que si el premio es el grande se encienden y apagan todos los leds del display 7 segmentos
menos el central con una frecuencia de aproximadamente 1Hz. Si el premio es el medio se
enciende y apaga sólo el segmento central.
8.3.
Simulación
Hacer el diseño en papel y luego sintetizarlo utilizando la herramienta ISE. Es imprescindible
realizar una simulación de cada uno de los apartados, durante la cual se pueda demostrar que
funciona para todas las posibles combinaciones de las entradas. Se recuerda que para simular
es necesario quitar el divisor de frecuencias, y sólo cuando se haya terminado de simular y se
esté seguro de que el circuito funciona, se añadirá el divisor de frecuencias y se generará el mapa
de bits para volcarlo sobre la FPGA.
8.4.
Módulos disponibles
Para la realización de los circuitos se dispone de los siguientes módulos:
Pads de entrada salida IBUF y OBUF (no utilizar IBUF4 ni OBUF4) y BUFG
Biestables D con señal de clear ası́ncrona y capacitación FDCE
Contadores módulo 4 con señal de clear ası́ncrona, señal de cuenta (CE) y señal de carga
(L) CB2CLE.
Comparador de 2 bits COMP2
Puertas lógicas. (AND, INV, OR, XOR . . . )
Divisor de frecuencias para generar una frecuencia de 1Hz
Registro con desplazamiento de 4 bits con señal de capacitación y clear ası́ncrono SR4CE
Práctica 9
Algorı́tmico
9.1.
Objetivo
Diseño algorı́tmico con FPGAs.
9.2.
Realización
Dir
Dato
3
8
8
L/E
Dato[Dir]
Modo
Reset
Reloj
Diseñar un sistema que deberá ser capaz de realizar las siguientes operaciones:
En un modo interactivo, el usuario podrá introducir cuatro valores de 8 bits (A, B, C y
D). Los elementos se ubicarán en las posiciones de memoria de la 0 a la 3. En este modo
el usuario podrá leer cualquier dato de la memoria visualizándolo en los LEDS.
En un modo de ejecución, la ruta de datos realizará cuatro cálculos sobre los valores
anteriores, almacenados en las posiciones de memoria de la 4 a la 7, estos son:
• Máximo común divisor de A y B
• Máximo de C y D
• Mı́nimo de C y D
• Suma de C y D
17
18
PRÁCTICA 9. ALGORÍTMICO
Los cuatro resultados se podrán inicializar a cero de forma manual en el modo interactivo.
Algunas consideraciones:
El modo (interactivo/ejecución) viene determinado por la entrada Modo.
Se podrá escribir un dato en la dirección de memoria especificada cuando, estando en
modo interactivo, se detecte un flanco en la entrada L/E. Esta entrada vendrá dada por
un conmutador (switch).
Hacer el diseño en papel. cada grupo deberá presentar al profesor una planificación de las
operaciones, en la que se describa cuantos ciclos se necesitan para realizar las operaciones y
qué puntos de control se activan en cada ciclo. Posteriormente sintetizar el diseño utilizando la
herramienta ISE.
9.3.
Simulación
Se recuerda que para simular es necesario quitar el divisor de frecuencias, y sólo cuando se
haya terminado de simular y se esté seguro de que el circuito funciona, se añadirá el divisor de
frecuencias y se generará el mapa de bits para volcarlo sobre la FPGA. Realizar las siguientes
pruebas, tanto en el simulador como en la FPGA:
(A,B,C,D) = (32, 64, 65, 129), RAM(4-7) = (32, 129, 65, 194)
(A,B,C,D) = (103, 113, 96, 18), RAM(4-7) = (1, 96, 18, 114)
(A,B,C,D) = (120, 96, 13, 13), RAM(4-7) = (24, 13, 13, 26)
9.4.
Módulos disponibles
La ruta de datos de este sistema puede implementarse con los siguientes elementos:
Memoria RAM con 16 palabras de 8 bits (RAM16X8S). En este módulo la lectura de
los elementos es ası́ncrona.
Sumadores (ADD8), para calcular la suma de los elementos y el cálculo del máximo común
divisor.
2 Comparadores (COMPM8), para calcular valores mı́nimos y máximos.
Registros (FD8CE)
Contadores
Multiplexores, biestables D y puertas lógicas
9.5. ALGORITMOS NECESARIOS
9.5.
Algoritmos necesarios
Algoritmo del máximo común divisor:
// Versión recursiva
int mcd(int a, int b) {
if(a==b)
return a;
else if(a>b)
return mcd(a-b,b);
else
return mcd(b,b-a);
}
// Versión iterativa
int mcd(int a, int b) {
int t;
while (a!=b) {
if(a>b)
a = a - b;
else {
t = a;
a = b;
b = b - t;
}
}
return a;
}
19
20
PRÁCTICA 9. ALGORÍTMICO
Práctica 10
Circuito ası́ncrono
10.1.
Objetivo
Diseño e implementación de un sistema ası́ncrono en el entrenador.
10.2.
Realización
Un circuito ası́ncrono controla la barrera de entrada a un aparcamiento. El circuito recibe dos
entradas: el Botón de apertura de la barrera y el Sensor que detecta si el coche está pasando a
través de la barrera. El sistema tiene una salida Abierta, que vale 0 si la barrera está cerrada y
1 si está abierta (considerar que se abre y cierra instantáneamente).
El comportamiento del sistema es el siguiente: la barrera está cerrada hasta que se pulse el Botón.
Entonces se abre la barrera y se queda abierta hasta que detecte que el coche ha terminado de
entrar. Cuando el coche ha entrado se cierra la barrera y se puede volver a pulsar el Botón si
otro coche quiere entrar.
Nota: no puede pasar un coche si la barrera está cerrada. Se supone que el Botón se deja de
pulsar antes de que el coche empiece a entrar.
Hacer la tabla de flujo primitiva, minimizar el número de estados y presentar la tabla de flujo
final donde se especifiquen las transiciones de estado y las salidas. A continuación implementarlo
con inversores, puertas and de 2 entradas (7408) y or de 2 entradas (7432) eliminando las carreras
y riesgos estáticos.
10.3.
Simulación
Hacer el diseño en papel y luego implementarlo utilizando Xilinx para ejecutar varias simulaciones. Cuando se obtenga el resultado esperado, realizar el diseño en el entrenador. Sólo se
necesitan utilizar puertas INV, AND y OR.
21
Descargar