Sei sulla pagina 1di 5

Laboratorio 2

Diseño jerárquico en VHDL y Vivado, sistemas


combinacionales y secuenciales.
Universidad de las Fuerzas Armadas-Espe
Departamento de Eléctrica y Electrónica
Bryan Lagua. Santiago Remache
bladi1394@gmail.com, santi2594@hotmail.es

Resumen— El presente documento describe la XILINX llamado VIVADO DESIGN SUITE, con una
simulación, síntesis y los resultados obtenidos al descripción estructural VHDL.
implementar el diseño de un sistema digital en un FPGA,
todo esto descrito en VHDL. El diseño se ayuda de módulos A. Partición del diseño
e integración jerárquica para la correcta implementación de
sus modos de operación. El diseño e implementación de este sistema digital
electrónico consta de módulos que se encargan de realizar las
Abstract— The present document describes the operaciones descritas y entradas de selección de cada uno de
simulation, synthesis and the results obtained when los modos que integran el diseño, todos estos módulos están
implementing the design of a digital system in an FPGA, all definidos en el siguiente diagrama jerárquico:
this described in VHDL. The design is supported by modules
and hierarchical integration for the correct implementation
of its operating modes.

I. INTRODUCCIÓN
La implementación de un diseño digital electrónico que
conste de varios modos de operación puede ser representada
en base a módulos que describan su funcionamiento y a un
esquema jerárquico que los integre. Esto hace que tanto en su
conjunción como en su operación no se dependa de la
complejidad del diseño sino de definición de la estructura que
ejecute cada una de las funcionalidades que requiere el
mismo, esto con ayuda de una partición adecuada y un diseño
de módulos que puedan unirse, realizar satisfactoriamente
Figura 1. Diagrama Jerárquico.
una función y hacer que la implementación se realice de
manera correcta. Véase diagrama completo en Anexo1.
La utilización de un esquema jerárquico bien definido se
implementara en este laboratorio. B. Módulos
II. DESCRIPCIÓN DEL PROBLEMA ALU 4-BIT:
En el sistema a implementar se tiene tres modos de Se procede a describir una ALU de 4 bits capaz de realizar
operación los cuales son una unidad aritmética lógica (ALU) cuatro operaciones entre dos entradas y una salida del mismo
con operaciones aritméticas de suma y resta así como dos tamaño. Las operaciones son: suma aritmética, resta
operaciones lógicas AND y XOR bit a bit, un sumador de bits aritmética, AND y XOR lógico bit-a-bit. Se cuenta con un
(full-adder) y un contador tanto ascendente como descendente selector de operación considerando que no se tiene acarreo de
(Top/Down). Para el contador se utiliza un divisor de entrada ni de salida.
frecuencia que genere una señal de reloj de 1Hz y así
implementar un conteo en periodos de tiempo de un segundo. ENTRADAS DE 4-BIT ALU- alu.
Las entradas y salidas de cada módulo constan de 4 bits NOMBRE DE LA DESCRIPCIÓN.
visualizados en un display 7 segmentos. Todos estos modos ENTRADA
de operación pueden ser seleccionados puesto que la salida de A Operador 1 de 4 bits.
B Operador 2 de 4 bits.
los mismos está integrado a un módulo multiplexor.
SEL Selector de operación de 2 bits.
Para la implementación del diseño la FPGA utilizada en
esta práctica es Basys 3 la cual contiene displays de 7 SALIDA DE 4-BIT ALU: alu.
segmentos de 4 bits, un reloj interno de 450 Mhz, y demás NOMBRE DE LA SALIDA DESCRIPCIÓN.
utilidades. En el diseño se utiliza el ambiente de desarrollo de R Resultado de 4 bits.
Tabla 1. Descripción entrada/salida de ALU.
Simulación
SALIDA 4-BIT COUNTER - CONT_4B.
NOMBRE DE LA DESCRIPCIÓN.
SALIDA
COUT Salida de 4 bits.
Tabla 3. Descripción entrada/salida módulo contador.

Figura 2. ALU test benches. Simulación


4-Bit FA

Un Sumador full adder consta de 4 bits tanto en sus dos


