Unidad 5. Lenguajes De Descripción De Hardware - Us

Transcription

Unidad 5. Lenguajes de descripción dehardwareCircuitos Electrónicos DigitalesE.T.S.I. InformáticaUniversidad de SevillaJorge Juan Chico jjchico@dte.us.es 2010-2019Esta obra esta sujeta a la Licencia Reconocimiento-CompartirIgual 4.0 Internacional de Creative Commons. Para ver unacopia de esta licencia, visite http://creativecommons.org/licenses/by-sa/4.0/ o envíe una carta Creative Commons, PO Box1866, Mountain View, CA 94042, USA.Departamento de Tecnología Electrónica – Universidad de Sevilla

Contenidos Lenguajes de descripción de hardware Tipos de descripciones Estructura de una descripción Verilog Verilog: sintaxis y estructuras principales Banco de pruebas y simulación Síntesis desde LDH en FPGA Herramientas de diseño básicasDepartamento de Tecnología Electrónica – Universidad de Sevilla

Bibliografía Lecturas recomendadas:–Libro de LaMeres –Curso Verilog basado en ejemplos [web] 5.1, 5.2, 5.3: introducción a los lenguajes de descripción de hardware y al flujo dediseño digital moderno.Unidad 1: introducciónUnidad 2: bancos de prueba.Unidad 3: circuitos combinacionales.Referencia (consultar en caso de dudas):–LaMeres 5.4 a 5.7: lenguaje Verilog, descripciones funcionales, estructuralesy primitivas lógicas.–Verilog HDL Quick Reference Guide (Verilog-2001 standard)Departamento de Tecnología Electrónica – Universidad de Sevilla

¿Qué son los lenguajes de descripción dehardware (LDH)? Lenguajes formales para describir el comportamiento de un circuitoelectrónico (digital).Similar a un lenguaje de programación (software) pero con diferenciasnotables:–La mayoría de las expresiones se “ejecutan” concurrentemente.–Cada expresión o “instrucción” corresponde a la operación de un bloque decircuito.//// ANDAND operationoperationxx aa && b;b;//// ORORyy aaoperationoperation b;b;//// CombinationalCombinational functionfunction zz xy'xy' x'yx'yzz xx && y x&y; y x & y;Departamento de Tecnología Electrónica – Universidad de Sevilla

¿Por qué son útiles los LDH? Simulación– A partir de la descripción del circuito es posible simular su comportamientomediante herramientas informáticas (simuladores) para comprobar sucorrecto funcionamiento antes de construir el circuito real.Síntesis automática–Construcción del circuito a partir de su descripción de forma automáticaempleando herramientas informáticas.–Equivalente a la compilación del software.–Permite simplificar el diseño digital–¡Cuidado! El diseñador debe conocer lo que las herramientas pueden y nopueden hacer.Departamento de Tecnología Electrónica – Universidad de Sevilla

VHDL vs Verilog VHDL––– VerilogSintaxis más compleja, similar aADA.–Sintaxis más simple, similar a C.–Más fácil de aprenderSintaxis más estricta: reduce laposibilidad de errores.–Revisiones del lenguajeMejor soporte para diseñosgrandes y complejos. Verilog– 1995, 2001, 2005System Verilog– 2005, 2009, 2012, 2017Tanto VHDL como Verilog están bien soportados por losfabricantes de hardware y pueden usarse indistintamente eincluso combinarlos en el mismo proyecto. La elección de unou otro depende a menudo del gusto personal.Departamento de Tecnología Electrónica – Universidad de Sevilla

Ejemplo: votador avoterb–z cExpresión lógicaExpresión en Verilog–abc000001010011z00011000101111011111z ab ac bcz a&b a&c b&c;modulemodule voter(voter(outputoutput z,z,inputa,input a,inputinput b,b,inputcinput c););assignassign zz a&ba&b a&ca&c b&c;b&c;endmoduleendmoduleDepartamento de Tecnología Electrónica – Universidad de Sevilla

