SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Universidade Federal de Santa Catarina
         Centro Tecnológico – CTC
    Departamento de Engenharia Elétrica
                                            http://gse.ufsc.br




“EEL7020 – Sistemas Digitais”


     Prof. Eduardo Augusto Bezerra
           Eduardo.Bezerra@eel.ufsc.br




         Florianópolis, agosto de 2012.
Plano de Aula


      “Projeto de Sistemas Digitais com VHDL”


• Objetivos:
  –   Apresentar uma visão geral de VHDL
  –   Exemplo de descrição VHDL
  –   Introdução ao Quartus II – ferramentas de desenvolvimento
  –   Estudo de caso / exercício


                           EEL7020 – Sistemas Digitais            2/23
VHDL - Visão Geral

• VHDL - linguagem para descrição de hardware

• VHDL = VHSIC Hardware Description Language

• VHSIC = Very High Speed Integrated Circuits. Programa do governo
  dos USA do início dos anos 80.

• No final da década de 80, VHDL se tornou um padrão IEEE (Institute
  of Electrical and Electronic Engineers).

• Existem diversas ferramentas para simular e sintetizar (gerar
  hardware) circuitos descritos em VHDL.

• Outras linguagens de descrição de hardware: Verilog, SystemC,
  AHDL, Handel-C, System Verilog, Abel, Ruby, ...

                             EEL7020 – Sistemas Digitais          3/23
VHDL - Visão Geral
•   O projeto de um circuito digital pode ser descrito em VHDL em diversos
    níveis de abstração (estrutural, comportamental).
•   Descrições no nível de transferência entre registradores (RTL, Register
    Transfer Level) são bastante utilizadas.
•   VHDL NÃO é uma linguagem de programação, e as ferramentas de síntese
    (não são de “compilação”) não geram códigos executáveis a partir de uma
    descrição VHDL.
•   Descrições em VHDL podem ser simuladas (executadas em um simulador).
•   Descrições em VHDL podem ser utilizadas para gerar um hardware (arquivo
    para configuração de um FPGA, por exemplo).
•   A geração de estímulos para simulação VHDL é realizada por intermédio de
    testbenches.
•   Um testbench define os estímulos externos a serem utilizados como entrada
    para o circuito (definição do comportamento externo ao circuito sob teste).
•   O testbench pode ser escrito em VHDL ou em diversas outras linguagens
    (ex. C, C++, ...).
                                 EEL7020 – Sistemas Digitais                  4/23
Descrição de circuito digital em VHDL

 ENTITY                      A
                                                          F1 = A xor B
                             B
                                                          F2 = A and B
  A     B    F1    F2
  0     0    0     0             entity halfadd is
  0     1    1     0             port (A: in std_logic;
                                       B: in std_logic;
  1     0    1     0
                                       F1: out std_logic;
  1     1    0     1                   F2: out std_logic
                                       );
                                 end halfadd;


   ENTITY – define os “pinos” do circuito digital (sinais), ou seja,
   a interface entre a lógica implementada e o mundo externo.
                            EEL7020 – Sistemas Digitais                  5/23
Descrição de circuito digital em VHDL

 ARCHITECTURE                 A
                                                         F1 = A xor B
                              B
                                                         F2 = A and B


 architecture circuito_logico of halfadd is
 begin
   F1 <= A xor B;
   F2 <= A and B;
 end circuito_logico;

  ARCHITECTURE – define a funcionalidade do circuito digital,
  utilizando os “pinos” de entrada e saída listados na ENTITY em
  questão. Uma ENTITY pode possuir diversas implementações
  diferentes (diversas ARCHITECTURES).
                           EEL7020 – Sistemas Digitais                  6/23
Descrição completa do circuito em VHDL
(Entity e Architecture)     A
                                                                F1 = A xor B
                                      B
 library IEEE;
                                                                 F2 = A and B
 use IEEE.Std_Logic_1164.all;

 entity halfadd is
 port (A: in std_logic;                             Para utilizar o tipo
       B: in std_logic;                             std_logic é necessário
       F1: out std_logic;                           incluir um pacote da
       F2: out std_logic                            biblioteca IEEE.
       );
 end halfadd;

 architecture circuito_logico of halfadd is
 begin
   F1 <= A xor B;
   F2 <= A and B;
 end circuito_logico;

                      EEL7020 – Sistemas Digitais                      7/23
