Sunteți pe pagina 1din 16

U NIVERSIDAD NACIONAL DE S AN AGUST ÍN

FACULTAD DE PRODUCCI ÓN Y SERVICIOS


E SCUELA PROFESIONAL DE INGENIER ÍA ELECTRONICA

Guia de Laboratorio: Microelectrónica

Autor:
Alexander B. H ILARIO TACURI

August 12, 2018


UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
MICROELECTRÓNICA
Prof. PhD. Alexander B. Hilario T.
LABORATORIO 1
Fecha de entrega: 30/31 de Agosto

1. OBJETIVOS
• Introducción de programación VHDL para FPGAs
• Aprender a escribir test − benchs en VHDL
• Aprender el flujo de diseño con el ISE: Sı́ntesis, simulación y generación del Bitstream
• Aprender como asignar pins de entrada y salida del FPGA y cargar el Bitstream en el
Nexys-4 DDR Artix-7 FPGA Board.
2. CODIFICACIÓN VHDL
• Revise el material referente al curso.
3. NEXYS-4 DDR ARTIX-7 FPGA
• La placa Nexys-4 DDR puede recibir alimentación de su puerto USB. Conecte la placa al
computador via cable USB. Si no enciende, conecte la fuente de alimentación de la placa.
4. DESARROLLO DEL LABORATORIO
PARTE 1

• Problema: Una cerradura es abierta (F = 1)


solo para tres combinaciones de los switches:
0110, 1000, 1110, donde 1 representa la posición
ON del switch y 0 la posición OFF.

- Complete la tabla de verdad (ver Figura 1)


para este circuito.
- Simplifique la función Booleana.

Figure 1: Tabla de verdad

1
4.1. Flujo de diseño

• Crear un nuevo proyecto ISE. Seleccionar el dispositivo: XC7A100T-1CSG324 Artix-7


FPGA.

• Escriba el código VHDL que implementa la función Booleana simplificada. Sintetice su


circuito.

• Escriba el test-bench VHDL para probar el circuito para todas las posibles combinaciones
de las entradas.

• Realice la Functional Simulation (Simulación de comportamiento).

• Asignación de entradas y salidas: Crear un archivo UCF. Use SW0-SW3 en la placa


Nexys-4 DDR para las entradas y LED(0) para la salida.

• Implemente su diseño.

• Realice la Timing Simulation

• Generar el archivo bitstream

• Descargar el bitstream en el FPGA.

PARTE 2
4.2 Sumador completo

Un sumador completo es un circuito combinacional que forma la suma aritmética de 3 bits


de entrada. Consta de 3 entradas y 2 salidas. Dos de las entradas A y B representan los 2 bits
que van a sumarse, la tercera entrada Cin representa la cuenta que se lleva de la posición previa
significativa mas baja. La salida S representa el valor del bit menos significativo de la suma y la
salida Cout da la cuenta del valor que se lleva de salida.
Diseñar, implementar, demostrar y documentar un sumador completo en VHDL. El sumador
completo tendrá:

• 3 Señales de entrada, A, B, Cin (interruptores Nexys 4 ddr)

• 1 Señal de salida, S (Suma)

• 1 Señal de salida, Cout (Acarreo)

4.3 Comparador de 4 bits

Un circuito digital comparador realiza la comparación de dos palabras A y B de N bits


tomadas como un número entero sin signo e indica si son iguales o si una es mayor que otra en

2
tres salidas A = B, A > B y A < B. Solo una de estas salidas estará a 1 y las demás estarán a 0
dependiendo de los valores de las entradas.
Diseñar, implementar, demostrar y documentar un comparador de 4 bits en VHDL. El compara-
dor tendrá:

• 2 Señales de entrada de 4 bits cada una (interruptores Nexys 4 ddr)

• 3 Señales de salida: mayor, igual, menor (LED indicadores Nexys 4 ddr)

4.4 Flujo de diseño

• Crear un nuevo proyecto ISE. Seleccionar el dispositivo: XC7A100T-1CSG324 Artix-7


FPGA.

• Escriba el código VHDL para el sumador completo de y el comparador de 4 bits. Sintetice


su circuito.

• Escriba el test-bench VHDL para probar el circuito para todas las posibles combinaciones
de las entradas.

• Realice la Functional Simulation y la Timing Simulation (Simulación de comportamiento


y temporal).

• Asignación de entradas y salidas para el sumador completo: Crear un archivo UCF. Use
SW0-SW2 en la placa Nexys-4 DDR para las entradas y LED(0)-LED(1) para la salida.