Tipos de descripciones – assignassign zz a&ba&b a&ca&c b&c;b&c;Funcional (asignación continua)Describe una función combinacionalmediante una expresión lógica.Procedimental (bloques always)–Permite usar estructuras de control.–Descripción algorítmica similar alsoftware.–Facilita la descripción de funcionescomplejas.abEstructural–alwaysalways @(a,@(a, b,b, c)c)ifif (a(a 1)1)ifif (b(b 11 cc 1)1)zz 1;1;elseelsezz 0;0;elseelseifif (b(b 11 &&&& cc 1)1)zz 1;1;elseelsezz 0;0;Describe la interconexión de módulosde circuito.–Equivalente al dibujo del circuito.–Verilog reconoce las puertas lógicascomo módulos básicos.cout1and1and3and2out3or1zout2wirewire out1,out1, out2,out2, out3;out3;andand and1and1 (out1,(out1, a,a, b);b);andand2(out2,b,c);and and2 (out2, b, c);andand and3and3 (out3,(out3, a,a, c);c);oror1(z,out1,out2,or or1 (z, out1, out2, out3);out3);Departamento de Tecnología Electrónica – Universidad de Sevilla

Estructura de una descripción Verilog Directivas del preprocesador timescale timescale 1ns1ns // 1ps1ps Declaración del módulo//////////// –Nombre del módulo–Puertos (conexiones) de entrada ysalida modulemodule cvoter(cvoter(inputinput wirewireinputwireinput wireinputinput wirewireinputwireinput wireoutputoutput regreg););Declaración de señales–Nombre y tipo de señales internasDescripción del diseño–Estructuras de procesamiento–Pueden mezclarse tipos dedescripción–x,x,a,a,b,b,c,c,zzwirewire v;v;assignassign vv a&ba&b b&cb&c a&c;a&c;Cualquier número de módulos puededescribirse en un único archivoComentariosModule:Module: cvotercvoterConditionalConditional votingvoting circuitcircuitzz ab bc acifab bc ac if x 1x 1alwaysalways @(*)@(*)if(xif (x 1)1)zz v;v;elseelsezz 0;0;endmoduleendmodule//// cvotercvoter//, /* */Departamento de Tecnología Electrónica – Universidad de Sevilla

Sintaxis de VerilogVerilog HDL Quick Reference Guideby Stuart Sutherlandhttp://sutherland-hdl.com/pdfs/verilog 2001 ref guide.pdfDepartamento de Tecnología Electrónica – Universidad de Sevilla

Verilog: puertos y señales Tipos de señales básicos–– wire: Representa una conexiónpermanente. Se usa para conectarmódulos y con “assign”.reg: Representa una variable quepuede asignarse varias veces. Se usaen procedimientos (“always”).Para cada puerto de entrada o salidase crea automáticamente una señalinterna con el mismo nombreLos tipos de las señales puedendeclararse en la lista de puertos o enel cuerpo del módulo. Un puerto nodeclarado se considera de tipo “wire”modulemodule voter(voter(inputinput wirewireinputinput wirewireinputinput wirewireoutputoutput regreg););a,a,b,b,c,c,zzalwaysalways @(a,@(a, b,b, c)c)if(a 1)if (a 1)ifif (b(b 11 zz 1;1;elseelsezz 0;0;elseelseifif (b(b 11 &&&&zz 1;1;elseelsezz 0;0;endmoduleendmodulecc 1)1)cc 1)1)//// votervoterDepartamento de Tecnología Electrónica – Universidad de Sevilla

Verilog: procedimientos Describen el comportamiento de un circuito mediante estructuras decontrol: comparaciones, toma de decisión, bucles, etc. Similar al software, pero representa algo distinto. Dentro de los procedimientos sólo se asignan variables (tipo reg) Tipos de procedimientos principales:–initial –Se evalúa una sola vez.Útil principalmente en los bancos de pruebas de simulación.always Se evalúa constantementeLista de sensibilidad: permite controlar cuándo se evalúa un procedimiento:cuando cambia una señal, etc.Departamento de Tecnología Electrónica – Universidad de Sevilla

Verilog: concurrencia Las siguientes estructuras describen y se evalúan (en simulación) deforma concurrente:–Asignaciones continuas–Procedimientos–Módulos instanciadosDepartamento de Tecnología Electrónica – Universidad de Sevilla

