top of page

Hello World! Como prototipar "Olá Mundo" na Placa Virtual Pitanga

Atualizado: 16 de nov. de 2024

O "Olá Mundo" (ou "Hello World") é um nome utilizado em tutoriais de linguagens de programação para a implementação de um primeiro programa simples e funcional. No mundo da programação, o "Olá Mundo" normalmente escreve a frase "Hello World!" em um terminal de texto. Neste tutorial, você vai aprender a projetar um circuito digital que escreve o caractere "L" no display de sete segmentos da Placa-S (S-Board).



Neste tutorial, você irá aprender a:

  • projetar um circuito que imprime no display de sete segmentos

  • descrever em Verilog um circuito que imprime a letra 'L'

  • mapear as portas de um circuito em Verilog para o display da Placa-S (S-Board)

  • compilar e emular um circuito que imprime a letra 'L' na S-Board

  • ler e compreender o relatório resumido do projeto de um circuito digital

  • compilar e interagir com o projeto "Olá Mundo" na S-Board


Entendendo o projeto do circuito

O circuito digital para a implementação deste projeto é bem simples e não exige muito conhecimento em lógica digital. O único trabalho a se realizar é a conexão das chaves para o display de sete segmentos, que será realizada por intermédio do dispositivo virtual programável Pitanga (ou vPLD, virtual programmable logic device). Os segmentos do display da S-Board são ativos em nível lógico '1' (VCC). Sendo assim, precisamos conectar os segmentos corretos ao nível lógico '1' (VCC) para escrever a letra 'L' no display. Abaixo, segue esquemático do projeto do circuito:



Note que o dispositivo que conecta a chave sw1 ao display de sete segmentos é um buffer (representado por triângulos). Há três buffers, um para cada segmento do display que forma a letra 'L'. Estes buffers estão presentes no vPLD Pitanga e serão descritos em Verilog na sessão a seguir.

Descrevendo o circuito em Verilog

O vPLD Pitanga possui diversas células lógicas (ou portas lógicas). Dentre elas, temos os buffers, que são portas que apenas transmitem o sinal de entrada para a saída sem realizar alteração alguma no sinal. Abaixo, temos um esquemático um pouco mais detalhado do mesmo circuito, indicando que os buffers são células do vPLD Pitanga. Estas células serão utilizadas para conectar a chave sw1 ao display de sete segmentos.



A partir do esquemático, vamos descrever o circuito que faz a interface entre o display de sete segmentos e a chave sw1 da S-Board. Inicialmente, vamos declarar os sinais de interface, que são: L[2], L[1], L[0] e chave_l. Estes sinais devem ser codificados na construção module em Verilog, conforme indicado abaixo:

module ola_mundo(
    // Sinal que liga e desliga a letra 'L'
    input   chave_l,

    // Vetor de sinais conectado aos segmentos
    // que formam a letra 'L'
    output [2:0] L
    );

O sinal de saída L é um vetor. Vetores em Verilog são declarados através da estrutura de colchetes. Os sinais individuais do vetor L pode ser acessados da seguinte forma: L[0], L[1] e L[2].


Em seguida, logo abaixo da construção module, vamos descrever a lógica do circuito digital que, neste caso, são os três buffers conectados a chave externa chave_l.

    // Circuito que liga e desliga os
    // segmentos que compoem a letra "L"
    buf(L[2],chave_l);
    buf(L[1],chave_l);
    buf(L[0],chave_l);

E, por fim, vamos adicionar a diretiva endmodule encerrando, assim, nosso módulo ola_mundo.

endmodule

O código completo do circuito em Verilog é mostrado a seguir:

module ola_mundo(
    // Sinal que liga e desliga a letra 'L'
    input   chave_l,

    // Vetor de sinais conectado aos segmentos
    // que formam a letra 'L'
    output [2:0] L
    );

    // Circuito que liga e desliga os
    // segmentos que compoem a letra "L"
    buf(L[2],chave_l);
    buf(L[1],chave_l);
    buf(L[0],chave_l);
endmodule

Mapeando o circuito Verilog na S-Board

O circuito está pronto e descrito em Verilog, mas falta conectá-lo aos componentes da S-Board (chaves e displays). Cada componente da placa possui um rótulo. Este rótulo pode ser identificado pela serigrafia, com exceção dos segmentos individuais do display. Para descobrir o nome de cada um dos segmentos do display, precisamos utilizar a figura abaixo:

Agora que sabemos os rótulos dos identificadores dos componentes, iremos conectar as portas de entrada e saída do circuito Verilog aos componentes da placa virtual. Para isso, será necessário decrever o seguinte código no editor de pinagem:

// Porta Verilog    Componente da Placa
// Mapeia portas de entrada para as chave sw1
chave_l         =   sw1;

