Ejemplos de diseño de grandes proyectos fpga. Sobre la documentación de proyectos para plis. memoria asociativa. Organización, método de muestreo, diferencias con la memoria de direcciones

💖 ¿Te gusta? Comparte el enlace con tus amigos

Imagine que el procesador, en lugar de ejecutar un conjunto específico de instrucciones, se reconstruirá para cada programa y convertirá el algoritmo directamente en hardware. Así es como funcionan los FPG. En el artículo de hoy, explicaré cómo esto es posible y le presentaré varios métodos de diseño de FPGA.

Para comenzar, debe comprender un poco sobre la lógica digital de cómo funcionan los ASIC, pero es muy difícil y costoso comenzar con ellos, y es mejor comenzar con FPGA en su lugar.

¿Qué es FPGA?

FPGA significa conjunto de puertas programables en campo (conjuntos de puertas programables por el usuario, FPGA). En un caso más general, se denominan FPGA - circuitos integrados de lógica programable.

Con la ayuda de FPGA, puede, en el verdadero sentido de la palabra, diseñar microcircuitos digitales mientras está sentado en casa con una placa de depuración asequible sobre la mesa y un software de desarrollo por varios miles de rublos verdes. Pero, también hay opciones gratuitas. Nota: es para diseñar, no para programar, porque a la salida obtendremos un circuito digital físico que realiza un cierto algoritmo a nivel de hardware, y no un programa para el procesador.

Funciona de la siguiente manera. Hay una placa de circuito impreso lista para usar con un conjunto de interfaces que están conectadas a un chip FPGA instalado en la placa, algo así como una placa de centro de datos genial o esta placa de depuración para entrenamiento.

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

Una característica importante de FPGA es la capacidad de reconfiguración. Digamos que ahora necesitamos un controlador Ethernet de 100G, y en una semana se puede usar la misma placa para implementar cuatro interfaces Ethernet de 25G independientes.

Hay dos líderes en el fabricante de chips FPGA en el mercado: los conocidos Intel y Xilinx. Controlan el 58 y el 42% del mercado. Los fundadores de Xilinx inventaron su primer chip FPGA en 1985. Intel ingresó al mercado recientemente: en 2015, absorbiendo a Altera, que se fundó al mismo tiempo que Xilinx. Las tecnologías de Altera y Xilinx son similares en muchos aspectos, al igual que los entornos de desarrollo. La mayoría de las veces, he trabajado con productos de Xilinx, así que no se sorprenda si la menciona constantemente en el artículo.

Los FPGA se utilizan ampliamente en varios campos: electrónica de consumo, equipos de telecomunicaciones, placas aceleradoras para su uso en centros de datos, robótica, creación de prototipos ASIC. Voy a ir a través de un par de ejemplos a continuación.

También veremos la tecnología que proporciona la reconfiguración del hardware, nos familiarizaremos con el proceso de diseño y analizaremos un ejemplo simple de implementación de un contador de hardware en el lenguaje Verilog. Si tiene alguna placa de depuración FPGA, debería poder replicarla usted mismo. Si no hay una placa, aún puede familiarizarse con Verilog simulando el funcionamiento del circuito en su computadora.

Cómo funciona un FPGA

El chip FPGA es el mismo chip ASIC personalizado, que consta de los mismos transistores que se utilizan para ensamblar flip-flops, registros, multiplexores y otros elementos lógicos para circuitos convencionales. Por supuesto, es imposible cambiar el orden de conexión de estos transistores. Pero arquitectónicamente, el microcircuito está construido de una manera tan ingeniosa que puede cambiar la conmutación de señales entre bloques más grandes: se llaman CLB, bloques lógicos programables.

También puede cambiar la función lógica que realiza el CLB. Esto se logra debido al hecho de que todo el chip está impregnado de celdas de memoria de configuración RAM estática. Cada bit de esta memoria controla algún tipo de clave de conmutación de señal o es parte de la tabla de verdad de una función lógica que implementa el CLB.

Dado que la memoria de configuración se construye utilizando tecnología RAM estática, en primer lugar, cuando se enciende la FPGA, se debe configurar el microcircuito y, en segundo lugar, el microcircuito se puede reconfigurar casi un número infinito de veces.

Estructura de chip 2D muy simplificada sin memoria de configuración

Los CLB residen en una matriz de conmutación que define las conexiones para las entradas y salidas de los CLB.

Diagrama de matriz de conmutación

En cada intersección de conductores hay seis teclas de conmutación controladas por sus propias celdas de memoria de configuración. Abriendo algunos y cerrando otros, es posible proporcionar diferentes conmutaciones de señales entre CLB.

CLB

CLB consiste simplemente en un bloque que define una función booleana de varios argumentos (se llama tabla de búsqueda - Tabla de búsqueda, LUT) y un disparador (flip-flop, FF). En los FPGA modernos, la LUT tiene seis entradas, pero la figura muestra tres por simplicidad. La salida LUT se alimenta a la salida CLB de forma asíncrona (directamente) o síncrona (a través de un flip-flop FF que se ejecuta en el reloj del sistema).

Principio de implementación de LUT

Es interesante observar el principio de implementación de LUT. Digamos que tenemos alguna función booleana y = (a & b) | ~ c. Su representación esquemática y tabla de verdad se muestran en la figura. La función tiene tres argumentos, por lo que toma 2^3 = 8 valores. Cada uno de ellos corresponde a su propia combinación de señales de entrada. Estos valores son calculados por el programa de desarrollo de firmware FPGA y escritos en celdas de memoria de configuración especiales.

El valor de cada una de las celdas se alimenta a su entrada del multiplexor de salida LUT, y los argumentos de entrada de la función booleana se utilizan para seleccionar uno u otro valor de función. CLB es el recurso de hardware FPGA más importante. La cantidad de CLB en los chips FPGA modernos puede variar y depende del tipo y la capacidad del chip. Xilinx tiene cristales CLB que van desde alrededor de cuatro mil a tres millones.

Además del CLB, hay varios recursos de hardware importantes dentro de la FPGA. Por ejemplo, bloques de multiplicación-acumulación de hardware o bloques DSP. Cada uno de ellos puede hacer multiplicaciones y sumas de números de 18 bits en cada ciclo. En cristales de gama alta, el número de bloques DSP puede superar los 6000.