Plataforma de prototipação FPGA Altera - DE2




                 EEL7020 – Sistemas Digitais   8/23
Kit DE2 da Altera




                    EEL7020 – Sistemas Digitais   9/23
Interface com o usuário (entrada e saída)

 • Placa DE2 possui 18 LEDs vermelhos denominados LEDR17-0 e
   18 chaves denominadas SW17-0
 • As conexões entre esses componentes e os pinos do FPGA da
   placa estão definidas no arquivo DE2_pin_assignments.csv
 • São utilizados “vetores” para facilitar o acesso aos LEDs e
   chaves da placa
 • Exemplo: SW[0] é o elemento 0 do vetor SW, e está conectado
   ao pino PIN_N25 do FPGA
 • No código em VHDL, usar sempre os nomes definidos no
   arquivo DE2_pin_assignments.csv (ver Pinos.csv no site da disciplina)

                              EEL7020 – Sistemas Digitais             10/23
Interface com o usuário (entrada e saída)

 • Código VHDL para “leitura” das chaves e “escrita” nos LEDs

   library ieee;
   use ieee.std_logic_1164.all;
   entity part1 is
        port ( SW : in std_logic_vector(17 downto 0);
                LEDR : out std_logic_vector(17 downto 0)
              );
   end part1;
   architecture behavior of part1 is
   begin
        LEDR(7 downto 0) <= SW(15 downto 8);
       LEDR(15 downto 8) <= “01010101”;
       LEDR(17) <= (SW(17) AND SW(0)) OR (SW(16) AND ‘1’);
   end behavior;
                           EEL7020 – Sistemas Digitais          11/23
Tarefa a ser realizada na aula prática




              EEL7020 – Sistemas Digitais   12/23
Tarefa a ser realizada na aula prática

1. Utilizando a ferramenta Quartus II da Altera, criar um projeto VHDL
   que implemente o circuito apresentado no slide 7 (and e xor).

2. Realizar a simulação do circuito (VHDL) por intermédio de
   diagramas de formas de onda, e obter a tabela verdade.

3. Visando aprender o fluxo de ferramentas de projeto, seguir o
   tutorial descrito no arquivo: tut_quartus_intro_vhdl.pdf

4. Utilizando as dicas do slide 11, alterar o projeto de forma a realizar
   a entrada dos dados A e B a partir das chaves SW(0) e SW(1), e a
   apresentação dos resultados F1 e F2 no LEDR(0) e LEDR(1).

5. Testar o circuito no kit DE2, usando as chaves SW(0) e SW(1) para
   entrar com os operandos, e observar os resultados nos LEDs.


                              EEL7020 – Sistemas Digitais          13/23
Resumo do tutorial tut_quartus_intro_vhdl.pdf
 1. File -> New Project Wizard
 2. No “project wizard”, seguir exatamente os passos do
    tutorial da última aula e do tut_quartus_intro_vhdl.pdf
 3. File -> New -> VHDL File
 4. Copiar o fonte VHDL do slide 7 para esse novo arquivo,
    e salvar.
 5. Assignments -> Import Assigments (procurar no site e
    usar o arquivo DE2_pin_assignments.csv ou Pinos.csv)
 6. Com isso, os pinos do FPGA foram associados aos
    sinais da entity do VHDL
 7. Compilar o VHDL (síntese)
 8. ATENÇÃO!!! Verificar se o nome da entity é o mesmo
    nome do projeto, para evitar erros na síntese.
 9. A compilação resulta em cerca de 400 warnings devido
    aos pinos não conectados do arquivo .csv
                        EEL7020 – Sistemas Digitais    14/23
