“Elevador para edificações com três andares”

UFSC/CTC/EEL, semestre 2014/1

EEL7020 – Sistemas Digitais

Prof. Eduardo Augusto Bezerra

Prof. Joni da Silva Fraga

Prof. Djones Vinicius Lettnin

Descrição Geral do Problema

O projeto final consiste na implementação em VHDL para FPGAs de um circuito digital que realize o controle de um elevador.

Especificações primárias

  • Prioridade para subir ou descer.
  • Comando para chamada em cada pavimento (dentro e fora do elevador).
  • Temporização mínima de parada para cada andar (10 segundos).

Especificações secundárias

  • Contador Up/Down indica estado do elevador.
  • Utilizar registrador para memorizar chamadas. 
  • Realizar o projeto utilizando máquina de estados.

Figura 1. Diagrama de blocos do circuito a ser desenvolvido em VHDL.

Tabela de estados do elevador

Estados Atuais

Próximos Estados

[Descida (U/D=0)]:   Entradas U/D, CH3, CH2, CH1

0000 0001 0010 0011 0100 0101 0110 0111
T T T A1 T A2 T A1 T
A1 A1 T A1 A1 A2 T A1 A1
A2 X X X X X X X X

 

Estados Atuais

Próximos Estados

[Subida (U/D=1)]:   Entradas U/D, CH3, CH2, CH1

1000 1001 1010 1011 1100 1101 1110 1111
T X X X X X X X X
A1 A1 T A1 A1 A2 A2 A1 A1
A2 A2 T A1 A1 A2 A2 A2 A2

Legenda:

  • T – Térreo
  • A1 – Primeiro andar
  • A2 – Segundo andar
  • U/D – Up/Down
  • CH1 – Chamada para o térreo (T)
  • CH2 – Chamada para o primeiro andar (A1)
  • CH3 – Chamada para o segundo andar (A2)
Simulação do elevador

O bloco “ELEVADOR” na Figura 1 representa o elevador (real) a ser controlado. Esse componente precisa ser implementado de forma a possuir:

  • Entrada E de 1 bit para ligar/desligar o motor do elevador.
  • Entrada S de 1 bit para realizar a subida ou descida do elevador.
  • Saída C de 1 bit para indicação de andar. Essa saída deverá gerar um pulso sempre que o elevador mudar de andar, servindo assim como clock para o contador Up/Down indicado na Figura 1.
Para implementação do bloco “ELEVADOR” poderá ser utilizado o display LCD da placa DE2 (opcionalmente - não é obrigatório o uso do LCD no projeto). No LCD poderão ser apresentadas informações sobre a situação do motor do elevador (ligado ou desligado), sobre a direção do movimento do elevador (subida ou descida), entre outras.
Algumas dicas para uso do LCD:
  • Simulador do LCD – usar esse simulador para verificar o comportamento do LCD de acordo com os comandos e dados enviados.
  • Datasheet do LCD – informação detalhada sobre o LCD.
  • Resumo dos comandos – Conjunto minimo de comandos para utilização do LCD.
  • Display.c – Exemplo de programa em linguagem C para escrita no LCD.
O funcionamento da FSM de controle do LCD é o seguinte:
    1. Ao alimentar o circuito (DE2) pela primeira vez, essa FSM deverá enviar para o LCD os três comandos 38H, 0FH, e 06H, colocando para isso a saída RS em ‘0’, e a saída EN em ‘1’ e depois em ‘0’, conforme apresentado a partir do slide 19 do Laboratório 2. Após a etapa de configuração do LCD, os dados podem ser escritos no display, e a etapa de configuração não deve ser repetida.
    2. Colocar a saída RS em ‘1’, informando ao LCD que a partir desse momento serão enviados dados para o display, e não comandos.
    3. Enviar informação sobre o motor do elevador (ligado ou desligado).
    4. Enviar informação sobre a direção do movimento do elevador (subida ou descida).
    5. Enviar outras informações para o LCD que achar necessário.
A FSM deverá permanecer indefinidamente realizando esses passos, para manter o LCD sempre atualizado em relação ao que está ocorrendo com o elevador.

Exigências do projeto

