Menú
Está libre
registro
hogar  /  Firmware/ Un pequeño proyecto sobre FPGA. FPGA

Pequeño proyecto FPGA. FPGA

FPGA (Circuito Integrado de Lógica Programable) es un circuito integrado diseñado para construir circuitos digitales a partir de una descripción en un lenguaje de programación especial. En otras palabras, un FPGA es un chip, por así decirlo, que contiene un montón de elementos como el 74HCxx. Qué tipo de elementos lógicos serán, qué conexiones habrá entre ellos y qué conexiones tendrá el circuito resultante con el mundo exterior, se determina en la etapa de programación de FPGA.

Nota: Hasta donde pude averiguar, en ruso los términos FPGA y FPGA (Field-Programmable Gate Array, User-Programmable Gate Array) se consideran intercambiables, lo que se utilizará más adelante en el texto. Sin embargo, vale la pena conocer la existencia y un punto de vista alternativo, según el cual FPGA (FPGA) es una de las variedades de FPGA (PLD, Programmable Logic Device).

Conceptos básicos de FPGA

Para la programación FPGA, se utilizan lenguajes de descripción de hardware (HDL, lenguaje de descripción de hardware). Entre ellos, los más populares son Verilog (y sus dialectos, en particular SystemVerilog), así como VHDL. Los lenguajes son similares en muchos aspectos, pero tienen diferentes sintaxis y difieren en algunos detalles. Si Verilog es una C del mundo de la descripción de hardware, entonces VHDL es, respectivamente, Pascal. Hasta donde yo sé, VHDL es algo menos popular, en parte debido a su verbosidad en comparación con Verilog. De las ventajas de VHDL (o desventajas, como cualquiera) se puede llamar estricto escritura estática. Verilog a veces permite el casting implícito. Continuando con la analogía con C y Pascal, los idiomas no difieren tanto que no se pueden aprender los dos.

Actualmente, los principales fabricantes de FPGA son Altera (ahora propiedad de Intel) y Xilinx. Según información de diversas fuentes, en conjunto controlan al menos el 80% del mercado. Otros jugadores dignos de mención son Actel (adquirido por Microsemi), Lattice Semiconductor, Quicklogic y SiliconBlue. Puede trabajar con hardware de Xilinx solo desde el entorno de desarrollo de Xilinx (llamado Vivado), y el entorno de desarrollo de Altra (llamado Quartus) comprende solo el hardware de Altera. Es decir, un bloqueo de proveedor completo, y al elegir un FPGA específico para su proyecto, automáticamente selecciona las herramientas de desarrollo del fabricante correspondiente, su soporte técnico, documentación, condiciones de licencia de software, la política sobre la terminación del soporte de hardware, etc. .

Los FPGA se utilizan a menudo en tareas en las que desea acelerar algunos cálculos implementándolos directamente en el hardware. Por ejemplo, los FPGA se utilizan ampliamente en el procesamiento de señales, como osciloscopios, analizadores de espectro, analizadores lógicos, generadores de señales, radio definida por software e incluso algunos monitores. En particular, el LimeSDR usa el Altera Cyclone IV, y el osciloscopio Rigol DS1054Z usa el Xilinx Spartan-6, así como el ProASIC 3 de Actel. Otras aplicaciones de las que he oído hablar incluyen la visión por computadora, el reconocimiento de voz y la bioinformática. Hay otros proyectos, en particular para el desarrollo de servidores web y DBMS que se ejecutan en FPGA. Pero hasta donde yo sé, esta dirección es todavía muy experimental.

¿Xilinx o Altera?

Dicho esto, el mejor Linux es el que usa su compañero gurú de Linux.

Mi amigo, un gurú de FPGA, Dmitry Oleksyuk, me aconsejó que comenzara con el devboard Arty Artix-7 de Digilent. El FPGA utilizado en él es Artix-7 de Xilinx. Digilent en sí no realiza envíos a Rusia, pero el dispositivo también está disponible en AliExpress, aunque con un marcado marcado (el precio oficial es de $ 99). También se vende en eBay. Esta es una placa bastante poderosa, que sin embargo cuesta suficiente dinero.

¡Hecho de la diversión! Si solo desea programar en Verilog o VHDL, estrictamente hablando, no necesita comprar ninguna placa FPGA. Al principio, puede limitarse a un simulador, cuyo trabajo se discutirá más adelante.

Una característica interesante de la placa es la disposición de las ranuras de manera compatible con los escudos Arduino. También se incluye con la placa un inserto para la obtención de una licencia para Vivado, que abre todas sus posibilidades. La licencia es válida por un año a partir de la fecha de activación y también está vinculada a una computadora por tipo de sistema operativo y dirección MAC.

En la entrega. He escuchado que los dispositivos con FPGA a bordo tienen una buena posibilidad de no pasar por la aduana. La tienda en AliExpress, el enlace al que di arriba, entrega tableros a Rusia a través del servicio de mensajería SPSR. Para pasar por la aduana, se requería completar un formulario en línea con los datos del pasaporte (solo datos, sin foto) y un número de teléfono de contacto, como lo exige la legislación rusa vigente. Después de eso, la placa fue entregada por mensajería directamente en la puerta sin ninguna pregunta.

Instalación de Vivado