Otro recurso son los bloques de memoria interna (Block RAM, BRAM). Cada bloque puede almacenar 2 KB. La capacidad total de dicha memoria, dependiendo del cristal, puede alcanzar de 20 KB a 20 MB. Al igual que los CLB, los bloques BRAM y DSP están conectados por una matriz de conmutación e impregnan todo el chip. Al vincular los bloques CLB, DSP y BRAM, se pueden obtener esquemas de procesamiento de datos muy eficientes.

Ventajas de los FPGA

El primer chip FPGA creado por Xilinx en 1985 contenía solo 64 CLB. En ese momento, la integración de transistores en chips era mucho menor que ahora, y los chips de "lógica suelta" se usaban a menudo en dispositivos digitales. Había chips separados para registros, contadores, multiplexores, multiplicadores. Para un dispositivo específico, se creó su propia placa de circuito impreso, en la que se instalaron estos microcircuitos de baja integración.

El uso de FPGA hizo posible abandonar este enfoque. Incluso un FPGA de 64 CLB ahorra espacio en la placa de circuito impreso, y la disponibilidad de reconfiguración agregó la capacidad de actualizar la funcionalidad de los dispositivos después de la fabricación durante la operación, como dicen "en el campo" (de ahí el nombre - matriz de compuertas programables en campo ).

Debido al hecho de que dentro de la FPGA se puede crear cualquier circuito digital de hardware (lo principal es que haya suficientes recursos), una de las aplicaciones importantes de las FPGA es la creación de prototipos de chips ASIC.

El desarrollo de ASIC es muy complejo y costoso, el costo del error es muy alto y el problema de la lógica de prueba es fundamental. Por lo tanto, una de las etapas de desarrollo, incluso antes de comenzar a trabajar en la topología física del circuito, fue su prototipo en uno o más chips FPGA.

Para el desarrollo de ASIC, se lanzan placas especiales que contienen muchas FPGA interconectadas. El prototipo del microchip funciona a frecuencias mucho más bajas (quizás decenas de megahercios), pero ahorra dinero en la identificación de problemas y errores.

Sin embargo, en mi opinión, existen aplicaciones más interesantes de los FPGA. La estructura flexible de la FPGA permite la implementación de circuitos de hardware para el procesamiento de datos en paralelo y de alta velocidad con la capacidad de cambiar el algoritmo.


Comparación de plataformas de hardware

Pensemos en la diferencia fundamental entre CPU, GPU, FPGA y ASIC. La CPU es universal, puede ejecutar cualquier algoritmo en ella, es la más flexible y la más fácil de usar debido a la gran cantidad de lenguajes de programación y entornos de desarrollo.

Al mismo tiempo, debido a la versatilidad y ejecución secuencial de las instrucciones de la CPU, el rendimiento disminuye y aumenta el consumo de energía del circuito. Esto sucede porque para cada operación aritmética útil, la CPU realiza muchas operaciones adicionales relacionadas con la lectura de instrucciones, el movimiento de datos entre registros y caché, y otros gestos.

Por otro lado está el ASIC. En esta plataforma, el algoritmo requerido se implementa en hardware debido a la conexión directa de transistores, todas las operaciones están relacionadas solo con la ejecución del algoritmo y no hay forma de cambiarlo. De ahí el máximo rendimiento y el menor consumo de energía de la plataforma. Pero es imposible reprogramar ASIC.

A la derecha de la CPU está la GPU. Inicialmente, estos chips se diseñaron para el procesamiento de gráficos, pero ahora se utilizan para la minería informática de propósito general. Consisten en miles de pequeños núcleos informáticos y realizan operaciones paralelas en una matriz de datos.

Si el algoritmo se puede paralelizar, entonces en la GPU será posible lograr una aceleración significativa en comparación con la CPU. Por otro lado, los algoritmos secuenciales se implementarán peor, por lo que la plataforma es menos flexible que la CPU. Además, para el desarrollo de GPU, debe tener habilidades especiales, conocer OpenCL o CUDA.

Finalmente, FPGA. Esta plataforma combina la eficiencia de los ASIC con la capacidad de cambiar el programa. Los FPGA no son universales, pero hay una clase de algoritmos y tareas que mostrarán un mejor rendimiento en ellos que en las CPU e incluso en las GPU. La complejidad del desarrollo de FPGA es mayor, pero las nuevas herramientas de desarrollo reducen esta brecha.

La ventaja decisiva de FPGA es la capacidad de procesar datos a la velocidad de su llegada con un retraso de respuesta mínimo. Como ejemplo, imagine un enrutador de red inteligente con una gran cantidad de puertos: cuando un paquete Ethernet llega a uno de sus puertos, se deben verificar muchas reglas antes de elegir un puerto de salida. Es posible que deba cambiar algunos campos en el paquete o agregar otros nuevos.

El uso de FPGA le permite resolver este problema al instante: los bytes del paquete acaban de comenzar a llegar al microcircuito desde la interfaz de red y su encabezado ya se está analizando. El uso de procesadores aquí puede ralentizar significativamente la velocidad de procesamiento del tráfico de red. Está claro que puede hacer un chip ASIC personalizado para enrutadores que funcionará de manera más eficiente, pero ¿qué pasa si las reglas para procesar paquetes deben cambiar? Solo FPGA puede ayudarlo a lograr la flexibilidad requerida combinada con un alto rendimiento.

Por lo tanto, los FPGA se utilizan cuando se necesita un alto rendimiento de procesamiento, el tiempo de respuesta más rápido y un bajo consumo de energía.

FPGA en la nube

En la computación en la nube, los FPGA se utilizan para el conteo rápido, la aceleración del tráfico de red y el acceso a arreglos de datos. Esto también incluye el uso de FPGA para transacciones de alta frecuencia en bolsas. En los servidores se insertan placas FPGA con PCI Express y una interfaz de red óptica fabricada por Intel (Altera) o Xilinx.

