Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como EP1C3T144

Reloj digital en VHDL

Si ya hemos hablado de cómo generar un reloj de 1 Hz y también hemos visto cómo controlar un display de siete segmentos con VHDL, el siguiente paso lógico es construir un circuito para un reloj digital de 24 horas. Sólo es cuestión de unir lo ya aprendido en los dos anteriores artículos y añadir algo de lógica de control. Vamos a construir un circuito descrito con VHDL que tiene una sola entrada llamada clk50mhz , que es la señal de reloj (de 50 Mhz en este caso) que va a comandar todo el sistema. Como salida hay dos buses, uno llamado display , que obviamente se encarga de iluminar los leds correspondientes de cada display de siete segmentos, y otra salida llamada cur_display que selecciona qué display, de los cuatro posibles, se ilumina en cada momento. El código es el siguiente. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity digital_clock_top is port ( clk50mhz: in STD_LOGIC; display: out STD_LOGIC_VECTOR(7 downto 0); cur_displ...

Multiplexado de displays de siete segmentos con VHDL

Cuando un diseño utiliza más de un display de siete segmentos es interesante multiplexarlos para ahorrar en conexiones. Si no lo hacemos así, para controlar cuatro displays necesitaríamos 32 conexiones al microcontrolador si es que queremos manejar directamente los displays sin ningún integrado de por medio. Vamos ver cómo funciona este multiplexado y cómo se puede implementar en una FPGA usando VHDL. Existen dispositivos que empaquetan varios displays que son muy cómodos de usar. En este artículo, como ejemplo usaremos uno de cuatro displays. Sin embargo esta técnica puede usarse con varios displays sueltos. En el siguiente esquema se presenta la manera correcta de hacer las conexiones mediante transistores configurados en emisor común para funcionar como interruptores. Las entradas D0 a D3 permiten seleccionar qué display queremos activar en cada momento, mientras que las entradas A a G (y DP) permiten seleccionar qué leds se han de encender para mostrar e...

Divisor de frecuencia para reloj de 1Hz en VHDL

Los circuitos digitales, a no ser que sean asíncronos, van comandados por un reloj cuya frecuencia puede variar según el tipo de sistema digital del que se trate. Desde microprocesador 6502 que funcionaba con un reloj de 1Mhz hasta los actuales, que funcionan en el orden de los gigahercios, no han pasado ni cuatro décadas. En un sistema digital complejo es habitual que necesitemos obtener diferentes frecuencia de reloj para diferentes subsistemas. Un ejemplo muy claro puede ser el de un reloj digital que tiene que contar los segundos, por lo tanto, necesita un reloj de 1Hz (un pulso por segundo). En este artículo vamos a ver un ejemplo práctico de cómo obtener un reloj de 1Hz a partir de otro de 50Mhz en VHDL, y vamos a probarlo un una FPGA. La técnica usada para dividir la frecuencia de un reloj es usar biestables conectados en cascada. En la siguiente esquema se detalla el funcionamiento. Cada biestable divide la frecuencia a la mitad, así que la idea es ir acoplando biesta...

Placa de desarrollo FPGA EP1C3T144 (III)

Para finalizar la serie de tres artículos sobre esta placa de desarrollo vamos a ver como está conectada la cabecera de pines de entrada y salida, sin la que la FPGA no podría comunicarse con el mundo exterior. Para ello vamos a aprovechar el mismo circuito semisumador que ya hicimos en la primera parte y, en vez de usar los botones y los leds de la placa, vamos a montarlos en una protoboard.  La asignación de pines entre la FPGA y la cabecera de E/S es la siguiente. PIN FPGA Conector E/S PIN FPGA PIN 7 - 01 02 - PIN 6 PIN 5 - 03 04 - PIN 4 PIN 3 - 05 06 - PIN 2 PIN 1 - 07 08 - PIN 144 PIN 143 - 09 10 - PIN 142 PIN 141 - 11 12 - PIN 140 PIN 139 - 13 14 - PIN 134 PIN 133 - 15 16 - PIN 132 PIN 131 - 17 18 - PIN 130 PIN 129 - 19 20 - PIN 128 PIN 127 - 21 22 - PIN 126 PIN 125 - 23 24 - PIN 124 PIN 123 - 25 26 - PIN 122 PIN 121 - 27 28 - PIN 120 Vamos a conectar los LEDs a los pines 27 (PIN 121 de la FPGA) y...

Placa de desarrollo FPGA EP1C3T144 (II)

Seguimos indagando en las posibilidades de esta placa de desarrollo, y en esta ocasión vamos a ver cómo están conectados el cuádruple display de siete segmentos (bueno, 8 segmentos con el punto decimal) y los dos bancos de switches. El display es un 3461B (de ánodo común). Al igual que un 7 segmentos normal, este display tiene las 8 entradas para cada uno de los leds, y además, otras cuatro para seleccionar el led a iluminar en cada momento (refrescando los displays consecutivamente pueden usarse los cuatro a la vez). Estos son los pines de la FPGA asociados a cada pin del display. Pin display Pin FPGA Segmento A (pin 14) PIN 74 Segmento B (pin 16) PIN 77 Segmento C (pin 13) PIN 78 Segmento D (pin 3) PIN 79 Segmento E (pin 5) PIN 75 Segmento F (pin 11) PIN 82 Segmento G (pin 15) PIN 73 Punto decimal (pin 7) PIN 76 Dígito 1 (pin 1) PIN 83 Dígito 2 (pin 2) PIN 84 Dígito 3 (pin 6) PIN 85 Dígito 4 (pin 8) PIN 91 Las cuatro señale...

Placa de desarrollo FPGA EP1C3T144

Últimamente están apareciendo placas de entrenamiento para FPGAs a un precio bastante interesante, y si miramos al mercado chino, aún más. El otro día me topé con una bastante completa basada en la EP1C3T144 de Altera. Es una FPGA de la primera generación de la familia Cyclone, así que tiene sus limitaciones, pero por el precio, es más que recomendable para empezar a jugar con las FPGA. Si buscas "FPGA Cyclone Altera EP1C3T144 Learning Board" en eBay, la encontrarás sin mayor problema (incluso la venden con el programador USB-Blaster y el cable JTAG).      Las características de la placa son:Altera Cyclone de la serie serie EP1C3T144. Cuatro teclas. Cuatro displays de 7 segmentos. Seis leds. Dos DIP de seis interruptores. Reloj activo a 50Mhz. Receptor de infrarrojos (VS1838). Sensor de temperatura (DS18B20). Un buzzer. Puerto de comunicaciones serie MAX232. Módulo de reloj DS1302. Interfaz para LCD de 16 pines. Interfaz JTAG y AS. 28 Puertos E/S. Pero (si...