Tema 2. Lenguajes De Descripción De Hardware - Us

Transcription

Tema 2. Lenguajes de descripción dehardwareDAPAE.T.S.I. InformáticaUniversidad de SevillaOctubre, 2015Jorge Juan jjchico@dte.us.es 2010-2015Esta 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 SevillaContenidos Lenguajes de descripción de hardwareTipos de descripcionesEstructura de una descripción VeriloVerilog: sintaxis y estructuras principalesBanco de pruebas y simulaciónSíntesis desde LDH en FPGAHerramientas de diseño básicasDepartamento de Tecnología Electrónica – Universidad de Sevilla

¿Qué son los lenguajes de descripción dehardware (LDH)? Lenguajes formales para describir el comportamiento de uncircuito electrónico (digital).Similar a un lenguaje de programación (software) pero condiferencias notables:––La mayoría de las expresiones se “ejecutan” concurrentemente.Cada expresión o “instrucción” corresponde a la operación de unbloque de circuito.//// ANDAND operationoperationxx aa && b;b;//// OROR operationoperationyy aa b;b;//// CombinationalCombinational functionfunction zz xy'xy' x'yx'yzz xx && y y x x && y;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 sucomportamiento mediante herramientas informáticas (simuladores)para comprobar su correcto funcionamiento antes de construir elcircuito real.Síntesis automática––––Construcción del circuito a partir de su descripción de formaautomática empleando 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 herramientaspueden y no pueden hacer.Departamento de Tecnología Electrónica – Universidad de Sevilla

VHDL vs VerilogVHDL ––– Sintaxis más compleja,similar a ADA.Sintaxis más estricta: reducela posibilidad de errores.Mejor soporte para diseñosgrandes y complejos.Verilog–––Sintaxis más simple, similar aC.Más fácil de aprenderMúltiples versiones 1995 2001* 2005 System VerilogTanto 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 SevillaEjemplo: 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,inputinput a,a,inputinput b,b,inputinput cc););assignassign zz a&ba&b a&ca&c b&c;b&c;endmoduleendmoduleDepartamento de Tecnología Electrónica – Universidad de Sevilla

Tipos de descripciones – Describe una funcióncombinacional mediante unaexpresión lógica.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;Procedimental (bloques always)––– assignassign zz a&ba&b a&ca&c b&c;b&c;Funcional (asignación continua)Permite usar estructuras decontrol.Descripción algorítmica similar alsoftware.Facilita la descripción de funcionescomplejas.abEstructural–––cDescribe la interconexión demódulos de circuito.Equivalente al dibujo del circuito.Verilog reconoce las puertaslógicas como módulos básicos.out1and1and3out3and2or1zout2wirewire out1,out1, out2,out2, out3;out3;andand and1and1 (out1,(out1, a,a, b);b);andand and2and2 (out2,(out2, b,b, c);c);andand and3and3 (out3,(out3, a,a, c);c);oror or1or1 (z,(z, out1,out1, out2,out2, out3);out3);Departamento de Tecnología Electrónica – Universidad de SevillaEstructura de una descripción Verilog Directivas del preprocesadorDeclaración del módulo–– – Nombre y tipo de señales internasDescripción del diseño– Nombre del móduloPuertos (conexiones) de entrada ysalidaDeclaración de señales– timescale timescale 1ns1ns // 1ps1psEstructuras de procesamientoPueden mezclarse tipos dedescripciónCualquier número de módulospuede describirse en un le: cvotercvoterConditionalConditional votingvoting circuitcircuitzz abab bcbc acac ifif x 1x 1modulemodule cvoter(cvoter(inputinput wirewireinputinput wirewireinputinput wirewireinputinput wirewireoutputoutput regreg););x,x,a,a,b,b,c,c,zzwirewire v;v;assignassign vv a&ba&b b&cb&c a&c;a&c;alwaysalways @(*)@(*)ifif (x(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/online verilog ref guide/verilog 2001 ref guide.pdfDepartamento de Tecnología Electrónica – Universidad de SevillaVerilog: 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. Seusa en procedimientos (“always”).Para cada puerto de entrada osalida se crea automáticamenteuna señal interna con el mismonombreLos tipos de las señales puedendeclararse en la lista de puertos oen el cuerpo del módulo. Un puertono declarado 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)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;endmoduleendmodule//// votervoterDepartamento de Tecnología Electrónica – Universidad de Sevilla