Los FPGA son excelentes para algoritmos criptográficos, comparación de secuencias de ADN y tareas científicas como la dinámica molecular. Microsoft ha utilizado durante mucho tiempo FPGA para acelerar el servicio de búsqueda de Bing, así como para organizar redes definidas por software dentro de la nube de Azure.

El auge del aprendizaje automático tampoco ha pasado por alto a la FPGA. Xilinx e Intel ofrecen herramientas basadas en FPGA para trabajar con redes neuronales profundas. Le permiten obtener firmware FPGA que implementa una red en particular directamente desde marcos como Caffe y TensorFlow.

Además, puedes probar todo esto sin salir de casa y utilizando servicios en la nube. Por ejemplo, en Amazon, puede alquilar una máquina virtual con acceso a una placa FPGA y cualquier herramienta de desarrollo, incluido el aprendizaje automático.

FPGA al límite

¿Qué más es interesante hacer en FPGA? ¿Por qué no lo hacen simplemente? Robótica, vehículos no tripulados, drones, instrumentos científicos, equipos médicos, dispositivos móviles de usuarios, cámaras de seguridad inteligentes, etc.

Tradicionalmente, los FPGA se usaban para el procesamiento digital de señales unidimensionales (y competían con los procesadores DSP) en dispositivos de radar, transceptores de señales de radio. Con la creciente integración de chips y el aumento del rendimiento, las plataformas FPGA se utilizan cada vez más para la informática de alto rendimiento, por ejemplo, para el procesamiento de señales bidimensionales "en el borde de la nube" (computación de borde).

Este concepto se comprende más fácilmente con el ejemplo de una cámara de análisis de tráfico con reconocimiento de matrículas. Puede tomar una cámara con la capacidad de transmitir video a través de Ethernet y procesar la transmisión en un servidor remoto. A medida que aumenta la cantidad de cámaras, también aumentará la carga en la red, lo que puede provocar fallas en el sistema.

En cambio, es mejor implementar el reconocimiento de matrículas en una calculadora instalada directamente en el cuerpo de la cámara de video y transferir las matrículas a la nube en formato de texto. Para hacer esto, incluso puede usar FPGA de baja potencia relativamente económicas para arreglárselas con una batería. Al mismo tiempo, sigue siendo posible cambiar la lógica de la FPGA, por ejemplo, al cambiar el estándar de matrículas.

En cuanto a la robótica y los drones, en esta área es especialmente importante cumplir dos condiciones: alto rendimiento y bajo consumo de energía. La plataforma FPGA encaja perfectamente y se puede utilizar, en particular, para crear controladores de vuelo para drones. Ya se están fabricando UAV que pueden tomar decisiones sobre la marcha.

desarrollo de proyectos FPGA

Hay diferentes niveles de diseño: bajo, bloque y alto. El nivel bajo implica el uso de lenguajes como Verilog o VHDL, donde controlas el desarrollo a nivel de transferencia de registros (RTL). En este caso, forma registros, como en un procesador, y define funciones lógicas que cambian los datos entre ellos.

Los circuitos FPGA siempre operan a ciertas velocidades de reloj (generalmente 100-300 MHz), y en el nivel RTL, usted define el comportamiento del circuito dentro de un reloj de sistema. Este minucioso trabajo da como resultado los circuitos más eficientes en términos de rendimiento, consumo de recursos de matriz FPGA y consumo de energía. Pero aquí se requieren habilidades serias en circuitos, y el proceso no es rápido con ellos.

A nivel de bloque, básicamente está conectando grandes bloques listos para usar que realizan ciertas funciones para obtener la funcionalidad del sistema en chip (system-on-chip) que necesita.

En un diseño de alto nivel, ya no tendrá el control de los datos en cada ciclo de reloj, sino que se concentrará en el algoritmo. Existen compiladores o traductores de C y C++ al nivel RTL, como Vivado HLS. Es bastante inteligente y le permite traducir una amplia clase de algoritmos al nivel de hardware.

La principal ventaja de este enfoque sobre los lenguajes RTL es la velocidad de desarrollo y especialmente la prueba de algoritmos: el código C ++ se puede ejecutar y verificar en una computadora, y será mucho más rápido que probar los cambios de algoritmo en el nivel RTL. Por supuesto, tendrá que pagar por la comodidad: es posible que el circuito no sea tan rápido y requiera más recursos de hardware.

A menudo estamos dispuestos a pagar este precio: si usa el traductor correctamente, la eficiencia no sufrirá mucho y hay suficientes recursos en los FPGA modernos. En nuestro mundo con un indicador crítico de tiempo de comercialización, esto resulta estar justificado.

A menudo, los tres estilos de desarrollo deben combinarse en un diseño. Digamos que necesitamos hacer un dispositivo que podamos construir en un robot y darle la capacidad de reconocer objetos en una transmisión de video, por ejemplo, señales de tráfico. Tomemos un chip sensor de video y conéctelo directamente a la FPGA. Para la depuración podemos utilizar un monitor HDMI, también conectado a la FPGA.

Los fotogramas de la cámara se transferirán a la FPGA a través de una interfaz predeterminada por el fabricante del sensor (el USB no funciona aquí), se procesarán y se mostrarán en el monitor. Para procesar cuadros, necesitará un búfer de cuadro, que generalmente se encuentra en una memoria DDR externa montada en una placa de circuito impreso al lado del chip FPGA.


Diagrama de bloques de diseño típico de FPGA

Si el fabricante del sensor de video no proporciona IP de interfaz para nuestro chip FPGA, tendremos que escribirlo nosotros mismos en lenguaje RTL, contando relojes, bits y bytes de acuerdo con la especificación del protocolo de transferencia de datos. Preprocesamiento, controlador DDR y bloques de IP HDMI, lo más probable es que tomemos los ya hechos y simplemente conectemos sus interfaces. Y el bloque HLS, que realiza la búsqueda y el procesamiento de los datos entrantes, podemos escribir en C ++ y transmitir usando Vivado HLS.

Lo más probable es que todavía necesitemos algún tipo de biblioteca clasificadora y detectora de señales de tráfico lista para usar, adaptada para su uso en FPGA. En este ejemplo, por supuesto, doy un diagrama de flujo de diseño muy simplificado, pero refleja la lógica del trabajo correctamente.