El entorno de desarrollo Vivado está disponible para descargar en el sitio web de Xilinx. Esté preparado mentalmente para el hecho de que antes de descargar tendrá que registrarse y completar un formulario bastante detallado sobre usted. Descargue el archivo llamado "Vivado HLx 2017.2: All OS installer Single-File Download". No lo confunda accidentalmente con ninguna "Soluciones Vivado Lab", esto no es en absoluto lo que necesita. El archivo pesa más de 20 GB, por lo que debemos ser pacientes.

Desempaquete el archivo, ejecute el instalador. Instale Vivado HL System Edition. Su versión completa ocupará 47 GB de espacio en disco. Personalmente, desmarqué el kit de desarrollo de software y dejé la compatibilidad con solo los dispositivos de la serie 7, lo que redujo el tamaño a 12 GB. Corriendo un poco más adelante, notaré que esta configuración resultó ser suficiente.

Antes de lanzar Vivado, debe agregarle soporte para Arty Artix-7, ya que no sabe nada sobre esta placa de fábrica. Se hace de alguna manera así:

cd ~ / opt / xilinx / Vivado / 2017.2 / data / boards / board_files
wget https: // github.com/ Digilent / vivado-boards / archive / master.zip
descomprimir master.zip
mv vivado-boards-master / new / board_files / * ./
rm -r vivado-boards-master
rm master.zip

También descargue y guarde el archivo Arty_Master.xdc en algún lugar. Lo necesitaremos más. El archivo contiene una descripción de los LED de la placa, interruptores, etc. Sin él, hacer parpadear los LED del Verilog no será fácil.

Primer proyecto en SystemVerilog

En Vivado, diga Archivo → Nuevo proyecto ... Seleccione Proyecto RTL como tipo de proyecto, marque la casilla de verificación No especificar fuentes en este momento. En el cuadro de diálogo de selección de tipo de placa, busque Arty en la lista.

En primer lugar, agregue el archivo XDC descargado previamente al proyecto. Cópialo en el directorio del proyecto. Luego decimos Archivo → Agregar fuentes… → Agregar o crear restricciones → Agregar archivos, busque una copia del archivo, haga clic en Finalizar. El archivo Arty_Master.xdc, o el nombre que le haya dado a la copia, aparecerá en el árbol de archivos del proyecto (Fuentes) en el grupo Restricciones. Ábrelo y descomenta todas las líneas de los grupos Señal de reloj, Interruptores y LEDs.

Luego decimos Archivo → Agregar fuentes… → Agregar o crear fuentes de diseño → Crear archivo. En el tipo de archivo, seleccione SystemVerilog, en el nombre del archivo, ingrese algo como hola. Decimos Finalizar. A continuación, aparecerá el cuadro de diálogo Definir módulo, que le ofrecerá hacer clic en la interfaz del módulo. El cuadro de diálogo es bastante inútil, porque es más conveniente hacer lo mismo directamente en el código, así que haga clic en Cancelar.

Busque un nuevo archivo hello.sv en el árbol de fuentes, estará en el grupo Design Sources. Abre y escribe el siguiente código:

`escala de tiempo 1ns / 1ps

módulo hola
lógica de entrada CLK100MHZ,
lógica de entrada [3: 0] sw,
LED lógica de salida [3: 0]
) ;

siempre @ (posedge CLK100MHZ)
empezar
si (sw [0] == 0)
empezar
dirigió<= 4"b0001 ;
fin
demás
empezar
dirigió<= 4"b0000 ;
fin
fin

endmodule

Si todo se hizo correctamente, en esta etapa su Vivado se verá así (se puede hacer clic, PNG, 71 KB):

La compilación de un programa se lleva a cabo en dos etapas: síntesis e implementación. En la etapa de síntesis, el programa se traduce en un circuito abstracto de puertas lógicas y otros elementos. En la etapa de implementación, se toma una decisión sobre cómo flashear este circuito en una pieza específica de hardware.

Ejecutemos la síntesis diciendo Flujo → Ejecutar síntesis, o simplemente presionando F11. En la esquina superior derecha, verá una indicación de que el proceso está en curso. Puede llevar bastante tiempo, dependiendo de su computadora y la complejidad del programa. En mi computadora portátil, la síntesis del programa anterior se completó en aproximadamente 10 segundos. Si ahora decimos Flujo → Abrir diseño sintetizado, entonces puede ver una hermosa imagen como esta:

Es hora de mostrar nuestro tablero. Decimos Flujo → Ejecutar imlementación, luego Flujo → Generar flujo de bits. Conectamos la placa a la computadora vía USB, en Vivado decimos Flow → Open Hardware Manager → Open target → Auto Connect → Program device. Deberá especificar la ruta al archivo de bits. Lo tenía de la siguiente manera:

./first-project.runs/impl_1/hello.bit

Decimos Programa. El LED LD4 en la placa ahora está encendido si el interruptor SW0 está hacia abajo (vea la foto de la placa arriba). Si el interruptor está hacia arriba, el LED está apagado. Simple, por supuesto, pero esto es "hola, mundo", ¿qué esperabas? :)

Simulación

La simulación es una ejecución virtual de código en Verilog o VHDL directamente en su computadora, sin FPGA. Es tanto una herramienta de depuración como una especie de marco para cubrir el código con pruebas.

Cuando conocí la simulación, lo primero que descubrí fue que no me funcionó. Los registros eran simples:

ERROR: No se pudo compilar el archivo C generado [...] xsim_1.c.

Google en este error encontró solo todo tipo de tonterías en el estilo de "intente desactivar su antivirus". Al final, agregar el indicador -v 2 al script ~ / opt / xilinx / Vivado / 2017.2 / bin / xelab ayudó a resolver el problema. Con su ayuda, descubrí que Clang, cuyo binario arrastra Vivado, falla con el siguiente error:

/ a / long / path / to / clang: error al cargar bibliotecas compartidas:
libncurses.so.5: no se puede abrir el archivo de objeto compartido: no existe tal archivo o
directorio

Y este error y su solución ya se describen en Arch Wiki. Personalmente, acabo de copiar un archivo ya existente del directorio Vivado_HLS:

cp ~ / opt / xilinx / Vivado_HLS / 2017.2 / lnx64 / tools / gdb_v7_2 / libncurses.so.5 \
~ / opt / xilinx / Vivado / 2017.2 / lib / lnx64.o / libncurses.so.5

... después de lo cual todo funcionó. Entonces, ahora, en realidad, un ejemplo de simulación.

De manera similar a como creamos hello.sv anteriormente, cree un nuevo archivo hello_sim.sv en el grupo Fuentes de simulación. Escribimos el siguiente código en el archivo:

`escala de tiempo 1ns / 1ps