Todos os componentes devem estar devidamente declarados e conectados em VHDL em um arquivo “Topo da hierarquia”. Nesse arquivo deverá ser utilizado o “port map” do VHDL para realizar as conexões dos componentes. Notar também os sinais de entrada e saída da Entity do topo. Esse “topo” é o único componente do sistema que poderá declarar na sua entity os sinais de interface com a DE2. Exemplos de sinais que devem ser utilizados na entity do topo:
  • CLOCK_50 – Entrada de 1 bit conectada ao sinal de relógio de 50MHz da DE2;
  • KEY(3..0) – Botões;
  • SW(17..0) – Chaves;
  • HEX0, HEX1 – Display de 7-segmentos;
  • LEDG(17..0) – LEDs verdes;
  • LEDR(7..0) – LEDs vermelhos;
  • LCB_BLON – Saída de 1 bit que deverá ser mantida em nível lógico ‘1’ para ligar a backlight do LCD (o LCD da DE2 não possui luz de fundo);
  • LCD_ON – Saída de 1 bit que deverá ser mantida em nível lógico ‘1’ para ligar o LCD;
  • LCD_RW – Saída de 1 bit que deverá ser mantida em nível lógico ‘0’ para informar ao LCD que estarão sendo realizadas apenas operações de escrita no LCD;
  • LCD_DATA – Saída de 8 bits onde deverá estar conectado o componente responsável pelo envio de dados ao LCD (MUX2);
  • LCD_RS – Saída de 1 bit onde está conectada a saída RS do componente responsável pelo controle do LCD;
  • LCD_EN – Saída de 1 bit onde está conectada a saída EN do componente responsável pelo controle do LCD.
Obs. Os componentes precisam ser projetados e implementados de acordo com a especificação fornecida.
É importante lembrar da exigência da implementação de um arquivo “topo da hierarquia”, utilizando os recursos de “component” e “port map” do VHDL, conforme definido no Laboratório 3, e desenvolvido em todas as demais aulas do semestre.

Teste e validação

Utilizar o simulador com formas de onda (Modelsim) para verificar o funcionamento do circuito, antes de testar na placa com FPGA.

Criar um script para automatizar o processo de criação da janela de formas de onda do Modelsim. Para utilizar o script, basta alterar o arquivo fornecido de acordo com os sinais a serem simulados no projeto em questão.

Algumas dicas:

  • Utilizar o arquivo (script) compila.do como base.
  • Esse script foi preparado para realizar a simulação do fonte VHDL teste.vhd, também disponível para download.
  • O arquivo teste.vhd foi preparado para servir como exemplo de um fonte VHDL a ser simulado com o script compila.do, e a entity do teste.vhd possui alguns dos sinais esperados no topo do projeto final da disciplina.
  • Para utilizar o script fornecido:
    • Copiar o arquivo compila.do para a mesma pasta onde se encontra o projeto VHDL (arquivos a serem simulados)
    • Editar o arquivo compila.do, e realizar as alterações necessárias, de acordo com seu projeto (alterar nomes de sinais, duração da simulação, valores dos sinais de entrada, sinais de clock, reset, …).
    • No Quartus II, após realizar a síntese (compile), selecionar a opção para simulação conforme descrito no livro – RTL simulation
    • Quando o Modelsim for executado, mudar para o diretório de trabalho onde se encontram os arquivos de projeto: Menu File -> Change directory – selecionar a pasta onde se encontra o projeto VHDL (arquivos a serem simulados e arquivo compila.do)
    • Na linha de comando do Modelsim digitar o comando: do compila.do
    • Ao ser executado, o script irá inicializar a simulação, criar a janela de formas de onda, colocar os sinais indicados na janela de forma de ondas, definir valores para os sinais, executar um passo de simulação, definir novos valores (force) para os sinais, realizar mais um passo de simulação, …