Considere la ruta de diseño desde escribir código RTL hasta obtener un archivo de configuración para cargar en el FPGA.

Ruta de diseño

Entonces, escribe código RTL que implementa el esquema que necesita. Antes de probarlo en hardware real, debe asegurarse de que sea correcto y resuelva correctamente el problema requerido. Para esto, se utiliza el modelado RTL en un simulador en una computadora.

Toma su circuito, representado solo en código RTL hasta ahora, y lo coloca en un banco virtual, donde aplica secuencias de señales digitales a las entradas del circuito, registra diagramas de salida, dependencias de tiempo de las señales de salida y compara con los resultados esperados . Por lo general, encuentra errores y vuelve a escribir RTL.

Además, el código verificado lógicamente se envía a la entrada del programa sintetizador. Convierte la descripción de texto del circuito en una lista enlazada de elementos digitales de la biblioteca disponible para el chip FPGA dado. Esta lista mostrará elementos como LUT, disparadores y enlaces entre ellos. En esta etapa, los elementos aún no están vinculados a recursos de hardware específicos. Para hacer esto, debe imponer restricciones (Restricciones) en el circuito; en particular, especifique qué pines de E / S físicos del chip FPGA están conectados a las entradas y salidas lógicas de su circuito.

Estas restricciones también requieren que especifique a qué velocidades de reloj debe operar el circuito. La salida del sintetizador y el archivo de restricciones se entregan al procesador de implementación, que maneja Place y Route, entre otras cosas.

El proceso Place une cada elemento aún impersonal de la lista de conexiones a un elemento específico dentro del chip FPGA. A continuación, comienza a funcionar el proceso Route, que trata de encontrar la conexión óptima de estos elementos para la configuración correspondiente de la matriz de conmutación FPGA.

Place y Route operan en base a las restricciones que hemos impuesto al circuito: pines de E/S y velocidad de reloj. El período de reloj tiene un efecto muy fuerte en la implementación: no debe ser menor que el tiempo de retardo en las puertas lógicas en el circuito crítico entre dos flip-flops sucesivos.

A menudo, este requisito no se puede cumplir de inmediato, y luego es necesario volver a la etapa inicial y cambiar el código RTL: por ejemplo, tratar de reducir la lógica en la cadena crítica. Una vez que la implementación se ha completado con éxito, sabemos qué elementos están dónde y cómo están conectados.

Solo después de eso, comienza el proceso de creación de un archivo de firmware FPGA binario. Queda por cargarlo en hardware real y comprobar si funciona como se esperaba. Si ocurren problemas en esta etapa, significa que el modelado estaba incompleto y en esta etapa no se eliminaron todos los errores y deficiencias.

Puede volver a la etapa de simulación y simular una situación anormal, y si esto no funciona, en casos extremos, se proporciona un mecanismo de depuración directamente en el hardware en ejecución. Puede especificar qué señales desea rastrear a lo largo del tiempo y el entorno de desarrollo generará un circuito analizador lógico adicional que se coloca en el chip junto a su circuito de diseño, se conecta a las señales de interés y almacena sus valores a lo largo del tiempo. Los diagramas de tiempo guardados de las señales deseadas se pueden descargar a una computadora y analizar.

Mientras había vacaciones, hice un pequeño proyecto en Verilog, que quería probar desde hace mucho tiempo.

La esencia del proyecto es la siguiente: un ADC rápido (relativamente, por supuesto) con dos canales y una interfaz paralela (14-16 bits por canal) está conectado a la FPGA. El FPGA lee datos del ADC y los almacena en un búfer (su memoria BRAM interna). Cuando el búfer está lleno, la lectura se detiene y el dispositivo externo (microcontrolador) puede leer los datos del búfer a través de la interfaz SPI. También puede configurar algunos parámetros a través de SPI (esto se discutirá en la próxima publicación).

Prueba de proyecto (imagen en la que se puede hacer clic).

Resultado de síntesis para Ciclón IVE

El resultado lo sinteticé en Quartus II, para FPGA de la familia Cyclone IVE (EP4CE6E22A7). Este es uno de los FPGA más simples y económicos del paquete QFP144 para 6272 elementos lógicos. El chip tiene una capacidad de memoria de 30K * 9 bits. Pines de usuario - 92.

microprocesador EP4CE6E22A7
elementos lógicos - 301 (5%)
alfileres - 41 (45%)
memoria - 65536 bits (24%)
frecuencia del peor caso (125 C) - 151 MHz.

Memoria 8 KB, este es en realidad el búfer donde se escriben los datos. Con dos canales de 16 bits, resulta 32 bits por muestra y 2048 muestras. Decidí que esto sería suficiente, aunque el búfer se puede expandir incluso a todo el volumen.

La frecuencia es bastante satisfactoria, esperaba que hubiera una frecuencia de reloj de 50 MHz, y un ADC a 25 MHz. Es decir, se obtiene un triple margen en frecuencia.

El número de elementos lógicos es bastante insignificante para tal FPGA, es decir si lo desea, puede adjuntar muchas otras cosas allí, especialmente porque quedan hasta 51 pines.

Hay una nueva familia Cyclone 10.

Resultado de la síntesis para el ciclón 10

Seleccionamos el chip 10CL006YE144C8G. Tiene el mismo número de puertas (6272) que la versión Cyclone 4 y la misma cantidad de memoria (30K x 9). El caso es el mismo que QFP144, hay incluso menos pines de usuario: 89.

microprocesador 10CL006YE144C8G
elementos lógicos - 289 (5%)
alfileres - 41 (46%)
memoria - 65536 bits (24%)
la frecuencia del caso más desfavorable (85 C) es 145,5 MHz.

Es curioso que el proyecto se haya vuelto más compacto en cuanto a elementos lógicos. Es decir, con la misma capacidad lógica, un proyecto más complejo cabrá en Cyclone 10. Todo lo demás está al mismo nivel.

Surge una pregunta razonable: ¿es posible ahorrar dinero instalando otro FPGA o CPLD?

Probemos FPGA MAX10.

Resultado de síntesis para MAX 10

