EEL-7020 – Sistemas Digitais

Definicao do Trabalho Pratico – 2010/2

“Projeto e implementacao em VHDL/FPGA de uma calculadora de pilha RPN”


Departamento de Engenharia Eletrica
CTC / UFSC
Florianopolis, SC, Brasil

Prof. Eduardo Bezerra

 

Visao geral

O objetivo geral do trabalho pratico e o projeto de um sistema digital para implementacao de uma
calculadora de pilha utilizando a notacao polonesa reversa (Reverse Polish Notation, RPN).
O sistema RPN e o preferido das calculadoras da marca Hewlett-Packard (HP). Maiores informacoes
sobre o funcionamento do sistema RPN podem ser encontradas nos seguintes links:

A calculadora devera ser implementada utilizando a linguagem de descricao de hardware VHDL. O funcionamento
correto da calculadora devera ser validado por intermedio de simulacao na ferramenta Quartus II da Altera,
e o sistema digital final devera ser prototipado em hardware utilizando o FPGA e perifericos da placa DE2
disponivel no Laboratorio de Sistemas Digitais do Departamento de Engenharia Eletrica da UFSC.


Especificacao da calculadora

  • Calculadoras HP como, por exemplo, a 15C e a 12C, possuem uma pilha com quatro posicoes podendo,
    dessa forma, armazenar um maximo de quatro operandos a serem utilizados nas operacoes. A calculadora
    a ser projetada devera possuir uma pilha com capacidade para armazenar, exatamente, tres operandos
    (tres posicoes na pilha).
  • A calculadora devera realizar operacoes aritmeticas de soma e subtracao com numeros inteiros, positivos e
    negativos.
  • A definicao do formato para representacao de numeros com sinal e uma decisao de projeto, sendo
    responsabilidade de cada equipe.
  • A implementacao de operacoes aritmeticas adicionais, tais como, multiplicacao e divisao e opcional.
  • A calculadora devera realizar, no minimo, as operacoes logicas AND, OR, XOR e NOT.
  • Deverao ser utilizados qualificadores (flags) para indicar a situacao dos resultados de operacoes.
    A calculadora devera possuir, no minimo, os flags para indicar resultado “zero”, sinal positivo
    ou negativo, overflow, e carry.
  • O tamanho da palavra da calculadora devera ser de 16 bits, tanto para operacoes logicas
    quanto para operacoes aritmeticas.
  • Os operandos de 16 bits e os operadores devem ser fornecidos nas chaves SW0-SW17.
  • A execucao das operacoes devera ser comandada pelos botıes KEY0 a KeY3.
  • Os resultados das operacoes deverao ser apresentados nos displays de 7-seg ou LCD, em hexadecimal ou decimal.
  • Os flags deverao ser apresentados nos LEDs verdes ou vermelhos.
  • A calculadora devera possuir um bloco de dados (data path) composto pela parte combinacional
    do sistema digital, onde as operacoes logicas e aritmeticas serao efetivamente executadas.
  • O controle da execucao das operacoes (controle do bloco de dados), assim como das entradas e saidas,
    devera ser realizado por uma unidade de controle projetada e implementada por intermedio de uma
    maquina de estados finita (FSM).
  • A figura a seguir apresenta um diagrama de blocos minimo esperado para o projeto da calculadora,
    considerando o circuito combinacional, o circuito sequencial, e a interface de entrada/saida.

fig1


