¿Hay hardware, software, firmware y ... FPGAware? [cerrado]

1

Creo que a estas alturas, es probable que todos tengamos una buena comprensión de la distinción entre hardware y software. Además, es ampliamente aceptado que el firmware es un software que se inyecta en un sistema integrado de manera que no se puede cambiar fácilmente cada vez que enciende y ejecuta dicho sistema.

Muchos diseños de sistemas utilizan componentes FPGA que son "programables" en el sentido de que cargan una imagen de alguna memoria FLASH no volátil en el momento del encendido que configura el FPGA para realizar alguna de las funciones previstas en el sistema. Mi pregunta aquí es ¿cuál es el nombre generalmente aceptado para la garantía de datos de FPGA que define su funcionalidad? Como puede ver en el título, he inventado el FPGAware a largo plazo, pero dudo que sea el término realmente en uso.

Para los propósitos de esta pregunta, consideremos que el FPGA consiste en una lógica básica que incluye puertas, flip flops, registros, secuenciadores y máquinas de estado. El FPGA NO incluiría un núcleo de procesador fijo o sintetizado que ejecute algún "software".

    
pregunta Michael Karas

5 respuestas

3

En un proyecto, los ingenieros suelen llamar a una unidad funcional por su función. Si tienen un procesador de banda base en lógica programable, lo llamarán "la banda base". Del mismo modo, para módems, frontendes de rf, cripto-núcleos, procesadores de red, etc. El firmware no es de ninguna manera "firme" en el proceso de desarrollo. Exactamente esto es lo que hace que la lógica programable sea tan atractiva para el desarrollo.

La distinción entre software y firmware frente a hardware es más acerca de la facilidad con que se puede reemplazar una unidad en el campo. Dado que los flujos de bits FPGA a menudo se almacenan junto con otro firmware en una memoria no volátil, también es correcto llamarlo firmware ... ya que el proceso para actualizarlo es el mismo desde la perspectiva del usuario.     

respondido por el Andreas
2

Los software son binarios que son "blandos", ya que viven en RAM y se pierden cuando se apaga la energía, cuando los usas, los descartas cuando terminas.

El firmware es un poco más "firme" que el software, tiende a programarse una vez y permanece allí, siempre se usa, no se carga y se descarta, no es temporal, es más firme que el software.

Los bits que se utilizan en un flash al lado del fpga para que funcione no son diferentes de los bits en el flash al lado de algún otro chip, ambos son firmware. Porque son firmes, no blandas.

Los lenguajes de programación son lenguajes de programación. No tengo problemas para llamar a vhdl ni para verilog un lenguaje de programación porque lo es. Algunas personas quieren decir hdl o rtl en su lugar y eso también está bien para describir el código fuente como decir python o C o lenguaje de programación de alto nivel. Tampoco hay nada de malo en decir código FPGA o código fuente FPGA.

    
respondido por el old_timer
2

No estoy muy seguro de si está preguntando cómo llamarlo antes de la síntesis o de la síntesis posterior, así que agregaré mi valor de 2p para ambas.

Antes de la síntesis, tiene descripciones de hardware basadas en código o esquemáticas, o una combinación según la que prefiera. Estos son los que simplemente llamaría "código fuente" , "archivos fuente" o simplemente "código" .

Una vez sintetizado, tienes lo que yo llamaría simplemente "firmware" . Los flujos de bits compilados o los archivos de objetos no son diferentes de los archivos de código de máquina que se usarían para un procesador integrado. Ambos se considerarían firmware en el sentido de que se compilan y almacenan permanentemente en lo que es esencialmente un estado de solo lectura. Realmente no hace mucha diferencia en la definición de que una contiene instrucciones de la máquina, mientras que la otra contiene información de inicialización para las diversas LUT y memorias en el FPGA.

Sin embargo, también iría un paso más allá y distinguiría el firmware completo compilado completamente (que puede cargar como está al FPGA) de sus componentes básicos. Los bloques de construcción del firmware suelen denominarse "núcleos IP" . Estos pueden ser código fuente puro o "netlists" completamente sintetizados que se pueden integrar como parte de un diseño más grande. Esto es bastante parecido a las bibliotecas en el mundo del software.

Como nota al margen, personalmente nunca he oído hablar del término FPGAware, ni tampoco lo usaría, ni siquiera pensar en su existencia me hace temblar.

    
respondido por el Tom Carpenter
1

"Gateware" es un término que he visto usado.

Pero para mí, todo es firme / software, se puede cambiar. Sucede que configura algunos elementos de hardware, pero la clave para mí es que proporciona funcionalidad y que la funcionalidad no es fija. (Habiendo dicho eso, veo en el punto de vista de otros que llamarlo "software" implica algunas cosas que no son válidas para las personas menos familiarizadas con los FPGA ...)

    
respondido por el Martin Thompson
0

Al igual que Tom Carpenter, en el estado precompilado, la descripción es simplemente "código", "código fuente".

Para la cosa / sintetizada que cargue en su FPGA, diría "Configuración", porque configurar es el verbo comúnmente usado para el proceso de cargar la "imagen FPGA" (otro término que describe la configuración en su estado almacenado) en el FPGA.

Hablamos con frecuencia sobre diseños , lo cual es agradable, porque destaca el hecho de que, al igual que un esquema y un diseño de tablero que llevan a un diseño de PCB, los enfoques de diseño visual / HDL conducen a Configuración de FPGA.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas