Ejemplos de diseño para grandes proyectos fpga. FPGA. Entendamos cómo funcionan los circuitos lógicos programables y por qué son buenos. Descripción de las señales de reinicio.

FPGA (Circuito Integrado Lógico Programable) es un circuito integrado diseñado para construir circuitos digitales a partir de una descripción en un lenguaje de programación especial. En otras palabras, una FPGA es un chip que parece contener un montón de elementos como 74HCxx. En la etapa de programación de la FPGA se determinan exactamente cuáles serán estos elementos lógicos, qué conexiones habrá entre ellos y qué conexiones tendrá el circuito resultante con el mundo exterior.

Nota: Por lo que pude descubrir, en ruso hoy en día los términos FPGA y FPGA (Field-Programmable Gate Array, User-Programmable Gate Array) se consideran intercambiables, lo que se utilizará más adelante en el texto. Sin embargo, vale la pena conocer la existencia de un punto de vista alternativo, según el cual FPGA (FPGA) es una de las variedades de FPGA (PLD, dispositivo lógico programable).

Conceptos básicos de FPGA

Para programar FPGA se utilizan lenguajes de descripción de hardware (HDL, Hardware Description Language). Entre ellos, los más populares son Verilog (y sus dialectos, en particular SystemVerilog), así como VHDL. Los idiomas son similares en muchos aspectos, pero tienen una sintaxis diferente y difieren en algunos detalles. Si Verilog es la C del mundo de la descripción de hardware, entonces VHDL es, en consecuencia, Pascal. Que yo sepa, VHDL es algo menos popular, particularmente debido a su verbosidad en comparación con Verilog. Entre las ventajas (o desventajas, según quién) de VHDL podemos nombrar estricto escritura estática. Verilog a veces permite la conversión de tipos implícita. Para continuar con la analogía con C y Pascal, los lenguajes no son tan diferentes como para que no puedas aprenderlos ambos.

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

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

¿Xilinx o Altera?

Como dicen, el mejor Linux es el que usa tu compañero gurú de Linux.

Mi amigo, un gurú de FPGA en la persona de Dmitry Oleksyuk, me aconsejó comenzar con la placa de desarrollo Arty Artix-7 de Digilent. La FPGA utilizada es Artix-7 de Xilinx. Digilent en sí no realiza envíos a Rusia, pero el dispositivo también está disponible en AliExpress, aunque con un margen de beneficio notable (el precio oficial es de 99 dólares). También se vende en eBay. Se trata de una placa bastante potente que, sin embargo, cuesta un dinero bastante razonable.

¡Hecho de la diversión! Si sólo quieres programar en Verilog o VHDL, estrictamente hablando, no necesitas comprar ninguna placa FPGA. Al principio, puede limitarse al simulador, cuyo trabajo se analizará a continuación.

Una de las características interesantes de la placa es la disposición de los zócalos de manera compatible con los escudos Arduino. También se incluye con la placa un inserto con el que puede obtener una licencia para Vivado, que abre todas sus capacidades. La licencia es válida por un año desde el momento de la activación y también está vinculada a una computadora por tipo de sistema operativo y dirección MAC.

A la entrega. He oído que los dispositivos con FPGA a bordo tienen muchas posibilidades de no pasar por la aduana. La tienda AliExpress, cuyo enlace proporcioné anteriormente, entrega tablas a Rusia a través del servicio de mensajería SPSR. Para pasar por la aduana, era necesario rellenar un formulario online con los datos del pasaporte (solo datos, sin fotografía) y un teléfono de contacto, como exige la legislación rusa vigente. Después de esto, la tabla fue entregada por mensajería directamente en la puerta sin hacer preguntas.

Instalación de Vivado

El entorno de desarrollo Vivado está disponible para descargar desde el sitio web de Xilinx. Esté preparado mentalmente para el hecho de que antes de descargar tendrá que registrarse y completar un formulario bastante detallado sobre usted. Descargue el archivo llamado “Vivado HLx 2017.2: Descarga de un solo archivo del instalador de todos los sistemas operativos”. No lo confunda accidentalmente con algunas “Soluciones Vivado Lab”, esto no es en absoluto lo que necesita. El archivo pesa más de 20 GB, por lo que debemos tener paciencia.