Aquí el lector (si está en el tema) puede exclamar: ¡no, no es así! La familia MAX es CPLD, no FPGA, y confundir estos conceptos es una flagrante falta de profesionalismo.

Sin embargo, gracias al esfuerzo de los especialistas en marketing de Intel (¿todo el mundo sabe que hablamos de chips Intel?), la familia MAX10 se ha convertido en una FPGA, aunque tiene una memoria interna de configuración no volátil, como cualquier CPLD.

Entonces, elegimos un chip, por ejemplo, 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), paquete QFP144.

microprocesador 10M02SCE144A7G.
elementos lógicos - 298 (13%)
alfileres - 41 (41%)
memoria - 65536 bits (59%)
frecuencia del peor caso (125 C) - 153 MHz.

Vemos que los indicadores absolutos permanecieron prácticamente iguales, solo aumentó el grado de llenado de cristal, lo cual es comprensible: 2304LE versus 6272 LE.

¿Se puede utilizar MAX II?

Ahora la pregunta es: ¿es posible utilizar algún CPLD muy económico, como el MAX II? Aquí todo es más complicado. No tienen memoria BRAM, es decir. también necesitará una SRAM rápida externa.

Para conectar SRAM, se necesitará lógica adicional, por supuesto. Si usamos memoria 4K x 16, necesitaremos 16 pines adicionales para datos, 12 para dirección y 3 para control (/cs, /we, /oe), para un total de 31 pines adicionales.

La lógica también aumentará de tamaño. Es difícil decir exactamente cuánto, pero inicialmente no encajará en CPLD en 240 LE, pero tal vez encaje en 570 LE.

Elegimos CPLD EPM570 en el paquete QFP100. Solo necesitamos 72 pines, la caja tiene 76 pines para GPIO, es decir debería ser suficiente para todo, pero ya hay muy poco espacio para la expansión.

Pros de esta solución: precio posiblemente más bajo (incluso con un chip SRAM adicional), contras: mayor complejidad de circuito y área de placa.

Precio de emisión

Esto es lo que encontré usando efind. Los microcircuitos son ligeramente diferentes, pero el número y la letra al final son el índice de rendimiento y el rango de temperatura (comercial). Dado que tenemos un margen triple en frecuencia, estas cifras no son importantes para nosotros.

EP4CE6E22C8N - 456,55 R (Promelectronics, EKB, minorista)
10CL006YE144C - 754.71 (El quinto elemento, San Petersburgo, mayorista)
10M02SCE144C8G - 456 R (Elitan, Ekb, mayorista)
EPM570F100C5N - 368 R (Hitech, St. Petersburg) + memoria (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92,51 R (Electrónica industrial, EKB, minorista)

Por supuesto, puede encontrar más barato, estos son solo precios minoristas en la tienda, pero la proporción será más o menos la misma.

Se puede ver que la opción CPLD no gana de ninguna manera en términos de precio, aunque tiene muchas desventajas. El resto de las opciones son más o menos equivalentes, excepto que el Cyclone 10 sigue siendo un poco más caro y pocas personas lo tienen en stock. Sin embargo, se trata de una familia completamente nueva, hasta el momento no todos los distribuidores la han traído.

Personalmente, me gusta más la opción MAX 10. Tiene una ventaja: no es necesario cargar la configuración de FPGA al inicio. En la variante Cyclone 4, deberá cargar la configuración de FPGA, lo que se puede hacer usando un chip de memoria de configuración adicional o usando un microcontrolador. Hay una tercera opción: flashear a través de JTAG y nunca quitar la alimentación del chip. Escuché que alguien hizo esto, no sé si es una broma o no, pero definitivamente no lo haré.

Sin embargo, la variante con firmware Cyclone 4 a través del microcontrolador tiene una ventaja: la posibilidad de actualizar el firmware de la FPGA a través de las interfaces de usuario: USB, Ethernet, etc.

Es posible otra opción no trivial: no instale un microcontrolador en absoluto, pero instale algún procesador integrado en el FPGA. Pero esta no es una muy buena opción, tal vez, porque. esto definitivamente requerirá ROM y RAM externos, así como al menos un puente USB. Por supuesto, no es necesario rechazar deliberadamente esta opción, pero me parece más difícil de implementar que con un microcontrolador.

Sobre las funciones que realiza este firmware, escribiré en la próxima publicación.

USO DE FPGA EN DISPOSITIVOS MODERNOS

Tupikov Pavel Andreevich

Estudiante de quinto año, Departamento de Arte OmSTU, Federación Rusa, Omsk

Hoy en día, los circuitos integrados de lógica programable (FPGA) se utilizan cada vez más en varios dispositivos modernos, esto se debe al hecho de que los FPGA tienen ventajas significativas sobre los microcircuitos digitales convencionales. Estas ventajas incluyen:

· Mejora del rendimiento del producto.

· Se reduce el precio del producto.

Dimensiones reducidas del producto.

Aumenta la fiabilidad del producto (disminuye el número de microcircuitos discretos)

Aumenta la flexibilidad del producto (la FPGA siempre se puede reprogramar)

La arquitectura FPGA tiene una estructura compleja (Fig. 1)

Figura 1. La estructura interna de la FPGA

Como puede verse en la Figura 1, la parte principal de la FPGA consta de bloques lógicos programables y conexiones internas programables.

El proceso mismo de programación (firmware) FPGA consiste en la formación de las conexiones necesarias entre las entradas y salidas del dispositivo.

A la fecha, existen dos líderes mundiales en la producción de FPGAs en el mundo. Estas son las firmas estadounidenses Xilinx y Altera.

Cada empresa ofrece su propio CAD para trabajar con FPGAs. Xilinx ofrece el kit de desarrollo de software (SDK) de Xilinx. Altera ofrece Max+Plus II y Quartus II, así como el sistema de simulación ModelSim.

Para crear programas de firmware, generalmente se utilizan lenguajes para describir el funcionamiento de los equipos, los siguientes lenguajes son los más comunes en la actualidad:

VerilogHDL.

El lenguaje VHDL es el más difícil de aprender, pero al mismo tiempo tiene las mayores capacidades a nivel funcional y de comportamiento de abstracción, sin embargo, tiene menos capacidades a nivel estructural de abstracción en comparación con Verilog HDL, la biblioteca VITAL fue desarrollado para expandir las capacidades del lenguaje VHDL (Fig. 2) .


Figura 2. Capas de abstracción Verilog Y VHDL

Un ejemplo del funcionamiento del lenguaje Verilog HDL es un programa implementado en la FPGA CYCLONE III EP3C5E1444C8N del stand Mini-DiLab, cuya vista general se muestra en la Fig. 3.


Figura 3. Vista general del tablero Mini - DiLab

Este programa implementa el encendido secuencial de LEDs led0-led7, con la opción de agregar el movimiento de “luz” usando los botones pba y pbb, así como controlar la velocidad de encendido usando los interruptores sw0, sw1.

//Texto del programa

módulo proyecto( producción condujo, aporte clk_25mhz, aporte pba, aporte pbb,

aporte sudoeste);

// Destino de las conexiones internas del proyecto

cable s1;

cable s2;

cable s3;

// Llamar a otros archivos (subrutinas) conectados al proyecto

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

Contador counter_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.salida(led), .entrada(s3));

