Universidad Nacional de San Agustín
Facultad de ingeniería de producción y servicios
Escuela profesional de ingeniería electrónica
Microelectrónica
Guía de Prácticas
Autor:
PhD. Alexander B. Hilario Tacuri
Contenido
Práctica 1: Circuito combinacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Práctica 2: Sumador BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Práctica 3: Multiplicador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Práctica 4: ALU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Práctica 5: Memoria RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Práctica 6: Microprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2
PhD. Alexander Hilario Tacuri Microelectrónica
Práctica 1
(Fecha de entrega: 23 de Setiembre)
1. Objetivos
• Introducción de programación VHDL para FPGAs
• Aprender a escribir test − benches en VHDL
• Aprender el flujo de diseño con el Vivado: 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. Programación en 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.
4. Desarrollo del laboratorio
a b c d f
0 0 0 0
• Problema: Se enciende un LED (f = 1) cuando la combinación de cuatro 0 0 0 1
interruptores representa un número entero sin signo que es impar y primo, 0 0 1 0
donde “1” representa la posición ON de un interruptor y “0” la posición 0 0 1 1
OFF. Por ejemplo, si abcd = 1010 → f = 0. Si abcd = 0111 → f = 1. 0 1 0 0
0 1 0 1
- Complete la tabla de verdad para este circuito. 0 1 1 0
- Derive la expresión Booleana de este circuito 0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
5. Flujo de diseño
• Cree un nuevo proyecto Vivado. Seleccione el dispositivo FPGA Artix-7
• Escriba el código VHDL que implementa la expresión Booleana simplificada. Sintetice su circuito.
• Escriba el test-bench VHDL para probar todas las combinaciones posibles de las entradas.
3
PhD. Alexander Hilario Tacuri Microelectrónica
• Realice la Functional Simulation (Run simulation → Run Behavioral Simulation).
• Asignación de entradas y salidas: Crear un archivo XDC. Use SW 0 − SW 3 en la placa Nexys-4 DDR para
las entradas y LED0 para la salida.
• Implemente su diseño. (Run implementation)
• Realice la Timing Simulation. (Run simulation → Run Post-Implementation Timing Simulation).
• Generar el archivo bitstream (Generate Bitstream)
• Descargar el bitstream en el FPGA. (Open Hardware Manager)
6. Presentación del informe
• Cuando el docente lo autorice, es decir luego de presentar la práctica funcionando, puede mandar un correo
electrónico a:
[email protected] con las siguientes especificaciones:
– Asunto: Microelectrónica - Informe de práctica 1, Grupo Y.
– El correo electrónico debe contener: Informe en pdf (Escrito en LATEX), y un enlace para un Drive
personal donde estén los programas escritos en Vivado.
4
PhD. Alexander Hilario Tacuri Microelectrónica
Práctica 2
(Fecha de entrega: 14 de Octubre )
1. Objetivos
• Usar la descripción estructural en VHDL.
• Probar circuitos aritméticos en un FPGA.
2. Programación en VHDL
• Revise el material referente al curso.
3. Desarrollo del laboratorio
• Problema: Suma BCD de dos números. Los
operandos A y B son números de 4-bits represen-
tados en BCD (donde solo se permiten números
del 0 al 9). El resultado S tambien se representa
en BCD. También existe un carry out BCD.
Si alguno de los operandos es mayor que 9, el
resultado S es invalido.
Ejemplo: 7 + 8 = 15. Aquí cout = 1 y
S = 0101 = 5.
Este circuito puede construirse a partir de dos sumadores binarios de 4 bits y algunas puertas lógicas como
se muestra en la figura: Si A + B > 9 → S = 6 + Z, cout = 1. Aqui, agregando 6 se “arregla” la suma binaria
para hacerla parecer como BCD. Si A + B ≤ 9 → S = Z, cout = 0.
4. Flujo de diseño
• Cree un nuevo proyecto Vivado. Seleccione el dispositivo FPGA Artix-7
• Escriba el código VHDL para el sumador BCD. Use la Descripción estructural: Crear un archivo separado
para el sumador completo, el sumador de 4-bits, para el bloque “CMP” y un archivo principal.
• Escriba el test-bench VHDL para probar todas las combinaciones posibles de las entradas.
• Realice la Functional Simulation y la Timing Simulation.
• Asignación de entradas y salidas: Crear un archivo XDC. Use SW 15 − SW 0 en la placa Nexys-4 DDR
para las entradas y LED4 − LED0 para las salidas.
• Generar el archivo bitstream (Generate Bitstream)
• Descargar el bitstream en el FPGA.
5. Presentación del informe
• Cuando el docente lo autorice, es decir luego de presentar la práctica funcionando, puede mandar un correo
electrónico a:
[email protected] con las siguientes especificaciones:
– Asunto: Microelectrónica - Informe de práctica 2, Grupo Y.
5
PhD. Alexander Hilario Tacuri Microelectrónica
– El correo electrónico debe contener: Informe en pdf (Escrito en LATEX), y un enlace para un Drive
personal donde estén los programas escritos en Vivado.
6
PhD. Alexander Hilario Tacuri Microelectrónica
Práctica 3
(Fecha de entrega: 04 de Noviembre)
1. Objetivos
• Utilizar la descripción estructural en VHDL.
• Probar circuitos aritméticos en un FPGA.
2. Programación en VHDL
• Revise el material referente al curso.
3. Desarrollo del laboratorio
• Problema: Implementación alternativa de una
operación de multiplicación de dos números un-
signed de 4 bits.
4. Flujo de diseño
• Cree un nuevo proyecto Vivado. Seleccione el dispositivo FPGA Artix-7
• Escriba el código VHDL para el circuito multiplicador. Use la descripción estructural: Crear archivos
separados para el sumador completo, la unidad de procesamiento y el archivo principal.
7
PhD. Alexander Hilario Tacuri Microelectrónica
• Escriba el test-bench VHDL para probar el circuito y pruebe los casos mas representativos.
• Realice la Functional Simulation y la Timing Simulation.
• 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.
5. Presentación del informe
• Cuando el docente lo autorice, es decir luego de presentar la práctica funcionando, puede mandar un correo
electrónico a:
[email protected] con las siguientes especificaciones:
– Asunto: Microelectrónica - Informe de práctica 3, Grupo Y.
– El correo electrónico debe contener: Informe en pdf (Escrito en LATEX), y un enlace para un Drive
personal donde estén los programas escritos en Vivado.
8
PhD. Alexander Hilario Tacuri Microelectrónica
Práctica 4
(Fecha de entrega: 18 de Noviembre)
1. Objetivos
• Utilizar la descripción estructural y la descripción concurrente en VHDL.
• Probar circuitos combinacionales en un FPGA.
2. Programación en VHDL
• Revise el material referente al curso.
3. Desarrollo del laboratorio
• Problema: Unidad aritmética lógica de 4
bits. Este circuito selecciona entre opera-
ciones aritméticas (Valor absoluto y suma)
y operaciones lógicas (xnor y and). Solo
un resultado (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 and B).
Estas operaciones son bit a bit.
• Nexys-4 DDR: Cada display de 7 segmen-
tos 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
• Cree un nuevo proyecto Vivado. Seleccione el dispositivo FPGA Artix-7.
• Escriba el código VHDL para el circuito dado.
9
PhD. Alexander Hilario Tacuri Microelectrónica
– IMPORTANTE: Para los circuitos A+B y |A − B| se debe utilizar sumadores completos y com-
puertas lógicas.
– Para implementar el MUX y el decoder, es fuertemente recomendado usar las sentencias 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 representativos.
• Realice la Functional Simulation y la Timing Simulation.
• Asignación de entradas y salidas: Crear un archivo XDC. Use SW0 a SW7 para las entradas A y B, SW8 a
SW10 para las entradas de sel y EN , CA − CG (display de 7 segmentos) y AN 7 − AN 0 anodo habilitador
para cada display.
• Generar y Descargar el bitstream en el FPGA.
5. Presentación del informe
• Cuando el docente lo autorice, es decir luego de presentar la práctica funcionando, puede mandar un correo
electrónico a:
[email protected] con las siguientes especificaciones:
– Asunto: Microelectrónica - Informe de práctica 4, Grupo Y.
– El correo electrónico debe contener: Informe en pdf (Escrito en LATEX), y un enlace para un Drive
personal donde estén los programas escritos en Vivado.
10
PhD. Alexander Hilario Tacuri Microelectrónica
Práctica 5
(Fecha de entrega: 02 de Diciembre)
1. Objetivos
• Describir circuitos síncronos en VHDL.
• Aprender la generación de T est − bench para circuitos síncronos.
2. Programación en VHDL
• Revise el material referente al curso.
3. Desarrollo del laboratorio
• Problema: Simulador de una memoria de ac-
ceso aleatorio (RAM). El siguiente circuito es una
memoria con 8 direcciones, cada dirección alma-
cena 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 reg-
istros. 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 dis-
play 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
• Cree un nuevo proyecto Vivado. Seleccione el dispositivo FPGA Artix-7.
• Escriba el código VHDL para el circuito dado: Crear archivos separados para i) Registros con habilitador,
ii) MUX con habilitador, iii) Decodificador con habilitador, iv) Decodificador de 7 segmentos, y v) Archivo
principal
• Escriba el test-bench VHDL para probar el circuito y pruebe los casos mas representativos.
• Realice la Functional Simulation y la Timing Simulation.
11
PhD. Alexander Hilario Tacuri Microelectrónica
• Asignación de entradas y salidas: Crear un archivo XDC. Use SW0 a SW7 para las entradas (Din, address,
wrd r), CLK100MHZ para la entrada clock, el pulsador BT NR ES para resetn, CA − CG (display de 7
segmentos) y AN 7 − AN 0 anodo habilitador para cada display.
• Generar y Descargar el bitstream en el FPGA.
5. Presentación del informe
• Cuando el docente lo autorice, es decir luego de presentar la práctica funcionando, puede mandar un correo
electrónico a:
[email protected] con las siguientes especificaciones:
– Asunto: Microelectrónica - Informe de práctica 5, Grupo Y.
– El correo electrónico debe contener: Informe en pdf (Escrito en LATEX), y un enlace para un Drive
personal donde estén los programas escritos en Vivado.
12
PhD. Alexander Hilario Tacuri Microelectrónica
Práctica 6
(Fecha de entrega: 21 de Diciembre)
1. Objetivos
• Describir maquinas de estado finito en VHDL.
• Implementar un sistema digital: Unidad de ruta de datos y de control
2. Programación en VHDL
• Revise el material referente al curso.
3. Desarrollo del laboratorio
• Problema: Diseño de un pequeño microprocesador. Implemente el microprocesador de 4 bits de la
siguiente Figura
• Circuito de control:
13
PhD. Alexander Hilario Tacuri Microelectrónica
• Set de instrucciones
F Operación Función
000 load IN IN ← Switches
001 load Rx, IN Rx ← In
010 copy Rx,Ry Rx ← Ry
011 add Rx, Ry Rx ← Rx + Ry
100 add Rx,IN Rx ← Rx + IN
101 xor Rx,Ry Rx ← Rx XOR Ry
110 inc Rx Rx ← Rx + 1
111 load OUT, Rx OUT ← Rx
• Maquina de estados finito
14
PhD. Alexander Hilario Tacuri Microelectrónica
• Unidad Aritmetica Logica (ALU)
sel Operación Función Unidad
0000 y <= A Transferir A
0001 y <= A + 1 Incrementar A
0010 y <= A - 1 Decrementar A
0011 y <= B Transferir B
Aritmetica
0100 y <= B + 1 Incrementar B
0101 y <= B - 1 Decrementar B
0110 y <= A + B Sumar A y B
0111 y <= A - B Restar B de A
1000 y <= not A Complemento de A
1001 y <= not B Complemento de B
1010 y <= A AND B AND
1011 y <= A OR B OR
Aritmetica
1100 y <= A NAND B NAND
1101 y <= A NOR B NOR
1110 y <= A XOR B XOR
1111 y <= A XNOR B XNOR
• Este circuito es un ejemplo de un sistema digital: incluye un circuito de ruta de datos y un circuito de
control (FSM). El circuito de ruta de datos es hecho de componentes combinacionales y secuenciales.
4. Flujo de diseño
• Cree un nuevo proyecto Vivado. Seleccione el dispositivo FPGA Artix-7.
• Escriba el código VHDL del sistema digital.
• Escriba el test-bench VHDL para probar la siguiente secuencia
- load IN;
- load R1;
- copy R0;
- inc R1;
- xor R0, R1;
- add R0, R1;
- load OUT, R0;
• Realice la Functional Simulation y la Timing Simulation.
• Realice la asignación de entradas y salidas.
• Generar y Descargar el bitstream en el FPGA.
5. Presentación del informe
• Cuando el docente lo autorice, es decir luego de presentar la práctica funcionando, puede mandar un correo
electrónico a:
[email protected] con las siguientes especificaciones:
– Asunto: Microelectrónica - Informe de práctica 6, Grupo Y.
– El correo electrónico debe contener: Informe en pdf (Escrito en LATEX), y un enlace para un Drive
personal donde estén los programas escritos en Vivado.
15