Sistemas

VHDL: construyendo circuitos para autómatas

2019-08-27 - Categorías: VHDL
VHDL simulando con GTKWave y Ghdl autómatas..

Sigo practicando, poniéndome al día con la creación de circuitos digitales. Si has seguido los últimos posts sobre VHDL, verás que hemos llegado a los autómatas. Estos autómatas, son las partes de los circuitos que controlan los procesos internos de muchos otros componentes. Es decir, las lavadoras, neveras, microondas, televisores, aires acondicionados, alarmas, routers, puentes de comunicación de las placas madre, microprocesadores, etcétera.. llevan autómatas dentro, ya sean máquinas de Moore, de Mealy, finitos, seguros, etc…

Pensemos por ejemplo en un autómata para una aspiradora autónoma, que tenga unos estados de funcionamiento como aspirando, en reposo, en recarga, una serie de sensores de entrada de choque, infrarrojos, ultrasonidos, quizá una cámara, y una serie de actuadores como motores para las ruedas, aspiración.. Pensemos por ejemplo en un autómata para un microondas, en el que vamos seleccionando el programa, le ponemos un tiempo, y le damos al botón de start para que vaya calentando la comida con un contador decreciente de tiempo.. O pensemos por ejemplo en un autómata para controlar unos cultivos hidropónicos, tendrá sensores de agua, temperatura, luces, actuadores para las bombas de agua, quizá ventiladores o ventanas si es un invernadero, altavoces para hacer sonar notificaciones, etc..

Continuar leyendo..

VHDL: la joya de los biestables, el flip flop JK

2019-08-21 - Categorías: VHDL
VHDL simulando el flip flop JK con GTKWave y Ghdl..

Finalmente llegamos a este code-kata sobre los biestables en VHDL. Este se trata del flip flop JK, que es una combinación de los anteriores posts sobre biestables. Puede almacenar memoria del bit que almacena como el SR, puede resetearse poniéndose a 0, setearse a 1, negarse a si mismo al son del tic tac del reloj como el flip flop T. También se setea o resetea al son del tic tac del reloj como el flip flop D…

En fin, la joya de los biestables.. 😀

En este code-kata dejo una versión que tiene 3 entradas: el pin J, el pin K, y el pin de la señal del reloj. Como salidas, igual que los anteriores posts, tenemos 2 señales (2 pines), que son el estado actual y el negado.

Continuar leyendo..

VHDL: el biestable flip flop D

- Categorías: VHDL
VHDL el flip flop D, retardando el dato de entrada en la salida al tic tac del reloj.

Aquí que dejo otro code-kata sobre electrónica digital, ahora sobre otro tipo de biestable. Este es un circuito que simplemente retarda la señal de salida al son del tic tac del reloj, es el llamado flip flop D, con D de data o de Delay.

Es decir, tenemos 2 señales de entrada, aunque los hay con más señales. En el siguiente código una de las señales es la señal del reloj, y la otra es el dato, un pin de entrada que puede ser 0 o 1. En la salida tendremos dos pines, uno con la salida normal, y otro negada. Simplemente se cambiarán las salidas en el flanco de subida del reloj. Si la entrada de dato es 0, en el siguiente tic tac, se pondrá un 0 en la salida normal, y un 1 en la negada.

Continuar leyendo..

VHDL: el biestable flip flop T

- Categorías: VHDL
VHDL simulando el flip flop T con GTKWave y Ghdl.

El flip flop T, es el biestable Toggle, que cambia en inglés. Este es un code-kata con el código fuente en VHDL de este biestable. Simplemente es un dispositivo que almacena memoria de un estado.

Recibe 2 entradas, una señal de reloj, y la entrada T. Entonces, simplemente si la señal T está activa a 1, entonces con el tic tac del reloj va cambiando las salidas. En las salidas sólo tiene 2 pines, que son el estado actual, y el estado actual negado.

Continuar leyendo..

VHDL: el biestable flip flop SR

- Categorías: VHDL
VHDL flip flop SR
VHDL simulando el flip flop SR con GTKWave y GHDL.

Aquí vengo de nuevo con más code-katas, ahora con un flip flop SR. Un flip flop es un biestable, un circuito multivibrador que permanece en dos estados, mientras las señales de entrada no cambian. Se suelen usar mucho en electrónica para almacenar bits.

El flip flop SR es un biestable que con sus dos entradas se pone a 0 o a 1. Con la entrada R se pone a cero, y con la S a 1. Simple y llanamente este es el funcionamiento. Si recibe tanto R como S a cero, entonces permanece en el estado que tenga. Y si recibe R y S a 1, está prohibido, con lo que entra en un estado inestable.

Más información sobre los biestables aquí:
https://es.wikipedia.org/wiki/Biestable

Continuar leyendo..

VHDL: ROM hecha con generate y variables

2019-08-16 - Categorías: VHDL
VHDL ROM generada con variables.

Jugando y jugando con VHDL, que llegamos a encontrar una sentencia llamada generate. Con esta generate podemos generar, en pocas líneas, circuitos más grandes que repiten sus componentes. A su vez también tenemos variables, que podemos usar en estos generates.

Con esto junto, reutilizando la ROM anterior, que podemos generar una ROM para nuestras simulaciones de esta forma..

Continuar leyendo..