módulo final// fin del programa

Subrutina tr

módulo tr(fuera, set, res); // Crear un programa

// asignación de E/S

producciónregistro afuera;

aporte colocar;

aporte res;

// inicialización

inicial

comenzar

Afuera<= 1"d0;

// código del programa principal

siempre @(Negociación establecer o Negociación resolución)

comenzar

si(~(conjunto))

Afuera<= 1"d1;

demás

Afuera<= 1"d0;

módulo final // fin de programa

Contador de subrutinas

módulo contador(con, q, clk, arriba); // inicio del programa

producciónregistro estafa;

producción q = estafa;

aporte arriba, clk;

// código del programa principal

siempre @(posar clk)

comenzar

si(Clk)

si(arriba)

Estafa<= con - 1"d1;

demás

Estafa<= con + 1"d1;

módulo final// Fin del programa

Subrutina mx(multiplexor)

módulo mx( salida.reg a, aporte en, aporte carga);

// código del programa principal

siempre @*

comenzar

caso(carga)

2"b00: a = entrada;

2"b01: a = entrada;

2"b10: a = en;

2"b11: a = en;

caso final

módulo final // fin de programa

Subrutina dc3_8 (multiplexor)

módulo dc3_8(salida, entrada); // inicio del programa

// asignación de E/S

salida.reg afuera;

cable de entrada en;

// código del programa principal

siempre @*

comenzar

caso(en)

3"d0: salida = 8"b11111110;

3"d1: fuera = 8"b11111101;

3"d2: fuera = 8"b11111011;

3"d3: afuera = 8"b11110111;

3"d4: afuera = 8"b11101111;

3"d5: afuera = 8"b11011111;

3"d6: afuera = 8"b10111111;

3"d7: afuera = 8"b01111111;

caso final

módulo final // fin de programa

El programa se implementó en CAD Quartus II.

Después de compilar el programa, el compilador no generó ningún error o comentario en el programa relacionado con el análisis y la sintaxis del programa (Fig. 4).


Figura 4. Ventana de mensaje de proyecto

Los comentarios hechos por el compilador indican la ausencia de una licencia para Quartus II (la versión gratuita del programa se utilizó para la capacitación) y la ausencia de archivos necesarios para modelar el proyecto.

RTL La estructura de este proyecto se muestra en la fig. 5.


Figura 5. Implementación del proyecto ( RTL estructura)

Como se muestra en la fig. 6 en este programa, solo se utiliza una pequeña parte de las capacidades de este FPGA.

Figura 6. Parte de la FPGA involucrada en el proyecto

Conclusiones: Los circuitos integrados de lógica programable se utilizan en muchos dispositivos. Para aprender a trabajar con ellos, es necesario introducir en el programa educativo de las especialidades relacionadas con el diseño y construcción de equipos radioelectrónicos la familiaridad con los lenguajes de descripción de hardware (Verilog HDL y VHDL).

Bibliografía:

1. Grushevitzky R.I. Diseño de sistemas basados ​​en microcircuitos de lógica de programa / R.I. Grushevitzky, A.X. Mursaev, E.P. Sombrío. San Petersburgo: BHV Petersburgo, 2002. - 608 p.

2. Kolomov D. A. Sistemas de diseño asistido por ordenador de Altra MAX+plus II y Quartus II. Breve descripción y tutorial / D.A. Kolomov, R. A. Myalk, A.A. Zobenko, A. S. Filippov. M.: IP RadioSoft, 2002. - 126 p.

3. Maxfield K. Diseño de FPGA. El curso de un joven luchador./ K. Maxfield. M.: Editorial "Dodeka-XXI", 2007. - 408 p. (traducción del inglés).

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

Pekín colapsó Wall Street

Los principales índices estadounidenses 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 que se repita la crisis de 2008.

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

La compañía Baikal Electronics a principios de 2016 promete lanzar el procesador ruso Baikal-T1 por un valor de alrededor de $ 60 a la producción industrial. Los dispositivos tendrán demanda si el estado crea esta demanda, dicen los participantes del mercado.

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

PJSC "Mobile TeleSystems" y Ericsson firmaron acuerdos 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 ingeniería más grandes del mundo

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

Rostec se "protege" e invade los laureles de Samsung y General Electric

El Consejo de Vigilancia de Rostec aprobó la "Estrategia de Desarrollo hasta 2025". Las tareas principales son aumentar la participación de productos civiles de alta tecnología y ponerse al día con General Electric y Samsung en indicadores financieros clave.

El artículo intenta determinar la composición de la documentación que acompaña a los módulos digitales desarrollados para circuitos integrados de lógica programable (FPGA). Esta documentación adjunta debe ser proporcionada por los desarrolladores 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 en el FPGA.

Introducción

Entonces, ¿qué tipo de documentación de diseño debe solicitarse al desarrollador si la empresa o la empresa del cliente u otro desarrollador utilizará en el futuro un dispositivo desarrollado "extranjero" en sus proyectos? Este artículo puede servir como una "hoja de trucos" para primero emitir correctamente los términos de referencia para el desarrollo de un dispositivo digital para FPGA y luego solicitar 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, una empresa o firma generalmente usa los siguientes estándares y regulaciones:

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