Documentação do projeto (relatório final)

  • A documentação deverá ser completa e clara o suficiente para possibilitar alterações e atualizações na implementação do projeto, sem a necessidade de consultar os projetistas. Durante a correção da documentação o professor da disciplina irá realizar uma alteração no código VHDL, sem consultar os autores, com informações obtidas apenas a partir da documentação. Na avaliação final da documentação será considerado o grau de facilidade para realizar a alteração no VHDL.
  • A documentação do projeto deverá conter uma descrição detalhada de todos os módulos desenvolvidos.
  • O texto deverá DESCREVER o projeto, sem incluir a listagem completa do código VHDL implementado. Alguns trechos do código VHDL poderão ser incluídos na documentação, apenas quando necessário para alguma explicação de módulos implementados.
  • Deverá ser incluído o fluxo completo do projeto, detalhando as ferramentas utilizadas e as etapas de projeto. A descrição do fluxo deve ser suficientemente detalhada de forma a facilitar a repetição de todas as etapas realizadas. No momento da correção do trabalho será consultada e seguida a descrição do fluxo de projeto existente na documentação. Dessa forma, descrições incompletas do fluxo de projeto poderão prejudicar a avaliação do trabalho.
  • Preparar e incluir na documentação um diagrama de blocos completo com todos os módulos implementados. O diagrama de blocos deverá ser detalhado de forma a incluir todos os sinais de entrada e saída, e todos os módulos implementados.
  • Deverá ser fornecida também a representação gráfica das máquinas de estados, tabelas de estados e explicações sobre estados e transições.
  • Incluir os diagramas de forma de onda da simulação, com explicações sobre o que está acontecendo com os sinais nas formas de onda, mais exatamente, o que está sendo apresentado/observado na simulação/forma de onda em questão.
  • Sugestão de organização para o documento do projeto:
    • Folha de rosto contendo dados do autor, da instituição, local, data;
    • Objetivos do trabalho;
    • Especificação do problema proposto – visão/entendimento do autor sobre essa especificação;
    • Projeto dos componentes do sistema com uma breve descrição do objetivo de cada componente. Incluir nessa descrição uma explicação (com diagrama de blocos e textual) dos componentes estudados na teoria e sua utilização na prática (ex. registradores, decodificadores, circuitos aritméticos, …);
    • Descrição das ferramentas utilizadas e fluxo de projeto;
    • Descrição da simulação realizada, com diagramas de forma de ondas extraídos diretamente do ModelSim;
    • Considerações e conclusões sobre o trabalho realizado.
  • É importante cuidar a coerência e a coesão da documentação, pois o documento entregue será essencial para o entendimento e correção do trabalho realizado.
  • A documentação deverá ser entregue no Moodle, obedecendo RIGOROSAMENTE o prazo estipulado.

OBSERVAÇÃO IMPORTANTE!! O trabalho pode ser realizado em grupo, porém A AVALIAÇÃO É INDIVIDUAL. Cada integrante do grupo SERÁ QUESTIONADO INDIVIDUALMENTE, e deverá estar apto a UTILIZAR A FERRAMENTA de desenvolvimento, e mostrar CONHECIMENTO DE TODO O VHDL desenvolvido, assim como da SIMULAÇÃO REALIZADA.

Código fonte VHDL e arquivo de projeto do Quartus II

  • O código fonte VHDL deve estar adequadamente comentado – incluir um comentário explicativo em cada bloco de código e, sempre que necessário, em linhas individuais.
  • Incluir um bloco de comentário no início do arquivo com o fonte VHDL contendo dados dos alunos e demais dados de identificação do projeto (ex. utilidade, ferramentas, FPGA alvo, …).
  • O código fonte precisa estar com a indentação adequada.
  • Escolher nomes adequados para os símbolos utilizados no programa (entitiesarchitecturessignals, …).
  • Os fontes VHDL deverão ser entregues no Moodle, obedecendo RIGOROSAMENTE o prazo estipulado.
  • Gerar um arquivo compactado, contendo APENAS os fontes VHDL do projeto desenvolvido no Quartus II, e submeter apenas esse arquivo. O sistema de submissão de trabalhos disponível no Moodle aceitará a submissão de um único arquivo por grupo. Foi definido um tamanho máximo de arquivo que pode ser submetido, para garantir que o aluno irá enviar APENAS os fontes VHDL compactados em um único arquivo.

