Vous êtes sur la page 1sur 66

Diseo Digital con Lgica Programable

Tutorial de Quartus II software, con VHDL.

Material didctico de la Universidad de Vigo.

Tutorial de diseo con VHDL y FPGAs en la herramienta de CAD Quartus II de Altera

Indice
Introduccin. Creacin de proyectos. Descripcin mediante VHDL. Bibliotecas de Altera. Compilacin. Sntesis. Simulacin funcional. Implementacin. Simulacin temporal. Programacin del circuito.
11/04/2007 Tutorial Quartus II con VHDL.

Introduccin.
En este tema vamos a realizar un ejemplo tutorial descrito en su totalidad en lenguaje VHDL, mediante la herramienta Quartus II, del fabricante Altera.

11/04/2007

Tutorial Quartus II con VHDL.

Creacin de proyectos (I)


La primera accin debe ser Abrir un nuevo proyecto, mediante el men File New Project Wizard. A continuacin, deben seleccionarse determinados parmetros relacionados con el proyecto. En primer lugar, el nombre de los directorios y del fichero principal del proyecto.

11/04/2007

Tutorial Quartus II con VHDL.

Creacin de proyectos (II)


A continuacin, debe seleccionarse el circuito en el que se desea implementar el sistema digital que se va a disear, aunque posteriormente puede elegirse otro circuito distinto.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (I)
Una vez creado el proyecto, se procede a ir creando (File New) los ficheros que describen el sistema digital. En este caso, vamos a crear un nuevo fichero de tipo VHDL.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (II)
Ventana del editor de texto, con el fichero VHDL recin creado.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (III)
En este primer fichero vamos a describir un contador sncrono reversible de 4 bits. Este contador debe tener puesta en estado cero asncrona (reset), carga en paralelo sncrona (load) y seal de habilitacin (enable).

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (IV)
Para describir el contador en VHDL, en primer lugar definimos los terminales de entrada y salida del contador, mediante la entidad (entity) del circuito.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (V)
A continuacin, completamos la descripcin del contador de 4 bits con la definicin del comportamiento del circuito, mediante la seccin arquitectura (architecture).

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (VI)
Para comprobar si la sintaxis del fichero VHDL es correcta, podemos utilizar el botn Analyze current file de la barra de botones lateral. Si hay algn error, ste aparecer en la ventana de mensajes.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (VII)
Ahora describiremos en VHDL un decodificador de binario a 7 segmentos de CTODO comn. Este decodificador debe tener una seal de habilitacin de las salidas (enable).

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (VIII)
Para describir el decodificador en VHDL, en primer lugar definimos los terminales de entrada y salida del decodificador, mediante la entidad (entity) del circuito.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (IX)
A continuacin, completamos la descripcin del decodificador con la definicin de la tabla de verdad del circuito, mediante la seccin arquitectura (architecture) y la sentencia With select.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (X)
Ahora interconectaremos ambos circuitos en el fichero principal (top_tutorial_vhdl) mediante declaracin e instanciacin de los componentes creados anteriormente. Para instanciar un componente descrito en VHDL en otro fichero VHDL, hay que hacer lo siguiente: Declarar el componente en la seccin de declaraciones de la arquitectura, mediante la sentencia COMPONENT de VHDL. Instanciar el componente en la seccin de descripcin de la arquitectura, mediante el nombre del componente. Conectar sus entradas y salidas a las seales que corresponda.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (XI)
Fichero principal (top_tutorial_vhdl.vhd) (1 de 3). Entidad del fichero principal y declaracin del componente sctr4.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (XII)
Fichero principal (top_tutorial_vhdl.vhd) (2 de 3). Declaracin del componente bin_to_7seg_cat e instanciacin del componente sctr4.

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (XIII)
Fichero principal (top_tutorial_vhdl.vhd) (3 de 3). Instanciacin del componente bin_to_7seg_cat.

