“Photoshop em Hardware”

UFSC/CTC/EEL, semestre 2012/2

EEL7020 – Sistemas Digitais

Prof. Eduardo Augusto Bezerra

Prof. Joni da Silva Fraga

Prof. Djones Vinicius Lettnin

Eng. Tomás Grimm

Descrição Geral do Problema

O projeto final consiste na implementação em VHDL para FPGAs de um circuito digital que realize a conversão de imagens coloridas para preto-e-branco, mais especificamente, para “tons de cinza”, e apresente as imagens em um display VGA conectado a placa DE2. A Figura 1 apresenta um exemplo desse tipo de conversão de imagem.

Figura 1. Exemplo de imagem colorida convertida para tons de cinza.

Conversão de imagens coloridas para preto e branco (tons de cinza)

O algoritmo para realizar o processamento de uma imagem, depende do tipo da imagem. No presente projeto são consideradas imagens do tipo Bitmap. O formato de uma imagem BMP está detalhado em http://en.wikipedia.org/wiki/BMP_file_format.

Visando otimização de recursos do FPGA, nesse projeto a imagem inteira será armazenada na memória interna do chip. O FPGA da Altera Cyclone II EP2C35F672C6 da placa DE2 possui internamente 483.840 bits (59 kbytes) de memória. Considerando essa quantidade de memória, foi selecionado um tamanho reduzido de imagem, de baixa resolução.

São utilizadas imagens com dimensões de 256 x 128 pixels, onde cada pixel ocupa 12 bits. Considerando que em um pixel estão armazenadas as três cores básicas vermelho (Red), verde (Green) e azul (Blue), assim cada uma dessas cores é armazenada em 4 bits, resultando em 16 tons para cada uma das cores.

No projeto proposto, as cores devem ser convertidas para “tons de cinza”. Uma técnica utilizada para realizar essa conversão está baseada na seguinte equação:

Luminosidade = Red * 0,3 + Green * 0,59 + Blue * 0,11

Essa equação é aplicada a cada um dos pixels de uma imagem, e o valor resultante é salvo nos próprios pixels. Assim, para um determinado pixel, após aplicada a equação, as três cores (três campos do pixel) deverão receber o mesmo valor, ou seja, Luminosidade.

Mais informações sobre a conversão de colorido para tons de cinza podem ser obridas em: http://en.wikipedia.org/wiki/Grayscale

As informações necessárias para a implementação do algoritmo de conversão em hardware podem ser obtidas nas seções a seguir.

Especificação

Na Figura 2 está apresentado o diagrama de blocos do circuito a ser implementado.

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