Etapas do projeto e dicas úteis

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

  • Desenvolver em VHDL e simular (diagrama de formas de onda) os componentes solicitados no trabalho. Durante o semestre, alguns desses circuitos foram desenvolvidos nas aulas teóricas e práticas como, por exemplo, registradores e máquinas de estados.
  • Desenvolver e simular (diagrama de formas de onda) os circuitos combinacionais em VHDL para as operações lógicas e aritméticas a serem executadas.
  • Seguir as dicas para implementação de circuitos controladores fornecidas nas aulas teóricas e práticas. Uma boa dica de descrição em VHDL de uma FSM de controlador é desenvolvida no Laboratório 8.
  • Após ter certeza que todos os circuitos possuem o comportamento desejado, realizar a integração dos componentes desenvolvidos, formando gradualmente sistemas digitais mais completos que atendam aos requisitos fornecidos. A integração de componentes é realizada com port map, e foi apresentada e praticada desde o início do semestre a partir do Laboratório 3.
  • Seguindo essa filosofia de projeto, poderia ser desenvolvida uma versão inicial do circuito com apenas uma funcionalidade e, após devidamente validada, as demais funcionalidades poderiam ser incluídas. Os  componentes podem ser validados individualmente, antes de serem anexados ao projeto. Uma sugestão é comentar os port maps onde as conexões dos componentes são definidas, e ir removendo os comentários de forma a incluir os componentes gradualmente no circuito. As entradas dos componentes podem ser exercitadas por intermédio de chaves e botões, e as saídas podem ser observadas nos LEDs. Quando um componente é anexado ao circuito, essas entradas e saídas devem ser substituídas pelos sinais adequados da FSM de controle.
  • ATENÇÃO!! Mesmo projetistas de sistemas digitais experientes, já atuando na indústria, não desenvolvem sistemas por inteiro sem antes simular e validar os componentes individualmente. Essa regra é seguida por projetistas experientes até para sistemas digitais considerados simples como, por exemplo, o projeto em questão.

2. Simulação do projeto:

  • Utilizar ferramentas de simulação com formas de ondas, tais como, o ModelSim para simular os circuitos desenvolvidos individualmente.
  • Realizar a simulação com os diagramas de formas de ondas dos diversos componentes desenvolvidos e, gradualmente, dos novos componentes compostos pela integração dos componentes menores, até chegar na implementação final do projeto.
  • A simulação individual dos componentes é importante durante as etapas de desenvolvimento, mas apenas a simulação final com todos os componentes integrados (simulação do topo) pode ser considerada na validação final do projeto.

3. Prototipação na plataforma de desenvolvimento:

  • Identificar os periféricos disponíveis no kit de desenvolvimento e pinos de entrada/saída, que poderão ser úteis no desenvolvimento do sistema digital solicitado.
  • Testar na plataforma de desenvolvimento os diversos componentes conforme forem sendo desenvolvidos, assim como os componentes resultantes da integração dos módulos. Realizar os testes na plataforma de desenvolvimento, apenas após a simulação (diagramas de formas de onda) indicar que o sistema está funcionando de acordo com o esperado.
  • As plataformas de desenvolvimento do laboratório não poderão ser emprestadas para os alunos, que deverão compartilhar as mesmas apenas no laboratório.

4. Ajuda:

  • Procurar o monitor da disciplina e equipe de apoio para dúvidas sobre o projeto dos circuitos a serem utilizados.