Documentacao do projeto (relatorio final)

  • A documentacao devera ser completa e clara o suficiente para possibilitar
    alteracoes e atualizacoes na implementacao do projeto, sem a necessidade de consultar os
    projetistas
    . Durante a correcao da documentacao o professor da disciplina ira realizar uma
    alteracao no codigo VHDL, sem consultar os autores, com informacoes obtidas apenas a partir
    da documentacao. Na avaliacao final da documentacao sera considerado o grau de facilidade
    para realizar a alteracao no VHDL.
  • A documentacao do projeto devera conter uma descricao detalhada de todos os modulos desenvolvidos.
  • O texto devera DESCREVER o projeto, sem incluir a listagem completa do codigo VHDL implementado.
    Alguns trechos do codigo VHDL poderao ser incluidos na documentacao, apenas quando necessario
    para alguma explicacao de modulos implementados.
  • Devera ser incluido o fluxo completo do projeto, detalhando as ferramentas utilizadas e as
    etapas de projeto. A descricao do fluxo deve ser suficientemente detalhada de forma a
    facilitar a repeticao de todas as etapas realizadas. No momento da correcao do trabalho
    sera consultada e seguida a descricao do fluxo de projeto existente na documentacao. Dessa
    forma, descricoes incompletas do fluxo de projeto poderao prejudicar a avaliacao do trabalho.
  • Preparar e incluir na documentacao um diagrama de blocos completo com todos os modulos implementados.
    O diagrama de blocos devera ser detalhado de forma a incluir todos os sinais de entrada e saida,
    e todos os modulos implementados.
    FSM
  • Sugestao de organizacao para o documento do projeto:
    • Folha de rosto contendo dados do autor, da instituicao, local, data;
    • Objetivos do trabalho;
    • Especificacao do problema proposto – visao/entendimento do autor sobre essa especificacao;
    • Projeto dos componentes do sistema com uma breve descricao do objetivo de cada componente.
      Incluir nessa descricao uma explicacao (com diagrama de blocos e textual) dos componentes
      estudados na teoria e sua utilizacao na pratica (ex. multiplexadores, decodificadores, circuitos
      aritmeticos, …);
    • Descricao das ferramentas utilizadas e fluxo de projeto;
    • Descricao da simulacao realizada, com diagramas de forma de ondas extraidos diretamente do Quartus II;
    • Consideracoes e conclusıes sobre o trabalho realizado.
  • … importante cuidar a coerencia e a coesao da documentacao, pois o documento entregue sera
    essencial para o entendimento e correcao do trabalho realizado.
  • A documentacao devera ser entregue no Moodle,
    obedecendo RIGOROSAMENTE o prazo estipulado.

Codigo fonte VHDL

  • O codigo fonte VHDL deve estar adequadamente comentado – incluir um comentario explicativo em cada
    bloco de codigo e, sempre que necessario, em linhas individuais.
  • Incluir um bloco de comentario no inicio do arquivo com o fonte VHDL contendo
    dados dos alunos e demais dados de identificacao do projeto (ex. utilidade, ferramentas, FPGA alvo, …).
  • O codigo fonte precisa estar com a indentacao adequada.
  • Escolher nomes adequados para os simbolos utilizados no programa (entities, architectures, signals, …).
  • O fonte VHDL devera ser entregue no Moodle,
    obedecendo RIGOROSAMENTE o prazo estipulado.

Etapas do projeto e dicas uteis

1. Dividir o problema em partes menores – abordagem “dividir para conquistar”:

  • Desenvolver circuitos em VHDL para acesso aos perifericos da placa com o FPGA. Durante o semestre,
    alguns desses circuitos foram desenvolvidos nas aulas teoricas e praticas
    (ex. decodificador para os displays de 7 segmentos).
  • Desenvolver circuitos combinacionais em VHDL para as operacoes logicas e aritmeticas a serem executadas
    pela calculadora (ex. soma, subtracao, multiplicacao, divisao, AND, OR, XOR). Durante o semestre, alguns
    desses circuitos foram desenvolvidos nas aulas teoricas e praticas
    (ex. somador).
  • Desenvolver uma unidade logica e aritmetica (ULA) utilizando os componentes combinacionais descritos em VHDL.
  • Desenvolver a unidade de controle da unidade logica e aritmetica (ULA).
    Seguir as dicas para implementacao de circuitos controladores fornecidas
    nas aulas teoricas e praticas. Uma boa dica de descricao em VHDL de uma FSM de controlador
    e desenvolvida no Laboratorio 9.
  • Apos ter certeza que todos os circuitos possuem o comportamento desejado, realizar a integracao dos
    componentes desenvolvidos, formando gradualmente sistemas digitais mais completos que atendam aos
    requisitos da calculadora solicitada.
  • Seguindo essa filosofia de projeto, poderia ser desenvolvida uma calculadora com apenas uma
    operacao (soma, por exemplo) e, apos devidamente validada, as demais operacoes poderiam
    ser incluidas (todos os novos componentes sendo validados individualmente, antes de serem
    anexados ao projeto).
  • ATEN«√O!! Mesmo projetistas de sistemas digitais experientes, ja atuando na
    industria, nao desenvolvem sistemas por inteiro sem antes simular e validar os componentes
    individualmente. Essa regra e seguida por projetistas experientes ate para sistemas digitais
    considerados simples como, por exemplo, a calculadora RPN em questao.

