Vengo de un fondo de programación y no me metí demasiado con el hardware o el firmware (a lo sumo un poco de electrónica y Arduino).
¿Cuál es la motivación de usar lenguajes de descripción de hardware (HDL) como Verilog y VHDL en lenguajes de programación como C o algún ensamblado?
¿Se trata de una cuestión de elección?
Leí que el hardware, cuyo firmware está escrito en un HDL, tiene una clara ventaja al ejecutar las instrucciones en paralelo. Sin embargo, me sorprendió ver discusiones que expresan dudas si escribir el firmware en C o en la Asamblea (¿cómo es apropiado el ensamblaje si no necesariamente tienes una CPU?) pero llegué a la conclusión de que también es una opción.
Por lo tanto, tengo algunas preguntas (no dude en explicar nada):
-
¿Se puede escribir un firmware en HDL o en un lenguaje de programación de software, o es solo otra forma de realizar la misma misión? Me encantaría ver ejemplos del mundo real. ¿Qué restricciones resultan de cada opción?
-
Sé que un uso común del firmware sobre el software es en aceleradores de hardware (como GPU, adaptadores de red, aceleradores de SSL, etc.). Como lo entiendo, esta aceleración no siempre es necesaria, sino que solo se recomienda (por ejemplo, en el caso de SSL y la aceleración de algoritmos complejos). ¿Se puede elegir entre firmware y software en todos los casos? De lo contrario, me encantaría conocer los casos en que el firmware sea clara e inequívocamente apropiado.
-
He leído que el firmware se quemó principalmente en ROM o flash. ¿Cómo se representa allí? En bits, como el software? Si es así, ¿cuál es la profunda diferencia? ¿Es la disponibilidad de circuitos adaptados en el caso de firmware?
Supongo que cometí un error aquí y allá en algunas suposiciones, por favor, perdóname. ¡Gracias!