VHDL

20 entradas

VHDL es un lenguaje de definición de circuitos. V de Very High Speed Integrated Circuit y HDL de Hardware Definition Language. Es decir, no es un lenguaje de programación, sino de definición. Mediante VHDL se definen las interfaces con circuitos, así como su comportamiento interno.

Poco a poco se pueden reutilizar componentes previamente hechos. También la comunidad comparte diseños, llamados cores, con los que puedes reutilizarlos, modificarlos, etc. Esta escalabilidad se puede seguir, el único límite será la complejidad que puede alcanzar el diseño.

Humildemente aquí iré dejando apuntes relacionados con VHDL, mientras que me voy reciclando y poniendo al día, con la mente en las FPGAs.. 😉

VHDL sumador completo de 4 bits haciendo port map

VHDL: uniendo circuitos, un sumador completo de 4 bits

Sigo poniéndome al día en electrónica digital, diseñando circuitos digitales. Así que aquí vuelvo con otro code-kata para hacer un sumador de varios bits. Para este sumador reutilizo un componente previamente hecho, diseñando un sumador completo de 4 bits. Es decir, en un post anterior escribí un sumador completo simple de 1 bit. Ahora con la instrucción de VHDL llamada port map, podemos enlazar tantos componentes como necesitemos en circuitos más grandes. Usando port map es la forma que tenemos de escalar tanto como queramos, todos los circuitos que queramos en sistemas digitales cada vez más grandes.

VHDL restador completo de 1 bit

VHDL: restador completo de 1 bit

Aquí dejo otro code-kata en VHDL, ahora para construir un restador completo de 1 bit. Recibe 3 entradas y saca 2 salidas. Es muy parecido al sumador completo del post anterior. La tabla de verdad de este circuito es la siguiente: Acarreo de entrada A B Acarreo de salida Resta 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 El código fuente del restador Las primeras pruebas construyendo sin simplificar, después el simplificado: El restador simplificado De nuevo, utilizando las tablas de Karnaugh llegamos a simplificar el código anterior a este siguiente: El banco de pruebas Igual que con el sumador, nos sirve casi el mismo banco de pruebas. Sólo cambio el componente y la nomenclatura de alguna variable: Si todo ha ido bien, al visualizar las señales de entrada y salida, tanto con el circuito normal como con el simplificado, se tiene que ver algo como la imagen del principio.

VHDL multiplexor 4 a 1 son selección de 2 bits

VHDL: multiplexor de 4 a 1 con selección de 2 bits

Code-kata para generar un circuito de un multiplexor. En este caso es un multiplexor que recibe 4 señales de entrada y las encauza en una salida eligiendo con otras dos señales de entrada cuál tiene que encauzar a la salida. Es decir, los 2 pins de entrada para seleccionar nos permiten 4 posibilidades: 00, 01, 10 y 11. Esto nos permite, suponiendo que tenemos 4 señales de entrada x0, x1, x2 y x3; que si seleccionamos 00 en la salida saldrá la señal de entrada x0, si ponemos 01 saldrá la señal x1, si ponemos 10 saldrá la señal x2 y si ponemos en selección 11 saldrá la señal de entrada x3 por la única salida que hay.

VHDL decodificador BCD de 4 bits a display de 7 segmentos

VHDL: decodificador BCD de 4 bits para display de 7 segmentos

Code-kata para mostrar en un display de siete segmentos números en binario que van desde el 0 al 9. Es un sencillo circuito que se puede encadenar con otros para mostrar los dígitos que sean necesarios. Esto es lo que se llama un decodificador BCD de 4 bits para un display de 7 leds, en este caso. No tiene mucho que explicar simplemente que es un circuito que convierte las señales de entrada de 4 bits en una señal de salida de 7 bits. Las de entrada son números en binario del 0 al 9. Mientras que las de salida simplemente encienden o apagan los segmentos para pintar el número que toque.

VHDL decodificador 4 a 16

VHDL: decodificador 4 a 16

Otro code-kata traigo ahora. Se trata de un decodificador que tiene 4 pines de entrada y 16 de salida. Le falta la señal de habilitado/deshabilitado. Puede servir para activar 16 cosas, en función a una señal de entrada de 4 bits, como paso intermedio en el viaje de la información por los circuitos, etc..

VHDL puertas lógicas básicas

VHDL: los ladrillos básicos; and, or, not, nand, nor, xor y xnor

Dejo aquí un code-kata a modo de apunte de consulta. Se trata de un código no sintetizable, ya que no tiene entradas ni salidas, sólo es a modo de pruebas. Una entidad sin entradas ni salidas que asigna concurrentemente señales x y para visualizar en GTKWave los resultados de las puertas lógicas. Sin muchas explicaciones, es más sencillo leer el código. Tenemos dos partes principales en los ficheros .vhd: la del entity y la del architecture que define el entity.

Circuitos digitales

VHDL: diseñando hardware con software libre

Con este post comienzo con una serie de apuntes sobre el lenguaje de definición de hardware VHDL. Para los nuevos, VHDL no es un lenguaje de programación, sino un lenguaje de definición. Me explico, no lo confundamos o hablaremos piedras. Algunos lo llaman Very Hight Difficult Language 😀 difícil es, pero en realidad las siglas vienen del VHSIC (Very High Speed Integrated Circuit) y HDL (Hardware Description Language). Resumiendo, VHDL es un lenguaje de descripción de hardware, con el que podemos definir y probar hardware, antes de pedir su fabricación a mayor escala. También podemos inyectar el diseño generado en FPGAs para usar directamente en los prototipos, ya viendo después si conviene sintetizarlo o no, y con qué tecnología.