O circuito possui os seguintes componentes:

  • Controlador: VGA e Memória – Esse componente é responsável pelo acesso a memória (interna ao FPGA) onde está armazenada a imagem, e também pelo envio da imagem para o display VGA. Esse componente foi escrito em VHDL, e será fornecido aos desenvolvedores para utilização em seus projetos. Aqueles que possuírem interesse, poderão desenvolver seu próprio componente, desde que apresente a mesma funcionalidade do componente fornecido.
  • Registrador – Esse componente foi desenvolvido inicialmente no Laboratório 6, e re-utilizado nos demais laboratórios do semestre. Notar que o novo registrador possui 12 bits, e essa deverá ser a única alteração a ser realizada nesse componente para utilização no projeto final.
  • Contador – Esse componente realiza uma contagem sequencial, de 15 bits, fornecendo em sua saída todos os valores dessa contagem. O objetivo do contador é a geração dos endereços de memória onde se encontram os pixels da imagem que serão processados. O atraso (delay) a ser considerado pelo contador é definido pela máquina de estados (FSM) através do sinal “Enable incremento”. A saída do contador (a contagem) é fornecida aos componentes “Controlador: VGA e Memória” e “Comparador”. O Comparador utiliza esse valor para determinar o fim do processamento. Esse componente poderá ser adaptado a partir do Contador ASCII desenvolvido no Laboratório 7. As principais alterações devem ser os valores de início e fim de contagem, que no contador ASCII eram 41H e 5AH, respectivamente, e também a remoção dos estados utilizados para a geração do atraso de 1 s, uma vez que no projeto final o atraso deverá ser gerado pelo componente FSM.
  • Comparador – Esse componente realiza uma comparação entre os dois valores de entrada de 15 bits cada. A saída do comparador deverá ser igual a ‘1’ (um bit apenas) de forma a ativar a entrada “user_done” do componente “Controlador: VGA e Memória”. Sempre que o sinal “user_done” for ‘1’, a imagem carregada na memória será enviada para o display VGA. O comparador é um circuito bastante simples, e poderá ser implementado diretamente por intermédio de uma porta AND de 15 entradas, dispensando assim a necessidade da entrada com o valor 7FFFH apresentada na Figura 2.  Dessa forma, quando os 15 bits da porta AND estiverem em ‘1’, isso significa que o contador atingiu a contagem máxima, gerando assim o último endereço da memória. Com isso a imagem terá sido completamente processada (convertida para tons de cinza), e estará pronta para ser apresentada no display VGA.
  • Cálculo – Esse componente é responsável pela realização do processamento da imagem. O componente recebe como entrada uma palavra de 12 bits contendo um pixel da imagem colorida. Esse pixel contém as três cores básicas armazenadas da seguinte forma: Azul (B) nos bits 0 a 3; Verde (G) nos bits 4 a 7; e Vermelho (R) nos bits 8 a 11. Cada um desses nibbles (4 bits) deverá ser multiplicado por uma constante, de forma a realizar a conversão para tons de cinza. As constantes são 0,11 para o azul, 0,59 para o verde, e 0,30 para o vermelho. Não é necessário projetar um multiplicador, e o operador ‘*’ do VHDL poderá ser utilizado. Também não é necessário utilizar operações em ponto flutuante, sendo que as constante fornecidas podem ser utilizadas como inteiros durante o desenvolvimento do VHDL. Inclusive, o próprio operador de ‘*’ não precisa ser utilizado, pois como são apenas 16 valores para cada cor (4 bits), poderá ser construída uma tabela com os resultados das respectivas multiplicações, e essa tabela poderá ser implementada diretamente em VHDL com um comando do tipo when/else. Os resultados das três multiplicações devem ser somados, e para isso poderá ser utilizado o operador ‘+’ do VHDL, não havendo necessidade assim de desenvolver um circuito somador. A saída S da operação de soma será um valor de 8 bits, e os quatro bits mais significativos dessa saída, ou seja, S(7..4), deverão ser descartados. O Componente Cálculo fornece como saída o sinal L de 12 bits. Os três nibbles do sinal L deverão conter o mesmo valor, ou seja os 4 bits menos significativos de S, ou seja, S(3..0), da seguinte forma: L(3..0) contém S(3..0); L(7..4) contém S(3..0); e L(11..4) contém S(3..0).
  • FSM de Controle – O componente “FSM de controle” implementa a máquina de estados responsável pelo controle de todas as atividades do circuito conversor de imagens coloridas para tons de cinza. A “FSM de controle” poderá ser desenvolvida a partir da FSM utilizada para o controle das operações calculadora do Laboratório 8. No slide 10 é apresentado o diagrama de blocos da conexão da FSM ao bloco de dados (datapath) da calculadora. Notar nesse slide, que a FSM é responsável pela ativação dos sinais de Enable dos registradores da calculadora, de forma bastante semelhante ao que deverá ser realizado pela FSM de controle do projeto final. A FSM da calculadora habilita o registrador de entrada (Enable_1 = ‘1’) sempre que um novo operando está pronto para ser armazenado na calculadora (quando o usuário pressionou Enter). Na FSM a ser implementada, o sinal Enable_reg é habilitado pela FSM sempre que um novo pixel está pronto para ser processado. Os demais sinais são atividados pela FSM de forma bastante semelhante, conforme descrição do algoritmo da FSM fornecido a seguir. Ainda no Laboratório 8, no slide 12 é apresentado o diagrama de estados da FSM da calculadora, e antes da implementação da FSM do projeto final, deverá ser projetado o diagrama de estados apropriado para a solução do problema. No slide 13 é apresentada uma sugestão de implementação em VHDL para a FSM do slide 12. Nessa implementação foram utilziados dois processos (process) para implementar a FSM, mas soluções com apenas um process (ver contador ASCII do Laboratório 7) também são aceitas.
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 da Figura 3. Notar também na Figura 3 os sinais de entrada e saída da Entity do topo. São dois sinais de entrada (clock e reset), e oito sinais de saída (interface com o display VGA).
Figura 3. Diagrama de blocos do arquivo Topo.vhd, com todos os componentes conectados.

Funcionamento da FSM de controle