VHDL: memoria de sólo lectura ROM

- Categorías: VHDL
VHDL una memoria de sólo lectura ROM de 4 palabras de 64 bits.

Y aquí otro code-kata, ahora con una memoria de sólo lectura, de las llamadas ROM. Estas memorias simplemente tienen unos datos internamente grabados que pueden ser consultados accediento a direcciones de memoria.

Para este code-kata sólo hay 4 palabras de 64 bits. Es decir un vector de 4 palabras, o una matriz de 4×64 bits, como prefieras verlo. En la entrada recibe 2 pines con las 4 direcciones posibles de palabra.

Continuar leyendo..

VHDL: un register file de 16×64 bits, simulando una operación de suma en ensamblador

2019-08-15 - Categorías: VHDL
VHDL register file 16×64 simulando R3 <- R1 + R2

Hoy traigo otro experimento algo más largo de lo normal, otro code-kata para la serie de posts sobre VHDL. Este code-kata es sobre lo que se llama un register file, que simplemente es un circuito compuesto por registros sencillos. En este caso son registros de 64 bits con precarga, y unos decodificadores para apuntar a uno y otro. En concreto, se trata de un register file de 16 registros, y dos decodificadores de 4×16 con entrada de habilitación, para elegir uno de los 16 registros al escribir o leer los datos.

Los register file son conjuntos de registros que se utilizan comunmente en los microprocesadores para varias tareas. Por ejemplo, se pueden usar como almacén de datos, de direcciones, contadores, acumuladores, etc.. En esta construcción del circuito, se simula el uso como almacén de datos, para simular el uso en la operación de ensamblador siguiente:

Continuar leyendo..

VHDL: registro multifunción con carga, reseteo, desplazamiento y rotación

2019-08-13 - Categorías: VHDL
VHDL registro multifunción con carga desplazamiento y rotación
VHDL registro multifunción con carga desplazamiento y rotación.

Otro code-kata a traer vengo de nuevo continuando con el post anterior sobre registros. Los registros se usan para varias tareas como almacenamiento de valores, direccionar a la memoria, el contador de programa, códigos de operación, lo que haga falta.. así que añadiendo funcionalidades al registro simple del post anterior, llegamos al registro multifunción.

Es decir, los registros multifunción son como los simples, pero añaden más señales de entrada, para hacer operaciones simples con el dato que les llega, valga la redundancia. Por ejemplo las señales y operaciones pueden ser:

Continuar leyendo..

VHDL: registro sencillo de 8 bits

- Categorías: VHDL
VHDL registro sencillo de 8 bits.

Traigo de nuevo otro code-kata, ahora se trata de un registro sencillo. Los registros son circuitos sencillos, en donde se depositan ciertos valores de un dado número de bits, al son del tic tac del reloj. Se usan para direccionar la memoria, llevar la cuenta de dónde está un programa ejecutándose, almacenar un valor, y un largo etcétera.

Es decir, es un circuito sencillo en donde simplemente se le deja poner un valor de entrada, que a la vez se puede resetear.

Continuar leyendo..

VHDL: el tic tac de un reloj a 100 MHzs

2019-08-11 - Categorías: VHDL
VHDL simulando el tic tac de un reloj a 100 MHzs.

Sigo diseñando sencillos circuitos digitales en VHDL. Así que aquí estoy de nuevo con otro code-kata, ahora simulando en el banco de pruebas, el tic tac de un reloj interno que muchos circuitos electrónicos tienen dentro. Es decir, muchas veces tendremos que desencadenar acciones en circuitos al son del tic tac de un reloj o varios. Para simular este tic tac que tendremos que generar estas señales 10101010101.. cambiando de 0 a 1, y de 1 a 0, cada cierto tiempo simulando así una velocidad en Hercios.

Por ejemplo, los microprocesadores tienen internamente una señal de reloj, que actualmente suele variar del orden de los 2000-3000 MHzs. En las placas de desarrollo FPGAs podemos tener un reloj de 50-100 MHzs. Así sucesivamente, mediante señales de reloj, podremos disparar acciones y movimientos de los bits de un lado a otro, de un circuito a otro, de un componente a otro. De esta forma es cómo se orquestan realmente las acciones internas de muchos procesamientos digitales..

Continuar leyendo..

VHDL: diseñando una unidad aritmético lógica

- Categorías: VHDL
VHDL diseñando una ALU.

Aquí dejo otro code-kata en VHDL, esta vez de una ALU básica con 8 modos de funcionamiento: suma, resta, multiplicación, exponente a 2, complemento a 2, and, or y not. ALU son las siglas de Arithmetic Logic Unit. Se trata de un componente básico de los procesadores. Resumiendo, es un circuito que recibe unas entradas y saca unas señales de salida, destinado a hacer operaciones aritméticas o lógicas como pueden ser la suma, resta, multiplicación, and, or, etcétera.

En esta ALU tenemos 3 entradas: 2 de ellas son los números, y la tercera entrada es el modo de funcionamiento (la operación que queremos que haga). En las salidas le he puesto 3 salidas: 1 es el resultado básico para la mayoría de estas operaciones, 1 resultado de multiplicación que es un vector de bits más largo, y una salida de estado que aunque no se en éste código usa la idea es dar una señal de éxito 0 o de error 1.

Continuar leyendo..

© 2020 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.