Ejemplos de diseño para grandes proyectos fpga. Un pequeño proyecto en FPGA. Rostec se está “protegiendo” y usurpando los laureles de Samsung y General Electric

65 nanómetros es el próximo objetivo de la planta Angstrem-T de Zelenogrado, que costará entre 300 y 350 millones de euros. La empresa ya ha presentado una solicitud de préstamo preferencial para la modernización de las tecnologías de producción al Vnesheconombank (VEB), informó Vedomosti esta semana en referencia al presidente del consejo de administración de la planta, Leonid Reiman. Ahora Angstrem-T se está preparando para lanzar una línea de producción de microcircuitos con topología de 90 nm. Los pagos del préstamo anterior del VEB, por el cual fue adquirido, comenzarán a mediados de 2017.

Pekín desploma 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 se enfrenta a una repetición de la crisis de 2008.

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

La compañía Baikal Electronics promete lanzar a principios de 2016 a la producción industrial el procesador ruso Baikal-T1, que costará alrededor de 60 dólares. Los dispositivos tendrán demanda si el gobierno crea esa demanda, dicen los participantes del mercado.

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

Mobile TeleSystems PJSC y Ericsson han firmado acuerdos de cooperación para el desarrollo y la implementación de la tecnología 5G en Rusia. En proyectos piloto, también durante el Mundial de 2018, MTS pretende 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

El jefe de Rostec, Sergei Chemezov, en una entrevista con RBC respondió preguntas urgentes: 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 en el contexto de las sanciones. presión, sustitución de importaciones, reorganización, estrategia de desarrollo y nuevas oportunidades en tiempos difíciles.

Rostec se está “protegiendo” y usurpando 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 proporción de productos civiles de alta tecnología y alcanzar a General Electric y Samsung en indicadores financieros clave.

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

Para empezar, es necesario comprender un poco la lógica digital de los chips ASIC, pero comenzar con ellos es muy difícil y costoso, y es mejor comenzar con FPGA.

¿Qué es FPGA?

FPGA significa matriz de puertas programables en campo (matrices de puertas programables por el usuario, FPGA). En términos más generales, se denominan FPGA: circuitos integrados lógicos programables.

Con una FPGA, literalmente puede diseñar microcircuitos digitales mientras está sentado en casa con una placa de depuración disponible sobre la mesa y un software de desarrollo por varios miles de rublos verdes. Pero también hay opciones gratuitas. Tenga en cuenta: se trata de diseñar, no de programar, porque de salida obtendremos un circuito digital físico que realiza un determinado 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 esta placa genial para un centro de datos o esta placa de depuración para capacitación.

Hasta que configuremos la FPGA, simplemente no habrá 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á un firmware que, después de cargarlo en la FPGA, creará el circuito digital que necesitamos. De esta manera, puede crear un controlador Ethernet 100G que recibirá y procesará paquetes de red.

Una característica importante de FPGA es su reconfigurabilidad. 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 fabricantes líderes 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 entró en el mercado hace poco, en 2015, tras absorber Altera, que se fundó al mismo tiempo que Xilinx. Las tecnologías Altera y Xilinx son similares en muchos aspectos, al igual que los entornos de desarrollo. Trabajé más a menudo con productos Xilinx, así que no se sorprenda por su constante mención en el artículo.

Los FPGA se utilizan ampliamente en diversos campos: electrónica de consumo, equipos de telecomunicaciones, placas aceleradoras para uso en centros de datos, robótica y creación de prototipos de chips ASIC. Veré un par de ejemplos a continuación.

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

Principio de funcionamiento de FPGA

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

También es posible 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 de RAM estática, en primer lugar, cuando se enciende la FPGA, el chip debe configurarse y, en segundo lugar, el chip se puede reconfigurar un número casi infinito de veces.

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

Los CLB están ubicados en una estructura de conmutación que define las conexiones entre 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. Al abrir algunos y cerrar otros, puede proporcionar una conmutación de señal diferente entre CLB.

CLB

CLB consiste muy simplemente en un bloque que define una función booleana a partir de varios argumentos (se llama 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 del LUT se envía a la salida CLB de forma asíncrona (directa) 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. Tengamos alguna función booleana y = (a & b) | ~c. Su diagrama de circuito 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 celda se envía a su entrada del LUT del multiplexor de salida, y los argumentos de entrada de la función booleana se utilizan para seleccionar uno u otro valor de la función. El CLB es el recurso de hardware más importante de la FPGA. La cantidad de CLB en los chips FPGA modernos puede variar y depende del tipo y la capacidad del chip. Xilinx ha muerto con recuentos de CLB que oscilan entre cuatro mil y tres millones.

Además del CLB, hay otros recursos de hardware importantes dentro de la FPGA. Por ejemplo, unidades de hardware de acumulación múltiple o unidades DSP. Cada uno de ellos puede realizar operaciones de multiplicación y suma en números de 18 bits en cada ciclo de reloj. 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 mediante una estructura de interruptor y se extienden por todo el troquel. Interconectando bloques CLB, DSP y BRAM se pueden obtener circuitos de procesamiento de datos muy eficientes.

Ventajas de FPGA

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

El uso de FPGA hizo posible abandonar este enfoque. Incluso una FPGA con 64 CLB ahorra significativamente espacio en la placa de circuito impreso, y la disponibilidad de reconfiguración ha agregado 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 - campo -matriz de puertas programables).

Debido al hecho de que dentro de una 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 la cuestión de las pruebas lógicas es crítica. Por tanto, una de las etapas de desarrollo, incluso antes de comenzar a trabajar en la topología física del circuito, fue su creación de prototipos en uno o más chips FPGA.

Para el desarrollo de ASIC, se producen placas especiales que contienen muchos FPGA conectados entre sí. El microcircuito prototipo funciona a frecuencias significativamente más bajas (tal vez decenas de megahercios), pero permite ahorrar 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 procesamiento de datos paralelos y de alta velocidad con la capacidad de cambiar el algoritmo.


Comparación de plataformas de hardware.

Pensemos en las diferencias fundamentales entre CPU, GPU, FPGA y ASIC. La CPU es universal, puedes ejecutar cualquier algoritmo en ella, es la más flexible y la más fácil de usar gracias a la gran cantidad de lenguajes de programación y entornos de desarrollo.

Al mismo tiempo, debido a la universalidad 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 por 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 movimientos.

Del otro lado está el ASIC. En esta plataforma, el algoritmo requerido se implementa en hardware conectando directamente transistores; todas las operaciones están relacionadas únicamente 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. Estos chips fueron diseñados originalmente para el procesamiento de gráficos, pero ahora también 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 serie de datos.