O funcionamento da FSM de controle é bastante direto:

  1. Ao receber o sinal de Reset (quando o botão KEY(0) da placa é pressionado), a FSM deverá ir para o primeiro estado responsável por apresentar a imagem original (colorida) no display VGA. Para apresentar a imagem do display, basta colocar o valor ‘1’ nas entradas reset_nuser_done do componente “Controlador: VGA e memória”. O sinal reset_n pode ser escrito diretamente pela FSM de controle. Para colocar o valor ‘1’ no sinal user_done, a sugestão é projetar o componente Contador de forma que o valor inicial (após o reset) seja o valor máximo da contagem (7FFFH). Com isso, o componente Comparador irá gerar ‘1’ na sua saída e, consequentemente, a entrada user_done receberá ‘1’. A imagem original (colorida) deverá ser apresentada por alguns segundos e, para isso, poderá ser utilizado um atraso (delay) semelhante aquele desenvolvido no Laboratório 7 (contador ASCII). A FSM para geração do atraso se encontra no slide 29.
  2. Após a imagem original ter sido apresentada, a FSM de controle deverá iniciar o processamento da image (conversão de colorido para tons de cinza). Para realizar essa operação, os pixels que compõem a imagem devem ser processados individualmente. Cada pixel ocupa 12 bits, sendo 4 bits para cada cor (Red, Green e Blue).
  3. Para iniciar o processamento, o próximo passo é incrementar o contador para apontar para o próximo pixel a ser processado. Inicialmente, considerando que o contador foi iniciado com 07FFFH, ao se incrementar o contador esse componente irá apresentar o valor 0000H na sua saída (primeiro pixel da imagem). O valor do contador é fornecido para a entrada user_address do “Controlador: VGA e Memória”.
  4. Para realizar a leitura de um pixel da memória, além do endereço (user_address), a FSM de controle deverá fornecer também os seguintes valores: user_read = ‘1’; user_write = ‘0’; e user_done =’0′.
  5. No próximo passo, o pixel de 12 bits estará disponível na saída data_to_user do “Controlador: VGA e Memória”, e a FSM de controle deverá habilitar (Enable) o componente Registrador, de forma a armazenar o pixel a ser processado.
  6. A seguir, é necessário aguardar, pelo menos, três pulsos de clock, de forma que o componente Cálculo realize a operação de conversão de colorido para tons de cinza.
  7. Após concluído o processamento do pixel, a FSM de controle deverá enviar a saída L do componente Cálculo para o componente Controlador: VGA e Memória. Para isso, a FSM de controle precisa ativar os seguintes sinais: user_read = ‘0’; user_write = ‘1’; e user_done =’0′.
  8. Após a escrita do pixel convertido, a FSM de controle deverá o componente Contador, de forma a apontar para o próximo pixel a ser processado, e os passos 3 a 8 devem ser repetidos até que o contador atinga o valor máximo (07FFFH), de forma a processar todos os pixels da imagem
  9. Ao concluir o processamento do último pixel, o componente Comparador irá, automaticamente, ativar o sinal user_done com o valor ‘1’, fazendo com que o componente “Controlador: VGA e Memória” apresente a imagem convertida no display VGA. É importante lembrar que, além do sinal user_done estar em ‘1’, a FSM de controle deverá garantir que o sinal reset_n também estará em ‘1’, de forma a apresentara a imagem processada do display.

 Obs. Sempre que o sinal user_done receber ‘1’, a FSM não terá mais controle algum sobre o componente “Controlador: VGA e Memória”. Com o user_done = ‘1’, o componente “Controlador: VGA e Memória” realiza a leitura da memória e envio dos pixels para o display VGA de forma totalmente autônoma, sem nenhum tipo de interação por parte dos demais componentes.

Funcionamento do componente “Controlador: VGA e Memória”

Esse componente foi projetado para realizar o acesso a memória onde está armazenada a imagem, e também para enviar os pixels da imagem armazenada para a saída VGA da placa DE2.

A utilização desse componente já foi explicada na seção “Funcionamento da FSM de controle”. Basicamente:

  • user_read: ‘1’ para obter um pixel (12 bits) na saída data_to_user, ‘0’ caso contrário.
  • user_write: ‘1’ para escrever um pixel (12 bits) na entrada data_from_user, ‘0’ caso contrário.
  • user_address: deve receber o endereço da posição de memória onde se encontra o pixel a ser lido ou escrito.
  • user_done: deve receber ‘1’ sempre que se desejar apresentar uma imagem no display VGA. Nos demais casos, colocar ‘0’ nessa entrada, pois se estiver com ‘1’ nenhum outro tipo de operação será ralizada.
  • clock: deve receber o clock de 50MHz da DE2.
  • reset_n: ‘0’ realiza o reset (inicialização) do componente. Manter em ‘1’ durante a operação normal.
  • Sinais de saída para o display VGA: esses 8 sinais são controlados pelo componente. Sempre que user_done = ‘1’, o componente irá enviar os pixels para o display VGA utilizando esses sinais.