// Mapeia portas de saida correspondendo a
// letra 'L' para o display de sete segmentos
L[2]            =   segd2.f_on;
L[1]            =   segd2.e_on;
L[0]            =   segd2.d_on;

Note que o código de mapeamento representa, de forma textual, o esquemático indicado na figura abaixo:



Encerrada esta etapa, vamos para o processo de compilação e emulação do projeto.


Compilando e emulando o projeto

O processo de compilação traduz o código descrito no editor Verilog e no editor de pinagem para as células lógicas disponíveis no vPLD Pitanga. É através da compilação que o circuito digital é construído. Para realizar a compilação, clique no botão "Run" na barra de ícones ao lado esquerdo da Pitanga IDE (veja o vídeo).


Caso você não tenha cometido nenhum erro de codificação no Verilog, será impresso no terminal de texto o relatório com o resumo do projeto. Neste relatório, você irá notar que os buffers projetados estão contabilizados na última linha da primeira coluna.

                     DESIGN SUMMARY REPORT
  module     : ola_mundo
  design file: pitanga.v
  pinout file: pitanga.pinout

Total number of wires: 4
Total number of cells: 3
Total number of ports: 6

  Cell      Instances   Cell      Instances   Cell      Instances
 -----------------------------------------------------------------
  AND2              0 | NAND2             0 | XOR2              0 
  AND3              0 | NAND3             0 | XOR3              0
  AND4              0 | NAND4             0 | XOR4              0
  OR2               0 | NOR2              0 | XNOR2             0
  OR3               0 | NOR3              0 | XNOR3             0
  OR4               0 | NOR4              0 | XNOR4             0
 -----------------------------------------------------------------
  BUF               3 | INV               0 | DFFRSE            0

Cells utilization: 3
Transistor count : 12/4000 transistors (0.30 %)

Por fim, clique na chave sw1 e verifique se a letra 'L' aparece no display segd2.



Se você conseguiu imprimir a letra 'L', então será fácil escrever "OLA" no display da S-Board. Basta replicar o conceito deste projeto para as letras 'O' e 'A'. Tome um tempo e tente fazer por você mesmo. Caso contrário, vá para a seção a seguir.


Emulando "Ola Mundo" na S-Board

O projeto "Ola Mundo" tem o seguinte comportamento na S-Board:

  • sw2: habilita/desabilita a letra 'O' no display segd3

  • sw1: habilita/desabilita a letra 'L' no display segd3

  • sw0: habilita/desabilita a letra 'A' no display segd3


Os arquivos deste projeto são ola_mundo.v e ola_mundo.pinout. Estes arquivos estão logo abaixo e devem ser compilados no vPLD Pitanga. Caso tenha dúvidas de como fazer, siga as etapas indicadas nas seções anteriores.

ola_mundo.v

ola_mundo.pinout

O resultado da compilação será o vídeo indicado no início deste tutorial. Este projeto possui 15 buffers e utiliza 3% da capacidade de células disponíveis no vPLD Pitanga. O resumo do projeto encontra-se no relatório a seguir:


                     DESIGN SUMMARY REPORT
  module     : ola_mundo
  design file: pitanga.v
  pinout file: pitanga.pinout

Total number of wires: 18
Total number of cells: 15
Total number of ports: 20

  Cell      Instances   Cell      Instances   Cell      Instances
 -----------------------------------------------------------------
  AND2              0 | NAND2             0 | XOR2              0 
  AND3              0 | NAND3             0 | XOR3              0
  AND4              0 | NAND4             0 | XOR4              0
  OR2               0 | NOR2              0 | XNOR2             0
  OR3               0 | NOR3              0 | XNOR3             0
  OR4               0 | NOR4              0 | XNOR4             0
 -----------------------------------------------------------------
  BUF              15 | INV               0 | DFFRSE            0

Cells utilization: 15
Transistor count : 60/4000 transistors (1.50 %)

Conclusão

Parabéns! Você acaba de prototipar um circuito digital sem utilizar FPGAs. Com o auxílio da S-Board e do vPLD Pitanga, você obteve a experiência de desenvolver um circuito digital em Verilog sem gastar um tostão comprando protoboards ou placas baseadas em FPGAs. Este mesmo Verilog pode ser compilado em uma placa real, funcionando da mesma forma, desde que a placa real tenha displays de sete segmentos.

 

Você sabia que a S-Board pode ser utilizada em sua instituição de ensino? Entre em contato com a gente e saiba como!

Comentários


  • Discord
  • Instagram
  • Email
  • LinkedIn

inPlace Softwares para Automação LTDA

Rio Grande do Sul - Brasil

Copyright © 2024 - Todos os direitos reservados

bottom of page