11/04/2007

Tutorial Quartus II con VHDL.

Visor RTL (I)


La herramienta visor RTL (RTL Viewer), disponible en el men Tools, permite ver el esquema equivalente a nivel RTL (Register Transfer Level) de las descripciones realizadas en VHDL. Esquema correspondiente al fichero principal (top_tutorial_vhdl.vhd). El esquema que se muestra corresponde al sistema digital descrito, despus del anlisis y de la obtencin de la lista de conexiones, pero antes de la sntesis y de la optimizacin.

11/04/2007

Tutorial Quartus II con VHDL.

Visor RTL (II)


Esquema correspondiente al contador de 4 bits (sctr4.vhd). Estos esquemas permiten comprobar que no existen componentes adicionales inesperados o verificar que las conexiones son correctas, algo ms difcil de hacer en VHDL. No obstante, a veces no resulta til la descripcin RTL, porque no sabemos cul es la manera en que la herramienta Quartus II va a realizar el componente.

11/04/2007

Tutorial Quartus II con VHDL.

Visor RTL (III)


Esquema correspondiente al decodificador de binario a 7 segmentos (bin_to_7seg_cat.vhd).

11/04/2007

Tutorial Quartus II con VHDL.

Descripcin (XIV)
El programa dispone de plantillas VHDL, muy tiles para la descripcin de circuitos comunes. Estas plantillas estn accesibles a travs de la opcin de men Edit Insert Template o del botn correspondiente de la barra de botones.

11/04/2007

Tutorial Quartus II con VHDL.

Bibliotecas (I)
Adems, Quartus II incorpora bibliotecas de componentes propios, que se pueden utilizar en cualquier fichero VHDL, mediante la declaracin de la biblioteca y del paquete adecuado, y la declaracin e instanciacin del componente.

11/04/2007

Tutorial Quartus II con VHDL.

Bibliotecas (II)
Ejemplo de utilizacin del componente GLOBAL del paquete altera_primitives_components de la biblioteca altera.

11/04/2007

Tutorial Quartus II con VHDL.

Bibliotecas (III)
La ayuda del programa Quartus II permite conocer los parmetros de cada componente del paquete lpm_components de su biblioteca lpm, as como el formato de declaracin del componente en VHDL.

11/04/2007

Tutorial Quartus II con VHDL.

Bibliotecas (IV)
Ejemplo de utilizacin del componente registro (lpm_ff) del paquete lpm_components de la biblioteca lpm de la herramienta Quartus II, mediante la declaracin e instanciacin del componente (1 de 2).

11/04/2007

Tutorial Quartus II con VHDL.

Bibliotecas (V)
Ejemplo de utilizacin del componente registro (lpm_ff) del paquete lpm_components de la biblioteca lpm de la herramienta Quartus II, mediante la declaracin e instanciacin del componente (2 de 2).

11/04/2007

Tutorial Quartus II con VHDL.

Componentes parametrizables (I)


Una forma ms sencilla de acceder a los componentes de la biblioteca lpm es crear un nuevo componente parametrizable. Para ello, se debe ejecutar la opcin de men Tools MegaWizard Plug-In Manager.

11/04/2007

Tutorial Quartus II con VHDL.

Componentes parametrizables (II)


En este caso definiremos un registro de 8 bits mediante el componente lpm_ff, del grupo de componentes de almacenamiento (storage).

11/04/2007

Tutorial Quartus II con VHDL.

Componentes parametrizables (III)


Parmetros del componente registro_8_bits, de tipo lpm_ff, del grupo de componentes de almacenamiento (storage) (I).

11/04/2007

Tutorial Quartus II con VHDL.

Componentes parametrizables (IV)


Parmetros del componente registro_8_bits, de tipo lpm_ff, del grupo de componentes de almacenamiento (storage) (II).

11/04/2007

Tutorial Quartus II con VHDL.