Si el algoritmo se puede paralelizar, entonces la GPU puede 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 resulta menos flexible que la CPU. Además, para desarrollar para GPU es necesario tener habilidades especiales, conocer OpenCL o CUDA.

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

La ventaja decisiva de los FPGA es la capacidad de procesar datos tal como llegan con un retraso de respuesta mínimo. Como ejemplo, podemos imaginar 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 una FPGA permite resolver este problema instantáneamente: los bytes del paquete apenas comienzan a llegar al chip desde la interfaz de red y su encabezado ya se está analizando. El uso de procesadores aquí puede reducir significativamente la velocidad de procesamiento del tráfico de la red. Está claro que los enrutadores pueden tener un ASIC personalizado que funcione de manera más eficiente, pero ¿qué pasa si las reglas para procesar paquetes tienen que cambiar? Sólo los FPGA pueden lograr la flexibilidad requerida combinada con un alto rendimiento.

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

FPGA en la nube

En la computación en la nube, los FPGA se utilizan para cálculos rápidos, aceleración del tráfico de red y acceso a conjuntos de datos. Esto también incluye el uso de FPGA para operaciones de alta frecuencia en bolsas. En los servidores se insertan placas FPGA con PCI Express e interfaz de red óptica fabricadas 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 Bing, así como para organizar redes definidas por software dentro de la nube de Azure.

El auge del aprendizaje automático tampoco ha escatimado en los FPGA. Xilinx e Intel ofrecen herramientas basadas en FPGA para trabajar con redes neuronales profundas. Le permiten obtener firmware FPGA que implementa una red 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 puedes 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 cosas interesantes hacen los FPGA? ¡Por qué no hacen nada! Robótica, vehículos autónomos, drones, instrumentos científicos, equipos médicos, dispositivos móviles de consumo, cámaras CCTV inteligentes, etc.

Tradicionalmente, los FPGA se utilizaban para el procesamiento digital de señales unidimensionales (y competían con los procesadores DSP) en dispositivos de radar y transceptores de radio. Con el aumento de la integración y el rendimiento de los chips, las plataformas FPGA se han utilizado cada vez más para la informática de alto rendimiento, como el procesamiento de señales 2D en el borde de la nube.

Este concepto se entiende mejor si utilizamos como ejemplo una cámara de tráfico con reconocimiento de matrículas. Puede llevar una cámara con la capacidad de transmitir vídeo a través de Ethernet y procesar la transmisión en un servidor remoto. A medida que aumenta el número de cámaras, también aumentará la carga en la red, lo que puede provocar fallos en el sistema.

En su lugar, es mejor implementar el reconocimiento de matrículas en una computadora instalada directamente en el cuerpo de la cámara de video y transmitir los números de matrícula a la nube en formato de texto. Para hacer esto, incluso puede usar FPGA relativamente económicos y con bajo consumo de energía para arreglárselas con una batería. Al mismo tiempo, sigue siendo posible cambiar la lógica de funcionamiento de la FPGA, por ejemplo, al cambiar el estándar de matrícula.

En cuanto a la robótica y los drones, en este ámbito es especialmente importante cumplir dos condiciones: alto rendimiento y bajo consumo de energía. La plataforma FPGA es ideal y puede utilizarse, en particular, para crear controladores de vuelo para drones. Ya están fabricando vehículos aéreos no tripulados que pueden tomar decisiones sobre la marcha.

Desarrollo de proyectos sobre FPGA.

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

Los circuitos FPGA siempre operan a velocidades de reloj específicas (generalmente 100-300 MHz) y en el nivel RTL usted define el comportamiento del circuito hasta la frecuencia de reloj del sistema. Este minucioso trabajo da como resultado diseños que son lo más eficientes posible en términos de rendimiento, consumo de recursos del chip FPGA y consumo de energía. Pero esto requiere serias habilidades en el diseño de circuitos, e incluso con ellas el proceso no es rápido.

A nivel de bloque, usted se dedica principalmente a conectar bloques grandes ya preparados que realizan ciertas funciones para obtener la funcionalidad del sistema en chip que necesita.

En un alto nivel de diseño, ya no se controlan los datos en cada ciclo de reloj, sino que se centra en el algoritmo. Existen compiladores o traductores de C y C++ al nivel RTL, por ejemplo 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 aceleración del desarrollo y especialmente de las pruebas del algoritmo: el código C++ se puede ejecutar y verificar en una computadora, y esto será mucho más rápido que probar los cambios del algoritmo a nivel RTL. Por supuesto, tendrá que pagar por la comodidad: es posible que el esquema no sea tan rápido y consumirá más recursos de hardware.

A menudo estamos dispuestos a pagar este precio: si utilizamos el traductor correctamente, la eficiencia no se verá muy afectada y los FPGA modernos tienen suficientes recursos. En nuestro mundo, con un indicador de tiempo de comercialización crítico, esto resulta justificado.

A menudo es necesario combinar los tres estilos de desarrollo en un solo diseño. Digamos que necesitamos crear un dispositivo que podamos integrar en un robot y darle la capacidad de reconocer objetos en una secuencia de vídeo, por ejemplo, señales de tráfico. Tomemos un chip sensor de video y lo conectemos 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 transmitirán a la FPGA a través de una interfaz claramente definida por el fabricante del sensor (el USB no es útil aquí), se procesarán y se mostrarán en el monitor. Para procesar fotogramas, necesitará un framebuffer, que normalmente se encuentra en una memoria DDR externa instalada en una placa de circuito impreso junto al chip FPGA.


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

Si el fabricante del sensor de vídeo no proporciona una interfaz IP para nuestro chip FPGA, entonces tendremos que escribirlo nosotros mismos en RTL, contando ciclos de reloj, bits y bytes de acuerdo con la especificación del protocolo de transferencia de datos. Lo más probable es que tomemos bloques prefabricados de preprocesamiento, controlador DDR y HDMI IP y simplemente conectemos sus interfaces. Y podemos escribir el bloque HLS, que busca y procesa datos entrantes, en C++ y transmitirlo usando Vivado HLS.

Lo más probable es que todavía necesitemos algún tipo de biblioteca preparada para un detector y clasificador de señales de tráfico, adaptada para su uso en una FPGA. En este ejemplo, por supuesto, presento un diagrama de flujo de diseño muy simplificado, pero refleja correctamente la lógica de funcionamiento.

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

Ruta de diseño

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

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