• Asignación de entradas y salidas para el comparador: Crear un archivo UCF. Use SW0-
SW7 en la placa Nexys-4 DDR para las entradas y LED(0)-LED(2) para la salida.

• Generar el archivo bitstream.

• Descargar el bitstream en el FPGA.

3
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
MICROELECTRÓNICA
Prof. PhD. Alexander B. Hilario T.

LABORATORIO 2

Fecha de entrega 13/14 de Setiembre

1. OBJETIVOS

• Utilizar la descripción estructural y la descripción concurrente en VHDL.

• Probar circuitos combinacionales en un FPGA.

2. CODIFICACIÓN VHDL

• Revise el material del curso.

3. DESARROLLO DE LA PRACTICA

• Problema: Unidad aritmética lógica de 4 bits. Este circuito selecciona entre operaciones
aritméticas (Valor absoluto y suma) y operaciones lógicas (XOR y AND). Solo un re-
sultado (valor hexadecimal) puede ser mostrado en un display de 7 segmentos. Este es
seleccionado por la entrada sel(1..0).

• Entrada EN: Si EN = 1 → el resultado aparece en el display de 7 segmentos. Si EN = 0


→ todos los LEDs en el display de 7 segmentos estan apagados.

• Operaciones aritméticas: Las entradas A y B de 4 bits son tratadas como números un-
signed.

– A+B
– |A − B|: Resultado de 4 bits.

• Operaciones lógicas (A xnor B, A nand B). Estas operaciones son bit a bit.

• Nexys-4 DDR: Cada display de 7 segmentos tiene entradas activas-bajas y una habil-
itación activa-baja. Asegúrese de que sólo está activada una pantalla de 7 segmentos (por
ejemplo: AN0 = 0, AN1-AN7 = 1 para usar sólo la pantalla de 7 segmentos más a la
derecha).

4. FLUJO DE DISEÑO

1
• Crear un nuevo proyecto ISE. Seleccionar el dispositivo: XC7A100T-1CSG324 Artix-7
FPGA.

• Escriba el código VHDL para el circuito de la Figura 1.

– Para los circuitos A+B y |A − B| se debe utilizar sumadores completos y compuertas


lógicas.
– Para implementar el MUX y el decoder, es fuertemente recomendado usar las sen-
tencias concurrentes del VHDL. Para implementar el programa principal, use la
descripción estructural: Crear un archivo separado para los circuitos aritméticos y
lógicos, el MUX y el decodificador de 7 segmentos.

• Escriba el test-bench VHDL para probar el circuito y pruebe los casos mas representa-
tivos.

• Realice la Functional Simulation y la Timing Simulation (Simulación de comportamiento


y temporal).

• Asignación de entradas y salidas: Crear un archivo UCF. Use SW0 a SW7 en la placa
Nexys-4 DDR para las entradas A y B, SW8 a SW10 para las entradas se1 y EN y CA-
CG para la salida de 7-bits.

• Generar el archivo bitstream

• Descargar el bitstream en el FPGA.

2
Figure 1: ALU

3
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
MICROELECTRÓNICA
Prof. PhD. Alexander B. Hilario T.
LABORATORIO 3
Fecha de entrega: 04/05 de Octubre

1. OBJETIVOS
• Utilizar la descripción estructural en VHDL.
• Probar circuitos combinacionales en un FPGA.
2. CODIFICACIÓN VHDL
• Revise el material del curso.
3. DESARROLLO DE LA PRACTICA
• Problema: Implementar la forma alternativa para resolver una multiplicación de dos
números unsigned de 4 bits según el diagrama mostrado en la Figura 1.
4. FLUJO DE DISEÑO
• Crear un nuevo proyecto ISE. Seleccionar el dispositivo: XC7A100T-1CSG324 Artix-7
FPGA.
• Escriba el código VHDL para el circuito de la Figura 1. Use la descripción estructural:
Crear archivos separados para el sumador completo, la Unidad de procesamiento y el
archivo principal.
• Escriba el test-bench VHDL para probar el circuito y pruebe los casos mas representa-
tivos.
• Realice la Functional Simulation y la Timing Simulation (Simulación de comportamiento
y temporal).
• Asignación de entradas y salidas: Crear un archivo UCF. Use SW0 a SW7 en la placa
Nexys-4 DDR para las entradas, y dos displays para mostrar el resultado final.
• Generar el archivo bitstream
• Descargar el bitstream en el FPGA.