Componentes parametrizables (V)


Parmetros del componente registro_8_bits, de tipo lpm_ff, del grupo de componentes de almacenamiento (storage) (III). La plantilla de declaracin del componente en VHDL se genera automticamente, ya que la casilla correspondiente al fichero nombre_componente.cmp est marcada por defecto. Debemos marcar la casilla correspondiente al fichero nombre_componente_inst.vhd, para que se genere la plantilla de instanciacin del componente en VHDL.

11/04/2007

Tutorial Quartus II con VHDL.

Componentes parametrizables (VI)


Documentacin relacionada con el componente registro_8_bits, del grupo de componentes de almacenamiento (storage), del tipo Altera Megafunction. Se puede acceder a ella a travs del botn Documentation durante la definicin de sus parmetros.

11/04/2007

Tutorial Quartus II con VHDL.

Componentes parametrizables (VII)


Una vez finalizada la parametrizacin del componente registro_8_bits, del grupo de componentes de almacenamiento (storage), del tipo Altera Megafunction, la herramienta MegaWizard Plug-In Manager genera automticamente los siguientes ficheros:
Un fichero con su descripcin en VHDL (registro_8_bits.vhd). Un fichero con la plantilla para la declaracin del componente en otros ficheros VHDL (registro_8_bits.cmp). Un fichero con la plantilla para la instanciacin del componente en otros ficheros VHDL (registro_8_bits_inst.vhd).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

34

Componentes parametrizables (VIII)


Descripcin en VHDL del componente registro_8_bits, obtenida automticamente a partir de la ejecucin de la herramienta MegaWizard Plug-In Manager (1 de 2).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

35

Componentes parametrizables (IX)


Descripcin en VHDL del componente registro_8_bits, obtenida automticamente a partir de la ejecucin de la herramienta MegaWizard Plug-In Manager (2 de 2).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

36

Componentes parametrizables (X)


Plantilla obtenida automticamente para la declaracin del componente registro_8_bits. Esta plantilla, que se observa en la figura, se encuentra en un fichero de extensin .CMP. Para utilizar el componente en otros ficheros VHDL, es necesario copiar esta plantilla a la seccin de declaraciones de la arquitectura (antes de la palabra reservada begin).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

37

Componentes parametrizables (XI)


Si hemos marcado la casilla correspondiente al fichero registro_8_bits_inst.vhd, se genera automticamente otro fichero con la plantilla para la instanciacin del componente registro_8_bits. Esta plantilla, que se observa en la figura, se encuentra en un fichero de extensin .VHD. Para utilizar el componente en otros ficheros VHDL, es necesario copiar esta plantilla a la seccin del cuerpo de la arquitectura (despus de la palabra reservada begin) y conectar las seales adecuadas en el lado derecho de las asignaciones.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

38

Componentes parametrizables (XII)


Se pueden modificar los parmetros del componente en cualquier momento, ejecutando de nuevo la herramienta MegaWizard Plug-In Manager y seleccionando la opcin Edit an existing custom megafunction variation.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

39

Componentes parametrizables (XIII)


Ejemplo de utilizacin del componente registro_8_bits creado mediante la herramienta MegaWizard Plug-In Manager, mediante la declaracin e instanciacin del componente en otro fichero VHDL.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

40

Descripcin (XV)
Retomando el diseo inicial que estbamos realizando, ahora es necesario aadir al proyecto los ficheros correspondientes a los circuitos descritos en VHDL y a los componentes del tipo Altera megafunction utilizados, para evitar posteriores errores en el proceso de compilacin. Para ello, seleccionamos la opcin de men Project Add/Remove Files in Project, y seleccionamos los ficheros correspondientes.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

41

Descripcin (XVI)
A partir de un fichero VHDL es posible crear un componente utilizable en un esquemtico e incorporarlo a la biblioteca de componentes. Para ello, hay que dar los siguientes pasos: Realizar la descripcin en VHDL del componente. Abrir el fichero VHDL y ejecutar la opcin de men File Create/Update Create Symbol File for Current File, que genera un fichero de extensin .BSF (Block Symbol File).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