A continuación, el código verificado lógicamente se introduce como entrada al programa sintetizador. Convierte una descripción textual del circuito en una lista vinculada de elementos digitales de la biblioteca disponible para una matriz FPGA determinada. Esta lista mostrará elementos como LUT, activadores y las conexiones entre ellos. En esta etapa, los elementos aún no están vinculados a recursos de hardware específicos. Para hacer esto, necesita imponer restricciones al circuito; en particular, especificar a qué pines físicos de E/S del chip FPGA están conectadas las entradas y salidas lógicas de su circuito.

Estas restricciones también requieren que especifiques a qué velocidades de reloj debe funcionar el circuito. La salida del sintetizador y el archivo de restricciones se envían al procesador de implementación, que, entre otras cosas, maneja Lugar y Ruta.

El proceso Place vincula cada elemento aún anónimo de la lista de red a un elemento específico dentro del chip FPGA. A continuación comienza su trabajo el proceso de Ruta, que intenta encontrar la conexión óptima de estos elementos para la correspondiente configuración de la matriz de conmutación FPGA.

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

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

Sólo después de esto comienza el proceso de creación de un archivo de firmware FPGA binario. Todo lo que queda es cargarlo en hardware real y comprobar si funciona como se esperaba. Si surgen problemas en esta etapa, significa que el modelado estaba incompleto y no se eliminaron todos los errores y deficiencias en esta etapa.

Puede volver a la etapa de simulación y simular una situación de emergencia, y si esto no funciona, como último recurso, se proporciona un mecanismo de depuración directamente en el hardware en funcionamiento. Puede especificar qué señales desea rastrear a lo largo del tiempo y el entorno de diseño generará circuitos analizadores lógicos adicionales que se ubican en el chip junto a su diseño, se conectan a las señales que le interesan y almacenan 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.

Introducción

El lenguaje VHDL es el estándar internacional de facto en la automatización del diseño de sistemas digitales y es el lenguaje de entrada de muchos sistemas modernos de diseño asistido por computadora (CAD) para circuitos integrados lógicos programables (FPGA) personalizados y programables en campo y conjuntos de puertas programables en campo. VHDL está destinado, en primer lugar, a la especificación (una descripción precisa de los sistemas que se están diseñando y su modelado en las etapas iniciales de diseño), algorítmica y lógica. Con VHDL, puede simular circuitos electrónicos teniendo en cuenta retrasos en tiempo real.

Recientemente se han desarrollado con gran éxito sistemas para sintetizar circuitos basados ​​en especificaciones en este lenguaje. Por ejemplo, utilizando el sistema CAD Xilinx Foundation Series 2.1i, puede modelar la descripción del circuito original en VHDL y luego sintetizar el circuito y obtener un archivo de instalación (configuración) para un chip Xilinx FPGA. El uso de CAD MAX+PLUSII le permite resolver problemas similares para microcircuitos programables fabricados por Altera.

VHDL es un lenguaje poderoso que le permite describir el comportamiento, es decir. algoritmos para el funcionamiento de sistemas digitales, además de realizar una descripción funcional-estructural jerárquica de los sistemas, tiene herramientas para describir procesos asincrónicos paralelos, estructuras regulares (sistólicas) y al mismo tiempo tiene todas las características de una programación de alto nivel. lenguaje: le permite crear sus propios tipos de datos, tiene una amplia gama de operaciones aritméticas y lógicas, etc.

3 4
El lenguaje VHDL se está desarrollando, se le dedican congresos internacionales y se publican revistas científicas en las que se estudian los problemas del uso de VHDL. Se ha convertido en el lenguaje para el desarrollo de proyectos internacionales, incluidos los realizados a través de Internet. Es necesario estar familiarizado con este lenguaje para trabajar eficazmente en la creación de una amplia variedad de equipos electrónicos sobre la base de elementos modernos de circuitos integrados de gran escala.

Trabajo de laboratorio No. 1

DEPURADOR FPGA EXPRESS

1. Descripción general del puesto

1.1. El objetivo del trabajo es adquirir habilidades para trabajar con el depurador FPGA EXPRESS.

El trabajo de laboratorio consta de tareas y trabajos de laboratorio. Su tarea es dominar de forma independiente las funciones más básicas del depurador y familiarizarse con su propósito. La tarea de laboratorio implica ingresar su versión de un programa de ejemplo escrito en VHDL y usar su ejemplo para dominar los principios de trabajo con el depurador FPGA EXPRESS.

Utilizando el manual metodológico, familiarícese con el propósito y las capacidades del depurador de modelos de dispositivos digitales en lenguaje VHDL.

3. Parte teórica

FPGA Express traduce y optimiza las descripciones VHDL a un formato interno equivalente al nivel de puerta primitivo. Luego, este formato se compila en tecnología FPGA.

Para trabajar con VHDL, es necesario estar familiarizado con los siguientes conceptos:

Lenguajes de descripción de hardware.

Utilizando FPGA Express.

Modelo del proceso de diseño.

El Departamento de Defensa de Estados Unidos desarrolló en 1982 HDL VHSIC(VHDL) como parte del programa Very High Speed ​​​​IC (VHSIC). VHDL describe el comportamiento, funciones, entradas y salidas de un circuito digital. VHDL es similar en estilo y sintaxis a los lenguajes de programación modernos; sin embargo, incluye muchas construcciones de hardware específicas. FPGA Express lee y analiza la sintaxis VHDL compatible.

Lenguajes de descripción de hardware

Los lenguajes de descripción de hardware (HDL) se utilizan para describir la arquitectura y el comportamiento de sistemas electrónicos discretos. Estos lenguajes están diseñados para construir proyectos complejos. A menudo se hacen analogías históricas sobre cómo se pueden llamar los lenguajes de descripción de software, desde códigos de máquina (transistores y soldadura) hasta lenguajes ensambladores (listas de redes) y lenguajes de alto nivel (HDL).

Los sistemas basados ​​en HDL son útiles cuando se desarrollan grandes proyectos en los que varios desarrolladores o incluso varios equipos trabajan juntos. Los HDL proporcionan programación estructurada. Una vez que se han tomado las decisiones arquitectónicas básicas y se han identificado los componentes principales y las conexiones entre ellos, el trabajo en los subproyectos puede proceder de forma totalmente independiente.

Aplicaciones HDL típicas