Verilog: procedimientos Describen el comportamiento de un circuito mediante estructurasde control: 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 unprocedimiento: cuando cambia una señal, etc.Departamento de Tecnología Electrónica – Universidad de SevillaVerilog: concurrencia Las siguientes estructuras describen y se evalúan (en simulación)de forma concurrente:–––Asignaciones continuasProcedimientosMó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 ypara comprobar el correcto funcionamiento de la misma.Directivas del simulador Verilog para controlar opciones desimulación: resolución temporal, final de la simulación, generaciónde resultados, etc.Características específicas de módulos de bancos de pruebas–––Un módulo de banco de pruebas no está pensado para serimplementado, 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).Departamento de Tecnología Electrónica – Universidad de SevillaProceso 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–– Configurable Logic Block (CLB)– Se configura para hacer una funcióndeterminada: AND, OR, XOR, etc.Input-Output Block (IOB)– Field Programmable Gate ArrayColección de dispositivos lógicos einterconexiones configurables.Se configuran para actuar como entradaso salidas 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 SevillaSíntesis en FPGA Síntesis de LDH sobre FPGA––– El código LDH es analizado y las estructuras del lenguaje seconvierten (mapping) en dispositivos lógicos equivalentes.Se seleccionan los CLB adecuados (placement) y se configuranpara hacer la 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 estructurasdisponibles en un LDH.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,outputoutput regreg z);z);alwaysalways @(a,@(a, b,b, c)c)ifif (a(a 1)1)ifif (b(b 11 cczz 1;1;elseelsezz 0;0;elseelseifif (b(b 11 &&&& cczz 1;1;elseelsezz 0;0;endmoduleendmodule 1)1)400Kpuertasequivalentes 1)1)and1Síntesis ikimedia.org/wiki/File:Fpga xilinx Fpga1a.gifDepartamento de Tecnología Electrónica – Universidad de SevillaHerramientas de diseño básicas Editor de texto– Compilador de Verilog– Simulación de bancos de pruebas.Herramienta de síntesis––– Análisis del código. Detección de errores de sintaxis.Simulador– Escritura de código Verilog.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 suministrador de la tecnología.Departamento de Tecnología Electrónica – Universidad de Sevilla

Icarus Verilog 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–Ligero ––icarus (1,5MB) Gtkwave (2,5MB) 4MBFácil de usarSoftware o de Tecnología Electrónica – Universidad de SevillaIcarus Verilog en GNU/Linux(¡muy recomendable!) Icarus y Gtkwave disponibles en la mayoría de distribucionesLinuxInstalación en Debian/Ubuntu:– Paquetes "iverilog" y "gtkwave"Editor de textos––Vale cualquier editor de texto plano.E.j. Gedit Estándar en Ubuntu Incluye 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)(no recomendado) Busca instalador iverilog gtkwave en www.bleyer.orgNota importante:–– Instalar el software en una ruta sin espaciosEjemplo: “C:\programs\verilog”.Editor de textos––Usar un buen editor de textos (no el Bloc de Notas -Notepad-)Ej. Notepad (notepad-plus-plus.org)Departamento de Tecnología Electrónica – Universidad de SevillaEntornos integrados de Xilinx Xilinx– Dos entornos disponibles y parecidos–– Uno de los principales fabricantes de FPGA.ISE: tradicional, modelos de FPGA “antiguos”.Vivado: nuevo entorno. Sólo para models FPGA recientes.Implementación sólo sobre FPGA's de Xilinx.Entorno integrado incluyendo gestor de proyectos, editor decódigo, simulación, síntesis y mucho más.Completo pero complejo (no mucho) para principiantes.Pesado de descargar ( 4GiB) e instalar ( 9GiB).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

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 deimplementación usando herramientas informáticas.Departamento de Tecnología Electrónica – Universidad de SevillaBibliografía Verilog Tutorial– Verilog HDL Quick Reference Guide (Verilog-2001 standard)– ://sutherland-hdl.com/online verilog ref guide/verilog 2001 ref guide.pdfCurso Verilog basado en ejemplos–http://www.dte.us.es/ jjchico/curso verilog/Departamento de Tecnología Electrónica – Universidad de Sevilla

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