Desempaquete el archivo y ejecute el instalador. Instale la edición del sistema Vivado HL. Su versión completa ocupará 47 GB de espacio en disco. Personalmente, desmarqué el kit de desarrollo de software y dejé el soporte solo para dispositivos de la Serie 7, lo que redujo el tamaño a 12 GB. Mirando un poco hacia adelante, notaré que esta configuración resultó ser más que suficiente.

Antes de iniciar Vivado, debe agregarle soporte para Arty Artix-7, ya que de fábrica no sabe nada sobre esta placa. Se hace algo como esto:

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

También descargamos y guardamos el archivo Arty_Master.xdc en algún lugar. Lo necesitaremos más tarde. El archivo contiene una descripción de los LED, interruptores, etc. ubicados en la placa. Sin él, los LED parpadeantes en Verilog no serán fáciles.

Primer proyecto en SystemVerilog

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

En primer lugar, agregue el archivo XDC descargado previamente al proyecto. Cópielo al directorio con el proyecto. Luego decimos Archivo → Agregar fuentes... → Agregar o crear restricciones → Agregar archivos, busca una copia del archivo, haz clic en Finalizar. En el árbol de archivos del proyecto (Fuentes), en el grupo Restricciones, aparecerá el archivo Arty_Master.xdc, o como le hayas llamado a la copia. Ábralo y descomente todas las líneas en los grupos Señal de reloj, Interruptores y LED.

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

En el árbol de fuentes encontramos un nuevo archivo hello.sv, estará en el grupo Fuentes de diseño. Abra y escriba el siguiente código:

`escala de tiempo 1ns/1ps

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

siempre @ (posege CLK100MHZ)
comenzar
si (sw[ 0 ] == 0 )
comenzar
condujo<= 4"b0001 ;
fin
demás
comenzar
condujo<= 4"b0000 ;
fin
fin

módulo final

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

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

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

Es hora de flashear nuestro tablero. Decimos Flujo → Ejecutar implementación, luego Flujo → Generar Bitstream. Conectamos la placa a la computadora vía USB, en Vivado decimos Flow → Abrir Administrador de Hardware → Abrir destino → Conexión automática → Programar dispositivo. Deberá especificar la ruta al archivo de bits. Para mi fue el siguiente:

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

Decimos Programa. Ahora el LED LD4 en la placa se enciende si se baja el interruptor SW0 (vea la foto de la placa arriba). Si se levanta el interruptor, el LED no se enciende. Sencillo, claro, pero es “hola mundo”, ¿qué esperabas? :)

Simulación

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

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

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

Para este error, Google solo encontró todo tipo de tonterías del estilo "intenta desactivar tu antivirus". Como resultado, agregar el indicador -v 2 al script ~/opt/xilinx/Vivado/2017.2/bin/xelab ayudó a resolver el problema. Con su ayuda, descubrí que Clang, cuyo binario lleva consigo Vivado, falla con el siguiente error:

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

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

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

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

Por analogía con cómo creamos hello.sv anteriormente, creamos un nuevo archivo hello_sim.sv en el grupo Fuentes de simulación. En el archivo escribimos el siguiente código:

`escala de tiempo 1ns/1ps

módulo hola_sim();
clic lógico_t;
lógica [ 3 : 0 ] sw_t;
lógica [ 3 : 0 ] led_t;

Hola hola_t(clck_t, sw_t, led_t);

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

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

módulo final

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

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

Se puede observar que cuando sw es cero, led es uno y viceversa. En este caso, todos los cambios ocurren en el borde de la señal del reloj. El programa parece estar funcionando correctamente. Bueno, nada recayó en las afirmaciones, lo que parece insinuar.