módulo hello_sim ();
lógica clck_t;
lógica [3: 0] sw_t;
lógica [3: 0] led_t;

Hola hola_t (clck_t, sw_t, led_t);

comienzo inicial
clck_t<= 0 ;
sw_t<= 4"b0000 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
afirmar (led_t === 4 "b0001);

Sw_t<= 4"b0001 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
afirmar (led_t === 4 "b0000);
fin

endmodule

En el árbol de origen, haga clic con el botón derecho en el archivo y seleccione Propiedades del nodo de origen. En la sección Usado en, desmarque las casillas Síntesis e Implementación. No queremos que ninguna prueba obstruya nuestro FPGA lejos de la goma, ¿verdad?

Ahora decimos Flujo → Ejecutar simulación → Ejecutar simulación de comportamiento. Como resultado, verá algo como esto:

Puede ver que cuando sw es cero, led es uno y viceversa. En este caso, todos los cambios ocurren en el borde de la señal del reloj. El programa parece estar funcionando correctamente. Bueno, nada cayó sobre los afirma, lo que parece estar insinuando.

Conclusión

El archivo con el proyecto descrito anteriormente se puede descargar. Recomendaría las siguientes como fuentes adicionales de información:

  • Si está interesado en los detalles del hardware, preste atención a

Imagine que el procesador, en lugar de ejecutar un conjunto de instrucciones, reconstruirá cada programa y convertirá el algoritmo directamente en hardware. ¡Así es como funcionan las FPGA! En este artículo, explicaré cómo esto es posible y le presentaré diferentes formas de diseño de FPGA.

Tal vez sepa cómo piratear dispositivos en el otro lado del mundo o codificar aplicaciones web increíbles, pero ¿comprende cómo funciona su computadora? Y no se trata de lo que hace el sistema operativo, cómo funciona el recolector de basura en Java o cómo funciona el compilador de C ++. Estoy hablando del ensamblador de nivel de hardware más bajo: cómo funciona el hardware.

¿Qué le sucede al chip NIC cuando llega un paquete Ethernet? ¿Cómo se transmite este paquete a la RAM de la computadora a través del bus PCI Express? ¿Cómo funcionan los sistemas de reconocimiento de imágenes por hardware más rápidos?

Para responder a estas preguntas, debe comprender un poco sobre la lógica digital de los ASIC, pero comenzar con ellos es muy difícil y costoso, y es mejor comenzar con FPGA.

INFO

FPGA significa matriz de puertas programables en campo, en ruso - matrices de puertas programables, FPGA. De manera más general, se denominan FPGA, circuitos integrados lógicos programables.

Con los FPGA, literalmente puede diseñar microcircuitos digitales mientras está sentado en casa con una placa de depuración disponible en su escritorio y software de desarrollo por un par de kilo-dólares. Sin embargo, también hay opciones gratuitas. Nota: exactamente para diseñar, no para programar, porque la salida es un circuito digital físico que realiza un cierto algoritmo a nivel de hardware, y no un programa para el procesador.

Funciona así. Hay una PCB lista para usar con un conjunto de interfaces que están conectadas a un chip FPGA instalado en la placa, como una placa fresca para un centro de datos o una placa de depuración para entrenamiento.

Hasta que configuremos la FPGA, simplemente no hay lógica dentro del microcircuito para procesar los datos de las interfaces y, por lo tanto, obviamente nada funcionará. Pero como resultado del diseño, se creará un firmware que, después de cargarse en la FPGA, creará el circuito digital que necesitamos. Por ejemplo, puede crear un controlador Ethernet 100G que reciba y procese paquetes de red.

Una característica importante de FPGA es la capacidad de reconfigurar. Hoy necesitamos un controlador Ethernet 100G, y mañana se puede usar la misma placa para implementar cuatro interfaces Ethernet 25G independientes.

Hay dos principales fabricantes de chips FPGA, Xilinx e Intel, que controlan el 58% y el 42% del mercado, respectivamente. Los fundadores de Xilinx inventaron el primer chip FPGA en 1985. Intel ingresó recientemente al mercado en 2015 al adquirir Altera, que se fundó al mismo tiempo que Xilinx. Las tecnologías de Xilinx y Altera son similares en muchos aspectos, al igual que los entornos de desarrollo. La mayor parte del tiempo he trabajado con productos Xilinx, así que no se sorprenda de que se mencionen constantemente.

EJECUCIÓN DEL PROYECTO SOBRE FPGA

Después de trabajar en el circuito lógico mediante el modelado funcional, es necesario colocarlo en el chip. Luego, simule el circuito en función de la latencia real de los elementos obtenidos después de colocar el circuito en un chip. Si es necesario, corrija las soluciones recibidas. Después de eso, el circuito se carga en la FPGA y se prueba en el soporte.

Arroz. 82. Etapas del diseño de un dispositivo digital en FPGA

Las principales etapas del diseño en FPGA (de conferencias):

    El diagrama del dispositivo se desarrolla y se ingresa en XILINX.

    Ejecutado por IMPLEMENTACIÓN (traducción, formación de esquemas extrayendo elementos de la biblioteca, optimización, colocación en chip).

    Programación.

  1. Memoria asociativa. Organización, método de muestreo, diferencias de la memoria de direcciones.

Acceso asociativo implementa una búsqueda de información por algún atributo, y no por su ubicación en la memoria (dirección o lugar en la cola). En la versión más completa, todas las palabras almacenadas en la memoria se verifican simultáneamente para verificar el cumplimiento de una función, por ejemplo, la coincidencia de ciertos campos de palabras (etiquetas, de la etiqueta de palabra en inglés) con la característica especificada por la palabra de entrada (dirección de etiqueta ). A la salida se le dan las palabras que satisfacen el criterio. La disciplina de emitir palabras, si varias palabras satisfacen la etiqueta, así como la disciplina de escribir nuevos datos, pueden ser diferentes. El área principal de aplicación de la memoria asociativa en las computadoras modernas es el almacenamiento en caché de datos.

En los dispositivos de almacenamiento asociativo, la información se busca mediante una característica asociativa registrada en cada celda de memoria.

Se escribe una palabra en el registro de máscara que permite una consulta para todos o solo algunos bits del atributo asociativo; el uso de una máscara le permite reducir o expandir el área de búsqueda.

La búsqueda de información se realiza en paralelo en todas las celdas comparando la solicitud con el atributo asociativo de cada celda.

El resultado de la búsqueda está formado por un circuito combinacional especial que genera señales que notifican sobre la ausencia de palabras que cumplen las condiciones de búsqueda, sobre la presencia de una sola palabra, sobre la presencia de varias palabras con tal característica asociativa.

Después de la formación y procesamiento de las señales de advertencia, el circuito de control lee la información necesaria. Al escribir, se busca una celda libre por el valor del bit de ocupado, la información se escribe en la primera celda libre encontrada.

La verificación del bit de ocupado se realiza estableciendo el enésimo bit (bit de ocupado) de la máscara. Al utilizar circuitos combinacionales adicionales en la memoria asociativa, puede realizar varias operaciones lógicas, determinando el número máximo o mínimo, el número de palabras que tienen el mismo atributo asociativo, etc. Las celdas de memoria de la memoria asociativa deben ser elementos de memoria estática; en la memoria asociativa, todas las celdas son accedidas simultáneamente y no deben ser interrumpidas por ciclos de regeneración. La memoria asociativa es la más rápida, pero muy cara, ya que requiere la introducción de un esquema de comparación adicional que le permite realizar una búsqueda para cada celda de memoria. Por lo tanto, dicha memoria generalmente no se usa en su forma pura, y los dispositivos de memoria de alta velocidad como Cache generalmente se ejecutan como parcialmente asociativos.

Vtotalmente asociativo memoria caché (FACM, memoria caché totalmente asociada), cada celda almacena datos y, en el campo "etiqueta", la dirección física completa de la información, de la cual se registra una copia. En cualquier intercambio, la dirección física de la información solicitada se compara con los campos de "etiqueta" de todas las celdas y, si coinciden, la señal de Hit se establece en cualquier celda.

Al leer y el valor de la señal Hit = 1, los datos se envían al bus de datos, si no hay coincidencias (Hit = 0), luego al leer de la memoria principal, los datos junto con la dirección se colocan en un celda de memoria caché libre o no utilizada más recientemente.

Al escribir datos, junto con la dirección, primero, como regla, se colocan en la memoria caché (en la celda detectada en Hit = 1 y libre en Hit = 0). La copia de datos a la memoria principal se realiza bajo el control de un controlador especial cuando no hay accesos a la memoria.

La memoria FACM es un dispositivo muy complejo y se usa solo para pequeñas capacidades, principalmente en aplicaciones especiales. Al mismo tiempo, este tipo de memoria caché proporciona la mayor flexibilidad funcional y direcciones libres de conflictos, ya que cualquier unidad de información puede cargarse en cualquier celda de la memoria caché.

De conferencias:

Dispositivos de almacenamiento asociativo

La diferencia fundamental es que el sistema de recuperación de información de ellos no se realiza en una dirección única donde se encuentra la información, sino por algún atributo, que es, de hecho, parte de la información requerida.

Información

Una etiqueta es una característica distintiva, por coincidencia con la que se obtiene una pieza de información.

Diagrama simplificado de la memoria asociativa:

El área de almacenamiento es una memoria direccionable con celdas numeradas que almacena información y etiquetas.

Para acceder a la memoria asociativa, se coloca una muestra de la etiqueta requerida en el registro de solicitudes. El esquema de comparación compara la consulta. Establezca una coincidencia en el registro de coincidencias donde la etiqueta de la memoria coincidió con el patrón. Las reacciones son posibles (no hay coincidencias; hay al menos una coincidencia; en este caso, la celda encontrada se coloca en el registro de datos; coincidencia múltiple: el CC debe decidir cuál de las celdas obtener para su procesamiento).

Aplicación: DB, base de conocimientos, PC como caché.

65 nanómetros es el próximo objetivo de la planta de Zelenograd "Angstrem-T", que costará entre 300 y 350 millones de euros. La empresa ya presentó una solicitud de préstamo blando para modernizar las tecnologías de producción a Vnesheconombank (VEB), informó Vedomosti esta semana en referencia a Leonid Reiman, presidente de la junta directiva de la planta. Ahora "Angstrem-T" se está preparando para lanzar una línea de producción de microcircuitos con una topología de 90 nm. Los pagos del préstamo VEB anterior, para el que se compró, comenzarán a mediados de 2017.

Beijing colapsa Wall Street

Los índices estadounidenses clave marcaron los primeros días del Año Nuevo con una caída récord, el multimillonario George Soros ya advirtió que el mundo espera una repetición de la crisis de 2008.

El primer procesador de consumo ruso Baikal-T1 al precio de $ 60 se lanza a la producción en masa

La empresa "Baikal Electronics" a principios de 2016 promete lanzar a la producción industrial el procesador ruso Baikal-T1 por valor de alrededor de $ 60. Los dispositivos estarán en demanda si esta demanda es creada por el estado, dicen los participantes del mercado.

MTS y Ericsson desarrollarán e implementarán conjuntamente 5G en Rusia

Mobile TeleSystems PJSC y Ericsson firmaron un acuerdo de cooperación en el desarrollo e implementación de la tecnología 5G en Rusia. En proyectos piloto, incluso durante la Copa del Mundo de 2018, MTS tiene la intención de probar los desarrollos del proveedor sueco. A principios del próximo año, el operador iniciará un diálogo con el Ministerio de Telecomunicaciones y Comunicaciones Masivas sobre la formación de requisitos técnicos para la quinta generación de comunicaciones móviles.

Sergey Chemezov: Rostec ya es una de las diez corporaciones de construcción de maquinaria más grandes del mundo

En entrevista con RBC, el jefe de Rostec, Sergey Chemezov, respondió preguntas agudas: sobre el sistema Platon, los problemas y perspectivas de AVTOVAZ, los intereses de la Corporación Estatal en el negocio farmacéutico, habló sobre la cooperación internacional ante las sanciones. presión, sustitución de importaciones, reorganización, estrategias de desarrollo y nuevas oportunidades en tiempos difíciles.

Rostec "vallado" e invade los laureles de Samsung y General Electric

El Consejo de Supervisión de Rostec aprobó la "Estrategia de desarrollo hasta 2025". Los principales objetivos son aumentar la participación de productos civiles de alta tecnología y ponerse al día con General Electric y Samsung en términos de indicadores financieros clave.

El artículo intenta determinar la composición de la documentación adjunta de los módulos digitales desarrollados para circuitos integrados lógicos programables (FPGA). Los desarrolladores deben proporcionar esta documentación adjunta al consumidor / cliente para el uso posterior exitoso del módulo digital desarrollado en sus proyectos en la etapa de diseño de dispositivos digitales basados ​​en FPGA.

Introducción

Entonces, ¿qué tipo de documentación de diseño se le debe pedir al desarrollador, si la empresa o empresa cliente u otro desarrollador utilizará un dispositivo desarrollado "extranjero" en sus proyectos en el futuro? Este artículo puede servir como una "hoja de trucos" para primero emitir correctamente una asignación técnica para el desarrollo de un dispositivo digital para una FPGA, y luego pedirle al desarrollador la documentación de diseño para un dispositivo digital ya desarrollado. Con base en la experiencia previa con la documentación de diseño, generalmente una empresa o firma utiliza los siguientes estándares y regulaciones:

  • GOST 2.102-68 ESKD. Tipos e integridad de los documentos de diseño.
  • GOST 15.101-98. Sistema de desarrollo de productos y puesta en producción. El procedimiento para realizar trabajos de investigación.
  • GOST R 15.201-20-00. Sistema de desarrollo de productos y puesta en producción. Productos para fines industriales y técnicos. El procedimiento para el desarrollo y lanzamiento de productos para producción.

Como regla, estos eran un archivo de firmware y un programa (una descripción de un dispositivo digital en VHDL / Verilog o un conjunto de circuitos digitales desarrollados en un editor de circuitos utilizando elementos de biblioteca de lógica digital, como disparadores, registros, contadores, decodificadores , etc.) en CD o DVD e instrucciones de programación. Y eso es todo.

El autor, por ejemplo, se encontró con el siguiente problema. Uno de los empleados desarrolló un sofisticado dispositivo digital de varios módulos. Describió todos los módulos en VHDL y observó las secuencias de operación de estos módulos y el dispositivo digital como un todo en un osciloscopio bueno y costoso. No sabía de los archivos de Test Bench y de la posibilidad de modelar o no sabía cómo escribirlos, por cierto, tampoco hubo comentarios sobre el proyecto y sobre las descripciones de los módulos. La situación puede ser aún peor si los módulos están representados por circuitos digitales desarrollados en un editor de esquemas utilizando elementos de biblioteca. Este es uno de los principales inconvenientes: aparte del propio desarrollador, casi nadie entenderá este dispositivo digital, sobre todo si el proyecto es multimódulo, y la descripción de cada módulo es de más de 100 líneas o más de una pantalla de monitor. Entonces, si otro desarrollador desea introducir un dispositivo digital ya desarrollado para FPGA en un nuevo desarrollo o proyecto, nuevamente necesita dedicar tiempo a desarrollar este dispositivo digital.

La historia del diseño de FPGA

Actualmente, el mercado de FPGA es uno de los que se desarrolla con mayor dinamismo. Los FPGA se utilizan en muchas ramas de la tecnología. Por el momento, no existe una metodología inequívoca para obtener la configuración FPGA a partir del modelo funcional del dispositivo a nivel de sistema que satisfaga a todos los desarrolladores de hardware. El enfoque más popular para resolver este problema es el uso de tecnología IP-core (Intellectual Property Cores). Los núcleos IP son componentes listos para usar que le permiten integrarlos fácilmente en su propio proyecto para crear un sistema más complejo. Este enfoque tiene un inconveniente importante: la unión de los núcleos IP a la base elemental. Cada núcleo IP está optimizado para una serie específica de microcircuitos de un fabricante en particular, lo que afecta significativamente la capacidad de transferir dispositivos ya creados de una base de elementos a otra. La naturaleza cerrada de las arquitecturas CAD comerciales hace que sea imposible agregar sus propios modelos de dispositivos funcionales a nivel de sistema para obtener modelos de dispositivos basados ​​en ellos a nivel de transferencia de registro (RTL). El desarrollo de un módulo digital se lleva a cabo en forma de circuito digital dibujado en un editor de circuitos utilizando la biblioteca de elementos básicos del circuito integrado en el sistema CAD del fabricante, como disparadores, decodificadores, contadores, sumadores, etc.

Otro enfoque popular que permite la transición de un modelo funcional a nivel de sistema a un modelo de dispositivo a nivel de transferencia de registro es el uso de lenguajes de descripción de hardware a nivel de sistema (lenguajes de diseño a nivel de sistema, SLDL). Dichos lenguajes incluyen SystemC, Handel-C, VHDL, Verilog, System Verilog. La principal ventaja es la independencia de la base de hardware en la que se implementará el dispositivo.

Así, por un lado, al utilizar la tecnología de núcleos IP, el desarrollador de hardware recibe una solución de alta calidad, pero rígidamente ligada a la base de hardware en la que se implementa el dispositivo. Por otro lado, cuando se utilizan lenguajes de descripción de hardware a nivel de sistema, la implementación del dispositivo es independiente del hardware. De lo anterior se desprende que en la actualidad es relevante el uso conjunto de módulos digitales en el lenguaje de descripción de hardware y núcleos IP del fabricante (Xilinx, Altera, Actel, etc.) y desarrolladores externos para acelerar el proceso de diseño. Cuando se utilizan módulos digitales de terceros, a veces falta el contenido informativo de la documentación adjunta.

Proporcionar información sobre el módulo digital desarrollado para FPGA

Dependiendo de la metodología para obtener la configuración de FPGA según el modelo funcional del dispositivo a nivel de sistema, el desarrollador puede distinguir los siguientes tipos de módulo digital para FPGAs:

  • Software - un módulo digital desarrollado transmitido al consumidor en forma de descripción en el lenguaje de descripción de hardware (VHDL, Verilog) y / y desarrollado en el Editor de esquemas para su uso posterior en programas para la síntesis automatizada de circuitos lógicos y optimizado en términos de funcionalidad parámetros.
  • Firmware - un módulo digital desarrollado por un desarrollador externo, llamado IP-core, transmitido al consumidor en forma de circuito lógico (netlist) en la base de la biblioteca de elementos lógicos del fabricante de FPGA y optimizado para funcional y eléctrico parámetros.

En la etapa de desarrollo de la documentación, basada en la experiencia personal, es necesario elaborar, además de la documentación de diseño habitual y las especificaciones técnicas, realizadas de acuerdo con GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, documentación para todos los tipos de modelos (sistema, lógico, esquemático) creados en las etapas de diseño de dispositivos digitales en FPGA.

En otras palabras, el conjunto de documentación de diseño de un dispositivo digital para FPGA, además del archivo de firmware, las instrucciones de programación y el proyecto grabado en CD / DVD, también debe incluir la documentación adjunta.

Mesa. Lista de secciones de la documentación adjunta

Sección de título Vista
Software Firmware
Información general
Propósito y alcance O R
Especificaciones O O
Descripción de las señales de reinicio O O
Descripción de señales de sincronización O O
Descripción de interfaces O R
Gráficos de tiempo R O
Descripción de registros de control O O
Diagrama estructural (funcional) R R
Guía de programación O O
Modelo FPGA o familia,
fabricante de la empresa
R O
Presentación del módulo digital
para diseño lógico en FPGA
Modelo RTL O No
Modelo lógico No O
Restricciones de diseño O O

Aquí hay una lista de secciones (tabla) que deben incluirse en la documentación adjunta para el proyecto de un módulo digital para FPGA. Para cada sección, se muestran signos de la necesidad de incluir una sección en el conjunto de documentos:

  • "О" - una sección suministrada obligatoriamente;
  • Sección "R" recomendada para la entrega.

Formatos de archivo recomendados para transferir la documentación adjunta: MS Word, PDF (mejor formato), HTML. Los archivos de descripción en el lenguaje de descripción de hardware (VHDL, Verilog) y / o desarrollados en el editor de esquemas se proporcionan según lo requiera el software CAD para el desarrollo. Una excepción puede ser la disposición adicional en formato gráfico (JPEG, BMP) de archivos de esquemas digitales desarrollados en el Editor de esquemas.

Información general

Esta sección describe información general sobre el módulo digital desarrollado en forma de descripción:

  • diagrama funcional y sus bloques / partes constituyentes;
  • restablecer señales, sincronización;
  • interfaces utilizadas;
  • registros de control;
  • gráfico de tiempo;
  • programación.

Propósito y alcance

Se determina el propósito del módulo digital y su alcance.

Especificaciones

Se proporciona una descripción de sus principales características técnicas, como el rendimiento, el consumo de energía de un cristal FPGA específico, el número de puertas ocupadas y el tipo de cristal FPGA utilizado. Además, se indica el fabricante de FPGA utilizado en el desarrollo del módulo CAD digital y el software utilizado para el modelado y verificación. Para todos los programas utilizados, se indican la versión y las actualizaciones instaladas. Se proporciona una representación gráfica del módulo digital en forma de "caja negra" con la designación de entradas / salidas externas y se da una breve descripción de su propósito.

Descripción de las señales de reinicio

Se dan detalles de las señales de reinicio:

  • Lista de señales de reinicio externas e internas.
  • Parámetros de temporización y diagramas de temporización de señales de reinicio.
  • Los circuitos para generar señales de reinicio internas, si las hay, se incluyen en el módulo digital.
  • Relación con otras señales (especialmente con señales de sincronización).

Descripción de señales de sincronización

Se dan detalles de las señales de sincronización:

  • descripción de señales de sincronización externas;
  • parámetros de temporización de señales de sincronización;
  • descripción de señales de sincronización interna y sus esquemas de generación;
  • relaciones de tiempo entre señales de sincronización de diferentes fuentes;

Descripción de interfaces

Se dan las características del uso de todas las interfaces que forman parte del módulo digital desarrollado, preferiblemente unificadas para organizar la interacción con otros nodos del sistema en un chip. Además, se proporciona un enlace de Internet a una descripción completa de la interfaz estándar, o se proporciona la descripción de la propia interfaz. Por el momento, las interfaces al bus AMBA, PLB, Wishbone se aceptan como interfaces unificadas para módulos digitales.

Gráficos de tiempo

Se proporciona la información necesaria para organizar el intercambio de datos a través de las interfaces y otras entradas / salidas del módulo digital: una presentación gráfica de los diagramas de tiempo, una descripción de los protocolos de transferencia de datos, los requisitos para las señales externas suministradas al módulo digital (duración, frecuencia, etc.), y otra información ...

Descripción de registros de control

Se proporciona una descripción de todos los registros de control del módulo digital. Una descripción típica de un registro de control contiene el nombre del registro, la dirección del registro en el espacio de direcciones interno, el valor inicial después de eliminar la señal de reinicio, el tipo de acceso (lectura / escritura) y una descripción del interno. los campos.

Diagrama estructural (funcional)

Se muestra una imagen de la estructura interna de las conexiones de los principales nodos / bloques internos del módulo digital, así como su breve descripción en texto. Además, se proporciona una descripción de los principales bloques internos del módulo digital. El propósito de este documento es proporcionar al consumidor la información necesaria para comprender los principios del módulo digital.

El número de bloques descritos y el alcance de la descripción los determina el desarrollador del módulo digital. Preferiblemente, el número mínimo de los módulos descritos corresponde al número de elementos del circuito estructural (funcional) del módulo digital.

Una descripción típica de la unidad interior contiene:

  • el propósito del bloque;
  • diagrama de bloques estructural (funcional) (si es necesario);
  • modos y algoritmos de trabajo;
  • diagramas de tiempo de trabajo;
  • organización de gestión de bloques;
  • organización de la comunicación con otros bloques;
  • Alguna otra información.

Guía de programación

Proporciona toda la información necesaria sobre el proceso de programación utilizando el fabricante CAD del módulo digital en la FPGA, las herramientas necesarias para el desarrollo y depuración de software, bibliotecas de software.

Modelo FPGA o familia, fabricante

Para el Firmware de un módulo digital se indica el fabricante de la FPGA, el modelo o familia de FPGAs y sus características de velocidad. Para el módulo digital de Software, se proporciona información sobre la cantidad de recursos ocupados, los requisitos para la FPGA aplicada.

Representación de un módulo digital para diseño lógico

El artículo discutió las dificultades de usar un proyecto "extranjero" en VHDL - la falta de pautas adecuadas para nombrar y reglas para escribir programas. También proporcionó pautas generales para nombrar, reglas de buena forma para escribir programas y pautas para sintetizar. Estas preguntas deben discutirse con el desarrollador con el mayor detalle posible si en el futuro planea continuar con el desarrollo o la modernización por su cuenta, antes de que comience a desarrollar el modelo RTL del módulo digital en la FPGA. Esto se aplica especialmente al tipo de módulo digital de software en la FPGA. La misma parte del artículo describe los requisitos generales para todo el proyecto del módulo digital desarrollado en la FPGA. Estos son los temas a los que debe prestar atención a la hora de redactar un encargo técnico para el desarrollo de un módulo digital en una FPGA, y especialmente esto se refiere a la transferencia de los resultados del trabajo.

Modelo RTL

Un módulo digital descrito en un subconjunto sintetizado del lenguaje Verilog o VHDL y / o desarrollado en el Editor de esquemas está diseñado para su uso en la etapa de síntesis lógica de FPGA. Entregado al software como un proyecto ensamblado de un módulo digital en CAD de un fabricante de FPGA. Para el firmware digital, el modelo RTL se proporciona mediante un acuerdo independiente.

Además de los archivos del modelo RTL, se transfieren los siguientes:

  • Instrucciones de uso del modelo.
  • Descripción de los bloques de memoria incluidos en el modelo, incluido el tipo de memoria, tamaño, número de bloques de memoria, nombre jerárquico del bloque de memoria.
  • Descripción del proceso de creación de núcleos listos para usar utilizando programas para su creación (por ejemplo, CoreGenerator para Xilinx ISE). En ausencia de descripciones, puede haber limitaciones para el rediseño y la aplicación debido a la tecnología y las dependencias del fabricante.
  • En el caso de utilizar un microprocesador del fabricante (por ejemplo, del procesador Altera - Nios; de Xilinx - Microblaze, microprocesadores PowerPC), se requiere una descripción del proceso de configuración del núcleo del procesador y sus periféricos.
  • Un conjunto de pruebas (archivos Test Bench) para la verificación y simulación de un módulo digital, escrito en el lenguaje Verilog y / y en VHDL, o / y en System Verilog.
  • Cualquier otra información adicional.

Modelo lógico

El modelo es una lista de redes, descritas usando Verilog o VHDL en la base de la biblioteca del fabricante de FPGA, y suministradas para el Firmware del módulo digital.

Además de los archivos del modelo lógico, se transfieren los siguientes:

  • Instrucciones para usar este modelo.
  • Un conjunto de pruebas (archivos Test Bench) para la verificación y simulación de un módulo digital, escrito en el lenguaje Verilog y / y en VHDL, o / y en System Verilog.
  • Pautas para trabajar con un conjunto de pruebas para el modelado y verificación de un módulo digital.
  • Cualquier otra información adicional.

Restricciones de diseño

Las restricciones de diseño se proporcionan en forma de un archivo que describe un conjunto de restricciones impuestas a un módulo digital cuando se incluye en el modelo lógico de sistema en chip. Este conjunto incluye restricciones de reloj, restricciones de tiempo, restricciones sobre cómo un módulo digital interactúa con otros módulos y las condiciones de operación de un módulo digital. El formato preferido es Synopsis Design Constraints (SDC) o formato CAD del fabricante FPGA.

Una lista de ejemplo de limitaciones para señales de sincronización:

  • diagrama de tiempo (forma de onda del reloj);
  • inestabilidad de la frecuencia de reloj (Jitter);
  • cambiar la fase de la frecuencia del reloj;
  • duración de los tiempos de conmutación (tiempos de transición);
  • Formas de onda de reloj generadas
  • cualquier otra información adicional.

Un conjunto de limitaciones para las señales de temporización es obligatorio para los módulos digitales de software y firmware.

Una lista aproximada de restricciones de tiempo:

  • Horarios de llegada a las entradas;
  • tiempo de aparición de señales en las salidas (tiempos requeridos en las salidas);
  • caminos multiciclo;
  • caminos falsos;
  • la duración de los tiempos de transición de la señal de datos;
  • cualquier otra información adicional.

Conclusión

La composición dada de la documentación adjunta para los módulos digitales desarrollados para FPGA se proporciona por acuerdo entre el consumidor y el desarrollador. Muy a menudo, el desarrollador proporciona un módulo digital simple, descrito en VHDL, Verilog, System Verilog y / o desarrollado en un editor de esquemas. Con respecto a la documentación adicional, la respuesta del desarrollador suele ser la siguiente: “El módulo digital funciona, así que tómalo y úsalo. No hay nada complicado en describir un circuito en el lenguaje del hardware: lo resolverá usted mismo ".

En opinión del autor, puede averiguar cualquier cosa, todo depende del deseo y el tiempo invertido, y el tiempo dedicado a tratar de encontrar un proyecto "extranjero" para un módulo digital ya desarrollado es directamente proporcional a la experiencia de describir el hardware. en VHDL, Verilog y circuitos de microprocesador y digital de conocimiento. Esto se puede evitar si inicialmente está de acuerdo con el desarrollador sobre la composición de la documentación adjunta, luego el uso del módulo digital en su proyecto se vuelve más fácil y su implementación se llevará a cabo más rápido.

En resumen, al autor le gustaría señalar que al formular la tarea de desarrollar un dispositivo digital en una FPGA, se deben cumplir las recomendaciones dadas en el artículo, entonces no habrá problemas al reutilizar o actualizar un dispositivo digital desarrollado previamente.

Literatura

  1. Denisov A. Varios consejos para diseñar dispositivos digitales en VHDL para FPGA // Componentes y tecnologías. 2009. No. 12.
  2. GOST 2.102-68 ESKD. Tipos e integridad de los documentos de diseño.
  3. GOST 2.114-95 ESKD. Condiciones técnicas.
  4. GOST 15.101-98. Sistema de desarrollo de productos y puesta en producción. El orden de realización del trabajo de investigación científica.
  5. GOST R 15.201-20-00. Sistema de desarrollo de productos y puesta en producción. Productos para fines industriales y técnicos. El procedimiento para el desarrollo y lanzamiento de productos para producción.