Tecnológico Nacional de México / Instituto Tecnológico de la laguna
MCIE - Diseño Digital Avanzado
Prácticas 11 al 13
Ing. Karen Magdalena Romero Reyes/ Dr. Juan Sifuentes Mijares
Resumen – El presente reporte consiste en la presentación paso a paso de las prácticas de la
materia de Diseño Digital Avanzado para tener una guía didáctica para la elaboración de
programas de forma que sea de utilidad para facilitar el aprendizaje y comprender el proceso
completo de simulación e implementación de un diseño.
Palabras clave: VHDL, Xilinx, Spartan3
En el caso del Código dentro del process donde su
lista de sensibilidad es SEL, A, B, C y D, se utilizó
I. Introducción
un case y la variable que se evalúa es SEL, esto
debido a que gracias a esta se determinará cuál de las
El documento aborda la ejecución de las prácticas 11 entradas será mostrada en la salida. La configuración
a 13 utilizando el software ISE Design Suite versión es la siguiente:
8.2. En esta práctica, se detalla de manera exhaustiva Cuando el valor de SEL sea “00” se mostrará A,
el desarrollo paso a paso de un programa, desde la con “01” se mostrará B, con “10” se mostrará C y con
creación del proyecto hasta la programación exitosa cualquier opción que no sea ninguna de las anteriores
de una FPGA. Se exploran aspectos clave, como la se mostrará D.
configuración del proyecto, la definición de puertos,
la estructura del código, la simulación y las pruebas
de funcionalidad.
II. Práctica 11
Un multiplexor es un dispositivo que sirve para
convertir datos de diferentes señales de entrada a una
sola salida, donde gracias a un selector Podemos
elegir que señal va a ser reflejada en la salida.
Estructura del código
Las señales de entrada y salida han sido designadas
de la siguiente manera en el sistema actual: se utiliza
A, B, C y D como las 4 entradas del multiplexor que Fig. 2.2 Arquitectura definida
son de 1 bit, SEL se usa de selector de 2 bits en donde
dependiendo se u valor es la entrada que se mostrara
en la salida y finalmente Y es la salida del
multiplexor de 1 bit donde se mostrará cada una de
las entradas dependiendo de SEL.
Fig. 2.1 Definición de las entradas, salidas y señales
Definición de la arquitectura
Fig. 2.3 Esquema generado
Fecha: 11 de marzo de 2024 1
Tecnológico Nacional de México / Instituto Tecnológico de la laguna
MCIE - Diseño Digital Avanzado
Simulación Evidencias
Para la simulación se genera un archivo del tipo
TEST BENCH, Se realizó cada una de las
combinaciones posibles para SEL (00, 01, 10 y 11) y
así verificar que las entradas se mostraran
correctamente en la salida. Para las entradas se les
asignó un valor diferente en cada una, para A en los
primeros pulsos tiene un valor de 0, B igual tiene un
valor de 0, C tiene un valor de 1 y finalmente D tiene
un valor de 0.
Fig. 2.4 Modificando simulación.
Por último, procedemos a correr la simulación para
asegurarnos todo esté realizado de manera correcta. Fig. 2.7 SEL con valor en “01” mostrando B en alto
Como se observa, cuando se tiene SEL en “00” la
entrada A es mostrada e ignorando las demás, como
en el primer caso a vale 0, eso es lo que se ve
reflejado en la salida. Para el segundo caso SEL tiene
un valor de “11” mostrando en la salida Y la entrada
D, al tener esta un valor de 0 eso es lo que se pasa a
la salida.
Por último, otro ejemplo, es el tercer caso en donde
SEL se asignó con un valor de “10” lo que se ve
reflejado en la salida es la entrada C, en este caso esta
tiene un valor de 1 por lo que, la salida Y se ve
activada por 1. Con esto se concluye que el
funcionamiento del programa es correcto y esta losto
para ser cargado a la tarjeta.
Fig. 2.8 SEL con valor en “00” mostrando A en alto
III. Práctica 12
Fig. 2.5 Fragmento de la ventana de simulación
Terminales de salida Para la práctica 12 se ejemplificarán los
Para poder cargar el código a la tarjeta se asignaron conocimientos de los registros de corrimiento, tanto
los pines a cada uno de los componentes. de rotación como el corrimiento de derecha e
izquierda, para la práctica se hará un corrimiento de
4 bits para apreciar mejor esta función.
Estructura del código
En esta ocasión se hará un cambio en las librerías,
ya que, al usar los comandos de corrimiento en xilins
es necesario usar una librería adicional
(numeric_std) y a su vez, retirar 2 librerías
Fig. 2.6 Pines asignados (std_logic_arith y std_logic_unsigned), es decir,
quedará de la siguiente forma:
Fecha: 11 de marzo de 2024 2
Tecnológico Nacional de México / Instituto Tecnológico de la laguna
MCIE - Diseño Digital Avanzado
Para el segundo se tiene seleccionado corrimiento
con dirección derecha (RC=0 y DI=1), se evalúa en
un case el número de corrimiento NR y dependiendo
de su valor es la acción que hará, en este caso se usa
el comando Shift Right Logical (SRL) ahorrándonos
pasos de escritura que con el de concatenación y más
Fig. 3.1 Modificación en librerías fácil de entender.
Las señales de entrada y salida han sido designadas
de la siguiente manera en el sistema actual: IN4 es la
entrada de 4 bits que nosotros modificaremos y es
guardada como unsigned para usar la librería, NR es
el número de la rotación o corrimiento al usar una
entrada de 4 bits necesitaremos que este valor sea de
2 bits para tener todas las posibilidades de cambio,
RC es donde se define si se usará rotamiento o
corrimiento y es suficiente con 1 bit, DI es donde se
define si la acción es a la izquierda o a la derecha
igual se usará de 1 bit, C es donde se guarda el carry
de 1 bit y SAL es donde se mostrarán el corrimiento
de los 4 bits.
Fig. 3.3 Arquitectura definida
Para el tercero se tiene seleccionado rotación con
dirección izquierda (RC=1 y DI=0), se evalúa en un
case el número de corrimiento NR y dependiendo de
su valor es la acción que hará, en donde en cada una
se rotará un bit más a la izquierda.
Fig. 3.2 Definición de las entradas, salidas y señales
Definición de la arquitectura
Para empezar con el programa se abre un process
en donde estarán involucradas: IN4, NR, RC y DI
para efectuar los cambios al momento que sucedan
Después se tendrán 4 if y 4 case, para el primero
se tiene seleccionado corrimiento con dirección
izquierda (RC=0 y DI=0), se evalúa en un case el
número de corrimiento NR y dependiendo de su
valor es la acción que hará, en donde en cada una se Fig. 3.4 Arquitectura definida
correrá un bit más a la izquierda.
Finalmente, para el cuarto se tiene seleccionado
rotación con dirección derecha (RC=1 y DI=1), se
evalúa en un case el número de corrimiento NR y
para este caso como en el segundo se usa un comando
que es el Rotate Right (ROR) empleado igual para
simplificar a un más el programa.
Fig. 3.2 Arquitectura definida
Fecha: 11 de marzo de 2024 3
Tecnológico Nacional de México / Instituto Tecnológico de la laguna
MCIE - Diseño Digital Avanzado
Por último, procedemos a correr la simulación para
asegurarnos todo esté realizado de manera correcta.
Para empezar con el primer caso se tiene RC=0 y
DI=0 lo que significa que el movimiento se trata de
un corrimiento a la izquierda, en la salida SAL se
puede apreciar como los bits del 6 se van
desplazando uno a uno con forme los tiempos a la
izquierda y en el tiempo 2 se tiene un carry. Las
combinaciones que se lograron con este movimiento
fueron: 6, 12, 8 y 0.
En el segundo caso se tiene RC=1 y DI=0 lo que
significa que el movimiento se trata de una rotación
a la izquierda, en la salida SAL se puede apreciar
Fig. 3.5 Arquitectura definida como los bits del 6 se van rotando con forme los
tiempos a la izquierda y en los tiempos 2 y 3 se tiene
un carry. Las combinaciones que se lograron con este
movimiento fueron: 6, 12, 9 y 3.
En el tercer caso se tiene RC=1 y DI=1 lo que
significa que el movimiento se trata de una rotación
a la derecha, en la salida SAL se puede apreciar como
los bits del 6 se van rotando con forme los tiempos a
la derecha y en los tiempos 2 y 3 se tiene un carry.
Las combinaciones que se lograron con este
movimiento fueron: 6, 3, 9 y 12.
Para el último caso se tiene RC=0 y DI=1 lo que
significa que el movimiento se trata de un
corrimiento a la derecha, en la salida SAL se puede
Fig. 3.6 Esquema generado apreciar como los bits del 6 se van desplazando uno
a uno con forme los tiempos a la derecha y en los
tiempos 2 y 3 se tiene un carry. Las combinaciones
Simulación
que se lograron con este movimiento fueron: 6, 3, 1
Para la simulación se genera un archivo del tipo
y 0.
TEST BENCH, se puso en la entrada IN4 el número
6 que es el que va a tener los cambios de corrimiento
y rotación y con las demás entradas se eligieron todas
las combinaciones posibles de NR (0, 1, 2 y 3)
correspondientes al tiempo de cambio de la rotación
o corrimiento.
Fig. 3.8 Fragmento de la ventana de simulación
Fig. 3.7 Modificando simulación.
Fecha: 11 de marzo de 2024 4
Tecnológico Nacional de México / Instituto Tecnológico de la laguna
MCIE - Diseño Digital Avanzado
Terminales de salida IV. Práctica 13
Para poder cargar el código a la tarjeta se asignaron
los pines a cada uno de los componentes. La práctica 13, consta de un sumador binario de 2
bits en donde desglosando su arquitectura por su
tabla de verdad, se puede ver que está compuesta de
una AND para el carry y una XOR, que a su vez esta
se compone de 2 AND y 2 NOT, para la práctica se
juntarán estas compuertas y se formará un sumador.
Estructura del código
Para la definición de los puertos y señales a utilizar
se tienen las 2 entradas de 1 bit (a y b), a su vez se
tiene la salida “s” y finalmente la otra salida “c” del
carry.
Fig. 3.9 Pines asignados
Evidencias
Fig. 4.1 Definición de las entradas, salidas y señales
Definición de la arquitectura
Primero se definen 4 señales que son necesarias para
seguir el proceso de armar una compuerta XOR y
juntarla con una AND para obtener el sumador que
buscamos.
Antes de realizar este proyecto se hicieron 3
anteriores con el propósito de hacer cada una de las
compuertas AND, OR y NOT e insertarlas como
componentes en este proyecto.
Fig. 3.9 Aplicando número 6 a corrimiento izquierda
Fig. 3.10 Aplicando número 6 a rotación derecha
Fig. 4.2 Arquitectura definida
Fecha: 11 de marzo de 2024 5
Tecnológico Nacional de México / Instituto Tecnológico de la laguna
MCIE - Diseño Digital Avanzado
Después siguiendo un diagrama de la construcción Para la última combinación de 1 y 1, la suma de
del sumador se vio que compuertas se usarían y que estas dos de forma binaria da como resultado un 0 y
entradas y salidas estarían en cada una de ellas para un carry, por lo que para visualizarlo en la salida S se
al final tener el resultado del sumador esperado ve en bajo y la salida C del carry aparece en alto:
“10”.
Fig. 4.6 Fragmento de la ventana de simulación
Fig. 4.3 Arquitectura definida
Terminales de salida
Para poder cargar el código a la tarjeta se asignaron
los pines a cada uno de los componentes.
Fig. 4.4 Esquema generado Fig. 4.7 Pines asignados
Simulación Evidencias
En la parte de simulación, se vuelen a repetir los
patrones de crear un archivo tipo TEST BRENCH
para poder seguir con la simulación y cerciorarnos
que todo lo que hicimos sea correcto. Se introdujeron
las 4 combinaciones posibles de las entradas A y B
(00, 01, 10 y 11).
Fig. 4.5 Modificando simulación.
Por último, procedemos a correr la simulación para Fig. 4.8 Suma de 1 y 0 con resultado “01”
asegurarnos todo esté realizado de manera correcta.
Con la combinación en las entradas 0 y 0 al
sumarlas se obtiene el mismo resultado de 0 y sin
ningún carry, este comportamiento se observa en la
salida s que se encuentra en bajo, “00”
Con la combinación en las entradas 0 y 1 al
sumarlas se obtiene el resultado de 1 y sin ningún
carry, este comportamiento se observa en la salida s
que se encuentra en alto, “01”.
Al igual que con la combinación al tener las
entradas 1 y 0 se obtiene el mismo resultado de 1 y
salida se encuentra en alto, “01”. Fig. 4.9 Suma de 1 y 1 con resultado “11” con carry
Fecha: 11 de marzo de 2024 6
Tecnológico Nacional de México / Instituto Tecnológico de la laguna
MCIE - Diseño Digital Avanzado
V. Conclusiones
En estas tres prácticas aprendió sobre el diseño y
simulación de un multiplexor, un sumador binario de
2 bits y registros de corrimiento en el contexto de
desarrollo para FPGA. Se logró configurar y
controlar dispositivos, utilizar compuertas lógicas
para construir circuitos y comprender la importancia
de comprender y aplicar correctamente los comandos
y las librerías necesarias para lograr funcionalidades
específicas. En resumen, se adquirió conocimientos
clave en el diseño digital y la implementación de
circuitos en sistemas electrónicos.
VI. Referencias
Spartan-3 FPGA Starter Kit Board User Guide
UG130(V1.2) June 20, 2008
Fecha: 11 de marzo de 2024 7