2. Simulacao do projeto:

  • Utilizar a ferramenta de simulacao com formas de ondas do Quartus II para simular os circuitos
    desenvolvidos individualmente.
  • Realizar a simulacao com os diagramas de formas de ondas dos diversos componentes desenvolvidos e,
    gradualmente, dos novos componentes compostos pela integracao dos componentes menores, ate chegar
    na implementacao final da calculadora.

3. Prototipacao no FPGA da placa DE2 da Altera:

  • Identificar os perifericos disponiveis na DE2 e pinos de entrada/saida do FPGA, que poderao ser uteis
    no desenvolvimento do sistema digital solicitado. Informacoes sobre pinos e perifericos poderao ser
    encontradas no Manual do Usuario da Placa DE2.
  • Testar no FPGA os diversos componentes conforme forem sendo desenvolvidos, assim como os componentes
    resultantes da integracao dos modulos. Realizar os testes na placa, apenas apos a simulacao indicar
    que o sistema esta funcionando de acordo com o esperado.

4. Ajuda:

  • Procurar o monitor da disciplina, Gabriel Landeira, para duvidas sobre o projeto dos circuitos a serem utilizados.
    Lembar que o monitor nao possui conhecimento em VHDL, mas estara disponivel para tirar duvidas sobre a logica
    necessaria para o projeto de todos os circuitos necessarios para a implementacao da calculadora
    (ex. multiplexadores, somadores, decodificadores, …).
  • Verificar a agenda semanal do professor da disciplina para agendar horarios de atendimento e, tambem,
    para agendar a data/hora da apresentacao do trabalho na semana de 6 a 10 de dezembro:

Avaliacao

  • O trabalho podera ser desenvolvido individualmente ou em grupos com, no maximo, tres integrantes.
  • Conforme colocado anteriormente, a documentacao do projeto e o fonte VHDL deverao ser entregues no
    Moodle, obedecendo RIGOROSAMENTE o prazo estipulado.
  • A apresentacao da simulacao e a demonstracao do funcionamento na placa com o FPGA sera realizada
    na semana de 6 a 10 de dezembro de 2010. O grupo devera combinar com o professor da disciplina
    a data e hora para apresentacao do trabalho durante essa semana.
  • Durante a apresentacao, os alunos deverao estar aptos a responder quaisquer perguntas. Respostas
    insatisfatorias ou a ausencia dos alunos acarretara em anulacao da nota final.
  • Na apresentacao serao realizados questionamentos sobre decisıes de projeto e estrategias
    de implementacao VHDL utilizadas. Sera verificada tambem a familiaridade dos alunos com
    as ferramentas de desenvolvimento utilizadas durante o semestre. Todos os alunos do grupo
    devem estar aptos a responder todas as questıes.
  • As explicacoes durante a apresentacao da documentacao do projeto, e na demonstracao da calculadora
    funcionando por intermedio da simulacao e dos diagramas de formas de onda, sao fundamentais
    para a avaliacao.
  • Trabalhos copiados, inclusive entre turmas, resultarao em nota zero para todos os alunos envolvidos.
    Sera utilizado o MOSS como ferramenta auxiliar
    na identificacao de situacoes de plagio.
  • Os tres itens a serem avaliados possuem os seguintes pesos na nota final do trabalho pratico:
    • Documentacao do projeto: 40%
    • Simulacao completa: 50%
    • Demonstracao do funcionamento da calculadora no FPGA: 10%