Banco de pruebas y simulación Un banco de pruebas (testbench) es un módulo que contiene:–Un circuito (otro módulo) que va a ser simulado: Unit Under Test (UUT)–Sentencias Verilog que generan señales de entrada para la UUT y paracomprobar el correcto funcionamiento de la misma.–Directivas del simulador Verilog para controlar opciones de simulación:resolución temporal, final de la simulación, generación de resultados, etc.Características específicas de módulos de bancos de pruebas–Un módulo de banco de pruebas no está pensado para ser implementado,sólo para ser simulado.–Incluye sentencias Verilog que sólo son útiles para simulación. Ej: “initial”.–Un módulo de banco de pruebas no tiene entradas ni salidas (externas).33Departamento de Tecnología Electrónica – Universidad de Sevilla

Proceso de diseño usando herramientasCAD (Computer-Aided Design)Descripción verbaldel problemaTraducciónDescripción en LDHBanco de pruebasSimulaciónno¿ok?yesSíntesis automáticaCircuitoConfiguraciónDepartamento de Tecnología Electrónica – Universidad de Sevilla

FPGA FPGA–Field Programmable Gate Array–Colección de dispositivos lógicos einterconexiones configurables.Configurable Logic Block (CLB)– Input-Output Block (IOB)– Se configura para hacer una funcióndeterminada: AND, OR, XOR, etc.Se configuran para actuar como entradas osalidas y conectar a señales internasInterconexiones–Se configuran para conectar los CLB avoluntadhttps://es.wikipedia.org/wiki/Field Programmable Gate ArrayDepartamento de Tecnología Electrónica – Universidad de Sevilla

FPGADepartamento de Tecnología Electrónica – Universidad de Sevilla

Síntesis en FPGA Síntesis de LDH sobre FPGA–El código LDH es analizado y las estructuras del lenguaje se convierten(mapping) en dispositivos lógicos equivalentes.–Se seleccionan los CLB adecuados (placement) y se configuran para hacerla función de los dispositivos lógicos necesarios.–Se programan las interconexiones para conectar los dispositivos (routing).Restricciones–Sólo se puede sintetizar un subconjunto de las estructuras disponibles en unLDH.–Cada fabricante de FPGA tiene sus propias restricciones.REGLA DE OROSi el diseñador no puede imaginar cómo va a ser el circuitogenerado, la herramienta tampoco puede.Departamento de Tecnología Electrónica – Universidad de Sevilla

Síntesis en FPGAmodulemodule voter(voter(inputinput wirewire a,a, b,b, c,c,outputregz);output reg z);alwaysalways @(a,@(a, b,b, c)c)if(a 1)if (a 1)ifif (b(b 11 cczz 1;1;elseelsezz 0;0;elseelseifif (b(b 11 &&&& cczz 1;1;elseelsezz 0;0;endmoduleendmodule400Kpuertasequivalentes 1)1) 1)1)and1Síntesis ikimedia.org/wiki/File:Fpga xilinx Fpga1a.gifDepartamento de Tecnología Electrónica – Universidad de Sevilla

Síntesis sobre t)and3Enrutado(routing)Departamento de Tecnología Electrónica – Universidad de Sevilla

Herramientas de diseño básicas Editor de texto– Compilador de Verilog– Análisis del código. Detección de errores de sintaxis.Simulador– Escritura de código Verilog.Simulación de bancos de pruebas.Herramienta de síntesis–Implementación del circuito en una determinada tecnología.–Depende del suministrador de la tecnología.–Ejemplo: FPGAEntorno integrado–Incluye todo lo anterior.–A veces suministrado por el propietario de la tecnología.–Existen entornos integrados en la WWW.Departamento de Tecnología Electrónica – Universidad de Sevilla

