CIRCUITOS DIGITALES AVANZADOS (S I) G 1
1
Practica Nº 4 Contador BCD de 00 a 99 en VHDL Fabián Ugarte, Sebastián Torres
[email protected],
[email protected],
[email protected] [email protected] Universidad Politécnica Salesiana
Resumen—Esta practica se diseño un codigo en VHDL para el control de un circuito contador bcd que va desde el 00 al 99 con el uso de la frecuencia interna del modulo CPLD. Index Terms—Quartus,
compuertas, lógicas.
I. I NTRODUCCIÓN El módulo CIC 560 FPGA/CPLD está equipado con un módulo ADC / DAC , teclado , pantalla LCDM , PS2, VGA, UART, interfaz SCI , display de 8 dígitos 7 segmentos, motor de corriente continua , circuitos de mando de motor a pasos, y está disponible para procesar señales complejas y de control digitalizado . Adecuado para la formación curricular en la electrónica, la ingeniería eléctrica, la informática, comunicación y el campo de la automatización; ideal para los diseñadores profesionales, ingenieros de pregrado y estudiantes de postgrado para aprender diseño de circuitos integrados y desarrollo de software. I I . M ARCO T EÓRICO II-A.
Elementos Básicos de VHDL
Un sistem sistemaa dig digita itall está está descri descrito to por sus entradas entradas y sus salidas y la relación que existe entre ellas. En el caso de VHDL por un lado se describirá el aspecto exterior del circuito: entradas y salidas; y por otro la forma de relacionar las entradas con las salidas. El aspecto exterior, cuántos puertos de entrada y salida tenemos, es lo que denominaremos entity. Y la descripción del comportamiento del circuito architecture, toda architecture tiene que estar asociada a una entity. Además, aunque no es estrictamente necesario, podemos definir también las bibliotecas y paquetes que vamos a utilizar, lo que nos indicará que tipos de puertos y operadores podemos utilizar. Siempre ha de aparece la definición de las bibliotecas y paquetes antes de la definición de la entity.
Figura Figura 1. Librerias Librerias IEEE IEEE
II-A1. Entity : Una entidad es la abstracción de un circuito, ya sea desde un complejo sistema electrónico o una simple puerta lógica. La entidad únicamente describe la forma externa del circuito, en ella se enumeran las entradas y las salidas del diseño. Una entidad es análoga a un símbolo esquemático en los diagramas electrónicos, el cual describe las conexiones del dispositivo hacia el resto del diseño. Define externamente al circuito o subcircuito. Nombre y número de puertos, tipos de datos de entrada y salida. Tienes toda la información necesaria para conectar tu circuito a otros circuitos.
Los puertos pueden ser de entrada in, salida out, entradasalida inout o buffer. Los puertos de entrada sólo se pueden leer y no se puede modificar su valor internamente en la descripc descripción ión del comporta comportamien miento to del circuito circuito (archite (architectur cture), e), sobre los puertos de salida sólo se puede escribir pero nunca tomar decisiones dependiendo de su valor (esto implica una lectura). Si es estrictamente necesario escribir sobre un puerto a la vez que se tiene que tener en cuenta su valor el tipo sería inout o buffer. Además, en la entity se pueden definir unos valores genéricos (generic) que se utilizarán para declarar propiedades y constantes del circuito, independientemente de cual sea la arquitectura. A nivel de simulación utilizaremos generic para definir retardos de señales y ciclos de reloj, estas definiciones no serán tenidas en cuenta a nivel de síntesis. También se puede utilizar generic para introducir una constante tante que será utilizada utilizada posterior posteriorment mentee en la architec architecture ture,, utilizaremos esa constante para hacer nuestro circuito más general. Por ejemplo, podemos definir el comportamiento de un banco de registros teniendo en cuenta que puede tener cualquier número de registros, fijando el número de registros particular que queremos simular e implementar a través de una constante del generic. Esto implica que en toda la parte de nuestro código (el que vamos a escribir dentro de architecture) dónde haga falta falta el núm número ero de regis registro tross utiliz utilizare aremos mos el nom nombre bre de la constante definida en generic, de manera análoga a como se
CIRCUITOS DIGITALES AVANZADOS (S I) G 1
haría en cualquier lenguaje de programación convencional. La sentencia generic no es necesaria, en caso de que no vayamos a utilizarla puede desaparecer de la entity. A continuación se presenta un ejemplo de descripción externa del circuito (entity). Para el ejemplo sabemos que el circuito presentará dos entradas de tamaño N bits y una salida de tamaño un bit, particularizamos la entidad para N igual a 8. Como hemos advertido anteriormente, aunque la función de generic es permitirnos generar un código más general, una vez que definimos el circuito, tenemos que particularizarlo, por lo que siempre debe darse un valor a las constantes del campo generic.
2
1. Se declararon las librerías IEEE on las cuales mi programa de VHDL funciona. 2. Declaramos las variables de entrada y salida 3. Realizamos la declaración de los procesos necesarios a seguir para poder completar el funcionamiento del contador de 00 a 99.
II-A2. Architecture : Los pares de entidades y arquitecturas se utilizan para representar la descripción completa de un diseño. Una arquitectura describe el funcionamiento de la entidad a la que hace referencia, es decir, dentro de architecture tendremos que describir el funcionamiento de la entidad a la que está asociada utilizando las sentencias y expresiones propias de VHDL. Define internamente el circuito. Señales internas, funciones, procedimientos, constantes ... La descripción de la arquitectura puede ser estructural o por comportamiento.
III. D ESARROLLO III-A.
Contador de 0-99
III-A1.
Realización del código del proyecto.:
Figura 2. Código de Contador de 0-99
CIRCUITOS DIGITALES AVANZADOS (S I) G 1
III-A2. Asignación de pines en el módulo CIC 560 FPGA/CPLD: Compilado el proyecto y sin ningún errror proce-
demos a asignar los las variables a los pines del módulo, a continuación se muestran las varibles asignadas.
Figura 3. Asignación de pines III-A3.
Conexión con el módulo.:
1. Realizamos la conexión con el módulo, seleccionamos en la barra de herramientas Programmer. 2. En el cuadro que se abre seleccionamos Hardware Setup - Seleccionamos USB Blaster. 3. Click en Start. IV. C ONCLUSIONES Se pudo determinar que la programación es mucho mas certera y menos tediosa que estar haciendo circuitos gráficos ya que estos son mucho mas largos, pero por medio de la programación VHDL es mucho mas rapido. Pero hay que saber exactamente lo que se necesita para poder realizar una programación excelente.
3