Resumo do tutorial tut_quartus_intro_vhdl.pdf
10. Simulação Funcional – Circuito sintetizado é testado para
    verificação de sua funcionalidade -> não considera informação
    de temporização.
   •   File – New – Vector Waveform File
   •   Edit – End Time – 200 ns
   •   View – Fit in Window (^W)
   •   Edit – Insert Node or Bus – Node Finder
   •   Assignments – Settings – Simulator Settings – Functional
   •   Processing – Generate Functional Simulation Netlist
   •   Processing – Start Simulation
11. Análise Temporal – Análise dos atrasos de propagação de
    sinais no circuito após a síntese física – resulta em relatório
    constando o desempenho esperado.
12. Simulação Temporal – teste para verificação com atrasos.
13. Programação – FPGA é carregado com circuito, configurando
    fisicamente elementos de processamento e roteamento.
    Tools – Programmer. Hardware Setup – USB-Blaster. Start!
                             EEL7020 – Sistemas Digitais          15/23
Para ir além: uso do LCD




        EEL7020 – Sistemas Digitais   16/23
Escrita no LCD da placa DE2 da Altera
  library ieee;
  use ieee.std_logic_1164.all;
  entity LCD is
  port (
      LCD_DATA: out std_logic_vector(7 downto 0);
      LCD_RW:       out std_logic;
      LCD_EN:       out std_logic;
      LCD_RS:       out std_logic;
      LCD_ON:       out std_logic;
      LCD_BLON: out std_logic;
      SW :          in std_logic_vector(17 downto 0)
  );
  end LCD;

  architecture LCD_WR of LCD is
  begin
          LCD_ON      <= SW(17);
          LCD_BLON <= SW(16);
          LCD_DATA <= SW(7 downto 0);
          LCD_RS       <= SW(8);
          LCD_EN      <= SW(9);
          LCD_RW      <= SW(10);
  end LCD_WR;                EEL7020 – Sistemas Digitais   17/23
Passos para inicializar (CONFIGURAR) o LCD


  PASSO 1:


   Chave (SW)   Valor (posição da chave)               Efeito
  17            1                           LCD_ON
  16            1                           LCD_BLON
                                                                    - ligar LCD
  7 .. 0        0011 1000                   Comando                 - ativar cursor
  8             0                           LCD_RS (0 = controle)     e piscar
  9             0→1→0                       LCD_EN
  10            0                           LCD_RW




                                 EEL7020 – Sistemas Digitais                  18/23
Passos para inicializar (CONFIGURAR) o LCD


  PASSO 2:


   Chave (SW)   Valor (posição da chave)               Efeito
  17            1                           LCD_ON
  16            1                           LCD_BLON
                                                                    - ligar LCD
  7 .. 0        0000 1111                   Comando                 - ativar cursor
  8             0                           LCD_RS (0 = controle)     e piscar
  9             0→1→0                       LCD_EN
  10            0                           LCD_RW




                                 EEL7020 – Sistemas Digitais                  19/23
Passos para inicializar (CONFIGURAR) o LCD


  PASSO 3:


   Chave (SW)   Valor (posição da chave)               Efeito
  17            1                           LCD_ON
  16            1                           LCD_BLON
                                                                    - ligar LCD
  7 .. 0        0000 0110                   Comando                 - ativar cursor
  8             0                           LCD_RS (0 = controle)     e piscar
  9             0→1→0                       LCD_EN
  10            0                           LCD_RW




                                 EEL7020 – Sistemas Digitais                  20/23
Procedimento de ESCRITA de caracteres no LCD