5 6
Los HDL normalmente admiten descripciones mixtas, en las que las construcciones estructurales o listas de redes se pueden combinar con descripciones algorítmicas y de comportamiento. Con tales descripciones de niveles mixtos, es posible representar la arquitectura del sistema en un nivel superior de abstracción; luego, el proyecto es cada vez más detallado para la ejecución a nivel de componente individual. Una alternativa es utilizar la descripción de diseño HDL en FPGA Express y luego hacer que el compilador sintetice automáticamente la ejecución en el nivel primitivo lógico.

Ventajas del HDL

La metodología de diseño que utiliza HDL tiene varias ventajas fundamentales sobre la metodología tradicional de diseño a nivel de componentes. Entre estas ventajas cabe destacar las siguientes:

Puede comprobar la funcionalidad del proyecto desde el principio y simularlo inmediatamente. Modelar un proyecto a un nivel tan alto antes de traducirlo a una ejecución elemental le permite probar muchas soluciones arquitectónicas y de diseño.

FPGA Express proporciona síntesis y optimización lógica para que sea posible transformar automáticamente una descripción VHDL en una ejecución de nivel elemental para la tecnología seleccionada. Esta metodología elimina los cuellos de botella a nivel de componentes y reduce el tiempo de diseño y los errores introducidos al traducir manualmente un programa VHDL en elementos específicos. Al usar optimización lógica FPGA Express puede convertir automáticamente un diseño sintetizado en el circuito más pequeño y rápido. Además, es posible asignar información obtenida de la síntesis y optimización del circuito a la descripción VHDL existente, lo que conduce a un ajuste más preciso de las soluciones arquitectónicas.

Las descripciones HDL proporcionan documentación independiente de la tecnología de un diseño y su funcionalidad. Estos programas son mucho más fáciles de leer y comprender que las netlists o los diagramas. Debido a que la descripción HDL inicial del proyecto es independiente de la tecnología, se puede utilizar para generar proyectos con diferentes tecnologías sin afectar la original.

VHDL, como la mayoría de los lenguajes de alto nivel, produce rígido verificación de tipos. Los componentes cuyo tipo se declara como señal de cuatro bits no se pueden conectar a una señal de tres o cinco bits; tal discrepancia resultará en un error de compilación. Si el rango de variables se define de 1 a 15, se producirá un error al asignarles el valor 0. El uso incorrecto de tipos es la principal fuente de errores al redactar declaraciones. La verificación de tipos detecta dichos errores incluso antes de que se genere el proyecto.

Depuración en FPGA Express

Para depurar necesitas hacer lo siguiente:

7 8
Cree una descripción del dispositivo (componente) diseñado en VHDL en cualquier editor de texto. En este caso, una condición necesaria es que la extensión de este archivo sea: *.vhd. (Por ejemplo, puede utilizar el editor Norton Commander integrado para crear un archivo utilizando el método abreviado de teclado MAYÚS - F4).

2. Conecte el archivo creado al proyecto en FPGA Express.

Para conectar un archivo a un proyecto, necesita crear el proyecto en sí:

Seleccione el menú Archivo / Nuevo.

Introduzca el nombre del proyecto.

Al solicitar archivos de proyecto, debe encontrar los archivos creados en el paso 1 con una descripción preparada del dispositivo (componente).

Cuando los archivos del proyecto están conectados correctamente, aparece una ventana dividida en dos partes: Fuentes de diseño y Chips (Fig. 1). Donde Design Sources es una ventana para trabajar con archivos de proyecto, Chips es una ventana para trabajar con dispositivos sintetizados.


Fig.1. Ventana de proyecto

Para facilitar el trabajo con los archivos del proyecto, la ventana Fuentes de diseño muestra los nombres, las ubicaciones de los archivos, así como la presencia de errores o imprecisiones de sintaxis y léxicos.

Cuando pasa el cursor y simultáneamente hace clic con el botón derecho del mouse en cualquiera de los nombres en esta ventana, aparece el siguiente menú contextual (Fig.2):

Actualizar proyecto: análisis del proyecto en busca de imprecisiones o errores.

Force Update Project: un análisis completo de todos los archivos del proyecto en busca de errores o inexactitudes.

Crear implementación: crear un modelo de dispositivo.

Editar archivo: editar un archivo.

Identificar fuentes: conectar el archivo al proyecto.

Nueva biblioteca: conecta tu propia biblioteca al proyecto.

Informe del proyecto: informe del proyecto (breve descripción en forma de archivo de texto externo).

Eliminar: elimina un archivo o biblioteca del proyecto.


Como en todas las aplicaciones con una interfaz fácil de usar, cada elemento del menú contextual está duplicado por un menú simple y botones en el panel.
Fig.3. Parte del archivo con un error

Editar un archivo es similar a los editores de texto, la única diferencia es que eliminar caracteres o líneas solo se puede hacer usando la tecla Retroceso.

Después de la corrección, para buscar otros errores existentes en esta ventana, debe hacer clic derecho y seleccionar Analizar archivo en el menú contextual activo (buscar imprecisiones o errores). Más allá del éxito edición, es recomendable guardar los cambios actuales.

Si no hay errores, entonces el archivo correspondiente tendrá su versión sintetizada (es decir, el modelo de dispositivo descrito en el formato interno FPGA Express, como se muestra en la Fig. 4).

Fig.4. Signo de una variante sintetizada del dispositivo CODER.

La versión sintetizada es un vínculo intermedio para la creación exitosa de un modelo de dispositivo digital.

4. Avance del trabajo

4.1 Usando cualquier editor de texto, escriba una descripción del dispositivo digital de acuerdo con su opción. Para evitar errores, el archivo debe tener la extensión *.vhd.

4.2 Cree un proyecto en el depurador FPGA Express y conecte el archivo escrito a él.

4.3 Después de conectar correctamente el archivo de descripción, cree un informe sobre su proyecto usando FPGA Express.

Nombre;

Objeto del trabajo;

Equipo utilizado;

Parte teórica;

Descripción de la secuencia de acciones al depurar su versión;

Impresión del informe del proyecto;

1. ¿Qué es la aplicación FPGA Express y cuáles son sus principales funciones?

2. ¿Cuáles son, en su opinión, las ventajas y desventajas del HDL como lenguaje de descripción de hardware?

3. ¿Cuál es la secuencia de acciones al depurar la descripción VHDL de su dispositivo?

11 12

Trabajo de laboratorio No. 2

CARACTERÍSTICAS CLAVE DEL DEPURADOR FPGA EXPRESS

1. Descripción general del puesto

1.1. El objetivo del trabajo es estudiar las posibilidades de síntesis y optimización del depurador FPGA EXPRESS.