1
a1(3) a1(2) a1(1) a1(0)
ab a
b b1(0)

ab00(3) ab00(2) ab00(1) ab00(0)


ab ayb
Cout co Cin b1(1)
ci
abo
ab0

b1(2)

b1(3)

Figure 1: Multiplicador

2
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
MICROELECTRÓNICA
Prof. PhD. Alexander B. Hilario T.
LABORATORIO 4
Fecha de entrega: 18/19 de Octubre

1. OBJETIVOS
• Utilizar la descripción estructural y la descripción concurrente en VHDL.
• Probar circuitos combinacionales en un FPGA.
2. CODIFICACIÓN VHDL
• Revise el material del curso.
3. DESARROLLO DE LA PRACTICA
• Problema: En este laboratorio se requiere diseñar un generador de números pseudo-
aleatorios de 8 bits. Un generador de números pseudo-aleatorios es un algoritmo para
generar una secuencia de números cuyas propiedades se aproximan a las propiedades de
secuencias de números aleatorios. La secuencia generada no es verdaderamente aleato-
ria, porque está completamente determinada por un conjunto relativamente pequeño de
valores iniciales.
Pasos a seguir:
– Declarar la entidad CLOCK como entrada y 8 bits de salida.
– Declara 2 variables temporales,una tan largo como su salida (Rand) y otro de un
solo bit (Temp).
– Inicializa random de tal manera que su bit mas significativo (MSB) sea ”1” y todos
los demás sean ”0” (para obtener un numero aleatorio también pueden ser difer-
entes).
– La variable de un solo bit temp se inicializa en ”0”.
– Utilizar una instrucción if para el aumento de Reloj.
– Realizar un XOR entre el MSB y el MSB-1 del numero random y asignarlo a la
variable temp.
– Asigna los valores de random (MSB-1 a 0) a (MSB a 1) y luego asigna el valor de
temp a random(0).

1
– Terminar la sentencia if y todo el proceso.

• Para esta aplicación en FPGA también se necesita un divisor de reloj para observar la
secuencia en la tarjeta Nexys 4 ddr

• El divisor de reloj mas simple es un contador. Utilizaremos un contador de 32 bits para


esta división de reloj.

• El divisor de reloj tendrá una entrada ClOCK y una salida de 1 bit, la salida es uno de los
bit de salida del contador (que serán las señales para nuestro uso).

4. FLUJO DE DISEÑO

• Crear un nuevo proyecto Vivado. Seleccionar el dispositivo: XC7A100T-1CSG324 Artix-


7 FPGA.

• Escriba el código VHDL para el proyecto.

• Escriba el test-bench VHDL para probar el proyecto y pruebe los casos mas representa-
tivos.

• Realice la Functional Simulation y la Timing Simulation (Simulación de comportamiento


y temporal).

• Asignación de entradas y salidas: Crear un archivo UCF. Use los display de 7 segmentos
CA-CG para las salidas (número aleatorio).

• Generar el archivo bitstream

• Descargar el bitstream en el FPGA.

2
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
MICROELECTRÓNICA
Prof. PhD. Alexander B. Hilario T.

LABORATORIO 5

Fecha de entrega: 08/09 de Noviembre

1. OBJETIVOS

• Describir circuitos sı́ncronos en VHDL.

• Aprender la generación de Test − bench para circuitos sı́ncronos.

2. CODIFICACIÓN VHDL

• Revise el material del curso.

3. DESARROLLO DE LA PRACTICA

• Problema: Simulador de una memoria de acceso aleatorio. El circuito de la Figura 1 es


una memoria con 8 direcciones, cada dirección alacena un dato de 4 bits. Las posiciones
de memoria son implementadas por registros de 4 bits. Las señales resetn y clock son
compartidas por todos los registros. Los datos son escritos en (o leı́dos de) uno de los
registros.

• Escritura en la memoria: (wr rd = 1): La entrada de 4 bits Din se escribe en uno de los
registros. La señal address[2..0] selecciona el registro a ser escrito. Aquı́, el display de
7 segmentos debe mostrar 0. Ejemplo: Si address = 101, entonces Din es escrito en el
registro 5.

• Lectura de la memoria: (wr rd = 0): La salida del MUX aparece en el display de 7


segmentos. La señal address[2..0] selecciona el registro de donde el dato es leı́do. Por
ejemplo, Si address = 010, entonces el dato en el registro 2 aparece en el display de 7
segmentos. Si el dato en el registro 2 es 1010, el sı́mbolo A aparece en el display de 7
segmentos.

