Invito al lector a consultar el interesante artículo de Gerardo Muñoz, ingeniero electrónico egresado de la UAN y actualmente docente investigador de la Universidad Distrital, : donde se muestra como diseñar un multiplicador binario por máquina de estado algoritmico con VHDL:
Un método simple para pasar de un algoritmo a un modelo VHDL
" QUIEN NO VIVE PARA SERVIR, NO SIRVE PARA VIVIR" TERESA DE CALCUTA. EL COMPARTIR ME DA FELICIDAD
viernes, 8 de noviembre de 2013
jueves, 26 de septiembre de 2013
¿ Que tanto sabemos ? Contadores asíncronos y síncronos
a) La entrada CLR, activa con nivel ALTO, permite resetear el circuito secuencial, que es un contador binario asíncrono descendente de 3 bits.
b) El bloque Clk1Hz es un divisor de frecuencia que tiene como entrada el reloj a cristal de 50 Mhz disponible en la tarjeta Basys 2 y como salida 1 Hz. Es imposible crearlo esquemáticamente. Sólo puede realizarse a través de un lenguaje HDL, como VHDL o Verilog.
c) Las ondas deben indicar un contador descendente, que con CLR =1, inicia en 0, y si CLR = 0, cada pulso de subida de reloj cambian en decimal a 6, 5,4,3,2,1,0, 7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,...
d) La secuencia que se presenta al ojo humano aparenta un conteo tal como se indicó anteriormente. Sin embargo, debido a los retardos en cascada en los flip-flops, sucede un conteo incorrecto, el cual se evidencia al cambiar los 3 bits, por ejemplo, cuando cambia del 0 al 7, o del 4 al 3.
Veamos el cambio del contador del 0 al 7, cuando comienza a descender:
2. a)
b) Mapas de Karnaugh y Ecuaciones de entrada de los Flip-flops:
D ( Q2) = Q1 Q0 + Q2 Q0'
D(Q1) = Q2' Q1' Q0 + Q1 Q0'
D(Q0) = Q0'
c) Circuito lógico:
Ejercicios prácticos con la terjeta Basys2:
Implementar en esquemático cada uno de los dos contadores y verificar su comportamiento.Es indispensable el divisor de frecuencia que a partir del cristal de 50 Mhz genere la frecuencia de 1 Hz.
domingo, 30 de junio de 2013
Arquitectura de la FPGA
Básicamente una FPGA ((Field Programmable
Gate Array) está estructurada por un gran número de bloques lógicos configurables ( Formado por los Slices) interconectados a través de canales de enrutamiento también programables y todo el arreglo se encuentra rodeado de bloques de entradas y salidas (I/O Pads).
En los Slices se realiza la mayor parte dela funcionalidad de la FPGA y suelen estar agrupados de 2 en 2 o de 4 en 4 formando los bloques lógicos configurables (CLBs). Dentro de este componente encontramos los módulos LUT, registros y multiplexores programables en un número que depende de familia de FPGA, y tal como se muestra en la siguiente figura:
Los elementos programables más importantes en el Slice son los generadores reprogramables de función lógica, realizadas por las denominadas LUT (Look-up Table) o tablas de búsqueda, que son celdas de memoria SRAM volátiles y multiplexores para seleccionar la salida.
Veamos, por ejemplo, una LUT para una función F = X1' X2 + X1 X2' = X1 xor X2
La LUT se puede simplificar en su gráfica:
Se pueden tener LUTs de 3 o más variables.Veamos, por ejemplo una de tres variables que genera la función F = X3 X4 + X3 X4' X5'
Observe que para generar la tabla en la RAM, la función simplificada debe expandirse en mintérminos.
En este caso, se hace: X3 X4 = X3 X4 X5' + X3 X4 X5
Supongamos ahora que se desea implementar la función F = (X1 xor X2) + ( X3 X4 + X3 X4' X5')
Expandiendo queda así: F = X1´ X2 + X1 X2´ + X3 X4 X5' + X3 X4' X5' + X3 X4 X5
Para su implementación se necesitan la LUT de 2 entradas que realiza la compuerta XOR, la LUT de 3 entradas, y otra LUT de 2 entradas para la OR requerida.
Luego : F = X1´ X2 + X1 X2´ + X3 X4 X5' + X3 X4' X5' + X3 X4 X5 se genera así:
Las LUTS tal como se trabajan físicamente en la FPGA se muestran en la siguiente figura:
Observe que se implementan Multiplexores de 4 a 1, de 8 a 1, y de 16 a 1, utilizando sólo multiplexores 2/1.
Los bloques de Entrada/Salida de las FPGAs cumplen la misma función que las macroceldas de salida en otros dispositivos lógicos programables, como las CPLD o las GAL, pero con más controles lógicos, entre los que se incluyen, configuraciones de entrada y salida combinacionales o registradas, alta impedancia, elementos de retardo, controlesanalógicos y otros.
Según se dijo ya cada bloque lógico CLB en la FPGA se encuentra incrustado en la estructura de interconexión, que se componen en realidad de cables con conexiones programables para ello.
La FPGA Spartan 3E de Xilinx dispone además de diversos dispositivos embebidos como memorias, multiplicadores, DCMs (administradores de reloj), etc.
La programación de la FPGA se hace vía JTAG,un acrónimo para Joint Test Action Group (Grupo de acción conjunta de prueba).
La interfaz JTAG es un conector de 4 hilos:
- TDI (Entrada de Datos de Testeo)
- TDO (Salida de Datos de Testeo)
- TCK (Reloj de Testeo)
- TMS (Selector de Modo de Testeo)
Ya que posee una sola línea de datos, el protocolo es necesariamente serial, como el Serial Peripheral Interface. La entrada de la señal de reloj es por el pin TCK. La configuración del dispositivo se realiza manipulando una máquina de estados de un bit empleando el pin TMS. Un bit de datos es cargado en TDI y otro sacado en TDO por cada pulso de reloj de la señal TCK.
sábado, 29 de junio de 2013
Contador de anillo con VHDL en Basys 2
EJERCICIO: Solo uno de los 8 leds disponibles en la tarjeta Basys 2 debe encender cada segundo en una secuencia contador de anillo.
Solución:
1).Creamos nuevo proyecto: contador_de_anillo y guardamos en la carpeta apropiada efectuando la debida configuración de acuerdo a las propiedades del proyecto y características de la FPGA.
2) Como nueva fuente trabajamos el código en VHDL creando el archivo contadordeanillo.vhd
3) Se chequea sintasis y luego se efectúa la síntesis.Para este caso no efectuamos la simulación.
4) Asignamos pines en User Constraints ---> Floorplan Area / IO / Logic- Post-Synthesis
El reloj de 50 Mhz está localizado en el pin B8 de la tarjeta Basys 2.Para los LEDS vienen marcados en la tarjeta.
5) Implementamos el diseño, se genera el archivo de programación y se configura el dispositivo en la tarjeta.
6) Antes de alimentar la tarjeta y programar la FPGA es conveniente en el Resúmen del Diseño de la FPGA (FPGA Design Summary) verificar que los pines del reloj y de los LEDs están todos correctos.
Para esto se da click en View Design Summary, luego en Pinout Report y por último en Signal Name.
5) Se alimenta la tarjeta a través del conector USB. Se llama el programa ADEPT y se busca y se programa la FPGA con el archivo contadordeanillo.bit. Se dice Si a las advertencias.
El led rojo titila indicando que se está efectuando la programación y en el mensaje de la ventana de Digilent Adept debe indicarse que la programación se ha efectuado exitosamente (Programming Successful).
Compuertas lógicas en Basys 2 con VHDL
EJERCICIO: Utilizando dos Switches se dan valores binarios a las entradas X,Y y se generan las diferentes compuertas lógicas para ser visualizadas en los leds de la tarjeta Basys 2.
1). Primero cerramos el proyecto existente en el navegador de Xilinx 10.1 y creamos un nuevo proyecto que vamos a guardar en una carpeta que previamente se ha creado para trabajar con Basys 2.
El proyecto lo llamamos compuertas e indicamos como HDL el tipo de nivel superior de fuente en el que se van a trabajar las compuertas lógicas.
Indicamos las propiedades del proyecto y las características propias de la FPGA de la tarjeta basys 2:
2). Creamos como nueva fuente un módulo VHDL para indicar el programa respectivo:
3). Se efectúa la síntesis del circuito para compilar el archivo VHDL después de haber chequeado su sintásis.
4), Se hace ahora la simulación respectiva:
6).estando el circuito sintetizado y simulado, se procede a implementar el diseño, generar el archivo de programación y configurar la FPGA en la tarjeta Basys 2, tendiente a generar el archivo compuertas.bit, que es el objetivo final. En las FPGA el archivo .bit es el equivalente al archivo .JED para programar las GAL:
7) Se conecta el cable USB que alimenta y permite la programación de la FPGA de la tarjeta Basys 2.
Abrimos el software ADEPT de la empresa Digilent, fabricante de la tarjeta.
Con Browse buscamos el archivo compuertas.bit en la carpeta donde guardamos el proyecto.
Damos Si en la advertencia que aparece.
Vamos a indicar los pasos básicos sin entrar en detalle. Si el lector requiere paso a paso las indicaciones se sugiere previamente estudiar los laboratorios con la tarjeta Spartan 3E explicados en entradas anteriores del blog para que adquiera habilidad en el manejo del software Xilinx ISE 10.1
1). Primero cerramos el proyecto existente en el navegador de Xilinx 10.1 y creamos un nuevo proyecto que vamos a guardar en una carpeta que previamente se ha creado para trabajar con Basys 2.
Indicamos las propiedades del proyecto y las características propias de la FPGA de la tarjeta basys 2:
2). Creamos como nueva fuente un módulo VHDL para indicar el programa respectivo:
3). Se efectúa la síntesis del circuito para compilar el archivo VHDL después de haber chequeado su sintásis.
4), Se hace ahora la simulación respectiva:
5).. Se efectúa la asignación de pines y luego editamos el archivo compuertas.ucf para verificar que está correcto.
6).estando el circuito sintetizado y simulado, se procede a implementar el diseño, generar el archivo de programación y configurar la FPGA en la tarjeta Basys 2, tendiente a generar el archivo compuertas.bit, que es el objetivo final. En las FPGA el archivo .bit es el equivalente al archivo .JED para programar las GAL:
7) Se conecta el cable USB que alimenta y permite la programación de la FPGA de la tarjeta Basys 2.
Abrimos el software ADEPT de la empresa Digilent, fabricante de la tarjeta.
Con Browse buscamos el archivo compuertas.bit en la carpeta donde guardamos el proyecto.
Damos Si en la advertencia que aparece.
Se da click en program, y si nuevamente a la ventana con adevertencia, y la tarjeta debe funcionar perfectamente despues de titilar brevemente el led rojo, indicativo de que la programación ha sido exitosa.
En Adept debe aparecer en la parte de abajo un mensaje indicando que la programación de la FPGA se ha efectuado satisfactoriamente.
Mediante Adept se puede chequear el correcto funcionamiento de la tarjeta con un test de prueba.
Se muestra en tiempo real que switches o pulsadores se accionan.Los displays de 7 segmentos muestran un contador en hexadecimal desde 0000 hasta FFFF (4 dígitos unificados)
Después de realizado el test de prueba se requiere volver a grabar la FPGA para que vuelva a funcionar.
Si se desenergiza se pierde la programación.Ello es debido a que las LUTS (tablas de búsqueda) de la FPGA se efectúan sobre memorias RAM volátiles. Si se desea que el programa perdure aun cuando se quite la alimentación hay que grabarlo en la memoria PROM Flash que dispone la tarjeta junto con la FPGA.miércoles, 26 de junio de 2013
Manual de referencia de la tarjeta Digilent Basys 2
La tarjeta BASYS 2 es una tarjeta de desarrollo,fabricada por la compañía DIGILENT, que contiene una FPGA Xilinx Spartan 3E-100,XC3S100E-CP132, un arreglo lógico programable de campo con 100.000 compuertas.
Está diseñada para el aprendizaje de sistemas digitales de complejidad media utilizando un entorno de desarrollo profesional. Es la ideal para el estudio de Digitales 2 a nivel de Ingeniería Electrónica y Biomédica en la UAN.
Además de la FPGA, esta tarjeta contiene una serie de recursos que pueden ser utilizados en los diseños de los circuitos. Concretamente contiene:
• 4 pulsadores.
• 8 interruptores deslizables.
• 8 LEDS, cátodo común.
• 4 displays de 7 segmentos en visualización dinámica.
• Un conector de teclado de PC (PS2)
• Una salida VGA para monitor de computador.
• 4 pulsadores.
• 8 interruptores deslizables.
• 8 LEDS, cátodo común.
• 4 displays de 7 segmentos en visualización dinámica.
• Un conector de teclado de PC (PS2)
• Una salida VGA para monitor de computador.
Todos estos recursos se encuentran conectados a las patillas de la FPGA de la forma que se indica en la siguiente figura:
Observe que cada elemento se identifica con una Letra y un Número de uno o dos dígitos, con el cual se identifica el Pin, por ejemplo el LD0 se localiza como M5, el Switche SW0 está asociado con el pin P11, etc.
Además la FPGA posee una entrada conectada a un reloj de 50 MHz que corresponde a la localización de pin B8.
Se entiende que para el conector de teclado o el monitor VGA del computador tambien hay pines asociados que por el momento no se requieren, debido al uso inicial que se pretende dar a la tarjeta en las primeras prácticas, solo utilizando Switches y pulsadores como Entradas y los Leds y Displays de 7 segmentos en las salidas de los circuitos a implementar. Mas adelante se puede utilizar el Teclado para introducir datos, y el Monitor del PC para visualizar la salida.
Adicionalmente existen 4 conectores para trabajar externamente entradas y salidas, por ejemplo con el protoboard. Los cuatro conectores de expansión estándar permiten a la tarjeta Basys2 crecer utilizando circuitos diseñados por el usuario o PMods. (Los PMods son módulos de E/S analógicos y digitales de bajo costo que ofrecen conversión A/D y D/A, drivers para motor, entradas de sensor y muchas otras características).
Supongamos que por ejemplo se desea trabajar con 4 leds de alto brillo o leds de chorro. Digilent ofrece por 10 dólares un módulo de expansión de 6 pines con los leds y sus transistores para que los manejen.
Veamos el diagrama lógico de los leds y transistores:
Si necesitamos un display de cristal líquido LCD, por 35 dólares Digilent ofrece la respectiva tarjeta expansora que utiliza dos puertos, o sea 6 pines:
Veamos su diagrama eléctrico:
Se ofrece adicionalmente documentos de soporte para cada módulo expansor.
El lector puede conocer todos los módulos de expansión disponibles con sus respectivos precios en https://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,401&Cat=9
Uno de los 6 pines del conector es tierra (GND) y otro es Vcc de 3,3 voltios en cada puerto de expansión.
Supongamos que por ejemplo se desea trabajar con 4 leds de alto brillo o leds de chorro. Digilent ofrece por 10 dólares un módulo de expansión de 6 pines con los leds y sus transistores para que los manejen.
Veamos el diagrama lógico de los leds y transistores:
Si necesitamos un display de cristal líquido LCD, por 35 dólares Digilent ofrece la respectiva tarjeta expansora que utiliza dos puertos, o sea 6 pines:
Se ofrece adicionalmente documentos de soporte para cada módulo expansor.
El lector puede conocer todos los módulos de expansión disponibles con sus respectivos precios en https://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,401&Cat=9
Uno de los 6 pines del conector es tierra (GND) y otro es Vcc de 3,3 voltios en cada puerto de expansión.
.
Se pueden observar en el gráfico anterior las resistencias de protección contra corto circuitos a las salidas, lo mismo que Diodos de protección ESD a tierra contra descargas electrostáticas.
Las descargas
electrostáticas, como su nombre lo indica, consisten en un flujo
repentino de corriente a través de un material, que generalmente es un
aislante, pero que la diferencia de potencial entre sus extremos genera
un campo eléctrico de cierta magnitud, convirtiendo los átomos del
material en iones que conducen corriente.
Estas descargas se
convierten en una seria amenaza para algunos dispositivos electrónicos
sensibles, ya que gran parte de ellos incorporan una capa delgada de
aislante, como por ejemplo dióxido de silicio, la cual se rompe cuando
es sometida a altos voltajes, dañando irreparablemente el dispositivo.
Síntesis de circuitos mediante la tarjeta BASYS 2:
La síntesis de circuitos se puede realizar por medio del editor esquemático o mediante el lenguaje de descripción hardware VHDL. Se compilará utilizando el entorno ISE de XILINX como el XILINX ISE 10.1 que está disponible en el laboratorio de Simulación de Electrónica-Biomédica en la UAN,sede Sur,Bogotá. Este entorno es capaz de crear un archivo para la configuración de la FPGA a partir del código VHDL que se escribe(archivo de “bit stream” con extensión .bit). Dicho archivo debe ser cargado en la tarjeta BASYS 2. Esto hace que el hardware interno de la FPGA se configure para seguir las especificaciones de lo que se requiere implementar.
Para volcar el contenido del archivo en la FPGA y configurarla es necesario utilizar el programa ADEPT de DIGILENT, el cual también debe estar disponible en el PC adicional al XILINX ISE.
Para implementar un circuito digital en la FPGA de la tarjeta Digilent Basys 2 deben seguirse los siguientes pasos:
1). Dibujar el circuito lógico en el Editor Esquemático o escribir un código en VHDL que describa el hardware que queremos sintetizar.
1). Dibujar el circuito lógico en el Editor Esquemático o escribir un código en VHDL que describa el hardware que queremos sintetizar.
2). Compilar el esquemático o el código VHDL y generar el archivo de “bit stream”. Evidentemente el archivo no se generará si el programa tiene errores.
3) Efectuar la simulación del circuito a implementar.
4). Una vez generado el fichero de “bit stream”, deberá utilizarse el programa ADEPT para volcarlo en la FPGA.
5). En este momento, la FPGA se convierte en un circuito que deberá realizar la tarea que haya sido descrita mediante el esquemático o el código VHDL.
5). En este momento, la FPGA se convierte en un circuito que deberá realizar la tarea que haya sido descrita mediante el esquemático o el código VHDL.
Utilización del entorno ISE:
Para realizar una síntesis mediante el entorno ISE debe crearse un proyecto.
Vaya al menú FILE -> NEW PROJECT. Aparecerá una ventana donde tendrá que escribir el nombre del nuevo proyecto. Asegúrese también que en la casilla de selección “Top level Source Type” aparece “HDL”.
En la siguiente pantalla deberá ajustar los siguientes valores:
Family: Spartan 3E
Device: XC3S100E
Package: CP132
Speed: -5
Synthesis tool: XST (VHDL/Verilog)
Simulator: ISim (VHDL/Verilog)
Preferred Language: VHDL
Por último sáltese las siguientes pantallas pulsando en “Next”. En la última aparecerá el botón “Finish”.
Para realizar una síntesis mediante el entorno ISE debe crearse un proyecto.
Vaya al menú FILE -> NEW PROJECT. Aparecerá una ventana donde tendrá que escribir el nombre del nuevo proyecto. Asegúrese también que en la casilla de selección “Top level Source Type” aparece “HDL”.
En la siguiente pantalla deberá ajustar los siguientes valores:
Family: Spartan 3E
Device: XC3S100E
Package: CP132
Speed: -5
Synthesis tool: XST (VHDL/Verilog)
Simulator: ISim (VHDL/Verilog)
Preferred Language: VHDL
Por último sáltese las siguientes pantallas pulsando en “Next”. En la última aparecerá el botón “Finish”.
Para compilar el código y generar el “bit stream” , seleccione el fichero o archivo principal del proyecto y haga doble click en “Generate Programming File” en la parte inferior izquierda, después de haber efectuado la asignación de pines con el editor respectivo “Edit Constraints" y generar el respectivo archivo con extensión UCF.
Programación de la FPGA de la tarjeta Digilent Basys 2:
Contiene un cable USB que le proporciona energía y es utilizado como interfaz de programación, por lo que ninguna otra fuente de poder o cable de programación es requerido.
Para el uso de las tarjetas de Digilent que cuentan con conector Mini-USB como la Basys2 se requiere un software extra para poder realizar la comunicación: Adept de Digilent; El software puede descargarse de manera gratuita en el sitio web http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,828&Prod=ADEPT2, en la sección “Software”: Digilent Adept, el paquete a descargar para Windows es Adept 2.6.1 System, 32/64-bit. Su instalación es muy sencilla, basta con hacer doble clic en el icono del software descargado y seguir las instrucciones.
Conecte la tarjeta Basys2 a un puerto USB disponible de una computador, Windows reconocerá que se ha conectado un nuevo dispositivo y procederá a asociarlo con el controlador adecuado. Arranque el programa: ADEPT. y si la tarjeta se encuentra conectada adecuadamente, se debe tener algo como lo que se muestra en la figura siguiente:
Conecte la tarjeta Basys2 a un puerto USB disponible de una computador, Windows reconocerá que se ha conectado un nuevo dispositivo y procederá a asociarlo con el controlador adecuado. Arranque el programa: ADEPT. y si la tarjeta se encuentra conectada adecuadamente, se debe tener algo como lo que se muestra en la figura siguiente:
Mediante el botón “Browse…” situado en la línea superior puede seleccionar el archivo que desea cargar. El archivo debe tener extensión .bit A continuación haga click en el botón “Program”.a la derecha de “Browse…” Acepte la ventana que aparece y el fichero será transferido a la FPGA configurándola de tal manera que obedezca el circuito descrito en su diseño.
Durante la programación, un led de color rojo, que se encuentra a un lado de los pines de alimentación externa de la tarjeta se enciende, una vez terminado el proceso se indica si ha sido exitoso en la ventana de mensajes de Adept.
Recomiendo consultar un excelente trabajo de investigación realizado por el ingeniero Mario Merino Marquez del Instituto Tecnológico de Tehuacán, México, titulado "Viabilidad de la tarjeta Basys 2 para su implementación en el control de un proceso".http://es.scribd.com/doc/97695972/Vibilidad-de-La-Tarjeta-Basys2-Para-Su-Implementacion-en-El-Control-de-Un-Proceso
sábado, 25 de mayo de 2013
Autoevaluación máquina ASM con respuestas (Simulada en Altera)
Una
máquina de estado algorítmica dispone en su procesador de datos de un Contador 74190
( C ) y de un flip-flop J-K (M) para manejar un motor DC, y responde al siguiente diagrama
ASM:
RESPUESTAS:
1) Simulación en Altera del funcionamiento de la máquina:
2) Implementación de la Unidad de Control:
Simulación del control:
3) Procesador de datos:
Suscribirse a:
Entradas (Atom)










.jpg)





.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

ada









