Quería saber si puedo programar un microcontrolador (no CPLD / FPGA) con VHDL / Verilog? Si es así, ¿cuáles son los pasos y las herramientas necesarias para el mismo?
Quería saber si puedo programar un microcontrolador (no CPLD / FPGA) con VHDL / Verilog? Si es así, ¿cuáles son los pasos y las herramientas necesarias para el mismo?
No es realista, no.
Estos son lenguajes para describir la funcionalidad del hardware, no lenguajes de programación ordinarios naturalmente adecuados para un stored program computer
.
En resumen, podría usarlos para hacer un procesador o un microcontrolador completo, pero no realmente realista para programar uno.
Estrictamente hablando, puede usar este lenguaje para describir una memoria, y esa memoria podría contener instrucciones (por ejemplo, para un procesador también descrito por el código), pero de manera realista, alguien que haga esto usaría típicamente un ensamblador o compilador tradicional para genere ese programa, luego use una herramienta para convertirlo en constantes de inicialización y pasarlo a través del compilador Verilog o VHDL, o bien inyecte esos contenidos más abajo para que terminen en la simulación del sistema resultante o en el dispositivo de hardware, pero sin pasar por el analizador de primer nivel del compilador verilog o vhdl.
Aunque sería extremadamente inusual hacerlo, potencialmente podría incorporar una memoria de este tipo en un FPGA y utilizarla para proporcionar instrucciones a un procesador fuera de chip en lugar de uno en uno. O si quisiera ser realmente absurdo, podría escribir algo para extraer los contenidos de la memoria en un formato de programación adecuado para una PROM tradicional, pero entonces ¿por qué pasar por el paso de Verilog o VHDL?
Alternativamente, también puede usar estos idiomas para codificar modelos de cómputo más simples, por ejemplo un state machine
o incluso una máquina de estados que controla una ruta de datos aritmática, pero no son microcontroladores en el uso moderno de la palabra.
Supongo que si lo tuyo es realmente ver la pintura en seco, alguien se las arregló para ejecutar Linux en un ATmega equipado con una cantidad cómica de RAM externa y simular en el software una arquitectura de computadora más adecuada, y probablemente podrías compilar iVerilog de compilación para eso maquina simulada Por lo tanto, en teoría, podría "ejecutar" un Verilog en simulación en una computadora decente, a su vez siendo simulado por un microcontrolador humilde, pero la simulación es lenta incluso en una computadora de grado de estación de trabajo rápida.
Verilog y VHDL son lenguajes de descripción de hardware, por lo que pueden usarse para describir hardware en el nivel lógico. Para "ejecutar" su código HDL necesita usar un FPGA / ASIC o al menos un simulador. Un microcontrolador (µC) es una especie de procesador pequeño, en el que puede ejecutar programas de software, compilados para el conjunto de instrucciones específico de µC.
Entonces no, no puede ejecutar Verilog o VHDL en un µC, pero puede usar el lenguaje para desarrollar una descripción de hardware de un µC. Hay algunos programas gratuitos disponibles, por ejemplo, openMSP en OpenCores .
Pregunta interesante. Como han dicho otros, Verilog está diseñado para programar funciones lógicas que luego se implementan en un FPGA. Sin embargo, como en casi cualquier idioma, puede escribir un simulador o compilador para permitir que Verilog se ejecute en un microcontrolador o microprocesador.
La mayoría de los ingenieros usan simuladores para probar su código Verilog antes de implementar en un FPGA. Si bien es más lento y menos eficiente que un FPGA debido a que el hardware no está optimizado y las pilas de software pesadas entre su simulador y el "metal puro", los simuladores están esencialmente "ejecutando" el código de Verilog como parece que está intentando hacer. Probablemente expresan entradas y salidas de manera diferente (es decir, como trazas en su pantalla en lugar de voltajes en los pines de un FPGA), pero esa distinción es bastante trivial.
Si lo desea, puede diseñar una biblioteca en algo como C para interpretar su código Verilog en el microcontrolador o un compilador para traducir ese Verilog en código de máquina antes de encender el microcontrolador. Sin embargo, esto tomaría una cantidad significativa de trabajo de desarrollo de herramientas / tiempo sin pago. Los diseñadores utilizan HDL y FPGA en lugar de microprocesadores para aplicaciones personalizadas, velocidad y eficiencia de energía cuando no es viable rodar su propio silicio. Perdería todos esos beneficios si implementa el código Verilog a través de alguna capa intermedia en su microcontrolador.
Por otro lado, este sería un increíble proyecto de investigación / desarrollo de habilidades. Usted emergería como un experto tanto en el funcionamiento interno del lenguaje Verilog como en su micro de elección.
Lea otras preguntas en las etiquetas microcontroller vhdl verilog programming