El trabajo de laboratorio consta de tareas y trabajos de laboratorio. La tarea es revisar los principios de depuración de descripciones VHDL. La tarea de laboratorio implica ingresar su versión de un programa de ejemplo escrito en VHDL y aprender los principios de síntesis y optimización del dispositivo diseñado utilizando el depurador FPGA EXPRESS.

1.3. Equipo utilizado

Para realizar el trabajo de laboratorio se utiliza una computadora personal como una IBM PC, un monitor a color con adaptador gráfico VGA o superior y una impresora.

2. Tarea y pautas para realizarla

De acuerdo con el manual metodológico, familiarícese y repita los propósitos y capacidades del depurador de modelos de dispositivos digitales en lenguaje VHDL.

3. Parte teórica

Metodología de diseño

En la figura. La Figura 5 muestra un procedimiento de diseño típico que utiliza FPGA Express y un simulador VHDL. Cada paso de este modelo de diseño se describe en detalle.



Arroz. 5. Diagrama de bloques de las etapas de diseño.

13 14
1. Grabar una descripción del proyecto en VHDL. Esta descripción puede ser una combinación de elementos estructurales y funcionales. Esta descripción es utilizada por los simuladores FPGA Express y Synopsys VHDL.

2. Proporcionar controladores de prueba de lenguaje VHDL para el simulador. Los controladores proporcionan vectores de prueba para la simulación y recopilan datos de salida.

3. Modelado del proyecto mediante el simulador VHDL. Comprobación de la exactitud de la descripción del proyecto.

4. Usar FPGA Express para sintetizar y optimizar la descripción del diseño VHDL en una lista de red elemental. FPGA Express genera listas de red optimizadas que satisfacen las limitaciones de tiempo de la arquitectura FPGA seleccionada.

5. Utilizar el sistema de diseño FPGA (Design Manager) para comunicar una versión específica de la tecnología FPGA con el simulador VHDL. El sistema de diseño incluye los modelos de simulación y las interfaces necesarias para el diseño de un extremo a otro.

6. Simulación de una versión tecnológica específica del proyecto mediante un simulador VHDL. Es posible utilizar los controladores de simulación VHDL originales del punto 2, ya que las definiciones de módulo y puerto se conservan durante el proceso de traducción y optimización.

7. Compare el resultado de la simulación a nivel de elemento (elemento 6) con el resultado de la simulación de la descripción VHDL original (elemento 3) para verificar que la ejecución sea correcta.

Jerarquía del proyecto

FPGA Express admite límites jerárquicos definidos mediante construcciones estructurales VHDL. Estos límites conducen a dos resultados principales:

1. Cada objeto de diseño definido en la descripción VHDL se sintetiza por separado y se mantiene como un proyecto independiente. Esto respeta las restricciones de diseño y permite optimizar cada objeto por separado en FPGA Express.

2. Las implementaciones de componentes dentro de las definiciones VHDL se mantienen durante la entrada. El nombre de implementación que se asigna a cada objeto de usuario persiste hasta que se ejecuta a nivel de elemento.

Nota. FPGA Express no admite ni crea automáticamente una jerarquía de otras construcciones VHDL no estructurales, como bloques, procesos, bucles, funciones y procedimientos. Estos elementos de descripción de VHDL se traducen en el contexto de sus proyectos. Después de leer el diseño VHDL, puede agrupar la lógica de proceso, funciones o procedimientos dentro de la ventana de implementación FPGA Express.

La elección de límites jerárquicos tiene un impacto significativo en la calidad del proyecto sintetizado. Con FPGA Express, puede optimizar su diseño manteniendo sus límites jerárquicos. FPGA Express solo optimiza parcialmente la lógica entre módulos jerárquicos. La optimización total es posible en aquellas partes de la jerarquía de diseño que están comprimidas en FPGA Express.

En la figura 2 se muestra un ejemplo de la estructura jerárquica de un dispositivo complejo. 6

Arroz. 6. Estructura jerárquica

Tipos de datos

En VHDL, debes asignar un tipo a todos los puertos, señales y variables. El tipo de datos de un objeto está determinado por la operación que se le puede asignar. Por ejemplo, el operador AND está definido para objetos de tipo POCO pero no para objetos de tipo ENTERO. Los tipos de datos también son importantes a la hora de sintetizar un proyecto. El tipo de datos de un objeto determina su tamaño (ancho de bits) y su organización de bits. Elegir los tipos de datos correctos mejora significativamente la calidad del proyecto y ayuda a minimizar la cantidad de errores.

Restricciones de diseño

Es necesario describir las limitaciones cualitativas del módulo de diseño dentro de la ventana de implementación FPGA Express.

Selección de registro

La ubicación de los registros y circuitos de reloj es una decisión arquitectónica muy importante. Hay dos formas de definir registros en su definición VHDL. Cada uno de estos métodos tiene ciertas ventajas:

1. Implemente registros directamente en la descripción VHDL, seleccionando cualquier elemento deseado de la biblioteca FPGA. Los circuitos de reloj pueden tener una complejidad arbitraria. Se selecciona una arquitectura basada en flip-flops o latches. Las principales desventajas de este enfoque son:

La descripción de VHDL ahora es específica de la tecnología porque ha seleccionado bloques de construcción de la biblioteca de tecnología. Sin embargo, es posible aislar esta sección del proyecto como un objeto separado, que luego se vincula al resto del proyecto.

El programa está escrito más difícil.

15 16
2. Utilizar estructuras si Y esperar para inferir el flip-flop y los pestillos a partir de la descripción. Las ventajas de este enfoque son directamente opuestas a las desventajas del anterior. Al utilizar una descripción de registro lógico, un programa VHDL se vuelve independiente de la tecnología y más fácil de escribir. Este método permite a FPGA Express seleccionar el tipo de componente a describir en función de las restricciones. Por lo tanto, si se necesita un componente específico, se debe utilizar su implementación. Sin embargo, algunos tipos de registros y pestillos no se pueden describir de manera lógica.

Proyectos asincrónicos

Es posible utilizar FPGA Express para diseñar diseños asíncronos con pulsos de reloj múltiples y controlados. Sin embargo, aunque estos diseños son lógica (estadísticamente) correctos, es posible que no se modelen ni funcionen correctamente debido a las condiciones de carrera.

Construcciones del lenguaje

Otro componente de la política de síntesis VHDL es un conjunto de construcciones que describen un diseño, definen su arquitectura y producen consistentemente buenos resultados. Los registros se implementan mediante construcciones de componentes.

Trabajo de laboratorio No. 3.

MODELOS VHDL SIMULADOR MODELSIM