entradas a ser operadas como en su salida, su particularidad es
que se toma en cuenta tanto su acarreo de entrada como el de
salida a ser mostrado. El modulo esta descrito de la siguiente
manera: Figura 4. Contador test benches.
La cuenta en forma ascendente cuando ad=’0’ y
ENTRADAS 4-BIT FA- FA4B descendente cuando ad=’1’, de la misma forma se realiza la
NOMBRE DE LA DESCRIPCIÓN. cuenta cuando mode=”01” y reset=’0’, cuando mode=”00” el
ENTRADA ultimo valor mostrado se mantiene.
A Operador 1 de 4 bits.
B Operador 2 de 4 bits. 1 Hz clock generator
CIN Acarreo de entrada de 1 bit
MODE Selector de modo de 2 bits La FPGA usada posee un reloj interno de 100MHz, a partir
de esta frecuencia se divide a 1 Hz utilizando la siguiente
SALIDAS 4-BIT FA- FA4B formula:
NOMBRE DE LA DESCRIPCIÓN. 𝑓𝑒𝑛𝑡𝑟𝑎𝑑𝑎
SALIDA 𝐸=
𝑓𝑑𝑒𝑠𝑒𝑎𝑑𝑎
RF Salida de 4 bits resultante de la suma.
COUT Acarreo de salida de 1 bit
Se selecciona una escala con los valores correspondientes:
Tabla 2. Descripción entrada/salida de Ful Adder.
100𝑀𝐻𝑧
Simulación 𝐸= = 100𝑀
1𝐻𝑧

Generamos entonces una señal de 1Hz después de tomarse


en cuenta 100M de ciclos.
Se utiliza un contador de módulo 50M (0 - 499999999),
debido a que la señal de reloj mantiene medio ciclo en alto y
medio ciclo en bajo. Cabe recalcar que se genera una
estructura process en el código para el tratamiento secuencial.
Figura 3. FA test benches. ENTRADAS 1 HZ CLOCK GENERATOR – df1hz
NOMBRE DE LA DESCRIPCIÓN.
4-Bit Up/Down counter ENTRADA
clk Señal de reloj.
El contador diseñado posee un bloque combinacional y
otro secuencial para el manejo de estados presente y SALIDA 1 HZ CLOCK GENERATOR - df1hz
siguiente (cp, cs), la cuenta puede ser de 0 a 15 en NOMBRE DE LA DESCRIPCIÓN.
representación hexadecimal por los 4 bits con los que SALIDA
cuenta y de forma ascendente o descendente de acuerdo a clk_out Salida de reloj a 1Hz.
la entrada de selección.
Tabla 4. Descripción entrada/salida módulo divisor de
La inclusión de un reset hace que el módulo reinicie la frecuencia.
cuenta. EL selector de modo activa el conteo en el
Simulación
momento que este modo de operación es elegido.

ENTRADAS 4-BIT COUNTER - CONT_4B


NOMBRE DE LA DESCRIPCIÓN.
ENTRADA
mode Señal de selección del modo. Figura 5. Divisor de frecuencia test benches.
ad Modo contador-up/down de 1bit.
Se observa en la simulación que en base a la señal de reloj
clk Señal de reloj.
Señal de reset.
del FPGA se obtiene la señal que se necesita en 1Hz, cabe
reset
recalcar que la frecuencia de la tarjeta es de 100MHz como se
denota. ENTRADAS AL MÓDULO: MULTIPLEXOR
NOMBRE DE LA DESCRIPCIÓN.
ENTRADA
A Señal de salida - módulo ALU 4
bits.
B Señal de salida - módulo
contador 4 bits.
C Señal de salida - módulo full-
adder 4 bits.
mode Entradas de selección de modo 2
bits .
Figura 6. Diagrama de Bloques del Contador modesel Señal de salida de selección del
módulo de 4 bits.
El diseño corresponde a una máquina secuencial, donde se
tiene se tienen integrado tanto los módulos del divisor de Tabla 6. Descripción entrada/salida módulo multiplexor.
frecuencia como el módulo contador para generar la cuenta.
Simulación
Hex to 7-segment

El decodificador de 4 bits a 7 segmentos se lo realiza


tomando en cuenta que la salida de cada módulo posee esa
cantidad de bits de salida, para esto se establece la numeración
en sistema Hexadecimal (0-F), así también definiendo cada
uno de los segmentos del display encontrado en la tarjeta para
su correcta visualización. Figura 8. Multiplexor test benches.

ENTRADAS HEX TO 7 SEGMENT: dechex. B. Uso de Paquetes


NOMBRE DE LA DESCRIPCIÓN.
ENTRADA El uso de la definición de paquetes en cada módulo
dato Señal de entrada de 4 bits. facilitará la unión de estos en un solo proyecto, todo esto
añadiendo la siguiente estructura en los módulos ya vistos:
PACKAGE package_name
SALIDAS HEX TO 7 SEGMENT: dechex.
IS END package_name;
NOMBRE DE LA Descripción.
SALIDA Estos facilitaran la llamada de cada módulo de manera
hex Salidas codificadas a 7 sencilla solo añadiendo el nombre de la librería en un TOP.
segmentos de 7 bits.
en Señal habilitadora de displays
presentes en el módulo de 4 bits
III.IMPLEMENTACIÓN
Tabla 5. Descripción entrada/salida módulo decodificador 7 A. Estructura
segmentos.
Los componentes que conformaran la estructura
Simulación jerarquizada corresponden a los proyectos realizados en el
programa de cada uno de los módulos, el usar como paquetes
a cada uno de los módulos hacen que al llamado de estos se
puedan utilizar tantos sus entradas como salidas para que al
unirlas conformen un todo que en este caso será nuestro TOP.