Avaliação

  • O trabalho poderá ser desenvolvido individualmente ou em grupos com, no máximo, três integrantes.
  • O relatório é individual. Cada aluno da turma deverá preparar seu próprio relatório, expressando a sua opinião.
  • O código VHDL pode ser o mesmo para todos os alunos de um mesmo grupo.
  •  Será avaliado, principalmente, o funcionamento de todos os componentes funcionando em conjunto, ou seja, a principal simulação a ser apresentada é a do arquivo “topo”. É preciso mostrar que a FSM está controlando adequadamente todos os demais componentes do circuito, com o mesmo clock sendo aplicado a todo o projeto (isso só é possível de ser observado no topo).
  • A documentação do projeto e o fonte VHDL deverão ser entregues no Moodle:
    • A entrega dos fontes VHDL e do relatório será realizada no Moodle.
    • Não serão aceitos envios atrasados. O sistema do Moodle irá bloquear automaticamente após o prazo final da entrega.
    • Em semestres anteriores, alunos que perderam o prazo para envio ficaram com nota zero no trabalho final.
    • O sistema aceita vários envios (desde que dentro do prazo de entrega). Assim, é fortemente recomendado que todas as versões parciais do trabalho sejam enviadas no moodle (tanto o VHDL quanto o relatório).
    • Uma nova submissão sobreescreve a anterior. Todos os alunos devem submeter pelo menos uma versão dos seus trabalhos por dia, garantindo que terá um trabalho para ser avaliado no final do semestre.
    • O tamanho máximo do arquivo contendo o relatório é de 1 M bytes. Deverá ser submetido APENAS um arquivo, e esse arquivo deverá estar no formato PDF.
    • O tamanho máximo do arquivo contendo os fontes VHDL é de 100 K bytes. Deverá ser submetido APENAS um arquivo compactado contendo todos os fontes VHDL.
    • Não deverão ser incluídos arquivos de projeto do Quartus II no arquivo compactado – INCLUIR APENAS OS FONTES VHDL (.vhd).
    • O nome do arquivo compactado com os fontes VHDL deverá ser o nome completo do aluno, sem espaçamento e sem acentuação. Por exemplo, o aluno “Eduardo Augusto Bezerra” deverá gerar o seguinte arquivo compactado com seus fontes VHDL: “EduardoAugustoBezerra.zip”
    • TODOS OS ALUNOS DEVERÃO SUBMETER OS SEUS RELATÓRIOS E FONTES VHDL, MESMO QUE TENHAM DESENVOLVIDO OS TRABALHOS EM GRUPOS.
    • O sistema de submissões de arquivos do Moodle é a ferramenta oficial para entrega de trabalhos da disciplina. NÃO SERÃO ACEITOS TRABALHOS ENVIADOS POR EMAIL, TRABALHOS IMPRESSOS, OU QUALQUER OUTRA FORMA DE ENTREGA A NÃO SER O SISTEMA DO MOODLE.
  • A apresentação da simulação e a demonstração do funcionamento por intermédio de simulação será realizada nas semanas indicadas no cronograma das aulas. Os alunos deverão agendar a data e hora para apresentação do trabalho diretamente no Moodle, conforme instruções enviadas por email para todos os alunos.
  • Durante a apresentação, os alunos deverão estar aptos a responder quaisquer perguntas. Respostas insatisfatórias ou a ausência do aluno poderá acarretar em anulação da nota final.
  • Na apresentação serão realizados questionamentos sobre decisões de projeto e estratégias de implementação VHDL utilizadas. Será verificada também a familiaridade dos alunos com as ferramentas de desenvolvimento utilizadas durante o semestre. Todos os alunos devem estar aptos a responder todas as questões.
  • As explicações durante a apresentação da documentação do projeto, e na demonstração do projeto funcionando por intermédio da simulação e dos diagramas de formas de onda, são fundamentais para a avaliação.
  • Trabalhos copiados, inclusive entre turmas, resultarão em nota zero para todos os alunos envolvidos. Será utilizado o MOSS como ferramenta auxiliar na identificação de situações de plágio. Obviamente, similaridade de 100% nos fontes VHDL de um mesmo grupo é um resultado esperado. O mesmo não se espera em relação aos relatórios, que deverão ser diferentes mesmo entre integrantes do mesmo grupo.
  • Os dois itens a serem avaliados possuem os seguintes pesos na nota final do trabalho prático:
    • Documentação do projeto: 40%
    • Demonstração do funcionamento por intermédio de simulação: 60%

     

OBSERVAÇÃO IMPORTANTE!! O trabalho poderá ser realizado em grupo, porém A AVALIAÇÃO É INDIVIDUAL. Cada integrante do grupo SERÁ QUESTIONADO INDIVIDUALMENTE, e deverá estar apto A UTILIZAR A FERRAMENTA de desenvolvimento, e mostrar CONHECIMENTO DE TODO O VHDL desenvolvido, assim como da SIMULAÇÃO REALIZADA. Cada integrante do grupo deverá reservar um horário em separado para sua apresentação.