4. FLUJO DE DISEÑO

• Crear un nuevo proyecto ISE. Seleccionar el dispositivo: XC7A100T-1CSG324 Artix-7


FPGA.

1
• Escriba el código VHDL para el circuito de la Figura 1. Crear un archivo separado para i)
Registro con habilitador, ii) MUX con habilitador, iii) Decodificador con habilitador, iv)
decodificador de 7 segmentos-hexadecimal y v) archivo principal.

• Escriba el test-bench VHDL para probar el circuito y pruebe al menos 8 escrituras en la


memoria y 8 lecturas de la memoria. Debe de generar una entrada de reloj de 100Mhz
para las simulaciones.

• Realice la Functional Simulation y la Timing Simulation (Simulación de comportamiento


y temporal).

• Asignación de entradas y salidas: Crear un archivo UCF. Use SW0 a SW7 en la placa
Nexys-4 DDR para las entradas, CLK100MHZ para la entrada clock, el pulsador CPU RESET
para resetN y el display de 7 segmentos para la salida.

• Generar el archivo bitstream.

• Descargar el bitstream en el FPGA.

Figure 1: RAM

2
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
MICROELECTRÓNICA
Prof. PhD. Alexander B. Hilario T.
LABORATORIO 6
Fecha de entrega: 22/23 de Noviembre

1. OBJETIVOS
• Describir maquinas de estado finito en VHDL.
• Implementar un sistema digital: Camino de datos y unidad de control
2. CODIFICACIÓN VHDL
• Revise el material del curso.
3. DESARROLLO DE LA PRACTICA
• Problema: Dado dos números unsigned A y B, diseñe un circuito que produce el cociente
Q y el residuo R. El algoritmo que implementa la division tradicional es:

Figure 1: Algoritmo tradicional de la division iterativa

• Una arquitectura iterativa es mostrada en la Figura 2 para A con 6 bits y B con 4 bits. El
registro R guarda el residuo. En este diseño, una operación de division comienza cuando
E = 1 (Donde los valores A y B son capturados). Entonces, a cada ciclo del reloj se
ejecuta i) Cambio en el siguiente bit de A o ii) Cambio en el siguiente bit de A y restamos
B. La señal done es creada para indicar que la operación ha sido completada y el resultado
aparece en Q y R.

1
Figure 2: Circuito para la división iterativa

• El contador de modulo 6 incluye una entrada sı́ncrona sclr que limpia el contador cuando
E = sclr = 1 y una salida zC que es activada cuando el contador llega a 5.

• Le f t −shit register: Note que uno de los registros de cambio incluye una entrada sı́ncrona
sclr que limpia la salida de los registros cuando E = sclr = 1.

• Cada componente secuencial tiene las entradas resetn y clock.

• Este circuito es un ejemplo de un sistema digital: incluye un circuito de camino de datos


y un circuito de control (FSM). El circuito de camino de datos es hecho de componentes
combinacionales y secuenciales.
4. FLUJO DE DISEÑO
• Crear un nuevo proyecto ISE. Seleccionar el dispositivo: XC7A100T-1CSG324 Artix-7
FPGA.

• Escriba el código VHDL para el circuito de la Figura 2. Crear un archivo separado para
i) contador de modulo 6, ii) shi f t register, iii) shi f t register con entrada sclr, iv) registro,
v) sumador, vi) decodificador de 7 segmentos y vii) archivo principal.

2
• Escriba el test-bench VHDL para probar el circuito(Debe de generar una entrada de reloj
de 100 Mhz para las simulaciones) para probar los siguientes casos:

- A = 011011 (27), B = 1001 (9)


- A = 010100 (20), B = 0111 (7)
- A = 101010 (42), B = 1111 (15)
- A = 100101 (37), B = 0101 (5)
- A = 001101 (13), B = 1100 (12)
- A = 101111 (47), B = 0010 (2)

• Realice la Functional Simulation y la Timing Simulation (Simulación de comportamiento


y temporal).

• Asignación de entradas y salidas: Crear un archivo UCF. Use SW0 a SW10 en la placa
Nexys-4 DDR para las entradas, CLK100MHZ para la entrada clock, el pulsador CPU RESET
para resetn, un LED para done, 6 LEDs para Q, y el display de 7 segmentos para R.

• Generar el archivo bitstream.

• Descargar el bitstream en el FPGA.

S-ar putea să vă placă și