Por regla general, se trataba de 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 la biblioteca de lógica digital, como flip-flops, registros, contadores, decodificadores, etc.) en CD o DVD e instrucciones de programación. Y eso es todo.

El autor, por ejemplo, enfrentó el siguiente problema. Uno de los empleados desarrolló un complejo dispositivo digital de varios módulos. Describí todos los módulos en VHDL y miré los ciclogramas de la operación de estos módulos y el dispositivo digital como un todo en un osciloscopio bueno y costoso. No sabía sobre los archivos del banco de pruebas y sobre la posibilidad de realizar simulaciones 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 diseñados en un editor de esquemas utilizando elementos de biblioteca. Aquí es donde radica uno de los principales inconvenientes: además del propio desarrollador, es poco probable que alguien más entienda este dispositivo digital, especialmente si el proyecto es de varios módulos y la descripción de cada módulo tiene más de 100 líneas o más. de una pantalla de monitor. Entonces, si otro desarrollador quiere introducir un dispositivo digital ya desarrollado para FPGA en un nuevo desarrollo o proyecto, nuevamente necesita dedicar tiempo a desarrollar este dispositivo digital.

Historia del problema de diseño para FPGA

Actualmente, el mercado de FPGA es uno de los que se está desarrollando más dinámicamente. Los FPGA se utilizan en muchas ramas de la tecnología. Por el momento, no existe una metodología inequívoca que satisfaga a todos los desarrolladores de hardware para obtener la configuración de FPGA a partir del modelo funcional del dispositivo a nivel de sistema. El enfoque más popular para resolver este problema es el uso de la tecnología IP-core (núcleos de propiedad intelectual). Los núcleos de IP son componentes listos para usar que le permiten incluirlos fácilmente en su propio proyecto para crear un sistema más complejo. Este enfoque tiene un inconveniente importante: la unión de núcleos IP a la base elemental. Cada núcleo IP está optimizado para una serie específica de chips de un fabricante específico, lo que perjudica significativamente la posibilidad 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 en el nivel del sistema para obtener modelos de dispositivos en el nivel de transferencia de registro (RTL) sobre su base. El desarrollo de un módulo digital se lleva a cabo en forma de un circuito digital dibujado en un editor de circuitos utilizando la biblioteca CAD integrada del fabricante de elementos de circuitos básicos, como flip-flops, 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 transferencias de registros es el uso de 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 IP-core, el desarrollador de hardware recibe una solución de alta calidad, pero estrictamente 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 importante el uso conjunto de módulos digitales en el lenguaje de descripción de hardware y cores IP del fabricante (Xilinx, Altera, Actel, etc.) y terceros desarrolladores para agilizar el proceso de diseño de módulos digitales. Cuando se utilizan módulos digitales de terceros fabricantes, a veces falta información en 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 la FPGA según el modelo funcional del dispositivo a nivel de sistema, el desarrollador puede distinguir los siguientes tipos de módulos digitales para la FPGA:

  • Software - un módulo digital desarrollado, transmitido al consumidor en forma de descripción en el lenguaje de descripción de hardware (VHDL, Verilog) o/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 parámetros funcionales.
  • firmware - un módulo digital desarrollado por una empresa desarrolladora de terceros, que se denomina núcleo IP, transmitido al consumidor en forma de un circuito lógico (netlist) basado en la biblioteca de elementos lógicos del fabricante de FPGA y optimizado en términos funcionales y parámetros eléctricos.

En la etapa de desarrollo de la documentación, según la experiencia personal, es necesario emitir, además de la documentación y las especificaciones de diseño habituales, realizada de acuerdo con GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, documentación para todo tipo de modelos. (sistema, lógica, circuitos) 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 FPGAs, 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 de respaldo

Nombre de la sección Vista
Software firmware
información general
Propósito y alcance ACERCA DE R
Especificaciones ACERCA DE ACERCA DE
Descripción de las señales de reinicio ACERCA DE ACERCA DE
Descripción de las señales de sincronización ACERCA DE ACERCA DE
Descripción de las interfaces ACERCA DE R
diagramas de tiempos R ACERCA DE
Descripción de los registros de control ACERCA DE ACERCA DE
Diagrama estructural (funcional) R R
Guía de programación ACERCA DE ACERCA DE
modelo o familia de FPGA,
fabricante de la empresa
R ACERCA DE
Presentación del módulo digital
para diseño lógico en FPGA
modelo RTL ACERCA DE No
modelo lógico No ACERCA DE
Límites de diseño ACERCA DE ACERCA DE

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

  • "O" - sección suministrada obligatoria;
  • "R" - sección recomendada para la entrega.

Los formatos de archivo recomendados para enviar documentación de respaldo son MS Word, PDF (mejor formato), HTML. Los archivos de descripción en lenguaje de descripción de hardware (VHDL, Verilog) y/o los desarrollados en el Editor de esquemas se proporcionan según lo requiera el software de diseño CAD. Una excepción puede ser la provisión adicional en formato gráfico (JPEG, BMP) de archivos de circuitos digitales desarrollados en el Editor de esquemas.

información general

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

  • diagrama funcional y sus bloques/partes constituyentes;
  • señales de reinicio, sincronización;
  • interfaces aplicadas;
  • registros de control;
  • diagrama de tiempo;
  • programación.

Propósito y alcance

Se determina el propósito del módulo digital, el alcance de su aplicación.

Especificaciones

Se da una descripción de sus principales características técnicas, como el rendimiento, el consumo de energía para un chip FPGA en particular, el número de puertas ocupadas, el tipo de chip FPGA utilizado. Adicionalmente, 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 indica la versión y las actualizaciones instaladas. Se da 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 proporciona información detallada sobre 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 las señales de reinicio.
  • Circuitos para generar señales de reinicio internas, si las hay, están incluidas en el módulo digital.
  • Relaciones con otras señales (especialmente señales de sincronización).

Descripción de las señales de sincronización

Se proporciona información detallada sobre las señales de sincronización:

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

Descripción de las 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.