O LCD aceita caracteres da tabela ASCII (ver
http://asciitable.com). No exemplo a seguir está sendo
escrito o caracter A, ou seja, 41H, ou 01000001 em binário.

    Chave (SW)   Valor (posição da chave)               Efeito
    17           1                             LCD_ON
    16           1                             LCD_BLON
    7 .. 0       0100 0001                     Dado ‘A’
    8            1                             LCD_RS (1 = dados)
    9            0→1→0                         LCD_EN
    10           0                             LCD_RW




                                EEL7020 – Sistemas Digitais         21/23
Procedimento para limpar (apagar) o LCD




    Chave (SW)   Valor (posição da chave)                Efeito
   17            1                            LCD_ON
   16            1                            LCD_BLON
   7 .. 0        0000 0001                    Comando
   8             0                            LCD_RS (0 = controle)
   9             0→1→0                        LCD_EN
   10            0                            LCD_RW




                                EEL7020 – Sistemas Digitais           22/23
Escrita no LCD da placa DE2 da Altera



                                         Tutorial
http://www.feng.pucrs.br/~jbenfica/curso/tutorial_lcd.pdf
 http://www.lisha.ufsc.br/~bezerra/disciplinas/Microprocessadores/tools/LCD/LCD_APLICATIVO.html




                                       EEL7020 – Sistemas Digitais                        23/23

Mais conteúdo relacionado

Mais procurados

Mais procurados (10)

Introducaoplds
IntroducaopldsIntroducaoplds
Introducaoplds
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Portas lógicas
Portas lógicasPortas lógicas
Portas lógicas
 
Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduino
 
Contadorgray
ContadorgrayContadorgray
Contadorgray
 
02 entidade projeto-vhd-ivanl
02   entidade projeto-vhd-ivanl02   entidade projeto-vhd-ivanl
02 entidade projeto-vhd-ivanl
 
Vhdl
VhdlVhdl
Vhdl
 
Arquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyArquitetura de Computadores: Assembly
Arquitetura de Computadores: Assembly
 
Android e Arduino para automação residencial
Android e Arduino para automação residencialAndroid e Arduino para automação residencial
Android e Arduino para automação residencial
 

Semelhante a Lab2 vhdl fluxo_quartus

Introdução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoIntrodução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoJuan Manoel
 
Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Alcides Costa
 
Aula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfAula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfDeboraMateus3
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino Edgley Xavier
 
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraMinicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraPotiLivre Sobrenome
 
Clp allen bralley aula 04
Clp allen bralley aula 04Clp allen bralley aula 04
Clp allen bralley aula 04MAKILL
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IICarlos Carvalho
 
VHDL_Descricao_e_Sintese_de_Circuitos_Di.pdf
VHDL_Descricao_e_Sintese_de_Circuitos_Di.pdfVHDL_Descricao_e_Sintese_de_Circuitos_Di.pdf
VHDL_Descricao_e_Sintese_de_Circuitos_Di.pdfssuser6f13ac
 
Prototipagem de Sistemas Digitais - Introdução a VHDL
Prototipagem de Sistemas Digitais - Introdução a VHDLPrototipagem de Sistemas Digitais - Introdução a VHDL
Prototipagem de Sistemas Digitais - Introdução a VHDLBrito Filho
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 

Semelhante a Lab2 vhdl fluxo_quartus (20)

Introdução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoIntrodução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduino
 
Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1
 
Aula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfAula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdf
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Oficina Arduino
Oficina ArduinoOficina Arduino
Oficina Arduino
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino
 
Treinamento arduino (1).pptx
Treinamento arduino (1).pptxTreinamento arduino (1).pptx
Treinamento arduino (1).pptx
 
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraMinicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
 
Aula04
Aula04Aula04
Aula04
 
Clp allen bralley aula 04
Clp allen bralley aula 04Clp allen bralley aula 04
Clp allen bralley aula 04
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Comunicação serial
Comunicação serialComunicação serial
Comunicação serial
 
Rs logix 5000
Rs logix 5000Rs logix 5000
Rs logix 5000
 
VHDL_Descricao_e_Sintese_de_Circuitos_Di.pdf
VHDL_Descricao_e_Sintese_de_Circuitos_Di.pdfVHDL_Descricao_e_Sintese_de_Circuitos_Di.pdf
VHDL_Descricao_e_Sintese_de_Circuitos_Di.pdf
 
Clp
ClpClp
Clp
 
Prototipagem de Sistemas Digitais - Introdução a VHDL
Prototipagem de Sistemas Digitais - Introdução a VHDLPrototipagem de Sistemas Digitais - Introdução a VHDL
Prototipagem de Sistemas Digitais - Introdução a VHDL
 
Mini curso arduino
Mini curso arduinoMini curso arduino
Mini curso arduino
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 

Mais de Eduardo Bezerra

Mais de Eduardo Bezerra (6)

Lab9 processos
Lab9 processosLab9 processos
Lab9 processos
 
Lab8 controladores
Lab8 controladoresLab8 controladores
Lab8 controladores
 
Lab7 fsm
Lab7 fsmLab7 fsm
Lab7 fsm
 
Lab4 mux
Lab4 muxLab4 mux
Lab4 mux
 
Lab1 apresentacao disciplina
Lab1 apresentacao disciplinaLab1 apresentacao disciplina
Lab1 apresentacao disciplina
 
Lab10 somadores
Lab10 somadoresLab10 somadores
Lab10 somadores
 

Lab2 vhdl fluxo_quartus

  • 1. Universidade Federal de Santa Catarina Centro Tecnológico – CTC Departamento de Engenharia Elétrica http://gse.ufsc.br “EEL7020 – Sistemas Digitais” Prof. Eduardo Augusto Bezerra Eduardo.Bezerra@eel.ufsc.br Florianópolis, agosto de 2012.
  • 2. Plano de Aula “Projeto de Sistemas Digitais com VHDL” • Objetivos: – Apresentar uma visão geral de VHDL – Exemplo de descrição VHDL – Introdução ao Quartus II – ferramentas de desenvolvimento – Estudo de caso / exercício EEL7020 – Sistemas Digitais 2/23
  • 3. VHDL - Visão Geral • VHDL - linguagem para descrição de hardware • VHDL = VHSIC Hardware Description Language • VHSIC = Very High Speed Integrated Circuits. Programa do governo dos USA do início dos anos 80. • No final da década de 80, VHDL se tornou um padrão IEEE (Institute of Electrical and Electronic Engineers). • Existem diversas ferramentas para simular e sintetizar (gerar hardware) circuitos descritos em VHDL. • Outras linguagens de descrição de hardware: Verilog, SystemC, AHDL, Handel-C, System Verilog, Abel, Ruby, ... EEL7020 – Sistemas Digitais 3/23
  • 4. VHDL - Visão Geral • O projeto de um circuito digital pode ser descrito em VHDL em diversos níveis de abstração (estrutural, comportamental). • Descrições no nível de transferência entre registradores (RTL, Register Transfer Level) são bastante utilizadas. • VHDL NÃO é uma linguagem de programação, e as ferramentas de síntese (não são de “compilação”) não geram códigos executáveis a partir de uma descrição VHDL. • Descrições em VHDL podem ser simuladas (executadas em um simulador). • Descrições em VHDL podem ser utilizadas para gerar um hardware (arquivo para configuração de um FPGA, por exemplo). • A geração de estímulos para simulação VHDL é realizada por intermédio de testbenches. • Um testbench define os estímulos externos a serem utilizados como entrada para o circuito (definição do comportamento externo ao circuito sob teste). • O testbench pode ser escrito em VHDL ou em diversas outras linguagens (ex. C, C++, ...). EEL7020 – Sistemas Digitais 4/23
  • 5. Descrição de circuito digital em VHDL ENTITY A F1 = A xor B B F2 = A and B A B F1 F2 0 0 0 0 entity halfadd is 0 1 1 0 port (A: in std_logic; B: in std_logic; 1 0 1 0 F1: out std_logic; 1 1 0 1 F2: out std_logic ); end halfadd; ENTITY – define os “pinos” do circuito digital (sinais), ou seja, a interface entre a lógica implementada e o mundo externo. EEL7020 – Sistemas Digitais 5/23
  • 6. Descrição de circuito digital em VHDL ARCHITECTURE A F1 = A xor B B F2 = A and B architecture circuito_logico of halfadd is begin F1 <= A xor B; F2 <= A and B; end circuito_logico; ARCHITECTURE – define a funcionalidade do circuito digital, utilizando os “pinos” de entrada e saída listados na ENTITY em questão. Uma ENTITY pode possuir diversas implementações diferentes (diversas ARCHITECTURES). EEL7020 – Sistemas Digitais 6/23
  • 7. Descrição completa do circuito em VHDL (Entity e Architecture) A F1 = A xor B B library IEEE; F2 = A and B use IEEE.Std_Logic_1164.all; entity halfadd is port (A: in std_logic; Para utilizar o tipo B: in std_logic; std_logic é necessário F1: out std_logic; incluir um pacote da F2: out std_logic biblioteca IEEE. ); end halfadd; architecture circuito_logico of halfadd is begin F1 <= A xor B; F2 <= A and B; end circuito_logico; EEL7020 – Sistemas Digitais 7/23
  • 8. Plataforma de prototipação FPGA Altera - DE2 EEL7020 – Sistemas Digitais 8/23
  • 9. Kit DE2 da Altera EEL7020 – Sistemas Digitais 9/23
  • 10. Interface com o usuário (entrada e saída) • Placa DE2 possui 18 LEDs vermelhos denominados LEDR17-0 e 18 chaves denominadas SW17-0 • As conexões entre esses componentes e os pinos do FPGA da placa estão definidas no arquivo DE2_pin_assignments.csv • São utilizados “vetores” para facilitar o acesso aos LEDs e chaves da placa • Exemplo: SW[0] é o elemento 0 do vetor SW, e está conectado ao pino PIN_N25 do FPGA • No código em VHDL, usar sempre os nomes definidos no arquivo DE2_pin_assignments.csv (ver Pinos.csv no site da disciplina) EEL7020 – Sistemas Digitais 10/23
  • 11. Interface com o usuário (entrada e saída) • Código VHDL para “leitura” das chaves e “escrita” nos LEDs library ieee; use ieee.std_logic_1164.all; entity part1 is port ( SW : in std_logic_vector(17 downto 0); LEDR : out std_logic_vector(17 downto 0) ); end part1; architecture behavior of part1 is begin LEDR(7 downto 0) <= SW(15 downto 8); LEDR(15 downto 8) <= “01010101”; LEDR(17) <= (SW(17) AND SW(0)) OR (SW(16) AND ‘1’); end behavior; EEL7020 – Sistemas Digitais 11/23
  • 12. Tarefa a ser realizada na aula prática EEL7020 – Sistemas Digitais 12/23
  • 13. Tarefa a ser realizada na aula prática 1. Utilizando a ferramenta Quartus II da Altera, criar um projeto VHDL que implemente o circuito apresentado no slide 7 (and e xor). 2. Realizar a simulação do circuito (VHDL) por intermédio de diagramas de formas de onda, e obter a tabela verdade. 3. Visando aprender o fluxo de ferramentas de projeto, seguir o tutorial descrito no arquivo: tut_quartus_intro_vhdl.pdf 4. Utilizando as dicas do slide 11, alterar o projeto de forma a realizar a entrada dos dados A e B a partir das chaves SW(0) e SW(1), e a apresentação dos resultados F1 e F2 no LEDR(0) e LEDR(1). 5. Testar o circuito no kit DE2, usando as chaves SW(0) e SW(1) para entrar com os operandos, e observar os resultados nos LEDs. EEL7020 – Sistemas Digitais 13/23
  • 14. Resumo do tutorial tut_quartus_intro_vhdl.pdf 1. File -> New Project Wizard 2. No “project wizard”, seguir exatamente os passos do tutorial da última aula e do tut_quartus_intro_vhdl.pdf 3. File -> New -> VHDL File 4. Copiar o fonte VHDL do slide 7 para esse novo arquivo, e salvar. 5. Assignments -> Import Assigments (procurar no site e usar o arquivo DE2_pin_assignments.csv ou Pinos.csv) 6. Com isso, os pinos do FPGA foram associados aos sinais da entity do VHDL 7. Compilar o VHDL (síntese) 8. ATENÇÃO!!! Verificar se o nome da entity é o mesmo nome do projeto, para evitar erros na síntese. 9. A compilação resulta em cerca de 400 warnings devido aos pinos não conectados do arquivo .csv EEL7020 – Sistemas Digitais 14/23
  • 15. Resumo do tutorial tut_quartus_intro_vhdl.pdf 10. Simulação Funcional – Circuito sintetizado é testado para verificação de sua funcionalidade -> não considera informação de temporização. • File – New – Vector Waveform File • Edit – End Time – 200 ns • View – Fit in Window (^W) • Edit – Insert Node or Bus – Node Finder • Assignments – Settings – Simulator Settings – Functional • Processing – Generate Functional Simulation Netlist • Processing – Start Simulation 11. Análise Temporal – Análise dos atrasos de propagação de sinais no circuito após a síntese física – resulta em relatório constando o desempenho esperado. 12. Simulação Temporal – teste para verificação com atrasos. 13. Programação – FPGA é carregado com circuito, configurando fisicamente elementos de processamento e roteamento. Tools – Programmer. Hardware Setup – USB-Blaster. Start! EEL7020 – Sistemas Digitais 15/23
  • 16. Para ir além: uso do LCD EEL7020 – Sistemas Digitais 16/23
  • 17. Escrita no LCD da placa DE2 da Altera library ieee; use ieee.std_logic_1164.all; entity LCD is port ( LCD_DATA: out std_logic_vector(7 downto 0); LCD_RW: out std_logic; LCD_EN: out std_logic; LCD_RS: out std_logic; LCD_ON: out std_logic; LCD_BLON: out std_logic; SW : in std_logic_vector(17 downto 0) ); end LCD; architecture LCD_WR of LCD is begin LCD_ON <= SW(17); LCD_BLON <= SW(16); LCD_DATA <= SW(7 downto 0); LCD_RS <= SW(8); LCD_EN <= SW(9); LCD_RW <= SW(10); end LCD_WR; EEL7020 – Sistemas Digitais 17/23
  • 18. Passos para inicializar (CONFIGURAR) o LCD PASSO 1: Chave (SW) Valor (posição da chave) Efeito 17 1 LCD_ON 16 1 LCD_BLON - ligar LCD 7 .. 0 0011 1000 Comando - ativar cursor 8 0 LCD_RS (0 = controle) e piscar 9 0→1→0 LCD_EN 10 0 LCD_RW EEL7020 – Sistemas Digitais 18/23
  • 19. Passos para inicializar (CONFIGURAR) o LCD PASSO 2: Chave (SW) Valor (posição da chave) Efeito 17 1 LCD_ON 16 1 LCD_BLON - ligar LCD 7 .. 0 0000 1111 Comando - ativar cursor 8 0 LCD_RS (0 = controle) e piscar 9 0→1→0 LCD_EN 10 0 LCD_RW EEL7020 – Sistemas Digitais 19/23
  • 20. Passos para inicializar (CONFIGURAR) o LCD PASSO 3: Chave (SW) Valor (posição da chave) Efeito 17 1 LCD_ON 16 1 LCD_BLON - ligar LCD 7 .. 0 0000 0110 Comando - ativar cursor 8 0 LCD_RS (0 = controle) e piscar 9 0→1→0 LCD_EN 10 0 LCD_RW EEL7020 – Sistemas Digitais 20/23
  • 21. Procedimento de ESCRITA de caracteres no LCD O LCD aceita caracteres da tabela ASCII (ver http://asciitable.com). No exemplo a seguir está sendo escrito o caracter A, ou seja, 41H, ou 01000001 em binário. Chave (SW) Valor (posição da chave) Efeito 17 1 LCD_ON 16 1 LCD_BLON 7 .. 0 0100 0001 Dado ‘A’ 8 1 LCD_RS (1 = dados) 9 0→1→0 LCD_EN 10 0 LCD_RW EEL7020 – Sistemas Digitais 21/23
  • 22. Procedimento para limpar (apagar) o LCD Chave (SW) Valor (posição da chave) Efeito 17 1 LCD_ON 16 1 LCD_BLON 7 .. 0 0000 0001 Comando 8 0 LCD_RS (0 = controle) 9 0→1→0 LCD_EN 10 0 LCD_RW EEL7020 – Sistemas Digitais 22/23
  • 23. Escrita no LCD da placa DE2 da Altera Tutorial http://www.feng.pucrs.br/~jbenfica/curso/tutorial_lcd.pdf http://www.lisha.ufsc.br/~bezerra/disciplinas/Microprocessadores/tools/LCD/LCD_APLICATIVO.html EEL7020 – Sistemas Digitais 23/23