Documentos de Académico
Documentos de Profesional
Documentos de Cultura
! !
!
MANUAL DE PRÁCTICAS DE
SISTEMAS DIGITALES I
Agosto-Diciembre 2012
!
!
!
!
!
!
!
!
RESUMEN!DEL!MANUAL!DE!PRÁCTICAS!
!
En! este! documento! se! presenta! la! descripción! del! Manual! de! Prácticas!
de!la!asignatura!“Sistemas(Digitales(I”!,!del!plan!de!estudios!de!Ingeniería!
en!Mecatrónica!de!la!Facultad!de!Ingeniería!de!la!Universidad!Autónoma!
de! Yucatán.! El! contenido! del! presente! documento! abarca! todos! los!
temas!de!la!carta!descriptiva!de!la!asignatura.!
!
ACERCA!DE!LOS!LABORATORIOS!PROPUESTOS!
!
Se!proponen!14!laboratorios!para!el!presente!curso.!Estos!cursos!están!
orientados!a!utilizar!la!mejor!tecnología!disponible!utilizando!circuitos!
integrados! reconfigurables! como! es! el! Arreglo! de! Compuertas! en! el!
campo!(FPGA,!por!sus!siglas!en!inglés).!Desde!el!Lab.!1!hasta!el!Lab.!14,!
los! alumnos! utilizarán! todos! las! herramientas! software! (síntesis,!
verificación!funcional!mediante!camas!de!prueba,!etc.),!necesarias!para!
realizar!los!laboratorios!propuestos.!Estos!laboratorios!se!realizarán!en!
trabajo!de!equipo,!pudiendo!integrarse!hasta!un!máximo!de!3!alumnos.!
!
REPORTE!DE!LABORATORIO!
!
Los!equipos!de!trabajo!deberán!entregar!un!reporte!técnico!de!cada!una!
de! las! prácticas! realizadas.! Al! menos! dos! de! los! reportes! deben! ser!
escritos! en! el! idioma! inglés.! Adicionalmente,! los! alumnos! tendrán! que!
sintetizar!su!reporte!bajo!el!siguiente!criterio:!el!documento!debe!ser!a!
doble! columna! con! un! mínimo! de! letra! de! Times! 10,! debe! contener! un!
resumen! general! que! describa! en! máx.! 150! palabras! que! es! lo! que! se!
realizó! en! la! práctica,! la! introducción! debe! contener! el! estado! del! arte!
del! tema! propuesto! y! debe! describir! el! objetivo! de! la! práctica.! En! el!
desarrollo! se! presentará! la! metodología! utilizada! para! implementar! la!
práctica!donde!incluirán!gráficas,!!esquemas,!tablas,!etc.!La!longitud!del!
documenta! será! máximo! de! 2! páginas.! Entregar! el! reporte! en! formato!
digital!(paperless)!!
!
EVALUACIÓN!DEL!LABORATORIO!
!
Práctica:!80%!!!Reporte:!20%!
!
!
!
ÍNDICE!GENERAL!
!
Lab!1.!Compuertas!lógicas.! 1!
1.1 Objetivo!
1.2 Justificación!
!
1.3 Introducción!
1.4 Herramientas!y!material!requerido!
1.5 Ejemplo!demostrativo!
1.6 Instrucciones!del!laboratorio!
Lab!2.!Demostración!del!Teorema!de! 7!
DeMorgan.! !
2.1 Objetivo!
2.2 Justificación!
2.3 Introducción!
2.4 Herramientas!y!material!requerido!
2.5 Ejemplo!demostrativo!
2.6 Instrucciones!del!laboratorio!
Lab!3.!Minimización!de!funciones.! 12!
3.1 Objetivo!
3.2 Justificación!
3.3 Introducción!
3.4 Herramientas!y!material!requerido!
3.5 Ejemplo!demostrativo!
3.6 Instrucciones!del!laboratorio!
Lab!4.!Diseño!de!sistemas! 20!
combinacionales!usando!Mapas!de!
Karnaugh:!Elevar!un!número!binario!
de!3bits!al!cuadrado.!
4.1 Objetivo!
4.2 Justificación!
4.3 Introducción!
4.4 Herramientas!y!material!requerido!
4.5 Ejemplo!demostrativo!
4.6 Instrucciones!del!laboratorio!
Lab!5.!Decodificador!BCD!a!7! 25!
segmentos!en!FPGA.!
5.1 Objetivo!
5.2 Justificación!
5.3 Introducción!
5.4 Herramientas!y!material!requerido!
5.5 Ejemplo!demostrativo!
5.6 Instrucciones!del!laboratorio!
Lab!6.!Sumador!binario!en!FPGA.! 35!
6.1 Objetivo!
6.2 Justificación!
6.3 Introducción!
6.4 Herramientas!y!material!requerido!
6.5 Ejemplo!demostrativo!
6.6 Instrucciones!del!laboratorio!
Lab!7.!Sumador!binario!en!FPGA.! 45!
7.1 Objetivo!
7.2 Justificación!
7.3 Introducción!
7.4 Herramientas!y!material!requerido!
7.5 Ejemplo!demostrativo!
7.6 Instrucciones!del!laboratorio!
Lab!8.!Multiplicador!binario.! 56!
8.1 Objetivo!
8.2 Justificación!
8.3 Introducción!
8.4 Herramientas!y!material!requerido!
8.5 Ejemplo!demostrativo!
8.6 Instrucciones!del!laboratorio!
Lab!9.!Mux,!Demux,!Decodificadores! 63!
en!FPGAs.!
9.1 Objetivo!
9.2 Justificación!
9.3 Introducción!
9.4 Herramientas!y!material!requerido!
9.5 Ejemplo!demostrativo!
9.6 Instrucciones!del!laboratorio!
Lab!10.!Registros.! 75!
10.1 Objetivo!
10.2 Justificación!
10.3 Introducción!
10.4 Herramientas!y!material!requerido!
10.5 Ejemplo!demostrativo!
10.6 Instrucciones!del!laboratorio!
Lab!11.!Contadores!binarios!en! 83!
FPGAs.!
11.1 Objetivo!
11.2 Justificación!
11.3 Introducción!
11.4 Herramientas!y!material!requerido!
11.5 Ejemplo!demostrativo!
11.6 Instrucciones!del!laboratorio!
Lab!12.!Cronómetro.! 92!
12.1 Objetivo!
12.2 Justificación!
12.3 Introducción!
12.4 Herramientas!y!material!requerido!
12.5 Ejemplo!demostrativo!
12.6 Instrucciones!del!laboratorio!
Lab!13.!Control!de!velocidad!de!un! 99!
motor!DC!con!PWM!
13.1 Objetivo!
13.2 Justificación!
13.3 Introducción!
13.4 Herramientas!y!material!requerido!
13.5 Ejemplo!demostrativo!
13.6 Instrucciones!del!laboratorio!
!
!
!
!
!
!
ÍNDICE!DE!FIGURAS!
!
Fig.!1.1.!!Símbolos!de!las!compuertas!lógicas!básicas:!!!!!!!!!
(a)!AND;!(b)!OR;!(c)!NOT.!
1!
Fig.!1.2.!Símbolo!de!las!compuertas!lógicas:!(a)!NAND;!(b)!
NOR;!(c)!XOR;!(d)!XNOR.!
1!
Fig.!1.3!Código!en!VHDL!utilizado!que!describe!a!una!
compuerta!AND!de!dos!entradas!
3!
Fig.!1.4.!Diagrama!lógico!obtenido!de!la!síntesis!del!código!
utilizada!para!describir!una!compuerta!AND!de!dos! 3!
entradas.!
Fig.!1.5.!Código!!para!implementar!la!simulación!por!
software!de!la!compuerta!lógica!AND!
3!
Fig.!1.6.!Formas!de!onda!obtenidas!en!el!simulador!ISim!
que!corresponden!a!la!compuerta!lógica!AND.!
4!
Fig.!1.7.!Dispositivos!conectados!al!FPGA!Spartan!3E!en!la!
tarjeta!Basys!de!Digilent.!(Imagen!tomada!de! 4!
www.digientinc.com).!
Fig.!1.8!!Ubicación!de!los!LEDs!y!de!los!interruptores!en!la!
tarjeta!Basys.!
5!
Fig.!1.9.!Listado!del!archivo!UCF!para!definir!las!conexiones!
de!la!compuerta!AND!implementada!
5!
! !
Fig.!2.1!Comprobación!del!Teorema!de!Karnaugh!utilizando!
tablas!de!verdad.!
7!
Fig.!2.2.!Implementación!de!los!operadores!lógicos!
utilizando!únicamente!compuertas!NAND!y!NOR.!
8!
Fig.!2.3!Implementación!en!código!VHDL!de!las!funciones!
equivalentes!del!teorema!de!DeMorgan.!
9!
Fig.!2.4.!Síntesis!del!código!del!código!de!las!funciones!de!
las!funciones!equivalentes!del!teorema!de! 9!
DeMorgan.!
Fig.!2.5.!Código!para!!describir!el!test!bench!para!las!
funciones!equivalentes!por!el!teorema!de! 10!
DeMorgan.!
Fig.!2.6.!Simuación!del!testbench!para!las!funciones!
equivalentes!por!el!teorema!de!DeMorgan.!
10!
!
!
Fig.!3.1.!Mapas!de!Karnaugh,!(a)!de!dos!variables,!(b)!de!
tres!variables!y!(c)!de!cuatro!variables.!
13!
Fig.!3.2.!Mapa!de!F = ab + a b + c + b b + c ! 14!
Fig.!3.3.!Mapa!de!F = ab + a b + c + b b + c ! 15!
Fig.!3.4.!!Código!en!VHDL!utilizado!para!implementar!la!
función!original!del!ejemplo!1.!
15!
Fig.!3.5.!!Listado!del!testbench!para!el!ejemplo!1.! 16!
Fig.!3.6.!Formas!de!onda!obtenidas!en!el!simulador!Isim!
para!la!función!original!del!ejemplo!1.!
17!
Fig.!3.7.!Lisado!para!implementar!la!función!minimizada!el!
ejemplo!1.!
17!
Fig.!3.8.!Listado!del!archivo!UCF!para!el!ejemplo!1.! 17!
Fig.!3.9.!!Diagrama!del!ejercicio!1!a!simplificar.! 18!
! !
Fig.!4.1.!Sistema!Combinacional.! 20!
Fig.!4.2.!!Tabla!de!verdad!de!la!función!booleana! 22!
Fig.!4.3.!!Karnaugh:!(a)!función!booleana!con!minitérminos,!
(b)!función!booleana!con!maxitérminos!
22!
Fig.!4.4.!Dispositivos!conectados!al!FPGA!Spartan!3E!en!la!
tarjeta!Basys!de!Digilent.!(Imagen!tomada!de! 24!
www.digientinc.com).!
! !
Fig.!5.1.!Display!de!siete!segmentos.! 25!
Fig.!5.2.!Diagrama!esquemático!del!FPGA!Basys!con!el!
display!de!siete!segmentos.!
26!
Fig.!5.3.!Tabla!de!verdad!para!el!segmento!‘a’.! 28!
Fig.!5.4.!!Karnaugh:!(a)!cuadrantes!con!los!valores!XqNo!
importa,!(b)!agrupaciones!
29!
Fig.!5.5.!Dispositivos!conectados!al!FPGA!Spartan!3E!en!la!
tarjeta!Basys!de!Digilent.!(Imagen!tomada!de! 32!
www.digientinc.com).!
! !
Fig.!6.1.!Tabla!de!verdad!y!circuito!de!la!suma!aritmética!de!
un!HA.!
36!
Fig.!6.2.!Tabla!de!verdad!y!circuito!del!FA.! 37!
Fig.!6.!3.!Reducción!de!la!función!acarreo!del!FA.! 38!
Fig.!6.4.!Código!VHDL!del!FA.! 39!
Fig.!6.5.!!Módulo!Top!del!sumador!de!4!bits.! 40!
Fig.!6.6.!!Diagrama!esquemático!del!Sumador!de!4!bits!con!
decodificador!de!7!segmentos!
41!
Fig.!6.7.!!Diagrama!esquemático!sugerido!para!el!Sumador!
4!bits!con!HAs!
41!
Fig.!6.8.!Dispositivos!conectados!al!FPGA!Spartan!3E!en!la! 43!
tarjeta!Basys!de!Digilent.!(Imagen!tomada!de!
www.digientinc.com).!
!
Fig.!7.1.!Suma!de!dos!números!binarios!de!4!bits.! 46!
Fig.!7.2.!Numeración!en!complemento!a!2.! 47!
Fig.!7.3.!!Diagrama!esquemático!del!Sumador/Restador!de!
4!bits.!
53!
Fig.!7.4.!Dispositivos!conectados!al!FPGA!Spartan!3E!en!la!
tarjeta!Basys!de!Digilent.!(Imagen!tomada!de! 54!
www.digientinc.com).!
! !
Fig.!8.1.!Ejemplo!de!la!multiplicación!binaria!de!dos!
números!de!4!bits.!
56!
Fig.!8.2.!Arquitectura!1,!para!el!multiplicador!
combinacional!de!4!bits.!
57!
Fig.!8.3.!Bloques!utilizados!para!la!arquitectura!2.! 58!
Fig.!8.4!Arquitectura!2,!para!el!multiplicador!combinacional!
de!4!bits.!
58!
Fig.!8.5.!Código!VHDL!para!la!arquitectura!1!del!
multiplicador!de!4!bits.!
59q60!
Fig.!8.6.!Estructura!de!archivos!del!multiplicador!de!4!bits.! 60!
Fig.!8.7.!!Código!VHDL!del!testbench!del!multiplicador!de!4!
bits.!
61!
Fig.!8.8.!Señales!obtenidas!en!la!simulación!del!
multiplicador!(a)!en!binario!(b)!en!decimal.!
62!
! !
Fig.!9.1.!Decodificador!2q4:!(a)!símbolo!esquemático,!(b)!
tabla!de!verdad,!y!(c)!diagrama!lógico.!
65!
Fig.!9.2.!Codificador! 66!
Fig.!9.3.!Mux!8q1:!(a)!tabla!de!verdad,!(b)!diagrama!lógico.! 67!
Fig.!9.4.!Comparativo!de!un!Mux!y!Demux.! 67!
Fig.!9.5.!Código!VHDL!del!Mux!usando!case.! 68!
Fig.!9.6.!Código!VHDL!del!Mux!usando!if!else!if.! 69!
Fig.!9.7.!Código!VHDL!del!Mux!usando!when!else.! 70!
Fig.!9.8.!Código!VHDL!del!Mux!usando!with!select.! 70!
Fig.!9.9.!Diagrama!esquemático!propuesto.! 72!
Fig.!9.10.!Dispositivos!conectados!al!FPGA!Spartan!3E!en!la!
tarjeta!Basys!de!Digilent.!(Imagen!tomada!de! 73!
www.digientinc.com).!
!
Fig.!10.1.!Registro!de!4!bits.! 76!
Fig.!10.2!Registro!con!carga!en!paralelo!con!flipqflops!D.! 76!
! ! Fig.!10.3.!Registro!con!carga!de!datos!en!serie.! 77!
Fig.!10.4.!Registro!de!desplazamiento!bidireccional!de!4!bit!
con!carga!en!paralelo.!
78!
Fig.!10.5.!Código!en!VHDL!con!la!descripción!del!flipqflop!D.! 79!
Fig.!10.6.!Esquemático!obtenido!de!la!síntesis!del!código!del!
flipqflop!D.!
80!
Fig.!10.7.!Código!del!test!bench!para!realizar!la!simulación!
del!flipqflop!D.!
81!
Fig.!10.8.!Resultado!de!la!simulación!del!flipqflop!tipo!D.! 81!
!
!
Fig.!11.1.!Transiciones!de!estado!del!contador!binario!de!3!
bits.!
84!
Fig.!11.2.!Transiciones!del!contador!binario!usando!flipq
flops!JK.!
84!
Fig.!11.3.!Funciones!lógicas!para!el!diseño!del!contador!
binario.!
85!
Fig.!11.4.!Contador!binario.! 85!
Fig.!11.5.!Código!VHDL!del!contador!4!bits.! 86!
Fig.!11.6.!Simulación!del!diseño!del!contador!4!bits.! 87!
Fig.!11.7.!Diseño!e!implementación!del!módulo!divisor!de!
frecuencia!
87!
Fig.!11.8.!Diagrama!esquemático!propuesto!para!el!
laboratorio.!
88!
Fig.!11.9.!Dispositivos!conectados!al!FPGA!Spartan!3E!en!la!
tarjeta!Basys!de!Digilent.!(Imagen!tomada!de! 90!
www.digientinc.com).!
! !
Fig.!12.1.!Estructura!de!los!contadores!del!cronómetro.! 93!
Fig.!12.2.!Control!del!multiplexado!de!los!displays!de!7!
segmentos.!
94!
Fig.!12.4.!Código!VHDL!con!el!instanciado!de!dos!
contadores!para!la!cuenta!de!0!a!59!segundos.!
96!
Fig.!12.5!Código!VHDL!del!testbench!para!el!contador!de!0!a!
59!segundos.!
97!
Fig.!12.6!Señales!obtenidas!en!el!simulador!donde!se!
muestra!la!cuenta!de!0!a!16!segundos.!
97!
Fig.!12.7!Señales!obtenidas!en!el!simulador!donde!se!
muestra!la!cuenta!de!35!a!59!segundos.!
97!
! !
Fig.!13.1.!Señal!PWM.! 100!
Fig.!13.2.!Control!de!la!velocidad!de!un!motor!DC!con!PWM.! 100!
Fig.!13.3.!PWM!con!3!bits!de!resolución.! 101!
Fig.!13.4.!Circuito!electrónico!de!potencia.! 102!
Fig.!13.5.!Dispositivos!conectados!al!FPGA!Spartan!3E!en!la!
tarjeta!Basys!de!Digilent.!(Imagen!tomada!de! 104!
www.digientinc.com).!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
! !
ÍNDICE!DE!TABLAS!
!
Tabla.!1.1.!!Tabla!1.1.!Tablas!de!verdad!de!las!compuertas!
lógicas.!
2!
Tabla!3.1.!Postulados!y!teoremas!del!álgebra!de!Boole.! 12!
Tabla!3.2.!Tabla!de!verdad!de!F=ab+a(b+c)+b(b+c)! 14!
!
Manual de Prácticas de Sistemas Digitales I 1
Lab.%1.%Compuertas%Lógicas%
1.1%Objetivo%
El objetivo de esta práctica de laboratorio es comprobar las funciones lógicas básicas
del algebra de Boole, mediante simulaciones realizadas por software así como su posterior
implementación y verificación en un dispositivo denominado “arreglo de compuertas
programable en el campo” (FPGA, por sus siglas).
1.2%Justificación%
Esta práctica de laboratorio cumple con el objetivo específico (ver carta descriptiva
de la asignatura) del siguiente tema:
- Unidad 2
- Sub-tema 2.1
1.3 Introducción
Las compuertas lógicas son las implementaciones físicas de los operadores lógicos,
estos dispositivos constituidos internamente por transistores que actúan como pequeños
interruptores electrónicos con el propósito de manejar señales eléctricas de entrada y salida
equivalentes al ‘1’ lógico y al ‘0’ lógico. De esta forma tenemos las compuertas lógicas
AND, OR y NOT, correspondientes a los operadores lógicos básicos AND, OR y NOT. En
la Fig. 1.1 se muestran los símbolos utilizados para representar cada una de estas.
1.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 1.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
1.5%Ejemplo%%demostrativo%
Con este ejemplo demostrativo se presenta el procedimiento utilizado para implementar el
laboratorio propuesto:
1. Mediante el uso del programa Project Navigator que forma parte del paquete de
software Xilinx ISE Design Suite, crea un nuevo proyecto y se agrega un nuevo
archivo de texto con el código VHDL que se muestra en la figura x.x, el cual
describe a un componente llamado compuerta_AND que posee dos entradas y una
salida, todas de tipo BIT y cuya función de salida “f” está dada por la operación
lógica AND de las entradas “x” y “y”.
1 ----------------------------------------------
2 ENTITY compuerta_AND IS
3 PORT ( x : IN BIT;
4 y : IN BIT;
5 f : OUT BIT );
6 END compuerta_AND;
7 -----------------------------------------------
8 ARCHITECTURE rtl OF compuerta_AND IS
9 BEGIN
10 f <= x AND y;
11 END rtl;
12 -----------------------------------------------
Fig. 1.3 Código en VHDL utilizado que describe a una compuerta AND de dos entradas.
2. Realice la síntesis del código y verifique el diagrama esquemático RTL del código
el cual debe coincidir con el mostrado en la figura.
Fig. 1.4. Diagrama lógico obtenido de la síntesis del código utilizada para describir una compuerta
AND de dos entradas.
1 ------------------------------------------------------------
2 ENTITY Compuerta_AND_testbench IS
3 END ENTITY Compuerta_AND_testbench;
4 ------------------------------------------------------------
5 ARCHITECTURE rtl OF compuerta_AND_testbench IS
6 COMPONENT compuerta_AND IS
7 PORT ( x : IN BIT;
8 y : IN BIT;
9 f : OUT BIT );
10 END COMPONENT;
11 SIGNAL x: BIT;
12 SIGNAL y: BIT;
13 SIGNAL f: BIT;
14 BEGIN
15 compuerta_01: compuerta_AND port map ( x => x,
16 y => y,
17 f => f);
18 x <= '0', '1' after 100 ns;
19 y <= '0', '1' after 50 ns, '0' after 100 ns, '1' after 150 ns;
20
21 END rtl;
22 --------------------------------------------------------------
Fig. 1.5. Código para implementar la simulación por software de la compuerta lógica AND.
Fig. 1.6. Formas de onda obtenidas en el simulador ISim que corresponden a la compuerta lógica AND.
Fig. 1.7. Dispositivos conectados al FPGA Spartan 3E en la tarjeta Basys de Digilent. (Imagen tomada
de www.digientinc.com).
FPGA
LEDs
Interruptores
1.6%Instrucciones%del%laboratorio%
b) Realizar la síntesis del código VHDL y verifique que el diagrama lógico, del
circuito obtenido, corresponda a la función lógica que se describe.
c) Implementar el código para realizar las simulaciones de cada una de las
compuertas lógicas.
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a
las funciones lógicas implementadas.
Lab.%2.%Demostración%del%Teorema%de%DeMorgan%
2.1%Objetivo%
El objetivo de este laboratorio es verificar el teorema de DeMorgan del algebra
Booleana. Después de su realización, tendrás la capacidad de simplificar expresiones
Booleanas aplicando los teoremas de DeMorgan.
2.2%Justificación%
Esta práctica de laboratorio cumple con el objetivo específico de la unidad 1 y
abarca los sub-temas 1.2 y 1.3.
2.3%Introducción%
DeMorgan propuso dos teoremas que son una parte importante del algebra Boolena,
en términos prácticos, estos teoremas establecen la equivalencia entre la operación lógica
NAND y la operación lógica OR con las entradas negadas, mediante la negación de sus
entradas:
!" = ! + !
! + ! = !!
Fig. 2.2. Implementación de los operadores lógicos utilizando únicamente compuertas NAND y NOR.
2.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 2.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
2.5%Ejemplo%%demostrativo%
A continuación se presenta como ejemplo para la realización de este laboratorio, la
comprobación del teorema 1, realizando utilizando como herramientas la simulación de las
funciones lógicas equivalentes y su posterior implementación en el FPGA. En la Fig. 2.3,
se muestra el código en VHDL en el cual se describe un componente con dos entradas y
dos salidas, todas de tipo bit. La función de de la salida x corresponde a la función lógica
NAND y la función y es la operación OR entre las señales de entrada negadas. Agregue
este archivo de texto previamente guardado con extensión .vhd ó .vhdl.
1 ----------------------------------------
2 ENTITY DeMorgan_01 IS
3 PORT ( a : IN BIT;
4 b : IN BIT;
5 x : OUT BIT;
6 y : OUT BIT );
7 END DeMorgan_01;
8 ----------------------------------------
9 ARCHITECTURE rtl OF DeMorgan_01 IS
10 BEGIN
11 x <= a NAND b;
12 y <= (NOT (a)) OR (NOT(b));
13 END rtl;
14 -----------------------------------------
Fig. 2.3 Implementación en código VHDL de las funciones equivalentes del teorema de DeMorgan.
Realice la síntesis del código y verifique el esquemático del circuito obtenido, el cual
se muestra en la Fig. 2.4.
Fig. 2.4. Síntesis del código del código de las funciones de las funciones equivalentes del teorema de
DeMorgan.
Agregue el archivo para llevar a cabo el test bench que se muestra en la Fig. 2.5.
1 ------------------------------------------------------------
2 ENTITY DeMorgan_01_testbench IS
3 END ENTITY DeMorgan_01_testbench;
4 ------------------------------------------------------------
5 ARCHITECTURE rtl OF DeMorgan_01_testbench IS
6 COMPONENT DeMorgan_01 IS
7 PORT ( a : IN BIT;
8 b : IN BIT;
9 x : OUT BIT;
10 y : OUT BIT );
11 END COMPONENT;
12 SIGNAL a: BIT;
13 SIGNAL b: BIT;
14 SIGNAL x: BIT;
15 SIGNAL y: BIT;
16 BEGIN
17 CIRCUITO_01: DeMorgan_01 port map ( a => a,
18 b => b,
19 x => x,
20 y => y );
21 a <= '0', '1' after 100 ns;
22 b <= '0', '1' after 50 ns, '0' after 100 ns, '1' after 150 ns;
23 END rtl;
24 --------------------------------------------------------------
Fig. 2.5. Código para describir el test bench para las funciones equivalentes por el teorema de
DeMorgan.
Fig. 2.6. Simuación del test bench para las funciones equivalentes por el teorema de DeMorgan.
2.6%Instrucciones%del%laboratorio%
a) Implementar los códigos en VHDL para describir las funciones lógicas descritas
en el teorema 2 de DeMorgan.
b) Genere el código para el test bench y realice la simulación, copie las formas de
onda para su reporte. Verifique que la equivalencia entre las funciones.
c) Cree el archivo .UCF y programe la tarjeta basys para verificar los resultados de
la simulación.
d) Implemente cada una de las funciones lógicas utilizando primero únicamente
compuertas NAND y posteriormente compuertas NOR, tal como se describe en
la Fig. 2.2.
e) Implemente el test bench y verifique la equivalencia de los circuitos
implementados con la función lógica equivalente.
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a
las funciones lógicas implementadas.
Lab.%3.%Minimización%de%funciones%
3.1%Objetivo%
El objetivo de esta práctica de laboratorio es comprender el proceso de simplificación
utilizando como herramientas los teoremas del Algebra de Boole y los Mapas de Karnaugh;
así como verificar que las funciones simplificadas que se obtienen sean equivalentes a la
función original.
3.2%Justificación%
Esta práctica de laboratorio cumple con el objetivo específico de la unidad 2 y abarca
el sub-tema 2.2.
3.3 Introducción
El proceso de minimización de funciones lógicas consiste en pasar de una expresión
algebraica a otra equivalente que requiera para su implementación de un menor número de
compuertas lógicas. Para llevar a cabo este proceso en este laboratorio se analizaron dos
métodos, primero utilizando los teoremas del algebra de Boole y después utilizando los
mapas de Karnaugh.
Para aplicar este método de manera eficaz se requiere conocer las propiedades básicas
del algebra de Boole así como de una buena experiencia en su aplicación. En la Tabla 3.1
se muestra una lista de 6 teoremas y 4 postulados del algebra de Boole, los cuales describen
las relaciones más básicas que existen en el algebra de Boole.
! = !" + ! ! + ! + ! ! + !
! = !" + !" + !" + !! + !" del postulado 4(a)
! = !" + !" + ! + !" del teorema 1(b)
Fig. 3.1. Mapas de Karnaugh, (a) de dos variables, (b) de tres variables y (c) de cuatro variables.
Se aplicará este método a los dos ejemplos a los que se les realizó la minimización
por medio de las propiedades del algebra de Boole, con la finalidad de explicar brevemente
su aplicación.
! = !" + ! ! + ! + ! ! + !
Se puede observar que esta función no se encuentra en forma canónica, por lo que
para determinar los miniterminos que la componen, se obtiene su tabla de verdad, la cual se
muestra en la Tabla 3.2.
a b c F
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Tabla 3.2. Tabla de verdad de ! = !" + ! ! + ! + ! ! + !
! = Σ 2, 3, 5, 6, 7
Ahora hay que colocar en un mapa de tres variables 1’s en la posición que
corresponde a cada minitermino de la función y agrupamos los 1’s que sean vecinos y que
se encuentren en posición horizontal o vertical. El tamaño permitido para los grupos es de
2n (1, 2, 4, 8, etc.). En la Fig. 3.3 se muestra el resultado.
! = !" + !
! = Σ 2, 3, 6, 7
!=!
3.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 3.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
3.5%Ejemplo%%demostrativo%
Ahora a continuación se muestra a manera de ejemplo demostrativo como
implementar cada una de las funciones de los ejemplos que se analizaron en el apartado de
introducción.
Fig. 3.6. Formas de onda obtenidas en el simulador lsim para la función original del ejemplo 1.
5. Ejecute nuevamente el test bench de la Fig. 3.5, y deberá obtener las mismas
formas de onda que se observaron en la Fig. 3.6.
6. Para verificar de el funcionamiento físico se agrega el archivo UCF que se
muestra en la Fig. 8, se genera entonces el archivo de programación el cual deberá
descargarse en la tarjeta Digilent Basys utilizando el software digilent Adep.
3.6%Instrucciones%del%laboratorio%
A B C
b) Realizar la síntesis del código VHDL y verifique que el diagrama lógico, del
circuito obtenido, corresponda a la función lógica que se describe.
c) Genere el código para el test bench y lleve a cabo la simulación.
d) Simplifique la función de salida del circuito mostrado en la Fig. 3.9, utilizando las
propiedades básicas del algebra de Boole. Genere la descripción en VHDL de la
función minimizada, realice la síntesis y lleve a cabo la simulación.
e) Compare las formas obtenidas en las simulaciones realizadas en los puntos c y d.
f) Para cada una de las expresiones lógicas obtenga su tabla de verdad, dibuje sus
mapas de Karnaugh correspondientes y simplifique las expresiones lógicas.
i. ! = !!! + !! ! + ! + !"#
ii. '! = !!!! + !!!! + !! + !!!! + !!!!
g) Implemente los códigos VHDL de las funciones originales así como los códigos del
test bench para cada circuito.
h) Realice la simulación y copie las formas de onda obtenidas en su reporte.
i) Implemente los códigos VHDL de las funciones simplificadas así como los códigos
del test bench para cada circuito.
j) Realice la simulación de las funciones simplificadas y copie las formas de onda
obtenidas en su reporte.
k) Compare las formas de onda obtenidas en las simulaciones de las funciones
originales y en las de las funciones ya simplificadas.
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a
las funciones lógicas implementadas.
Lab.%4.%Diseño%de%sitemas%combinacionales%usando%Mapas%de%
Karnaugh:%Elevar%un%número%binario%de%3bits%al%cuadrado%
4.1%Objetivo%
El objetivo de esta práctica de laboratorio es implementar un sistema digital
combinacional que eleve un número binario de 3bits al cuadrado. Este laboratorio empleará
la técnica de reducción de funciones booleanas mediante mapas de Karnaugh y éste diseño
será implementado en la plataforma reconfigurable FPGA.
4.2%Justificación%
Con esta práctica de laboratorio, los estudiantes podrán analizar, conceptualizar,
diseñar e implementar un sistema digital combinacional mediante un caso de estudio
específico. Esta práctica de laboratorio impacta los siguientes temas del plan de estudios de
la asignatura (ver carta descriptiva de la asignatura):
- Unidad 3 - Unidad 4.
- Sub-tema 3.2 y 3.3 - Sub-tema 4.2.
4.3 Introducción
Los circuitos lógicos combinacionales son aquellos en los que, en cada instante, el
nivel lógico de sus variables de salida depende únicamente de sus variables de entrada. Un
circuito combinacional es por tanto una función lógica que puede ser representada mediante
una tabla de verdad o mediante una expresión numérica correspondiente a la suma se
productos canónicos o a un producto de sumas canónicas. En la Fig. 4.1 se muestra la
representación de la estructura de un sistema combinacional.
combinacional. De este modo, cada señal de entrada es una variable de la ecuación lógica
de salida.
ALGEBRA BOOLENA
En Álgebra Booleana, se conoce como término canónico de una función lógica, a todo
producto o suma en la cual aparecen todas las variables en su forma directa o inversa. Una
función lógica que está compuesta por un operador lógico puede ser expresada en forma
canónica usando los conceptos de mintérminos y maxterm. Todas las funciones lógicas son
expresables en forma canónica, tanto como una "suma de minitérminos" como "producto de
maxitérminos". Esto permite un mejor análisis para la simplificación de dichas funciones,
lo que es de gran importancia para la minimización de circuitos digitales.
MAPAS DE KARNAUGH
4.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 4.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
4.5%Ejemplo%%demostrativo%
Con este ejemplo demostrativo se presenta el procedimiento para implementar el sietma
combinacional utilizando mapas de Karnaugh.
Fig. 4.3. Karnaugh: (a) función booleana con minitérminos, (b) función booleana con maxitérminos
Resulta evidente que la ecuación más simplificada resulta de la representación con suma de
productos o minitérminos.
4.6%Instrucciones%del%laboratorio%No.4%
2. Para llevar a cabo la implementación física del circuito en el FPGA que se encuentra en
la tarjeta Basys, se requiere agregar el archivo de restricciones de usuario (UCF por sus
siglas en ingles), el cual define las conexiones entre las entradas y las salidas del circuito
diseñado hacia los pines del FPGA.
FPGA
LEDs
Interruptores
Fig. 4.4. Dispositivos conectados al FPGA Spartan 3E en la tarjeta Basys de Digilent. (Imagen tomada
de www.digientinc.com).
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a las funciones
lógicas implementadas.
Lab.%5.%Decodificador%BCD%a%7%segmentos%en%FPGA%
5.1%Objetivo%
El objetivo de esta práctica de laboratorio es comprender e implementar un
decodificador BCD-a-7-segmentos. En este laboratorio se empleará la técnica de reducción
de funciones booleanas mediante mapas de Karnaugh, y se instanciará la función booleana
de cada segmento en una arquitectura Top en el FPGA.
5.2%Justificación%
Con esta práctica de laboratorio, los estudiantes podrán analizar, conceptualizar,
diseñar e implementar un sistema digital combinacional relacionado al tema de
decodificadores, mediante un caso de estudio específico. Esta práctica de laboratorio
impacta los siguientes temas del plan de estudios de la asignatura Sistemas Digitales I (ver
carta descriptiva de la asignatura):
- Unidad 3 - Unidad 4.
- Sub-tema 3.2 y 3.3 - Sub-tema 4.2 y 4.3.
5.3 Introducción
Los decodificadores BCD-a-siete-segmentos son circuitos combinacionales que
convierten un número BCD en su correspondiente representación de dígito decimal,
mediante un código que obtiene la apropiada selección de los segmentos del display que
está compuesto de 8 diodos-emisores de luz, incluyendo el punto decimal (pin 5). Las ocho
salidas del decodificador (a, b, c, d, e, f, g, punto decimal) activarán los diodos del display
como puede observarse en la Fig. 5.1.
Fig. 5.2. Diagrama esquemático del FPGA Basys con el display de siete segmentos.
Como se puede observar en la Fig. 5.2, se indica a que terminales está físicamente
conectado cada segmento a las terminales del fpga. Ahora, la relación de decodificación
que requiere el sistema combinacional por el display, puede ser obtenido a través de su
representación en la tabla de verdad de este sistema.
El decodificador de BCD-a-siete-segmentos es un dispositivo electrónico que se
utiliza en muchos dispositivos electrónicos. Este proceso consiste en tomar un número
binario de 4-bits y proporcionar las salidas correspondientes para activar los diodos del
display de siete segmentos. Específicamente, cada segmento es un led, cuyas terminales
estan asociadas a las salidas de decodificador y a una terminal común que pueden ser de
cátodo común o de ánodo común. Para encender un segmento de un display de cátodo
común se tiene que emitir un “uno” lógico de la salida del decodificador. Pero si el display
es de ánodo común, se tiene que enviar un “cero” lógico a los segmento para poder
activarlos.
5.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 5.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
5.5%Ejemplo%%demostrativo%BCDJaJsieteJsegmentos%
Con este ejemplo demostrativo se presenta el procedimiento para implementar el sistema
decodificador BCD-siete-segmento utilizando mapas de Karnaugh. Note que solo se
demuestra el procedimiento para obtener la función booleana de un segmento, los demás
segmentos serán encontrados por los alumnos en esta práctica de laboratorio. El proceso
metodológico de diseño es el siguiente:
1.- Determinar la tabla de verdad correspondiente al segmento ‘a’ del sistema decodificador
propuesto. En la Fig. 5.3 se muestra la tabla de verdad para el segmento ‘a’, de este ejemplo
demostrativo.
En la Fig. 5.3 se puede observar que los valores a partir del número 9 no serán desplegados
en el display, por lo tanto en la tabla de verdad se coloca la condición “no importa - con la
X”, así aplicando la técnica de mapas de Karnaugh se podrá simplificar aún más la función
booleana.
4.- Con la técnica de mapas de Karnaugh agrupar y simplificar la función booleana. La Fig.
5.4(b) ilustra las agrupaciones con minitérminos.
Fig. 5.4. Karnaugh: (a) cuadrantes con los valores X-No importa, (b) agrupaciones
5.- Ver el laboratorio 1 de este manual, para seguir el diagrama de flujo de diseño con el
FPGA utilizando el lenguaje de descripción de hardware VHDL.
5.6%Instrucciones%del%laboratorio%No.5%
“B” y “A”, todas del tipo std_logic, genrarán la salida “Leds” del tipo
std_logic_vector (6 downto 0).
g) Realice la síntesis del código y verifique el diagrama esquemático RTL del
código el cual debe coincidir con el mostrado en la figura.
h) Seleccione el menú de simulación en la venta del Project Navigator y corra la
simulación descrita en el test bench realizado en el apartado anterior. Una vez
abierto el simulador ajuste la escala de tiempo y deberá observar las formas de
onda de la señal. Verifique que estas corresponde al comportamiento del
sistema.
2. Para llevar a cabo la implementación física del circuito en el FPGA con la tarjeta Basys,
se requiere agregar el archivo de restricciones de usuario (UCF, por sus siglas en inglés), el
cual define las conexiones entre las entradas y las salidas del circuito diseñado hacia los
pines del FPGA.
Fig. 5.5. Dispositivos conectados al FPGA Spartan 3E en la tarjeta Basys de Digilent. (Imagen tomada
de www.digientinc.com).
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a
las funciones lógicas implementadas.
m.2 ¿Se podrá modificar la tabla de verdad para desplegar en el display otros dígitos
hexadecimales como G, H, J, L,P,H? Si es así describa su hipótesis.
d. Los decodificadores son CI’s especiales que se usan para hacer posible
que una marca de computadoras establescan una representación de números y
caracteres.
Lab.%6.%Sumador%binario%en%FPGA%
6.1%Objetivo%
El objetivo de esta práctica de laboratorio consiste en diseñar e implementar un
sumador binario de 4 bits. En este laboratorio se analizarán las operaciones binarias y se
diseñará un sumador binario de 4 bits utilizando la estructura de medio, y de sumador
completo (HA y FA, por sus siglas en inglés) en una arquitectura Top en el FPGA. Para
verificar el resultado de las operaciones aritméticas se integrará un decodificador BCD-a-
siete-segmentos.
6.2%Justificación%
Con esta práctica de laboratorio, los estudiantes podrán analizar, conceptualizar,
diseñar e implementar un sistema digital relacionado al tema de diseño de arquitecturas que
realicen operaciones aritméticas, mediante un caso de estudio específico. Esta práctica de
laboratorio impacta los siguientes temas del plan de estudios de la asignatura Sistemas
Digitales I (ver carta descriptiva de la asignatura):
- Unidad 3 - Unidad 4
- Sub-tema 3.3 - Sub-tema 4.4.1 y 4.5.1
6.3 Introducción
En la mayoría de los sistemas digitales, desde el circuito de control más sencillo hasta
el computador o el sistema de comunicación más complejo, se realizan operaciones
aritméticas. Estas operaciones aritméticas utilizan códigos binarios que pueden ser
implementados con circuitos integrados de escala de integración pequeña (SSI), escala de
integración media (MSI) y últimamente con circuitos integrados reconfigurables a una
escala muy grande de integración (VLSI).
La suma aritmética de dos variables binarias resulta muy sencilla porque sólo pueden tener
dos posibles valores, 0 y 1 lógico. El resultado de una suma con sistema base dos (binaria)
obtiene el valor lógico de 1 cuando solamente uno de los sumandos tiene dicho nivel
lógico. Cuando ambos sumandos tienen el nivel lógico 1, la suma es cero y se produce un
acarreo.
6.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 6.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
6.5%Ejemplo%%demostrativo:%Sumador%completo%en%VHDL%
Con este ejemplo demostrativo se presenta el procedimiento para implementar el circuito
FA utilizando las funciones booleanas obtenidas en la sección anterior. Note que solo se
demuestra el procedimiento para obtener la implementación del sumador de 4-bits mediante
las funciones del FA. El proceso metodológico de diseño es el siguiente:
Note que la descripción de la arquitectura del código VHDL de la Fig. 6.4 corresponde a las
funciones booleanas descritas en la sección introducción.
4.- Salva el código VHDL con el nombre “FA.vhd”. Sintetizalo e impleméntalo para
analizar su desempeño en área del FPGA.
5.- Crea un segundo archivo del tipo VHDL con el nombre Top_Sum4b_FA.vhd.
7.- Implementar su correspondiente cama de pruebas (Test bench, en inglés) para verificar
el comportamiento del circuito.
1.6%Instrucciones%del%laboratorio%No.6%
En la Fig. 6.6 se puede observar el diagrama esquemático del laboratorio solicitado. Este
diagrama esquemático ayudrá a los estudiantes a reconocer en el diseño estructural cuáles
son las estructuras de nivel inferior y cuáles las de nivel superior. Este diagrama
esquemático también servirá de guía para definir las terminales de entrada y salida que se
utilizarán en la entidad del diseño.
Fig. 6.6. Diagrama esquenático del Sumador de 4 bits con decodificador de 7 segmentos
Fig. 6.7. Diagrama esquenático sugerido para el Sumador 4 bits con HAs
b) Realizar el análisis estructural del diseño (niveles de jerarquía para definir los
módulos de nivel inferior y superior).
c) Implementar el código en VHDL:
i. Diseñar la arquitectura HA.
ii. Integrar el diseño mediante la instancia de los componentes HA en
cascada para estructurar el sumador de 4 bits).
d) Realizar la síntesis del código VHDL y verifique que el diagrama lógico, del
circuito obtenido, corresponda a la arquitectura de la Figura 6.
e) Implementar la cama de prueba para realizar las simulaciones del sumador de 4
bits.
f) Mediante el uso del programa Project Navigator que forma parte del paquete de
software Xilinx ISE Design Suite, crea un nuevo proyecto y se agrega un nuevo
archivo de texto con el código VHDL, en donde se definan las señales de
entrada, del tipo std_logic_vector (3 downto 0), y la salida “Leds” del tipo
std_logic_vector (6 downto 0).
g) Realice la síntesis del código y verifique el diagrama esquemático RTL del
código el cual debe coincidir con el mostrado en la figura.
h) Seleccione el menú de simulación en la venta del Project Navigator y corra la
simulación descrita en el test bench realizado en el apartado anterior. Una vez
abierto el simulador ajuste la escala de tiempo y deberá observar las formas de
onda de la señal. Verifique que estas corresponde al comportamiento del
sistema.
2. Para llevar a cabo la implementación física del circuito en el FPGA con la tarjeta Basys,
se requiere agregar el archivo de restricciones de usuario (UCF, por sus siglas en inglés), el
cual define las conexiones entre las entradas y las salidas del circuito diseñado hacia los
pines del FPGA.
Fig. 6.8. Dispositivos conectados al FPGA Spartan 3E en la tarjeta Basys de Digilent. (Imagen tomada
de www.digientinc.com).
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a las funciones
lógicas implementadas.
Lab.%7.%Sumador/Restador%binario%en%FPGA%
7.1%Objetivo%
El objetivo de esta práctica de laboratorio consiste en diseñar e implementar un
sumador/restador binario de 4 bits. En este laboratorio se analizarán las operaciones en
punto fijo, así como el formato en complemento a 2, para diseñar un sumador/restador
binario de 4 bits. Los alumnos reutilizarán los diseños previos y estructuralmente se
implementará la estrcutura sumador/restador propuesta. Para verificar el resultado de las
operaciones suma/resta aritméticas se integrará el decodificador BCD-a-siete-segmentos.
7.2%Justificación%
Con esta práctica de laboratorio, los estudiantes podrán analizar, conceptualizar,
diseñar e implementar un sistema digital aritmético sumador/restador empleando los
conceptos de completo a 2 y operaciones en punto fijo. Particularmente, esta práctica de
laboratorio impacta los siguientes temas del plan de estudios de la asignatura Sistemas
Digitales I (ver carta descriptiva de la asignatura):
- Unidad 4
- Sub-tema 4.4.1, 4.5
7.3 Introducción
La resta o sustracción de números binarios es similar a los números decimales. La
diferencia radica en que, en binario, cuando el minuendo es menor que el sustraendo, se
produce un préstamo o borrow de 2, mientras que en decimal se produce un préstamo de
10. Antes de iniciar, recordemos la operación de suma de dígitos decimales, al realizar
cualquier suma decimal no existe problema al realizar una suma que de como resultado un
número inferior a 9.
Ejemplo:
1+8=9
Pero que ocurre al realizar una suma como 1 + 9, el resultado es 0 unidades con una
unidad de acarreo, esta unidad se coloca delante del 0 y se le denomina decena, así el
resultado es diez 10.
1 + 9 = 0 (unidades) + 1 (acarreo) = 10
Este mismo procedimiento se lleva a cabo al utilizar cualquier sistema numérico. En
el sistema binario. En este caso las primeras tres operaciones producen un resultado de un
solo dígito, pero cuando ambos bits sumados son “1”, el resultado de la suma binaria consta
de dos dígitos. En donde al bit más significativo del resultado de la suma se le denomina
acarreo.
Este resultado es similar al que se da en el sistema numérico decimal como se vio
anteriormente. Entonces si en el sistema decimal de la “segunda” posición equivale a
multiplicar el dígito por la base, entonces en el sistema binario equivale a multiplicar al
valor del dígito por 2.
En la Fig. 7.1 muestra una suma de 4 bits, en donde se realizan sumas de 0000 binario
a 1111 binario, es decir en decimal de 0 a 15, al realizar las sumas se tienen resultados de
0000 a 1 1110, esto quiere decir que al realizar sumas de 4 bits es posible tener un acarreo
dependiendo de los sumandos.
(-0101)2 = 24 – [0101]2 = (10000 - 0101)2 = [1011]2, de esta manera, una resta como
[1010]2-[0101]2, se puede realizar mediante la suma de [1010]2 – [1011]2.
7.3.3 Complemento a 1
Una alternativa al sistema de complemento a la base es el complemento a la base
menos 1. En este sistema, un número negativo -N de n dígitos en base r se representa por lo
que le falta para llegar a rn-1 y se suele denotar por [N]r-1, es decir, [N]r-1 = rn - 1 - N. en
otra palabras, [N]r-1 = [N]r -1.
Ejemplos:
resultado).
Caso binario para 4 dígitos (r=2, n=4, complemento a 1) (-0101)2 = (24-1) – (0101)2 =
(10000 – 1)2 – (0101)2 = (1111)2 – (0101)2 = [1010]1, de esta manera, una resta como
(1010)2 – (0101)2, = (0101)2 se puede realizar mediante la suma (1010)2 + (1010)2 =
[(1)0100]2 + (1)2 = (0101)2
7.3.4 Complemento a 2
A continuación se dan algunos ejemplos de restas usando complemento a dos, se introduce
el concepto de sobreflujo y de bit de signo.
Sobreflujo. Se dice que en una operación (en el sistema de complemento a dos) produce un
sobreflujo, cuando el resultado requiere más bits que los que se están usando en la
operación. Para visualizar el concepto de sobreflujo, es conveniente tener en mente el
rango representable en complemento a dos con n bits.
Analizando la Fig. 7.2, se puede deducir que el rango representable con n=3 bits será de -
2n-1 a +2n-1-1, esto es, de -4 a +3. Por lo tanto, si intentamos sumar (por ejemplo) 3+2
usando tres bits, el resultado (5) no podrá ser expresado con tres bits, ya que se sale del
rango y se tendrá un sobreflujo.
7.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 7.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
7.5%Ejemplo%%demostrativo:%Operaciones%con%complemento%a%2%
Con estos ejemplos demostrativos se presenta como realizar las operaciones de suma/resta
utilizando el algoritmo de complemento a 2.
Note que solo se demuestra el procedimiento para realizar las operaciones del
sumador/restador de 4-bits, los alumos serán los encargados de diseñar la arquitectura en
esta práctica de laboratorio. Los ejemplos demostrativos son los siguientes:
Ejemplo.
101010
2.- Realizar las siguientes sumas/restas utilizando el algoritmo anterior. Indicar el signo del
resultado y en donde se produce sobreflujo:
a) 4+3
0 1 0 0
+ 0 0 1 1
0 1 1 1
b) 5-4
0 1 0 1
+ 1 1 0 0
1 0 0 0 1
c) -4 – 5
1 1 0 0
+ 1 0 1 1
1 0 1 1 1
El resultado es positivo, lo cual no puede ser pues se están sumando dos datos negativos
por lo que hay sobreflujo.
d) 6 + 5
0 1 1 0
+ 0 1 0 1
0 1 0 1 1
El resultado es negativo, lo cual no puede ser pues se están sumando dos datos positivos
por lo tanto hay sobreflujo, ya que el resultado requiere de otro bit adicional para
representar el resultado de la suma, que en este caso es el bit de signo.
e) 9 + 2
Esta operación NO se puede realizar con 4 bits, ya que el 9 requiere al menos 5 bits para ser
expresado en el sistema de complemento a 2
"Si los signos de los números que se suman son diferentes, cualquier acarreo obtenido es
falso y deberá de ser ignorado".
Ejemplo: Efectúe las siguientes operaciones y exprese el resultado en decimal con su signo
(MSB = bit de signo)
a).-
0 1 1 1 1 0 1 1 Signo positivo
+ 1 0 1 1 0 0 1 0 Signo negativo
1 0 0 1 0 1 1 0 1 El acarreo se ignora
b).-
1 0 0 1 0 1 1 1 Signo negativo
+ 1 0 1 0 0 1 1 0 Signo negativo
1 0 0 1 1 1 1 0 1 El acarreo es el bit de signo
7.6%Instrucciones%del%laboratorio%No.7%
En la Fig. 7.3 se puede observar el diagrama esquemático del laboratorio solicitado. Este
diagrama esquemático ayudrá a los estudiantes a reconocer en el diseño estructural, cuáles
son las estructuras de nivel inferior y cuáles las de nivel superior.
Este diagrama esquemático también servirá de guía para definir las terminales de entrada y
salida que se utilizarán en la entidad del diseño.
texto con el código VHDL, en donde se definan las señales de entrada, del tipo
std_logic_vector (3 downto 0), y la salida “Leds” del tipo std_logic_vector (6
downto 0) para el decodificador BCD-a-siete segmentos.
g) Realice la síntesis del código y verifique el diagrama esquemático RTL del
código el cual debe coincidir con el mostrado en la figura.
h) Seleccione el menú de simulación en la venta del Project Navigator y corra la
simulación descrita en el test bench realizado en el apartado anterior. Una vez
abierto el simulador ajuste la escala de tiempo y deberá observar las formas de
onda de la señal. Verifique que estas corresponde al comportamiento del
sistema.
2. Para llevar a cabo la implementación física del circuito en el FPGA con la tarjeta Basys,
se requiere agregar el archivo de restricciones de usuario (UCF, por sus siglas en inglés), el
cual define las conexiones entre las entradas y las salidas del circuito diseñado hacia los
pines del FPGA.
Fig. 7.4. Dispositivos conectados al FPGA Spartan 3E en la tarjeta Basys de Digilent. (Imagen tomada
de www.digientinc.com).
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a las funciones
lógicas implementadas.
Lab.%8.%Multiplicador%binario%
8.1%Objetivo%
El objetivo de esta práctica es implementar multiplicadores combinacionales, con el
propósito de mejorar la comprensión acerca de la multiplicación binaria, además de ser un
buen ejemplo de cómo es posible construir estructuras complejas a partir de los bloques
básicos que se han implementado previamente (sumadores y compuertas lógicas).
8.2%Justificación%
Esta práctica de laboratorio cumple con el objetivo específico de la unidad 4 y abarca
el sub-tema 4.4.
8.3%Introducción%
La multiplicación de números binarios realiza de la misma forma en la cual
realizamos la multiplicación de números decimales. El multiplicando es multiplicado por
cada unos de los bits del multiplicador, iniciando por el menos significativo y cada una de
estas multiplicaciones forma un producto parcial. Los cuales se van desplazando
sucesivamente una posición a la izquierda y el producto final se obtiene de la suma de los
productos parciales. En la Fig. 8.1 se muestra un ejemplo de la multiplicación de dos
números de 4 bits.
1 1 0 1 (13)
x 1 0 1 1 (11)
1 1 0 1
1 1 0 1
0 0 0 0
1 1 0 1
1 0 0 0 1 1 1 1 (143)
Fig. 8.1. Ejemplo de la multiplicación binaria de dos números de 4 bits.
Arquitectura 1.
etapa tenemos una estructura formada por 3 sumadores de 4 bits, la cual por medio de
sumas acumuladas nos permite obtener el producto final. La función del primer sumador, es
sumar el primer producto parcial con el segundo el cual ha sido desplazado una posición a
la izquierda a este resultado se le suma el tercer producto parcial utilizando el segundo
sumador de 4 bits y de nueva cuenta a la suma obtenida le sumamos el cuarto producto
parcial utilizando el tercer sumador. La estructura completa se observa en la Fig. 8.2.
Arquitectura 2.
8.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el
ejemplo demostrativo de la sección 8.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
8.5%Ejemplo%%demostrativo%
En esta sección se describe el procedimiento para implementar el multiplicador con la
arquitectura 1, que se ha descrito en el apartado de introducción.
1. Cree un nuevo proyecto y agregue un nuevo archivo de texto con extensión VHDL
con el código que se muestra en la Fig. 8.5.
1 LIBRARY IEEE;
2 USE IEEE. STD_LOGIC_1164.ALL;
3
4
5 ENTITY four_bit_multiplier IS
6 PORT ( a : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
7 b : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
8 s : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ;
9 END four_bit_multiplier;
10
11 ARCHITECTURE arch1 OF four_bit_multiplier IS
12
13 COMPONENT four_bit_adder IS
14 port ( a : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
15 b : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
16 ci : IN STD_LOGIC;
17 s : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ;
18 co : OUT STD_LOGIC ) ;
19 end COMPONENT;
20
21 signal C0 : STD_LOGIC_VECTOR(3 DOWNTO 0);
22 signal C1 : STD_LOGIC_VECTOR(3 DOWNTO 0);
23 signal C2 : STD_LOGIC_VECTOR(3 DOWNTO 0);
24 signal C3 : STD_LOGIC_VECTOR(3 DOWNTO 0);
25 signal C4 : STD_LOGIC_VECTOR(3 DOWNTO 0);
26 signal C5 : STD_LOGIC_VECTOR(3 DOWNTO 0);
27
28 begin
29
30 C0 <= (b(3) AND a(0)) & (b(2) AND a(0)) & (b(1) AND a(0)) & (b(0) AND a(0));
31 C1 <= (b(3) and a(1)) & (b(2) AND a(1)) & (b(1) AND a(1)) & (b(0) AND a(1));
32 C2 <= (b(3) and a(2)) & (b(2) AND a(2)) & (b(1) AND a(2)) & (b(0) AND a(2));
33 C3 <= (b(3) and a(3)) & (b(2) AND a(3)) & (b(1) AND a(3)) & (b(0) AND a(3));
34
35 s(0) <= C0(0);
36
37 sumador_1 : four_bit_adder PORT MAP ( a(3) => '0',
38 a(2 DOWNTO 0) => C0(3 DOWNTO 1),
39 b => C1,
40 ci => '0',
41 s(0) => s(1),
42 s(3 DOWNTO 1) => C4(2 DOWNTO 0),
43 co => C4(3) );
44
45 sumador_2 : four_bit_adder PORT MAP ( a => C4,
46 b => C2,
47 ci => '0',
48 s(0) => s(2),
49 s(3 DOWNTO 1) => C5(2 DOWNTO 0),
50 co => C5(3) );
51
52 sumador_3 : four_bit_adder PORT MAP ( a => C5,
53 b => C3,
54 ci => '0',
55 s(3 DOWNTO 0) => s(6 DOWNTO 3),
56 co => s(7) );
57 end arch1;
2. Agregue al proyecto el archivo los archivos VHDL con la descripción del sumador
de 4 bits, y verifique que los nombres de los puertos coincidan con los utilizados en
el archivo del multiplicador, de ser necesario cambie los nombres de los puertos.
Después de agregar estos archivos, deberá mostrarse en la ventana del proyecto la
estructura de archivos como se muestra en la Fig. 8.6.
3. Agregue al proyecto el archivo VHDL con el código mostrado en la Fig. 8.7. para
llevar a cabo el test bench,
1 LIBRARY IEEE;
2 USE IEEE.STD_LOGIC_1164.ALL;
3
4
5 ENTITY multiplicador_tb IS
6 END multiplicador_tb;
7
8 ARCHITECTURE behavior OF multiplicador_tb IS
9
10 COMPONENT four_bit_multiplier
11 PORT(
12 a : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
13 b : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
14 s : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
15 );
16 END COMPONENT;
17
18 --Entradas
19 SIGNAL a : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0');
20 SIGNAL b : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0');
21 --Salidas
22 SIGNAL s : STD_LOGIC_VECTOR(7 DOWNTO 0);
23
24 BEGIN
25
26 multiplicador: four_bit_multiplier PORT MAP ( a => a,
27 b => b,
28 s => s )
29 a <= "1010",
30 "1000" AFTER 100 ns,
31 "0111" AFTER 200 ns,
32 "0011" AFTER 300 ns,
33 "1111" AFTER 400 ns;
34
35 b <= "0110",
36 "1100" AFTER 100 ns,
37 "1111" AFTER 200 ns,
38 "1100" AFTER 300 ns,
39 "1111" AFTER 400 ns;
40 END;
Fig. 8.7. Código VHDL del test bench del multiplicador de 4 bits.
(a)
(b)
Fig. 8.8. Señales obtenidas en la simulación del multiplicador (a) en binario (b) en decimal.
8.6%Instrucciones%del%laboratorio%
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a
las funciones lógicas implementadas.
Lab.%9.%Mux,%Demux,%Decodificadores%en%FPGAs%
9.1%Objetivo%
El objetivo de esta práctica de laboratorio consiste en diseñar e implementar circuitos
combinacionales Mux, Demux y Decodificadores mediante la técnica de diseño para
FPGAS de Lógica de Transferencia de Registros (RTL, por sus siglas en inglés). En este
laboratorio se analizarán las diferentes estructuras computacionales en VHDL para
implementar dichas arquitecturas, particularmente con las estructuras if else if, case, with
select y when else.
9.2%Justificación%
Con esta práctica de laboratorio, los estudiantes podrán analizar, conceptualizar,
diseñar e implementar circuitos combinacionales Mux, Demux y Decodificadores, además
de familiarizarse con las estructuras en VHDL descritas en 1.1. Específicamente, esta
práctica de laboratorio impacta los siguientes temas del plan de estudios de la asignatura
Sistemas Digitales I (ver carta descriptiva de la asignatura):
- Unidad 4
- Sub-tema 4.5.2, 4.5.3
9.3 Introducción
9.3.1 Decodificador
a)
b)
c)
Fig. 9.1. Decodificador 2-4: (a) símbolo esquemático, (b) tabla de verdad, y (c) diagrama lógico.
9.3.2 Codificador
9.3.3 Multiplexor
a)
b)
Fig. 9.3. Mux 8-1: (a) tabla de verdad, (b) diagrama lógico.
9.3.4 Demultiplexor.
Un demultiplexor (o demux) es un dispositivo que tiene una simple señal de entrada y
que dependiendo de la combinación del selector, genera varias señales de salida. Un
demultiplexor estradicionalmente utilizado como dispositivo complementario en un
esquema de comunicación en el lado receptor. En otras palabras, el demultiplexor toma una
fuente de datos de entrada y la distribuye selectivamente a uno de N canales de salida, igual
que un interruptor de múltiples posiciones. La Fig. 9.4 muestra el diagrama general de un
Mux y de un Demux.
9.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 9.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
9.5%Ejemplo%%demostrativo:%Operaciones%con%complemento%a%2%
En esta sección se presenta como implementar un mux/demux utilizando el lenguaje de
descripción de hardware VHDL.
Note que solo se demuestra el procedimiento para implementar las arquitecturas digitales
mencionadas anteriormente utilizando las estructuras if else if, case, with select y when else.
El procedimiento de diseño es el siguiente:
2.- Crear un Archivo nuevo del tipo VHDL con el nombre mux_case.vhd
4.- Salva el código VHDL con el nombre “mux_case.vhd”. Sintetizalo e impleméntalo para
analizar su desempeño en área del FPGA.
6.- Crear un Archivo nuevo del tipo VHDL con el nombre mux_if_else_if.vhd
10.- Crear un Archivo nuevo del tipo VHDL con el nombre when_else.vhd
Note que la descripción del when else NO debe encontrarse dentro de un process.
12.- Salva el código VHDL con el nombre “when else.vhd”. Sintetizalo e impleméntalo
para analizar su desempeño en área del FPGA.
10.- Crear un Archivo nuevo del tipo VHDL con el nombre with_select.vhd
Note que la descripción del with select NO debe encontrarse dentro de un process.
12.- Salva el código VHDL con el nombre “when else.vhd”. Sintetizalo e impleméntalo
para analizar su desempeño en área del FPGA.
9.6%Instrucciones%del%laboratorio%No.9%
Este diagrama esquemático se puede observar que el usuario del sistema de seguriad podrá
monitorear cada interruptor de la puerta isualizando su estado (leds y display 7-segmentos)
mediante la apropiada selección de los switches en los selectores.
2. Para llevar a cabo la implementación física del circuito en el FPGA con la tarjeta Basys,
se requiere agregar el archivo de restricciones de usuario (UCF, por sus siglas en inglés), el
cual define las conexiones entre las entradas y las salidas del circuito diseñado hacia los
pines del FPGA.
Fig. 9.10. Dispositivos conectados al FPGA Spartan 3E en la tarjeta Basys de Digilent. (Imagen tomada
de www.digientinc.com).
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a las funciones
lógicas implementadas.
Lab.%10.%Registros%
10.1%Objetivo%
El objetivo de esta práctica es llevar a cabo la implementación de los diferentes tipos
de registros (con carga en paralelo y con carga en serie).
10.2%Justificación%
Esta práctica de laboratorio cumple con el objetivo específico (ver carta descriptiva
de la asignatura) del siguiente tema:
- Unidad 5
- Sub-tema 5.3
10.3 Introducción
Un registro consiste en un conjunto de flip-flops, cada uno de los cuales tiene la
capacidad de almacenar un bit de información. Un registro de n bits consiste en un grupo n
flip-flops capaz de almacenar n bits de información. Adicionalmente un registro puede
contener compuertas lógicas que realizan tareas de procesamiento de los datos. De tal
manera que los flip-flops almacenan la información binaria, y las compuertas como esta
información es transferida a los circuitos.
En la Fig. 10.1 se muestra un registro de 4 bits con carga en paralelo con una entrada
de control de carga.
Este control se lleva a cabo por la compuertas lógicas del circuito, las cuales realizan
la función de un multiplexor dos canales, el cual selecciona la fuente de los datos que se
cargaran en el registro, cuando la entrada de carga es 1, los datos de las cuatro entradas
externas son transferidas al registro y cuando la entrada es 0, las salidas de los flip-flops
son conectadas a sus entradas respectivas, por lo que en este caso el registro permanece sin
cambio.
En un sistema digital que opera en modo en serie la información se transfiere bit a bit,
uno cada vez, desplazando los bits del registro fuente hacia el registro de destino. Los
registros que permiten la transferencia en serie también son conocidos como registros de
desplazamiento. El registro de desplazamiento más sencillo es aquel que usa solamente
flip-flops como se muestra en la Fig. 10.2. La salida de Q de un flip-flop dado, se conecta
con la entra D del flip-flop de la derecha. Cada pulso de reloj desplaza el contenido del
registro un bit en posición a la derecha. La entrada serial determina el dato que va en el
flip-flop que se encuentra a la izquierda durante el desplazamiento. La salida serial se toma
de la salida del flip-flop que se encuentra en el extremo derecho después de la aplicación
del pulso. Este registro realiza el desplazamiento de manera unidireccional hacia la derecha,
aunque si simplemente se voltea, podemos ver que el desplazamiento sería hacia la
izquierda.
Registro%de%desplazamiento%bidireccional%con%carga%en%paralelo.%
Si se tiene acceso a cada una de las salidas de los flip-flops de un registro de
desplazamiento, se pueden extraer los datos que se han introducido de manera serial.
Además si agregamos la capacidad de cargar los datos en paralelo, entonces estos los datos
que entran al registro pueden extraerse en serie desplazando los datos almacenados en el
registro.
10.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el
ejemplo demostrativo de la sección 10.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
10.5%Ejemplo%%demostrativo%
En el ejemplo de esta sección se describe la implementación de un flip-flop tipo D,
con control de carga, el cual posee las siguientes terminales de entrada y salida:
Una vez agregado el archivo del test bench al proyecto se abre la ventana del simulador
y se deben observar las señales que se muestran en la Fig. 10.8.
| "
Fig. 10.8. Resultado de la simulación del flip-flop tipo D.
10.6%Instrucciones%del%laboratorio%
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a
las funciones lógicas implementadas.
Lab.%11.%Contadores%binarios%en%FPGAs%
11.1%Objetivo%
El objetivo de esta práctica de laboratorio consiste en diseñar e implementar circuitos
con contadores binarios en lógica reconfigurable, específicamente FPGAS.
11.2%Justificación%
Con esta práctica de laboratorio, los estudiantes podrán analizar, conceptualizar,
diseñar e implementar circuitos contadores binarios, además de familiarizarse con las
estructuras en VHDL para su diseño. Específicamente, esta práctica de laboratorio impacta
los siguientes temas del plan de estudios de la asignatura Sistemas Digitales I (ver carta
descriptiva de la asignatura):
- Unidad 5
- Sub-tema 5.4, 5.5
11.3 Introducción
Dado que cada flip-flop es capaz de almacenar 2 estados, un sistema de n flip-flops podrá
codificar 2n estados (números de cuenta) diferentes. El paso del estado o número de cuenta
actual al estado siguiente se realiza en sincronismo con la señal de reloj, de tal forma que el
contador va avanzando por la secuencia de estados hasta que termina de completar un ciclo,
es decir, una secuencia de conteo particular. Una vez terminado el ciclo, vuelve al estado de
partida y comienza un nuevo ciclo. Como cada estado sólo posee un estado siguiente, es
fácil deducir que todos los estados que recorre un contador en un ciclo o secuencia de
conteo son diferentes. Si el número de estados diferentes que recorre es k, se habla de un
contador módulo k. El número máximo de estados posibles es 2n, por lo que k ≤2n. Un
contador se denomina binario si k=2n.
puesto que no posee entradas (cada estado sólo posee un único estado siguiente al que
accede cuando existe una variación o flanco en la señal de reloj), y no posee salidas (la
salida de un contador es su propio estado interno, es decir, el valor almacenado en sus
biestables). El método de diseño es el mismo que el usado en el tema anterior, e incluso
algo más sencillo puesto que ya no es necesario minimizar ni asignar estados. Veamos un
ejemplo de un contador binario ascendente módulo 8, es decir, un contador que siga la
secuencia {..., 0, 1, 2, 3, 4, 5, 6, 7, ...}. En la Fig. 11.1 se pueden observar las transiciones
de estado del contador.
Ahora, para conocer las funciones de cada biestable hay que utilizar la tabla de transiciones
de estado de la Fig. 1, que corresponden a flip-flops JK. De la Fig. 11.2 se pueden deducir
las expresiones de las entradas J y K de cada biestable en función del estado actual.
1.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 11.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
11.5%Ejemplo%%demostrativo:%contador%binario%de%4%bits%
En esta sección se presenta como implementar un contador binario de 4 bits utilizando el
lenguaje de descripción de hardware VHDL.
2.- Crear un Archivo nuevo del tipo VHDL con el nombre contador4b.vhd
Note que la descripción del código debe encontrarse dentro de un process y es sensible al
reloj.
5.- Verifica el diseño utilizando su respectivo “testbench” para simular los resultados. Ver
Fig. 11.6.
11.6%Instrucciones%del%laboratorio%No.%11%
Contador de 10 segundos.
En esta práctica de laboratorio se va a diseñar e implementar en un FPGA un contador de
10 segundos que se verificará en un display de siete segmentos y en leds. La cuenta irá de 0
a 9 (un dígito BCD) para el display y su representación binaria en Leds.
En la primera etapa del diseño se generará una señal de 1 segundo (s1seg) del reloj
principal de 50 MHz. Esto es, esta señal dividirá la frecuencia de 50 MHz a 1 Hz, para
generar el nuevo reloj de 1 segundo. En la Fig. 11.7 se puede observar el diagrama
esquemático de la primera etapa del diseño de esta práctica 11 de laboratorio.
En la segunda etapa del diseño, se implementará un segundo contador que contará diez
cuentas de un segundo (s1seg). En resumen se puede deducir que la arquitectura de este
Para llevar la cuenta se puede utilizar una señal de tipo entero o natural (integer o natural).
Esta señal debe de tener un rango potencia de dos.
a) Realizar el análisis estructural del diseño (niveles de jerarquía para definir los
módulos de nivel inferior y superior).
b) Implementar el código en VHDL:
i. Diseñar la arquitectura divisor de frecuencia y del contador a
10segundos.
ii. Integrar todo el diseño.
c) Realizar la síntesis del código VHDL y verifique que el diagrama del circuito
obtenido, corresponda a la arquitectura de la Fig. 11.8.
2. Para llevar a cabo la implementación física del circuito en el FPGA con la tarjeta Basys,
se requiere agregar el archivo de restricciones de usuario (UCF, por sus siglas en inglés), el
cual define las conexiones entre las entradas y las salidas del circuito diseñado hacia los
pines del FPGA.
Fig. 11.9. Dispositivos conectados al FPGA Spartan 3E en la tarjeta Basys de Digilent. (Imagen tomada
de www.digientinc.com).
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a las funciones
lógicas implementadas.
Lab.%12.%Cronómetro%
12.1%Objetivo%
El objetivo de esta práctica consiste en la integración de varios contadores para
implementar un cronometro digital, con una cuenta de minutos y segundos. El tiempo
medido deber ser desplegado en los displays de siete segmentos por lo que se necesita
implementar el control del multiplexado de estos.
12.2%Justificación%
Con esta práctica de laboratorio se busca la integración de algunos de los elementos
que se desarrollado en las prácticas anteriores, como el decodificador de 7 segmentos, los
contadores y el divisor de frecuencia. En está práctica de se cubren de manera específica los
siguientes temas del plan de estudios de la asignatura Sistemas Digitales I (ver carta
descriptiva de la asignatura):
- Unidad 4
- Sub-tema 4.5 (4.5.2, 4.5.3 y 4.5.4)
- Unidad 5
- Sub-tema 5.4 y 5.5.
12.3 Introducción
Los contadores son elementos ampliamente utilizados en los sistemas digitales y una
aplicación muy común es en la medición de intervalos de tiempo, por lo que los podemos
ver cronómetros integrados, en una muy amplia diversidad de dispositivos.
Para llevar a cabo la medición del tiempo necesitamos al igual que en la práctica 11,
una señal de reloj de 1 Hz la cual es nuestra referencia para llevar a cabo el conteo, por lo
tanto se utilizará el modulo de división que se diseño anteriormente.
Para desplegar la cuenta del tiempo en los displays es necesario llevar a cabo el
multiplexado de las salidas de los contadores. Esta tarea se realizará por el circuito que se
muestra en la Fig. 12.2, este se encarga de tomar el valor de alguna de las 4 entradas de 4
bits y desplegar su valor ya decodificado en el display de 7 segmentos. Esta tarea la hace en
forma secuencial con cada una de las entradas y con una frecuencia lo suficientemente
rápida para que nuestra vista no perciba la condición de apagado de alguno de los displays.
12.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el
ejemplo demostrativo de la sección 12.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
12.5%Ejemplo%%demostrativo%
En la arquitectura que se ha descrito en el aparado de introducción, se requieren
contadores con diferente valor máximo de cuenta por lo que se hará uso de un parámetro
genérico, lo que nos permite en una misma arquitectura describir cada uno de estos
contadores, simplemente al asignar durante el instanciado un diferente valor a este
parámetro genérico. En el código mostrado en la Fig. 12.3 se puede el código en VHDL
con la descripción para os contadores donde n es el parámetro genérico que define la cuenta
máxima.
1 LIBRARY IEEE;
2 USE IEEE.STD_LOGIC_1164.ALL;
3 USE IEEE.STD_LOGIC_ARITH.ALL;
4 USE IEEE.STD_LOGIC_UNSIGNED.ALL;
5
6 ENTITY contador IS
7 GENERIC( n : STD_LOGIC_VECTOR:= "0101");
8 PORT ( clk : IN STD_LOGIC;
9 Reset : IN STD_LOGIC;
10 en : IN STD_LOGIC;
11 m : OUT STD_LOGIC;
12 salida : OUT std_logic_vector(3 downto 0)
13 );
14 END contador;
15
16 ARCHITECTURE arch OF contador IS
17
18 SIGNAL cuenta_s: std_logic_vector(3 DOWNTO 0) := (OTHERS => '0');
19
20 BEGIN
21
22 PROCESS (clk, cuenta_s)
23
24 BEGIN
25 IF (reset='1') THEN
26 cuenta_s <= "0000" ;
27 ELSIF (clk'event AND clk = '1' and en = '1') THEN
28 IF cuenta_s <= n-1 THEN
29 cuenta_s <= cuenta_s + "0001";
30 ELSE
31 m <= '0';
32 cuenta_s <= "0000";
33 END IF;
34 END IF;
35 IF cuenta_s = n THEN
36 m <= '1';
37 ELSE
38 m <= '0';
39 END IF;
40 END PROCESS;
41
42 salida <= cuenta_s;
43
44 end arch;
Fig. 12.3 Código VHDL con la descripción para los contadores limitados a una cuenta máxima.
Esta arquitectura que se propone para la implementación de los contadores cuenta con
una salida que indica que el contador ha llegado a su cuenta máxima lo que nos permite
habilitar a los contadores de las etapas subsecuentes. Como ejemplo de la interconexión de
los contadores para implementar la estructura propuesta para el cronómetro, en el código
que se muestra en la Fig. 12.4 se describe como conectar dos de estos contadores para
realizar la cuenta de 00 a 59 segundos.
1 LIBRARY IEEE;
2 USE IEEE.STD_LOGIC_1164.ALL;
3 USE IEEE.STD_LOGIC_ARITH.ALL;
4 USE IEEE.STD_LOGIC_UNSIGNED.ALL;
5
6 ENTITY cronometro IS
7 PORT ( clk : IN STD_LOGIC;
8 reset : IN STD_LOGIC;
9 en : IN STD_LOGIC;
10 segundos : OUT std_logic_vector(3 downto 0);
11 dec_segundos: OUT std_logic_vector(3 downto 0)
12 );
13 END cronometro;
14
15 ARCHITECTURE arch OF cronometro IS
16
17 COMPONENT contador IS
18 GENERIC( n : STD_LOGIC_VECTOR:= "0101");
19 PORT ( clk : IN STD_LOGIC;
20 reset : IN STD_LOGIC;
21 en : IN STD_LOGIC;
22 m : OUT STD_LOGIC;
23 salida : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
24 );
25 END COMPONENT;
26
27 SIGNAL m1 : STD_LOGIC;
28
29 BEGIN
30
31 contador_1: contador GENERIC MAP ( n => "1001" )
32 PORT MAP ( clk => clk,
33 reset => reset,
34 en => en,
35 m => m1,
36 salida => segundos );
37
38 contador_2: contador GENERIC MAP ( n => "0101" )
39 PORT MAP ( clk => clk,
40 reset => reset,
41 en => m1,
42 m => open,
43 salida => dec_segundos );
44
45
46 END ARCHITECTURE;
Fig. 12.4. Código VHDL con el instanciado de dos contadores para la cuenta de 0 a 59 segundos.
En la Fig. 12.5 se muestra el código en VHDL para describir el test bench con el que
se llevara a cabo la simulación.
1 LIBRARY ieee;
2 USE ieee.std_logic_1164.ALL;
3
4 ENTITY cronometro_tb IS
5 END cronometro_tb;
6
7 ARCHITECTURE behavior OF cronometro_tb IS
8
9 COMPONENT cronometro
10 PORT(
11 clk : IN std_logic;
12 reset : IN std_logic;
13 en : IN std_logic;
14 segundos : OUT std_logic_vector(3 downto 0);
15 dec_segundos : OUT std_logic_vector(3 downto 0)
16 );
17 END COMPONENT;
18
19
20 --Inputs
21 signal clk : std_logic := '0';
22 signal reset : std_logic := '0';
23 signal en : std_logic := '0';
24
25 --Outputs
26 signal segundos : std_logic_vector(3 downto 0);
27 signal dec_segundos : std_logic_vector(3 downto 0);
28
29 -- Clock period definitions
30 constant clk_period : time := 10 ns;
31
32 BEGIN
33
34 -- Instantiate the Unit Under Test (UUT)
35 uut: cronometro PORT MAP (
Una vez agregado al proyecto el código para el test bench, se abre la venta del
simulador y se obtienen las siguientes gráficas. En la Fig. 12.6 se muestra la cuenta de los
primeros 16 segundos.
En la Fig. 12.7 se muestra las señales que corresponden a los últimos 15 segundos.
12.6%Instrucciones%del%laboratorio%
1. Complete el circuito del ejemplo demostrativo para tener un cronómetro con una
cuenta máxima de 59 minutos con 59 segundos.
2. Creé el archivo VHDL para describir el test bench y obtenga las gráficas en el
simulador.
3. Implemente el circuito de control para el multiplexado de los displays de 7
segmentos que se ha explicado en la sección de introducción.
4. Creé el archivo UCF, implemente el circuito en la tarjeta Digilent Basys y
compruebe la correcta operación del sistema.
PARTE II. Análisis del desempeño de las arquitecturas en el FPGA
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a
las funciones lógicas implementadas.
Lab.%13.%Control%de%velocidad%de%un%motor%DC%con%PWM%
13.1%Objetivo%
El objetivo de esta práctica de laboratorio consiste en diseñar e implementar el
circuito controlador de la velocidad de un motor DC mediante la modulación del ancho de
pulso de una señal cuadrada (PWM, por sus siglas en inglés), en un FPGA.
13.2%Justificación%
Con esta práctica de laboratorio, los estudiantes podrán analizar, conceptualizar,
diseñar e implementar un circuito controlador digital para una aplicación ampliamente
utilizada en el ámbito Mecatrónico. Específicamente, esta práctica de laboratorio impacta
los siguientes temas del plan de estudios de la asignatura Sistemas Digitales I (ver carta
descriptiva de la asignatura):
- Unidad 6
- Sub-tema 6.1, 6.2 y 6.3
13.3 Introducción
El diseño de máquinas de estado se puede realizar de una forma muy simple en VHDL, y
constituye un claro ejemplo de la potencia de los lenguajes de descripción de hardware
frente a los métodos tradicionales de diseño. La metodología tradicional comienza por
construir un diagrama de estados, de la que se deriva una tabla de estados. Sobre esta tabla
se pueden agrupar estados equivalentes, si se da el caso. A continuación se asignan los
estados y se pasa a una tabla de excitación de las que se obtienen las ecuaciones de estados
de los estados siguientes y de las salidas según el tipo de biestable (Flip Flop) elegido para
el diseño del sistema secuencial. Se trata de un método algorítmico y por tanto susceptible
de ser realizado por una herramienta de software en VHDL. El código VHDL describe la
tabla de estados o el diagrama de estados y es la herramienta de síntesis quien lleva a cabo
todo el proceso de implementación de compuertas lógicas y biestables. En general, las
máquinas de estado se clasifican como máquina de Moore o de Mealy. La primera se
caracteriza porque las salidas dependen únicamente del estado, en cambio la de Mealy
dependen del estado y de las entradas y se diferencia en la forma de expresar las señales de
salida. En VHDL no es necesario resolver ninguna tabla de estados. Las transiciones de
estados se pueden expresar con una estructura combinacional del tipo IF-THEN-ELSE o lo
que es más habitual con una estructura CASE-WHEN. Ambas deben ser utilizadas en un
proceso.
MC. Manuel Jesús López Sánchez Lab. 13. Control de velocidad de un motor
Dr. Alejandro Arturo Castillo Atoche DC con PWM
Manual de Prácticas de Sistemas Digitales I 100
La modulación por ancho de pulso (PWM, por sus siglas en inglés) es un tipo de control
que se puede utilizar para muchas aplicaciones Mecatrónicas. En este laboratorio se
explicará de manera simplificada el funcionamiento de un PWM.
Los parámetros fundamentales del PWM son el periodo (T) y el ciclo de trabajo (D). El
ciclo de trabajo indica el tiempo que la función es activada con respecto al tiempo total (el
periodo). La Fig. 13.1 muestra tres ciclos de trabajo distintos. Se puede observar que el
periodo del PWM se mantiene constante, y lo que cambia es el tiempo en que la señal se
mantiene activa respecto al periodo total.
Si el periodo del PWM es suficientemente pequeño, el dispositivo que está gobernado (en
este laboratorio el motor) no notará las variaciones de la tensión y el resultado es que el
motor recibirá una corriente promedio dada por el ciclo de trabajo. La Fig. 13.2 muestra
dos PWM con ciclos de trabajo distintos que se aplicarán al motor para controlar su
velocidad.
13.4%Herramientas%y%materiales%requeridos%
El material y las herramientas (software) requeridas para poder implementar el ejemplo
demostrativo de la sección 13.5, se presentan a continuación.
• Computadora con los paquetes de software Xilinx ISE Design Suite y Digilent
Adept precargados.
• Tarjeta Digilent Basys ó Digilent Nexys 3.
MC. Manuel Jesús López Sánchez Lab. 13. Control de velocidad de un motor
Dr. Alejandro Arturo Castillo Atoche DC con PWM
Manual de Prácticas de Sistemas Digitales I 101
13.5%Ejemplo%%demostrativo:%PWM%
En esta sección se presenta como implementar un controlador digital PWM de 3 bits de
resolución utilizando el lenguaje de descripción de hardware VHDL.
2.- Crear un Archivo nuevo del tipo VHDL con el nombre pwm3b.vhd
Note que la descripción del código debe encontrarse dentro de un process y es sensible al
reloj.
4.- Salva el código VHDL con el nombre “pwm3b.vhd”. Sintetizalo e impleméntalo para
analizar su desempeño en área del FPGA.
5.- Verifica el diseño utilizando su respectivo “testbench” para simular los resultados.
MC. Manuel Jesús López Sánchez Lab. 13. Control de velocidad de un motor
Dr. Alejandro Arturo Castillo Atoche DC con PWM
Manual de Prácticas de Sistemas Digitales I 102
13.6%Instrucciones%del%laboratorio%No.%13%
MC. Manuel Jesús López Sánchez Lab. 13. Control de velocidad de un motor
Dr. Alejandro Arturo Castillo Atoche DC con PWM
Manual de Prácticas de Sistemas Digitales I 103
b) 103 Generar la señal periódica que produzca una señal con periodo T
(cuentaPWM). En realidad será un contador. ¿De cuánto sería este contador?
c) 103 Comparar la cuenta de la señal periódica con el valor del ciclo de trabajo, si
el ciclo de trabajo es mayor que la señal del PWM será uno, y si no, será cero
lógico.
d) Implementar el código en VHDL:
i. Diseñar la arquitectura divisor de frecuencia y del PWM.
ii. Integrar todo el diseño.
e) Realizar la síntesis del código VHDL.
f) Implementar la cama de prueba del sistema.
g) Mediante el uso del programa Project Navigator que forma parte del paquete de
software Xilinx ISE Design Suite, cree un nuevo proyecto y anexar el archivo de
texto con el código VHDL, en donde se definan las señales de entrada, del tipo
std_logic_vector (N downto 0), y la salida “motor” y “display” del tipo
std_logic_vector (6 downto 0) para el decodificador BCD-a-siete segmentos.
h) Realice la síntesis del código.
i) Seleccione el menú de simulación en la venta del Project Navigator y corra la
simulación descrita en el test bench realizado en el apartado anterior. Una vez
abierto el simulador ajuste la escala de tiempo y deberá observar las formas de
onda de la señal. Verifique que estas corresponde al comportamiento del
sistema.
2. Para llevar a cabo la implementación física del circuito en el FPGA con la tarjeta Basys,
se requiere agregar el archivo de restricciones de usuario (UCF, por sus siglas en inglés), el
cual define las conexiones entre las entradas y las salidas del circuito diseñado hacia los
pines del FPGA.
MC. Manuel Jesús López Sánchez Lab. 13. Control de velocidad de un motor
Dr. Alejandro Arturo Castillo Atoche DC con PWM
Manual de Prácticas de Sistemas Digitales I 104
Fig. 13.5. Dispositivos conectados al FPGA Spartan 3E en la tarjeta Basys de Digilent. (Imagen tomada
de www.digientinc.com).
Copie la imagen de las formas de onda para su reporte y verifique que correspondan a las funciones
lógicas implementadas.
MC. Manuel Jesús López Sánchez Lab. 13. Control de velocidad de un motor
Dr. Alejandro Arturo Castillo Atoche DC con PWM
Manual de Prácticas de Sistemas Digitales I 105
MC. Manuel Jesús López Sánchez Lab. 13. Control de velocidad de un motor
Dr. Alejandro Arturo Castillo Atoche DC con PWM