Teste e validação

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

Arquivos a serem utilizados no projeto

A seguir são disponibilizados alguns arquivos para uso no projeto:

  • Componente “Controlador: VGA e Memória”
    • VGA.vhd – Utiliza os componentes memory, sincronismo e pll para realizar todas as operações de acesso a memória e vídeo.
    • memory.vhd – Na linha 93 desse arquivo deve ser informado o nome do arquivo que contém a imagem a ser convertida de colorido para tons de cinza.
    • sincronismo.vhd – Componente responsável pela geração dos sinais de sincronismo de vídeo horizontal e vertical.
    • pll.vhd – Componente utilizado para divisão da frequencia do relógio.
  • top.vhd – Utilizado para testar o funcionamento do componente “Controlador: VGA e Memória”. Esse arquivo pode ser utilizado como base para a implementação do “Topo” do projeto final, uma vez que sua Entity possui todos os sinais externos da Figura 3. Notar que nesse arquivo é realizada a conexão do componente “VGA” (que no caso representa o “Controlador: VGA e Memória” da Figura 3). Para aproveitar esse port map, basta alterar os sinais necessários para conexão da FSM de controle e demais componentes do circuito: reset_n, user_write, user_read, user_done,  user_address, data_from_user, e data_to_user. Para fins de teste, esse arquivo pode ser utilizado exatamente da forma como está, uma vez que sempre que o KEY(1) for pressionado, esse projeto VHDL irá apresentar a imagem indicada no arquivo memory.vhd. A Figura 4 mostra o diagrama de blocos gerado pelo Quartus II para esse componente.
Figura 4. Componente “Controlador: VGA e Memória” instanciado no arquivo top.vhd fornecido.

Obs. 1: As imagens no formato BMP devem ser convertidas para o formato MIF, que é aceito pela ferramenta de síntese (Compile) da ferramenta Quartus II. Assim, antes de realizar a síntese do projeto VHDL, é preciso colocar o arquivo com a imagem a ser convertida na mesma pasta do projeto (mesma pasta dos fontes .vhd). Durante o processo de síntese, será “criada” uma memória, e nessa memória será carregada a imagem colorida (no formato MIF). Existem diversas ferramentas disponíveis na Internet para converter uma imagem de BMP para MIF. A imagem BMP a ser utilizada, conforme colocado anteriormente, deverá possuir 256 pixels de largura (horizontal) por 128 pixels de altura (vertical). Essa é uma restrição da memória interna disponível no FPGA.

 Obs. 2: Ao se realizar a síntese do arquivo top.vhd fornecido como exemplo, o Quartus II v. 12.1 fornece o seguinte resultado:

Analysis & Synthesis StatusFlow Status Successful - Mon Nov 26 17:58:17 2012
 Quartus II 32-bit Version 12.1 Build 177 11/07/2012 SJ Web Edition
 Revision Name top
 Top-level Entity Name top
 Family Cyclone II
 Device EP2C35F672C6
 Timing Models Final
 Total logic elements 195 / 33,216 ( < 1 % )
 Total combinational functions 192 / 33,216 ( < 1 % )
 Dedicated logic registers 54 / 33,216 ( < 1 % )
 Total registers 54
 Total pins 38 / 475 ( 8 % )
 Total virtual pins 0
 Total memory bits 393,216 / 483,840 ( 81 % )
 Embedded Multiplier 9-bit elements 0 / 70 ( 0 % )
 Total PLLs 1 / 4 ( 25 % )

 Considerando que o arquivo memory.vhd foi “carregado” com a imagem lena_colour_256_128_inv.mif, o resultado da síntese mostra que foi utilizado 81% dos bits de memória disponíveis no FPGA, 8% dos pinos, e menos do que 1% dos blocos lógicos disponíveis para implementação das funções lógicas do circuito.

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.
  • 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 Quartus II ou 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 testar (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 testar (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 e LCD. 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 ou o Quartus II 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 para dúvidas sobre o projeto dos circuitos a serem utilizados.
  • Verificar a agenda semanal do Prof. Eduardo Bezerra para combinar horários de atendimento e, também, para agendar a data/hora da apresentação do trabalho:  (selecionar week view)

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. 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 na agenda do Google, 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 no Quartus II ou ModelSim: 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.