Figura 7. dechex test benches


Se debe tomar en cuenta una codificación previa de la
salida de 4 bitas a los 7 segmentos de los displays que se van
a implementar.

Mode selector

El modo selector se encarga de multiplexar las salidas, eso


quiere decir que según el modo de operación, se mostraran las
señales de salidas que vengan del módulo elegido. Se denota
que la señal mode se presenta en este módulo y en el contador, Figura 9. Diagrama de Jerarquía
puesto que también inicia la cuenta en este.
Primero añadimos las fuentes a nuestro top, la cual Y definimos la conexión de las señales de cada módulo
detectara la jerarquía al terminar de unir todos los módulos realizado.
descritos en nuestro TOP.

Tabla 10. Conexiones entre componentes.

Figura 10. Sources del TOP. B. Implementación en la FPGA


Luego procedemos a añadir los paquetes creados Todos los puertos tanto de entrada como de salida añadidos
procedentes de una librería llamada ESPEVLSI. a nuestro proyecto se denominan Constrains, estos nos
permiten designar los puertos a utilizar basándose en la
estructura de la tarjeta Basys 3, todas las entradas y salidas
definidas en el TOP deben definirse sin excepción y para la
presentación de todos los módulos con sus respectivas
operaciones la asignación está dada de la siguiente forma.

Tabla 7. Packetes añadidos en el TOP.

Establecemos los puertos del TOP.

Tabla 8. Puertos de entrada y salida del top.


Luego se procede a mapear todas las entradas y salidas de
cada módulo con respecto a las del TOP con la ayuda de
señales previamente declaradas.

Figura 11. Diagrama Fisico de Pines de la FPGA

ENTRADAS PUERTO (MAX-MIN)


Entrada A R2, T1, U1, W2
Entrada B R3, T2, T3, V2
Selector de operación ALU W13, W14
Selector del módulo V15, W15
Acarreo de entrada fulladder W17
Selección contador up/down W16
Tabla 9. Declaración de señales del top. Reinicio contador V17
SALIDAS PUERTO (MAX-MIN) puede ayudar a encontrar problemas de diseño antes
Salida modulo TOP U7,V5,U5,V8,U8,W6,W7 de proceder a la implementación.
Salida acarreo final contador U3 - El uso de librerías y paquetes en jerarquía facilita la
Habilitación del display W4, V4, U4, U2 utilización de los módulos creados, más
específicamente en el llamado y mapeo que se realiza
Tabla 11. Puertos utilizados en la FPGA. en TOP para añadir todas las señales, esto hace que
se puedan añadir más módulos si se desean a un
mismo TOP. .
IV. RESULTADOS
VI. RECOMENDACIONES
A. Esquema.
- Se debe tomar en cuenta que cuando determinamos
Se visualiza el esquema completo de todo el top ya los pines a utilizar, se deben considerar todas las
comentado y mapeado. entradas y salidas, caso contrario no se podrá generar
el bitstream para cargarlo en la tarjeta de desarrollo.

- Se recomienda llevar una nomenclatura de puertos


que vaya acorde a la función que realizan y para que
en el mapeo posterior del TOP sea mucho más fácil
reconocer tanto entradas como salidas.

Figura12. Esquema final del TOP generado por Vivado. - Tomar muy en cuenta en los display de la tarjeta que
se debe habilitar el display a utilizar, de los 4 que se
Véase diagrama completo en Anexo2.
tiene a disposición, para activar en donde se quiere
mostrar la salida. .
Simulación

REFERENCIAS
[1] Pedroni. V. A. (2004). Circuit Design with VHDL.
Londres. Inglaterra. MIT press.
[2] Digilent. (2016). Basys 3 FPGA Board Reference
Manual.

Figura 13. TOP test benches


La salida que se muestra está representada en 7 segmentos
descritos en el módulo de decodificación de 4 bits a 7
segmentos.

Véase utilización de recursos del FPGA en Anexo3.


Véase implementación en la tarjeta en Anexo4.

V. CONCLUSIONES
- El programa vivado Xilinx que nos permite diseñar
sistemas digitales electrónicos en VHDL posee
procedimientos que permiten adjuntar módulos a un
sistema muy grande para ayudarse en la realización
de operaciones disminuyendo así la complejidad de
todo el conjunto que representa el sistema,
dividiéndolo en partes para su aplicación.
- La esquematización del sistema es importante para
conocer cada uno de los componentes que se van a
utilizar así como el correcto nombramiento de tanto
entradas como salidas hace más sencilla la
conjunción de los módulos realizados.
- La simulación en base a test benches es demasiado
importante para conocer el comportamiento general
y especifico del sistema digital, también este nos

Potrebbero piacerti anche