1. Descripción general del puesto

1.1. El objetivo del trabajo es familiarizarse con el simulador de modelos VHDL ModelSim.

El trabajo de laboratorio consta de tareas y trabajos de laboratorio. La tarea consiste en revisar los principios de depuración, síntesis y optimización de descripciones VHDL utilizando el depurador FPGA Express. La tarea de laboratorio implica ingresar una versión de un programa de ejemplo escrito en VHDL y simular y analizar su dispositivo usando el simulador ModelSim.

1.3. Equipo utilizado

Para realizar el trabajo de laboratorio se utiliza una computadora personal como una IBM PC, un monitor a color con adaptador gráfico VGA o superior y una impresora.

2. Tarea y pautas para realizarla

De acuerdo con el manual metodológico, familiarícese y repita las tareas y todas las características principales del depurador de modelos de dispositivos digitales en lenguaje VHDL.

3. Parte teórica

21 22
ModelSim es un sistema de modelado que le permite modelar descripciones presentadas en VHDL y HDL. En este caso, una condición necesaria para el modelado simple es la presencia de una descripción del modelo de dispositivo activo, es decir durante un cierto período de tiempo, deben ocurrir cambios en los estados lógicos en la entrada y, en consecuencia, en la salida de este modelo. Por ejemplo: hay una descripción del elemento elemental de Schaeffer (Fig. 10).

Arroz. 10. Esquema de un dispositivo digital activo.

Aquí, además de describir la estructura y función del elemento en sí, es necesario crear un dispositivo adicional que genere una cierta secuencia de estados de entrada lógicos (posiblemente la parte de entrada de la tabla de verdad) del elemento de Schaeffer.

Simulaciones en ModelSim

Si no hay errores en las etapas de conexión del archivo con el dispositivo activo original para la simulación, puede comenzar el proceso de simulación.

Dependiendo de los propósitos de la simulación, el sistema ModelSim proporciona: una consola para el muestreo temporal de la simulación, así como la capacidad de monitorear directamente casi todos los procesos clave que ocurren en el dispositivo (esto último se discutirá en el próximo trabajo de laboratorio). ).

Veamos los controles de modelado. En este sentido, para un control total sobre el proceso de modelado necesita: el menú principal Ejecutar y Opciones. En el menú Ejecutar, todos los elementos están destinados al control, y en el menú Opciones, está el elemento Opciones de simulación (configuración de parámetros de modelado privados).

Cuando activa el elemento Opciones de simulación, aparece un panel para ingresar parámetros de simulación (Figura 14).

Este panel contiene tres pestañas:

VSIM- modelado directo de parámetros. Aquí se configuran los siguientes parámetros:

Longitud de ejecución predeterminada: establece el tiempo mínimo de muestreo del proceso de modelado.

27 28
Límite de iteración: duración máxima de la iteración.

Suprimir advertencias: deshabilita/habilita la respuesta del sistema a las advertencias asociadas con varios tipos de imprecisiones.

Tipo de fuerza predeterminado: configura la capacidad de controlar el proceso de modelado (congelar (sin control) / conducir (control) / depositar (totalmente bajo control)).

Radix predeterminado: tipo de señal predeterminado (simbólico (simbólico) / binario (binario) / octal (octal) / decimal (decimal) / hexadecimal (hexadecimal)).

Figura 14 - Panel de opciones de simulación

Plaza bursátil norteamericana Acciones protectoras del sistema frente a diversos tipos de errores (Fig.15):

rción- Simulación de pausa. (Nota (comentario)/advertencia (error)).

Ignorar afirmaciones para: establecer límites para ignorar el sistema de protección. (Nota (comentario) / advertencia (inexactitud) / error (- error al configurar los parámetros para generar el archivo fuente en la ventana Fuente) / falla ("falla")).

acciones del sistema


4. Avance del trabajo

5. Direcciones

Parte teórica;

Descripción de la secuencia de acciones al configurar la descripción del dispositivo para modelar;

Conclusiones sobre el trabajo realizado.

5.2. Preguntas de prueba para trabajos de laboratorio.

1. ¿Cuál es la necesidad de utilizar sistemas de modelado como ModelSim?

2. ¿Cuáles son las deficiencias del sistema, si las hay?

3. ¿Cuál es en su opinión el ámbito de aplicación del sistema ModelSim?

29 30

Trabajo de laboratorio No. 4

MODELOS SIMULADORESIM

1. Descripción general del puesto

1.1. El objetivo del trabajo es adquirir habilidades para modelar dispositivos diseñados en el sistema ModelSim.

El trabajo de laboratorio consta de tareas y trabajos de laboratorio. La tarea consiste en repasar los principios de trabajo con el simulador ModelSim, dominados en el trabajo de laboratorio previo. La tarea de laboratorio consiste en conectar su versión de un programa de ejemplo escrito en VHDL y realizar una simulación y análisis completo del dispositivo diseñado utilizando ModelSim.

1.3. Equipo utilizado

Para realizar el trabajo de laboratorio se utiliza una computadora personal como una IBM PC, un monitor a color con adaptador gráfico VGA o superior y una impresora.

2. Tarea y pautas para realizarla

Revisar el material aprendido en lecciones anteriores.

3. Parte teórica


y salida) / Señales internas (señales internas)).

Para ello se creó en ModelSim un sistema de ventanas de información e información funcional (Menú principal Ver). La condición principal para el funcionamiento de todas las ventanas es un archivo fuente correctamente conectado con una descripción VHDL del dispositivo simulado.

Veamos los principios para trabajar con él:

1.Fuente- ventana con el contenido del archivo VHDL de origen (Fig. 16). Le permite establecer puntos de interrupción (esto requiere hacer doble clic con el botón izquierdo del mouse en el número de línea). Para cambiar el contenido de la ventana, debe activar el elemento Seleccionar archivo fuente... del menú Archivo principal (puede cambiar el archivo fuente solo a un archivo conectado al proyecto), o hacer doble clic con el botón izquierdo del mouse. en la ventana de diseño de informes y preguntas de prueba

5.1. El informe de laboratorio debe contener:

Nombre;

Objeto del trabajo;

equipo utilizado;Estructura sobre el nombre del archivo requerido. Nota: la ventana no permite editar archivos fuente.


Figura 16. Ventana de origen

2. Estructura - una ventana que contiene la estructura y subordinación de los archivos del proyecto (Fig. 17). Proporciona una función auxiliar para la ventana Fuente.

Arroz. 17. Ventana de estructura