diagramas de tiempos

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

Descripción de los registros de control

Se da una descripción de todos los registros de control del módulo digital. Una descripción típica del 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), una descripción del campos.

Diagrama estructural (funcional)

Se da 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 textual. Además, se da 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 de funcionamiento del módulo digital.

El número de bloques descritos y el alcance de la descripción están determinados por el desarrollador del módulo digital. Preferiblemente, el número mínimo de módulos descritos corresponde al número de elementos del diagrama estructural (funcional) del módulo digital.

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

  • asignación de bloque;
  • diagrama de bloques estructural (funcional) (si es necesario);
  • modos de operación y algoritmos;
  • cronogramas de trabajo;
  • organización de la gestión de unidades;
  • 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 CAD del fabricante del módulo digital en la FPGA, las herramientas necesarias para el desarrollo y depuración de software y librerías de software.

Modelo o familia de FPGA, fabricante

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

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

El artículo discutía las dificultades de usar un proyecto "extranjero" en VHDL: la falta de pautas adecuadas para nombrar y escribir programas. También se dieron instrucciones generales sobre nombres, buenas maneras para escribir programas y pautas para la síntesis. Estos temas deben discutirse con el mayor detalle posible con el desarrollador si en el futuro planea continuar desarrollando o actualizando por su cuenta antes de que comience a desarrollar el modelo RTL del módulo digital en el FPGA. Esto es especialmente cierto para el 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 el FPGA. Estas son las cuestiones a las que debe prestar atención al redactar los términos de referencia para el desarrollo de un módulo digital en el FPGA, y esto se refiere especialmente a la transferencia de resultados de trabajo.

modelo RTL

Un módulo digital descrito en un subconjunto sintetizado del lenguaje Verilog o VHDL o/y desarrollado en el Editor de esquemas está diseñado para usarse en la etapa de síntesis lógica de FPGA. Suministrado para Software en forma de proyecto ensamblado de un módulo digital en el sistema CAD del fabricante de FPGA. Para el módulo digital de Firmware, el modelo RTL se proporciona bajo un acuerdo por separado.

Además de los archivos de 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.
  • Describe cómo crear núcleos preconstruidos cuando se usan programas para crearlos (por ejemplo, CoreGenerator para Xilinx ISE). En ausencia de descripciones, puede haber restricciones en el rediseño y la aplicación debido a la dependencia de la tecnología y el fabricante.
  • En el caso de utilizar un microprocesador de un fabricante (por ejemplo, de Altera - procesador Nios; de Xilinx - Microblaze, microprocesadores PowerPC), se requiere una descripción del proceso de configuración del núcleo del procesador y su periferia.
  • Un conjunto de pruebas (archivos Test Bench) para verificar y simular un módulo digital escrito en Verilog o/y VHDL o/y System Verilog.
  • Cualquier otra información adicional.

modelo lógico

El modelo es una lista de redes descrita utilizando los lenguajes Verilog o VHDL en base a la biblioteca del fabricante de FPGA y se suministra para el firmware del módulo digital.

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

  • Instrucciones de uso de este modelo.
  • Un conjunto de pruebas (archivos Test Bench) para verificar y simular un módulo digital escrito en Verilog o/y VHDL o/y System Verilog.
  • Una guía para trabajar con un conjunto de pruebas para modelar y verificar un módulo digital.
  • Cualquier otra información adicional.

Límites de diseño

Las restricciones de diseño se proporcionan como 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 para señales de sincronización (restricciones de reloj), restricciones de temporización (restricciones de temporización), restricciones sobre la interacción del módulo digital con otros módulos y las condiciones de funcionamiento del módulo digital. Se prefieren las restricciones de diseño de sinopsis (SDC) o el formato CAD del fabricante de FPGA.

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

  • diagrama de tiempo (forma de onda del reloj);
  • inestabilidad de la frecuencia del reloj (Jitter);
  • cambio de fase del reloj;
  • duración de los tiempos de conmutación (Tiempos de transición);
  • diagramas de tiempo de señales de reloj derivadas (formas de onda de reloj generadas);
  • cualquier otra información adicional.

Es obligatorio un conjunto de restricciones para las señales de sincronización para el software y el firmware de los módulos digitales.

Ejemplo de lista de límites de tiempo:

  • el tiempo de ocurrencia de las señales en las entradas (Tiempos de llegada a las entradas);
  • el tiempo de aparición de las señales en las salidas (Tiempos requeridos en las salidas);
  • ciclovías;
  • caminos falsos (caminos falsos);
  • 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 que acompaña a los módulos digitales desarrollados para FPGA se proporciona mediante acuerdo entre el consumidor y el desarrollador. La mayoría de las veces, el desarrollador proporciona solo un módulo digital, 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ómelo y úselo. No hay nada difícil en describir el circuito en el lenguaje del hardware: lo descubrirás tú mismo”.

En opinión del autor, puede comprender cualquier cosa, todo depende del deseo y el tiempo dedicado, y el tiempo dedicado a comprender un proyecto "extranjero" en un módulo digital ya desarrollado es directamente proporcional a la experiencia de describir equipos en VHDL, Circuitos digitales y de microprocesador Verilog y Knowledge. 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 será más rápida.

En resumen, al autor le gustaría señalar que al formular una tarea para el desarrollo de un dispositivo digital en un FPGA, uno debe cumplir con las recomendaciones dadas en el artículo, luego no habrá problemas al reutilizar o actualizar un dispositivo digital previamente desarrollado. dispositivo.

Literatura

  1. Denisov A. Varios consejos para diseñar dispositivos digitales en VHDL para FPGA // Componentes y tecnologías. 2009. Nº 12.
  2. GOST 2.102-68 ESKD. Tipos y exhaustividad de los documentos de diseño.
  3. GOST 2.114-95 ESKD. Especificaciones.
  4. GOST 15.101-98. Sistema para el desarrollo y producción de productos. El procedimiento para la realización de trabajos de investigación científica.
  5. GOST R 15.201-20-00. Sistema para el desarrollo y producción de productos. Productos para fines industriales y técnicos. El procedimiento para el desarrollo y producción de productos.
decirles a los amigos