42

Descripcin (XVII)
A partir de este momento, el componente ya est disponible para su utilizacin en otros esquemticos.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

43

Compilacin y Sntesis (I)


Ahora debemos ejecutar los procesos de compilacin y de sntesis del sistema digital descrito, formado por el contador y el decodificador. Esto permitir identificar fcilmente los errores que pueda haber en la descripcin realizada y continuar posteriormente el proceso de implementacin. Para realizar la sntesis, se puede abrir el compilador, mediante la opcin de men Tools Compiler Tool y ejecutar la opcin Start Analysis & Synthesis, o directamente pulsar el botn correspondiente de la barra de botones.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

44

Compilacin y sntesis (II)


Antes de realizar la sntesis, se pueden seleccionar unas opciones distintas de las que vienen por defecto en el programa, mediante el men Assignments Settings.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

45

Compilacin y Sntesis (III)


Ventana del compilador despus de finalizar los procesos de compilacin y sntesis (Analysis & Synthesis).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

46

Compilacin y Sntesis (IV)


Debemos consultar el informe de sntesis de cada circuito, en el que encontraremos avisos, errores, circuitos identificados por el programa en nuestra descripcin, estimacin de los recursos lgicos necesarios para la realizacin del circuito, etc. Para ello, podemos pulsar el botn Report del compilador (Compiler Tool) o el botn Compiler report de la barra de botones, y seleccionar el informe correspondiente a los procesos Analysis & Synthesis. A pesar de haber analizado previamente los ficheros VHDL, es frecuente que en la sntesis aparezcan avisos y errores.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

47

Visor de bajo nivel (I)


La herramienta visor de bajo nivel (Technology Map Viewer), disponible en el men Tools, permite ver el esquema equivalente a bajo nivel, de las descripciones realizadas en VHDL. Esquema correspondiente al fichero principal (top_tutorial_vhdl.vhd). El esquema que se muestra corresponde al sistema digital descrito, despus del anlisis y de la sntesis.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

48

Visor de bajo nivel (II)


Esquema correspondiente al contador de 4 bits (sctr4.vhd). Estos esquemas permiten comprobar que no existen componentes adicionales inesperados o verificar que las conexiones son correctas, algo ms difcil de hacer en VHDL. No obstante, a veces no resulta til la descripcin a este nivel, porque no sabemos cul es la manera en que la herramienta Quartus II va a realizar el componente.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

49

Visor de bajo nivel (III)


Esquema correspondiente al decodificador de binario a 7 segmentos (bin_to_7seg_cat.vhd).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

50

Verificacin e Implementacin
A partir de este momento, las etapas del proceso de diseo son exactamente las mismas que las realizadas en el ejemplo tutorial con esquemticos. Por ello, nicamente se mostrarn los resultados obtenidos y se comentar alguna particularidad especial.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

51

Simulacin funcional (I)


Resultado de la simulacin funcional del sistema descrito anteriormente. En ella se observa que los retardos son nulos.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

52

Simulacin funcional (II)


Si se han definido las seales qctr [3..0] como tipo inout, en los resultados de la simulacin aparecen de forma independiente las salidas correspondientes al contador, indicadas mediante la denominacin qctr[i]~result.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

53

Implementacin (I)
Una vez realizada la simulacin funcional del sistema digital completo, es el momento de realizar la implementacin del mismo. Para realizarla, se debe pulsar el botn Start Compilation de la barra de botones. Tambin se pueden ir ejecutando uno a uno los distintos procesos que forman parte de la implementacin a travs del compilador (men Tools Compiler Tool).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

54

Implementacin (II)
Antes de realizar la implementacin, se pueden seleccionar unas opciones distintas de las que vienen por defecto en el programa, mediante el men Assignments Settings.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