3. variables - la ventana contiene todas las variables internas de las construcciones del lenguaje VHDL utilizadas para describir el modelo conectado actual (Fig. 18). Tiene sólo una función informativa.

4. Señales – una ventana que contiene una lista y valores de todos los puertos y señales de entrada/salida (Fig. 19). La ventana registra cualquier cambio en el contenido de todos los puertos y señales de E/S. Es posible eliminar, agregar o instalar un número limitado de señales o puertos en esta ventana, dependiendo

Valor- valor de la señal actual.

Arroz. 21. Ventana de señal de fuerza

Demora- tiempo de retardo del valor de la señal actual (la escala del valor se indica a la derecha del campo de entrada).

Segundo valor valor: el siguiente estado de esta señal o puerto de E/S.

: Para ingresar exactamente el tipo de retraso antes de cambiar el valor actual, el valor recomendado es ese. Tenga en cuenta los errores de advertencia asociados con la simulación del dispositivo, re Retraso para el segundo valor- el valor se proporciona para el dispositivo que se está diseñando.

su estado para el siguiente (Segundo Valor). Nota: el valor de este campo debe ser igual a ambos retardos de señal.


Repetir cada - Este campo es un parámetro opcional para el modelado, porque Implica un período de repetición de cambios en el estado de un puerto de E/S o valor de señal. Un campo se incluye en los parámetros de cambio principales cuando se activa la casilla de verificación junto a él.

Nota: el valor de este campo debe ser necesariamente mayor que el valor del campo Retraso para el segundo valor, ya que el punto de referencia temporal inicial del proceso de modelado es común para todos los retrasos de la señal.

Amable- fijar el grado de autonomía de los cambios realizados. (Freeze (el sistema gestiona de forma autónoma los cambios) / Drive (posibilidad de control) / Deposit (control incontrolado por parte del diseñador)).

Para confirmar los parámetros ingresados ​​para cambios de señal o puerto de E/S, haga clic en el botón Aplicar.

Para configurar parámetros para cambios en otra señal, primero debe seleccionarla en la ventana Señales.

Es posible configurar una lista limitada de señales usando la ventana Señal, donde puede seleccionar las más necesarias, y el elemento Agregar a la lista (subelemento Señales seleccionadas (agrega un grupo seleccionado a la ventana Lista)). Además, todas las señales del proyecto actual (usando el subelemento Señales en Diseño), todas las señales activas en el momento del modelado (usando el subelemento Señales en Región) o señales que participan en cualquier flujo de información (usando la ventana Flujo de datos ) se puede agregar a la lista (seleccionando el flujo requerido) y el subelemento Señales de DataFlow...).

Nota.

El paso mínimo para registrar cambios en los valores de las señales se establece en los parámetros del proceso de simulación (Opciones.../ Opciones de simulación...). La ventana proporciona varias opciones relacionadas con registrar cambios de señal y guardar la tabla resultante en un archivo separado.

6. Proceso – una ventana que contiene el nombre y el estado de los procesos VHDL del dispositivo simulado actual (Fig. 23). Es posible mostrar procesos limitados cuando se utiliza el elemento Procesos en el menú principal de Opciones (es posible mostrar todos los procesos activos (Ver procesos activos) o procesos activos en el paso de modelado actual (iteración).

Arroz. 23. Ventana de proceso

7. Ola - la ventana requerida para mostrar los diagramas de tiempo de un conjunto específico de señales o puertos de entrada/salida (Fig. 24).

Arroz. 24. Ventana de onda

La ventana tiene todas las propiedades de un medio flexible para monitorear los cambios de señal dentro del marco de tiempo del proceso de modelado en sí. Junto con la ventana Señales y el elemento Agregar a forma de onda del menú principal Señales, esta ventana tiene la capacidad de definir una lista limitada de señales, el subelemento Señales seleccionadas (instalación de señales seleccionadas en la ventana Señales en la lista de trabajo), el subelemento Señales en región (monitoreo de señales activas en la iteración de simulación actual), subelemento Señales en diseño (instalación de todas las señales del proyecto), subelemento Señales de flujo de datos (instalación de señales que participan en el flujo de información seleccionado desde la ventana Flujo de datos )). Como todas las ventanas funcionales, esta ventana tiene la capacidad de trabajar con la lista de señales de salida (menús de las ventanas Cursor y Editar) y le permite controlar la salida de diagramas de tiempo (menús de las ventanas Zoom y Opciones). Una herramienta auxiliar adicional es un control deslizante (instalado en cualquier punto del diagrama usando el mouse), que fija el tiempo de simulación en la posición actual. Además, al cambiar la posición del control deslizante, si los valores de cualquiera de las señales cambian en la siguiente posición, los cambios correspondientes se registran en la lista de señales mostradas (a la izquierda de los diagramas, como se muestra en la Fig. 24).

8. Flujo de datos: una ventana que muestra la organización de todos los flujos de información presentes en el dispositivo simulado (Fig. 25).

Arroz. 25. Ventana de flujo de datos

Como la mayoría de las ventanas funcionales, esta ventana funciona junto con otras ventanas:

Señales (esta ventana le permite seleccionar la(s) señal(es) en cuestión para una mayor visualización de los flujos de información asociados a ella(s) en la ventana DataFlow).

Proceso (al usar esta ventana puede seleccionar un proceso para demostrar aún más sus flujos de información).

4. Avance del trabajo

4.1. Usando cualquier editor de texto, escriba una descripción del dispositivo digital de acuerdo con su opción. Para evitar errores, el archivo debe tener la extensión *.vhd.

4.2. Cree un proyecto en el sistema de modelado ModelSim y conéctele el archivo escrito y depurado en FPGA Express.

4.3. Después de conectar correctamente el archivo de descripción, instale el sistema para probar su dispositivo.

4.4. Realice pruebas y análisis completos de su dispositivo digital según su opción.

5. Instrucciones para la elaboración del informe y preguntas del Test

5.1. El informe de laboratorio debe contener:

Nombre;

Objeto del trabajo;

Equipo utilizado;

Parte teórica;

Descripción de la secuencia de acciones durante el proceso de análisis y modelación de su opción;

Impresión de todos los estados, todas las señales;

Una copia impresa de su archivo fuente;

Impresión de cronogramas y procesos;

Conclusiones sobre el trabajo realizado.

5.2. Preguntas de prueba para trabajos de laboratorio.

1. ¿Cuáles son las funciones principales de las ventanas Señales y Ondas?

2. ¿Qué importancia tiene la visualización de la estructura de los flujos de información en un dispositivo durante el diseño?