Conclusión

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

  • Si está interesado en detalles sobre el hardware, preste atención a

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 para una FPGA de este tipo es completamente insignificante, 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 (¿todo el mundo sabe 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.

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 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 ver 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.

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 hackear 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 la ayuda de 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 dólares. 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.

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 simular 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 descripciones de niveles mixtos de este tipo, 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 de diseño tradicional 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. Mediante el uso 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 del 1 al 15, entonces se producirá un error al asignarles el valor 0. El uso incorrecto de los tipos es la principal fuente de errores al redactar descripciones. 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.


Figura 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 (buscar inexactitudes o errores) en el menú contextual activo. 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;

Objetivo del trabajo;

Equipamiento usado;

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. Equipamiento usado

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 Fig. 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 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 VHDL se traducen en el contexto de sus proyectos. Después de leer el diseño de 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 utilizando 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. Equipamiento usado

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 funciones 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 en sí.

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: configuración de 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 una descripción de 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. Equipamiento usado

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ú principal Archivo (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;

Objetivo 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 - 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 construcciones de variables internas 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.


Repite 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 de control

5.1. El informe de laboratorio debe contener:

Nombre;

Objetivo del trabajo;

Equipamiento usado;

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

IMPLEMENTACIÓN DEL PROYECTO SOBRE FPGA

Después de probar el circuito lógico mediante modelado funcional, es necesario colocarlo en el chip. Luego realizar una simulación del circuito teniendo en cuenta los retrasos reales de los elementos obtenidos tras colocar el circuito en el chip. Si es necesario, ajuste las soluciones resultantes. Después de lo cual el circuito se carga en la FPGA y se prueba en el banco.

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

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

    Se desarrolla un diagrama de dispositivo y se ingresa en XILINX.

    Se realiza la IMPLEMENTACIÓN (traducción, formación de circuitos mediante extracción de elementos de biblioteca, optimización, colocación en el chip).

    Programación.

  1. Memoria asociativa. Organización, método de muestreo, diferencias con el almacenamiento de direcciones.

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

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

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

La búsqueda de información se realiza en paralelo en todas las celdas comparando la solicitud con la característica asociativa de cada celda.

El resultado de la búsqueda se genera mediante un circuito combinacional especial que genera señales que notifican sobre la ausencia de palabras que cumplan las condiciones de búsqueda, sobre la presencia de una sola palabra, sobre la presencia de varias palabras que tienen tal característica asociativa.

Después de generar y procesar las señales de advertencia, el circuito de control lee la información necesaria. Al escribir, se encuentra una celda libre según el valor del bit de ocupación y la información se escribe en la primera celda libre encontrada.

El dígito de ocupación se verifica configurando el enésimo dígito (dígito de ocupado) de la máscara. Al utilizar circuitos combinacionales adicionales en la memoria asociativa, se pueden realizar varias operaciones lógicas, determinando el número máximo o mínimo, el número de palabras que tienen la misma característica asociativa, etc. Las celdas de memoria de un dispositivo de almacenamiento asociativo deben ser elementos de la memoria estática; en la memoria asociativa, se accede a todas las celdas simultáneamente y no deben ser interrumpidas por ciclos de regeneración. La memoria asociativa es la más rápida, pero muy cara, ya que requiere la introducción de un circuito de comparación adicional que permita buscar cada celda de memoria. Por lo tanto, dicha memoria generalmente no se usa en su forma pura y los dispositivos de memoria de tipo caché de alta velocidad generalmente se implementan como parcialmente asociativos.

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

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

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

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

De las conferencias:

Dispositivos de almacenamiento asociativo

La diferencia fundamental es que el sistema de recuperación de información de ellos no se realiza según una dirección única donde se encuentra la información, sino según una determinada característica, que, de hecho, forma parte de la información que se busca.

Información

Una etiqueta es un rasgo distintivo, por coincidencia con el cual se obtiene una información.

Diagrama simplificado de una memoria asociativa:

La zona de almacenamiento es una memoria direccionable con celdas numeradas que almacena información y etiquetas.

Para acceder a la memoria asociativa, se coloca una muestra de la etiqueta deseada en el registro de solicitudes. El esquema de comparación compara la consulta. Se establece una coincidencia en el registro de coincidencias donde la etiqueta de la memoria coincidió con la muestra. Las reacciones son posibles (no hay coincidencias; hay al menos una coincidencia; en este caso, la celda encontrada se coloca en el registro de datos; múltiples coincidencias: el CS debe decidir qué celda obtener para su procesamiento).

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




Arriba