Icarus Verilog Gtkwave Icarus– Gtkwave– Compilador y simulador Verilog pequeño y simpleVisor de formas de onda: visualización de resultados de simulación.Ed. texto Icarus Gtkwave: entorno de desarrollo Verilog básico–Interfaz mediante línea de comandos–Ligero icarus (1,5MB) Gtkwave (2,5MB) 4MB–Fácil de usar–Software librehttp://iverilog.icarus.com/Departamento de Tecnología Electrónica – Universidad de Sevilla

Icarus Verilog en GNU/Linux Icarus y Gtkwave disponibles en la mayoría de distribuciones Linux Instalación en Debian/Ubuntu:– Paquetes "iverilog" y "gtkwave"Editor de textos–Vale cualquier editor de texto plano.–Ej. Gedit Estándar en UbuntuIncluye resaltado de sintaxis de Verilog. sudo apt-get install iverilog gtkwave.Departamento de Tecnología Electrónica – Universidad de Sevilla

Icarus Verilog en MS-Windows(TM) Busca instalador iverilog gtkwave en www.bleyer.org–Recomendado: instalar el software en una ruta sin espacios–Ejemplo: “c:\iverilog\”Abrir un terminal (cmd) y probar instalación:– Ejecutar “iverilog” en el terminal.Si no se encuentra el comando “iverilog” hay que añadir las rutas a loscomandos manualmente. Buscar “agregar rutas a la variable path” parala versión de Windows adecuada. Añadir estas Editor de textos–Usar un buen editor de textos (no el Bloc de Notas -Notepad-)–Ej. Notepad (notepad-plus-plus.org), Atom, etc.Departamento de Tecnología Electrónica – Universidad de Sevilla

Icarus Verilog Gtkwavesesión típica (Linux) cd 02-1 votador1 lsvotador tb.vvotador.v iverilog votador.v votador tb.v vvp a.outVCD info: dumpfile votador tb.vcd opened for output. lsa.outvotador tb.vvotador tb.vcdvotador.v gtkwave votador tb.vcd &Departamento de Tecnología Electrónica – Universidad de Sevilla

Entornos integrados de Xilinx Xilinx– Uno de los principales fabricantes de FPGA.Dos entornos disponibles y parecidos–ISE: modelos de FPGA “antiguos”.–Vivado: nuevo entorno. Sólo para modelos FPGA recientes.Implementación sólo sobre FPGA's de Xilinx.Entorno integrado incluyendo gestor de proyectos, editor de código,simulación, síntesis y mucho más. Completo pero complejo (no mucho) para principiantes. Pesado de descargar ( 5GiB) e instalar ( 10GiB). Es necesario registrarse. Licencias gratuitas para uso académico con limitaciones. Versiones para MS-Windows(TM) y GNU/Linux.Departamento de Tecnología Electrónica – Universidad de Sevilla

Entorno en WWW: EDAPlayground Permite hacer y simular diseñosen Verilog (y otros lenguajes).Varios simuladores disponibles,incluyendo Icarus Verilog.Incluye editor de texto y visor deformas de onda.Requiere registro para simular yguardar o de Tecnología Electrónica – Universidad de Sevilla

Curso Verilog basado en ejemplos Ejemplos comendados de diseño en VerilogIncluye la descripción en Verilog de todos la mayoría de los conceptostratados en la asignatura.–Circuitos combinacionales.–Circuitos secuenciales.–Máquinas de estados.–Memorias.–Aplicaciones prácticas.curso-verilog.vDepartamento de Tecnología Electrónica – Universidad de Sevilla

Resumen. LDH Descripción del comportamiento de circuitos digitales.Posibilidad de descripción desde varios puntos de vista: estructural,funcional, procedimental.Permite la simulación del sistema antes de su implementación(fabricación)Permite automatizar total o parcialmente el proceso de implementaciónusando herramientas informáticas.Departamento de Tecnología Electrónica – Universidad de Sevilla

Departamento de Tecnología Electrónica - Universidad de Sevilla Bibliografía Lecturas recomendadas: - Libro de LaMeres 5.1, 5.2, 5.3: introducción a los lenguajes de descripción de hardware y al flujo de diseño digital moderno. - Curso Verilog basado en ejemplos [web] Unidad 1: introducción Unidad 2: bancos de prueba. Unidad 3: circuitos combinacionales.