37 38
3. ¿Dispositivos con qué tipos de señales, en su opinión, se pueden probar en el simulador ModelSim?

Trabajo de laboratorio No. 5.

PRESENTACIÓN DEL LENGUAJE VHDL

1. Descripción general del puesto

Imagine que el procesador, en lugar de ejecutar un conjunto de instrucciones, se reconstruya para cada programa y convierta el algoritmo directamente en hardware. ¡Así es exactamente como funcionan los FPGA! En este artículo, le diré cómo esto es posible y le presentaré diferentes formas de diseñar FPGA.

Tal vez sepas cómo piratear dispositivos en el otro lado del mundo o codificar aplicaciones web geniales, pero ¿entiendes cómo funciona tu computadora? Y no estamos hablando de qué hace el sistema operativo, cómo funciona el recolector de basura en Java o cómo funciona el compilador de C++. Me refiero al nivel de hardware más bajo, por debajo del lenguaje ensamblador: cómo funciona el hardware.

¿Qué sucede en el chip de la tarjeta de red cuando llega un paquete Ethernet? ¿Cómo se transfiere 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 basados ​​en hardware más rápidos?

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

INFORMACIÓN

FPGA significa matriz de puertas programables en campo, en ruso: matrices de puertas programables por el usuario, FPGA. En términos más generales, se denominan FPGA: circuitos integrados lógicos programables.

Con FPGA, puede literalmente diseñar microcircuitos digitales mientras está sentado en casa con una placa de depuración disponible sobre la mesa y software de desarrollo por un par de kilos de dinero. Sin embargo, también existen opciones gratuitas. Nota: es diseñar, no programar, porque la salida es un circuito digital físico que ejecuta un algoritmo específico a nivel de hardware, y no un programa para el procesador.

Funciona algo como esto. Hay una placa de circuito impreso ya preparada con un conjunto de interfaces que están conectadas a un chip FPGA instalado en la placa, como una placa fría 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 chip para procesar 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 cargarlo en la FPGA, creará el circuito digital que necesitamos. Por ejemplo, de esta manera puede crear un controlador Ethernet 100G que recibirá y procesará paquetes de red.

Una característica importante de FPGA es su reconfigurabilidad. Hoy necesitamos un controlador Ethernet de 100G y mañana se podrá utilizar la misma placa para implementar cuatro interfaces Ethernet de 25G independientes.

Hay dos grandes 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 entró en el mercado recientemente, en 2015, tras absorber Altera, que se fundó al mismo tiempo que Xilinx. Las tecnologías Xilinx y Altera son similares en muchos aspectos, al igual que sus entornos de desarrollo. Trabajé más a menudo con los productos Xilinx, así que no se sorprenda por su constante mención.

Mientras eran vacaciones, hice un pequeño proyecto en Verilog, que llevaba mucho tiempo queriendo probar.

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

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

Resultado de síntesis del ciclón IVE

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

chip EP4CE6E22A7
elementos lógicos - 301 (5%)
alfileres - 41 (45%)
memoria - 65536 bits (24%)
frecuencia en el peor de los casos (125 C) - 151 MHz.

La memoria es de 8 KB, este es el búfer real donde se escriben los datos. Con dos canales de 16 bits cada uno, el resultado es 32 bits por muestra y 2048 muestras. Decidí que esto era suficiente, aunque el búfer se podía ampliar al menos a todo el volumen.

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

El número de elementos lógicos es completamente insignificante para una FPGA de este tipo, es decir Si lo deseas, puedes agregar muchas otras cosas allí, especialmente porque todavía quedan 51 pines.

Hay una familia Cyclone 10 más nueva.

Resultado de síntesis del ciclón 10

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

viruta 10CL006YE144C8G
elementos lógicos - 289 (5%)
alfileres - 41 (46%)
memoria - 65536 bits (24%)
frecuencia en el peor de los casos (85 C): 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, el Cyclone 10 puede acomodar un proyecto más complejo. Todo lo demás está aproximadamente 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 lo sabe) puede exclamar: ¡no, no es así! La familia MAX es CPLD, no FPGA, ¡y confundir estos conceptos es claramente poco profesional!

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

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

microcircuito 10M02SCE144A7G.
elementos lógicos - 298 (13%)
alfileres - 41 (41%)
memoria - 65536 bits (59%)
frecuencia en el peor de los casos (125 C) - 153 MHz.

Vemos que los indicadores absolutos se mantuvieron casi iguales, solo aumentó el grado de llenado del cristal, lo cual es comprensible: 2304LE versus 6272 LE.

¿Puedo 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ás una SRAM rápida externa.

Para conectar SRAM necesitarás 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 cabe en un CPLD en 240 LE, pero tal vez sí quepa en un 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 hay muy poco margen de expansión.

Ventajas de esta solución: posiblemente un precio más bajo (incluso teniendo en cuenta el chip SRAM adicional), desventajas: mayor complejidad del circuito y el área de la placa.

Problema de precio

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 velocidad y el rango de temperatura (comercial). Dado que tenemos una reserva de frecuencia triple, estos números no son en absoluto importantes para nosotros.

EP4CE6E22C8N - 456,55 R (Promelektronika, Ekb, minorista)
10CL006YE144C - 754.71 (Quinto elemento, San Petersburgo, mayorista)
10M02SCE144C8G - 456 R (Elitan, Ekb, mayorista)
EPM570F100C5N - 368 R (alta tecnología, San Petersburgo) + memoria (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92,51 R (Promelektronika, Ekb, minorista)

Por supuesto, puedes encontrarlo más barato, estos son solo precios minoristas en la tienda, pero la proporción será aproximadamente la misma.

Se puede observar que la opción con CPLD no tiene ninguna ventaja en términos de precio, aunque tiene muchas desventajas. El resto de opciones son aproximadamente iguales, 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; aún no la han traído todos los distribuidores.

Personalmente, me gusta más la opción en MAX 10. Tiene una ventaja: no es necesario cargar la configuración FPGA al inicio. En la versión Cyclone 4, deberá cargar la configuración 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 mediante JTAG y nunca quitar la energía del chip. Escuché que alguien hizo esto, no sé si es una broma o no, pero definitivamente no lo haré.

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

Es posible otra opción no trivial: no instalar ningún microcontrolador, sino flashear algún tipo de procesador integrado en el FPGA. Pero esta no es una muy buena opción, quizás porque... En este caso, definitivamente necesitará ROM y RAM externas, así como, como mínimo, 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.

Escribiré sobre las funciones que realiza este firmware en la próxima publicación.




Arriba