55

Implementacin (III)
Informe de la fase de asignacin de recursos (fitter).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

56

Simulacin temporal
Resultado de la simulacin temporal del sistema descrito anteriormente. En ella se observan los transitorios tpicos de la simulacin temporal, as como los retardos del circuito.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

57

Prueba en la placa (I)


En este ejemplo, para utilizar la placa LiveDesign Evaluation board de la firma Altium, se necesita, al igual que en el ejemplo anterior: Un circuito antirrebotes para el pulsador que se va a utilizar para la seal CE, que consiste en un biestable cuya seal de reloj sea de frecuencia 1 kHz. Un circuito detector de flancos para el pulsador que se va a utilizar para la seal CE, que se conecta a la salida del circuito antirrebotes. Este circuito, se analiza a continuacin. Un inversor para la seal RESET (pulsador activo a nivel cero). No son necesarios en este caso biestables de sincronizacin para el resto de las entradas, pues todas las seales que afectan al contador lo hacen de forma sncrona, excepto la puesta en estado inicial (reset). Conviene conservar el circuito original, por lo que realizaremos las modificaciones en un nuevo fichero.
11/04/2007 Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda 58

Prueba en la placa (II)


Circuito divisor de frecuencias. Circuito divisor de reloj por 50. Circuito divisor de reloj por 1000. Circuito antirrebotes y detector de flancos para un pulsador. Nuevo fichero principal modificado, que incluye los circuitos anteriores y un inversor para el pulsador de puesta en estado inicial (reset).

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

59

Prueba en la placa (III)


Asignacin de terminales mediante el editor de restricciones correspondiente, disponible en el men Assignments Pins. Fichero top_placa.csv, de asignacin de terminales.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

60

Prueba en la placa (IV)


Es necesario realizar una nueva implementacin del sistema digital, despus de hacer la asignacin de terminales en el editor.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

61

Programacin del circuito (I)


Para programar la FPGA de la placa LiveDesign de Altium, debemos pulsar el botn Auto Detect, para que encuentre la FPGA que hay en la placa. A continuacin, seleccionamos el fichero de programacin (.sof), mediante el botn Change File.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

62

Programacin del circuito (II)


Para programar la FPGA, debemos activar la casilla Program/Configure y pulsar el botn Start. Una vez programada la FPGA, ya se puede comprobar el funcionamiento de la aplicacin.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

63

Prueba en la placa (V)


Prueba del sistema digital en la placa LiveDesign de Altium. Los interruptores estn a CERO en la posicin ON.
CE_CTR Estado contador ya decodificado

Q_CTR [3..0]

RESET

enable_decod, UP_DOWN, LOAD

DIN [3..0]

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

64

Archivar el proyecto
Una vez terminado el proyecto, es conveniente archivarlo mediante la opcin Project Archive Project, que genera un fichero .QAR (Quartus II Archive File) que contiene todos los archivos del proyecto. Archivo del proyecto (.qar) con el proyecto completo de ejemplo realizado con la herramienta Quartus II versin 5.1.

11/04/2007

Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda

65

Bibliografa bsica.
Tutorial de la herramienta Quartus II, disponible en la ayuda del programa. Tutorial en PDF (tut_quartus_intro_vhdl.pdf), disponible en la pgina web de Altera. Manual de la herramienta Quartus II en PDF (quartusii_handbook_5_1.pdf), disponible en la pgina web de Altera. [ALTERA] http://www.altera.com Direccin de Internet,

[LVAREZ 04] LVAREZ RUIZ DE OJEDA, L.J., Diseo Digital con Lgica Programable, Editorial Trculo, Santiago de Compostela, 2004.
11/04/2007 Tutorial Quartus II con VHDL. Luis Jacobo lvarez Ruiz de Ojeda 66

Vous aimerez peut-être aussi