ELD129003-Engtelecom (Diário) - Prof. Marcos Moecke

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

1 Registro on-line das aulas

1.1 Unidade 1 - Aula inicial, Introdução a disciplina

  • 1 ENCONTRO
Unidade 1 - Aula inicial, Introdução a disciplina
Encontro 1 (12 ago.)
  • A página da UC contém os materiais que não alteram entre semestre.
  • Relação com as outras UCs do Eixo Sistemas Computacionais (Marrom). Ver grafo do curriculo
  • ELD129002 - ELETRÔNICA DIGITAL I (ELD1): Sistema de numeração e códigos. Lógica booleana. Circuitos combinacionais. Circuitos aritméticos. Linguagem de descrição de hardware. Implementação e teste de circuitos digitais. Projeto de circuitos lógicos.
  • ELD129003 - ELETRÔNICA DIGITAL II (ELD2): Dispositivos lógicos programáveis. Circuitos sequenciais. Metodologia síncrona. Projeto hierárquico e parametrizado. Máquinas de estados finita. Register Transfer Methodology. Teste de circuitos digitais. Implementação em FPGA. Introdução a Linguagem de Descrição de Hardware.
  • AOC129004 - ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES (AOC): Introdução à Arquitetura Computadores. Linguagem Assembly. Linguagem de Máquina. Programação Assembly. Modos de Endereçamento. Processo de compilação e carga de um programa. Introdução à Organização de Computadores. Organização Monociclo e Multiciclo. Pipeline. Memória e Sistema de E/S.
  • MIC129007 - MICROCONTROLADORES (MIC): Introdução a Microcontroladores e Aplicações. Arquitetura de um microcontrolador. Pilha e Subrotinas. Interrupção. Contadores e Temporizadores. Interface com Periféricos. Programação em alto nível (ex.: C, C++ e RUST) para Microcontroladores: Mapeamento de tipos e estruturas de alto nível para sistemas com recursos limitados. Projeto de hardware e firmware com microcontroladores.
  • STE129008 - STE - SISTEMAS EMBARCADOS (STE): Conceitos em Sistemas Embarcados. Metodologia de Desenvolvimento de Sistemas Embarcados. Sistemas Operacionais para Sistemas Embarcados. Ferramentas de desenvolvimento e depuração. Barramentos e dispositivos de acesso a redes. Desenvolvimento de Projeto.
  • Nesta página está o Registro diário dos encontros e avaliações.
  • A entrega de atividades e avaliações será através da plataforma Moodle. A inscrição dos alunos é automática a partir do SIGAA.
  • Para a comunicação entre professor-aluno, além dos avisos no SIGAA, utilizaremos o chat institucional. A princípio todos os alunos já estão previamente cadastrados pelo seu email institucional. Confiram enviando uma mensagem de apresentação.
  • Utilizaremos durante as aulas algumas ferramentas computacionas como o site do Falstad para entender circuitos digitais e fazer simulações básicas.
  • Também utilizaremos os softwares Quartus Light e ModelSim instalados nas maquinas do laboratório para praticar a parte de programação de hardware (descrição de hardware). Esses softwares também podem ser usados através da Nuvem do IFSC..
  • Para a prática de implementação dos circitos em dispositivos lógicos utilizaremos os kits de FPGA disponíveis no LabSiDi. Ver User Manual da DE2-115, e Manual do Usuário da Mercúrio IV.
LER PARA O PRÓXIMO ENCONTRO

1.2 Unidade REV - PRIMEIRO CONTATO COM VHDL

  • 5 ENCONTROS
Unidade REV - PRIMEIRO CONTATO COM VHDL

1.3 Unidade 2 - Dispositivos Lógicos Programáveis

  • 5 ENCONTROS
Unidade 2 - Dispositivos Lógicos Programáveis

1.4 Unidade 3 - Circuitos sequenciais (Implementação com HDL)

|}

1.5 Unidade 4 - Maquinas de Estado Finitas

|}

1.6 Unidade 5 - Metodologia RT (Register Transfer)

|}

2 Avaliações

Durante o semestre serão realizadas entre 2 avaliações e várias atividades feitas extra classe.

Data das avaliações
  • A1 : Avaliação A1 (peso 35) 03/06/2025
  • A2 : Avaliação A2 (peso 45) 24/07/2025
  • AEs : Média ponderada das AEs (peso 20)
  • R1 : Recuperação de A1 : 31/07/2025
  • R2 : Recuperação de A2 : 29/07/2025
  • Folha de consulta de VHDL

3 Atividade relâmpago (AR)

As atividades relâmpago devem ser entregues no Moodle da disciplina. A não entrega dessas atividades não gera nenhum desconto, apenas geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN.

4 Atividade extra-classe (AE)

A média ponderada das atividades extra-classe será considerada no cálculo do conceito final da UC. A entrega das mesmas será feita pelo Moodle, e cada dia de atraso irá descontar 0,2 na nota da atividade. Muitas dessas atividades também geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN. Para os BÔNUS só serão considerados projetos entregues no prazo.

4.1 AE1 - Conhecendo os dispositivos lógicos programáveis

AE1 - Conhecendo os dispositivos lógicos programáveis
Objetivos
  • Conhecer o Quartus Prime e as características dos dispositivos lógicos programáveis
  • Analisar os tempos de propagação em um circuito combinacional
  • Alterar configurações do compilador
  • Fazer a simulação funcional e temporal de um circuito combinacional.
Atividades
  • Ao escolher a família de FPGAS, escolha inicialmente um dispositivo da família Max II. Anote o código (Name), tensão de alimentação no núcleo (Core Voltage), Número de elementos lógicos configuráveis (LEs ou ALMs) desse dispositivo.
  • Capture as telas solicitadas e depois utilize-as no relatório da atividade.
  • Anote o tempo utilizado para cada uma das etapas do processo de compilação.
  • Anote o número de elementos lógicos configuráveis utilizados e o número de pinos utilizados, bem com o percentual em relação ao número total do dispositivo.
  • Anote algum erro (Error) ou alertas (Warnings) que o Quartus II indicar no painel de mensagens [Messages]
  • Ao final salve o projeto em um arquivo QAR (sugestão PJ1.QAR)
  • PASSO 2: Repita a atividade descrita em Conhecendo os dispositivos lógicos programáveis - QUARTUS PRIME, trocando a família e dispositivo a ser usado na implementação. Escolha nesta vez um dispositivos da família Cyclone IV E, Cyclone V, Cyclone 10 ou Arria 10. Anote o código (Name), tensão de alimentação no núcleo (Core Voltage), Número de elementos lógicos configuráveis (LEs ou ALMs) desse dispositivo.
  • Observe as mudanças que ocorrem tanto no tipo de elemento lógico configurável, no Chip Planner, no Pin Planner, e no circuito dos pinos de I/O. Note que estes FPGAs também apresenta novos componentes, tais como: Memória, Multiplicadores, DSP, PLL, DLL, etc. Verifique se consegue encontra-los no leiaute mostrado no Chip Planner, e documente aqueles que encontrar.
  • Compare os resultados obtidos nos procedimentos do PASSO 1 e PASSO 2.
  • Ao escolher a família de FPGAS, escolha um dispositivo FPGA da família Cyclone IV E. Anote o código (Name), tensão de alimentação no núcleo (Core Voltage), Número de elementos lógicos configuráveis (LEs ou ALMs) desse dispositivo.
  • Capture as telas mostradas no roteiro e depois utilize-as no relatório da atividade.
  • Anote o máximo tempo de propagação entre entrada e saída.
  • Anote o número de elementos lógicos utilizados e o número de pinos utilizados, bem com o percentual em relação ao número total do dispositivo.
  • Experimente modificar as configurações do compilador, conforme mostrado em Configurando o compilador. Se desejar mude a semente inicial trocando o valor de [Seed: 1]
  • Experimente inserir diferentes restrições de atraso máximo para o compilador, e analise o resultado obtido.
  • Anote algum erro (Error) ou alertas (Warnings) que o Quartus II indicar no painel de mensagens [Messages]
  • Ao final salve o projeto em um arquivo QAR (sugestão PJ2.QAR)
  • PASSO 4: Realize a simulação funcional do circuito hamming_distance
  • Capture as telas que mostram o circuito funcionando e depois utilize-as no relatório da atividade.
Entregas
  1. Envie um arquivo QAR contendo todos os arquivos necessário para compilar cada um dos projetos.
  2. Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório.
  3. Use preferencialmente o Overleaf para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida.
  4. A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega.

4.2 AE2 - Contador BCD 000 a 999

AE2 - Contador BCD 000 a 999
Objetivos
  • Construir um contador BCD de 000 a 999, utilizando um código de dois segmentos.
  • o primeiro segmento contém apenas a parte sequencial
  • o segundo segmento contém a parte combinatorial Next State Logic e lógica de saída
  • Analisar o desempenho de um circuito pelo Fmax.
Passo 1 - Projeto um contador BCD
  • Projete um contador BCD que conte, Unidades, Dezenas, Centenas.
entity contador_bcd is
    Port ( clock    : in  std_logic;
           reset    : std_logic;
           enable   : std_logic;
           centena  : out std_logic_vector(3 downto 0);
           dezena   : out std_logic_vector(3 downto 0);
           unidade  : out std_logic_vector(3 downto 0)
    );
end entity;
  • Capture o diagrama RTL do contador.
Passo 2 - Realize a simulação funcional do circuito do contador BCD
  • Faça a simulação do contador realizando a contagem de 0 a 999 e novamente até 999. Verifique se o contador retorna a zero após o overflow em 999.
  • Utilize como clock um sinal de 1 sec, e escolhe como escala de tempo o sec (segundo) no Wave do Modelsim.
  • Capture detalhes da simulação que mostram as contagem das Unidades, Dezenas, Centenas e também o Overflow. Use tantas capturas quantos achar necessário.
Passo 3 - Otimização de área e desempenho em Fmax
  • Use a família de FPGAS Cyclone IV E, o dispositivo EP4CE6E22A7. Anote a tensão de alimentação no núcleo (Core Voltage), Número de elementos lógicos configuráveis (LEs ou ALMs) desse dispositivo.
  • Utilize o procedimento descrito em Como obter o Fmax do projeto no Quartus.
  • Anote a Fmax do projeto (do modelo Slow 1200mV 125ºC), número de elementos lógicos utilizados e o número de pinos utilizados.
  • Utilize o procedimento indicado em Restringir a frequencia máxima de clock no Quartus, modificando a frequencia do clock de modo a forçar o compilador a obter melhores resultados.
  • Anote a Fmax do projeto, número de elementos lógicos utilizados e o número de pinos utilizados.
  • Experimente modificar as configurações do compilador, conforme mostrado em Configurando o compilador. Se desejar mude a semente inicial trocando o valor de [Seed: 1]
  • Anote a Fmax do projeto, número de elementos lógicos utilizados e o número de pinos utilizados, e eventuais elementos DSPs utilizados.
  • Apresente os resultados obtidos em uma tabela única.
Entregas
  1. Envie um arquivo QAR contendo todos os arquivos necessário para compilar o projeto.
  2. Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório.
  3. O relatório deve indicar os ajustes que foram feitos para obter a maior Fmax e o menor número de elementos lógicos.
  4. Use preferencialmente o Overleaf para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida.
  5. A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega.
Bônus
  • 1 ponto na Avaliação A1 para o(a) estudante que apresentar o projeto que funcione com a maior Fmax.
  • 0,5 ponto na Avaliação A1 para o(a) estudante que apresentar o projeto com o menor número de elementos lógicos.
  • 0,5 ponto na Avaliação A1 para o(a) estudante que apresentar o projeto que funcione com o segundo maior Fmax.
  • 0,3 ponto na Avaliação A1 para o(a) estudante que apresentar o projeto com o segundo menor número de elementos lógicos.
  • Em caso de empate, o critério de desempate é a data de entrega
  • Cada estudante pode receber no máximo 1 ponto na Avaliação A1 através da AE2.

4.3 AE3 - Contador BCD genérico

AE3 - Contador BCD genérico
Objetivos
  • Construir um contador BCD genérico, que permita definir qualquer número de dígitos BCD, desde 1 até N, utilizando um código de dois segmentos.
  • o primeiro segmento contém apenas a parte sequencial
  • o segundo segmento contém a parte combinatorial Next State Logic e lógica de saída
  • Criar tipos de dados e utiliza-los como portas da entity e sinais internos.
  • Utilizar estruturas de repetição de hardware.
  • Gerar e utilizar sinais de Enable para ativar os diversos contadores de 0 a 9.
  • Analisar o desempenho de um circuito pelo Fmax.
Passo 1 - Projeto um contador BCD genérico
  • Projete um contador BCD genérico, que conte, Unidades, Dezenas, Centenas, Unidades de Milhar, Dezenas de Milhar, etc. conforme solicitado no parâmetro genérico N.
  • Obtenha um contador para 3 digitos BCD, e capture o diagrama RTL do contador.
  • Obtenha um contador para 6 digitos BCD, e capture o diagrama RTL do contador.
Passo 2 - Realize a simulação funcional do circuito do contador BCD genérico
  • Faça a simulação do contador para N = 3 digitos BCD. Verifique se o contador retorna a zero após o overflow em 999.
  • Capture detalhes da simulação que mostram as contagem das Unidades, Dezenas, Centenas e também o Overflow. Use tantas capturas quantos achar necessário.
Passo 3 - Geração de um sinal de Enable a cada 1 ms.
  • Projete um circuito que gere um sinal de enable para o contador de miléssimo de segundo. O sinal de Enable deve durar exatamente o período do clock do kit a ser utilizado.
  • A geração do sinal de Enable só deve ocorrer se a entrada START estiver em 1.
  • Conecte esse circuito ao contador BCD com N = 5, sendo que os 2 digitos mais significativos devem contar os segundos, e os 3 dígitos menos significativos os milessimos de segundo.
Passo 4 - Implemente o contador com o divisor de clock no kit
  • Utilize o kit DE2-115 na implementação do contador de 0 a 99,999 sec. Ver Preparando para gravar o circuito lógico no FPGA
  • Ao escolher a família de FPGAS, escolha o dispositivo FPGA da família Cyclone IV E do kit e anote o código (Name), tensão de alimentação no núcleo (Core Voltage), Número de elementos lógicos configuráveis (LEs ou ALMs) desse dispositivo.
  • Utilize o procedimento indicado em Restringir a frequencia máxima de clock no Quartus, modificando a frequencia do clock de modo a definir o clock desejado como 50MHz, pois é o clock do kit a ser utilizado
  • Utilize o procedimento descrito em Como obter o Fmax do projeto no Quartus
  • Anote a Fmax do projeto, número de elementos lógicos utilizados e o número de pinos utilizados.
  • Verifique o funcionamento correto do contador comparando o tempo total da contagem 100 segundos com um cronometro (https://dollyclock.com/pt/stopwatch)
Dicas
  • Para replicar um hardware N vezes vai precisar instruções como FOR GENERATE e FOR LOOP.
  • Para gerar N saída BCD com 4 bits para cada dígito, será necessário criar um novo tipo de dado.
  type bcd_digits is array (natural range <>) of unsigned(3 downto 0);
  signal bcd  : bcd_digits(0 to N-1);
  • Para que um tipo seja conhecido na declaração das portas é necessario incluir essa declação do tipo em um pacote e incluir o pacote no arquivo.
-- FILE : ifsc_pkg.vhd
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

package ifsc_pkg is
    type bcd_digits is array (natural range <>) of unsigned(3 downto 0);
end package;
Entregas
  1. Envie um arquivo QAR contendo todos os arquivos necessário para compilar o projeto.
  2. Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório.
  3. Use preferencialmente o Overleaf para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida.
  4. Grave um vídeo mostrando que o contador está funcionando de acordo com o cronometro, e disponibilize o link para o vídeo.
  5. A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega.

4.4 AE4 - Análise de contadores digitais

AE4 - Análise de contadores digitais
Objetivos
  • Implementar e simular diferentes tipos de contadores digitais:
  • Contador binario sequencial;
  • Contador Gray;
  • Contador em anel;
  • Contador Johnson e
  • Contador LFSR.
  • Acrescentar um sinal de Enable em cada um dos contadores fornecidos em aula.
  • Todos os contadores devem ser implementados em 2 segmentos de código (parte sequencial e parte combinatória)
  • Analisar a influência do tipo de contador e número de bits sobre a área usada (número de elementos lógicos) e desempenho em velocidade (Fmax).
Divisão em equipes
  • As equipes (ou estudante individual) deverão modificar os contadores vistos em aula para que fique com a seguinte quantidade de bits:
E1 - 5 e 15 bits
E2 - 6 e 14 bits
E3 - 7 e 13 bits
E4 - 8 e 18 bits
E5 - 7 e 10 bits
E6 - 8 e 17 bits
I1 - 9 bits
I2 - 11 bits
I3 - 12 bits
I4 - 16 bits
I5 - 13 bits
I6 - 14 bits
I7 - 18 bits
I8 - 19 bits
I9 - 17 bits 
  • Nos trabalhos individuais apenas um contador de cada tipo será implementado e simulado.
  • Nos trabalhos em equipe dois contadores precisam ser implementados e simulados.
Em todos os contadores
  • Capture o diagrama RTL do contador.
  • Capture a tela de simulação que mostram a contagem (as contagens podem se bem altas, neste caso faça a contagem até 1000)
  • Ao escolher a família de FPGAS, escolha o dispositivo FPGA da família Cyclone IV E do kit e anote o código (Name), tensão de alimentação no núcleo (Core Voltage), Número de elementos lógicos configuráveis (LEs ou ALMs) desse dispositivo.
  • Utilize o procedimento indicado em Restringir a frequencia máxima de clock no Quartus, modificando a frequencia do clock de modo a definir o clock desejado como 50MHz, pois é o clock do kit a ser utilizado
  • Utilize o procedimento descrito em Como obter o Fmax do projeto no Quartus
  • Anote a Fmax do projeto, número de elementos lógicos utilizados e o número de pinos utilizados.
  • Salve o arquivo QAR com todos os arquivos VHDL, arquivos de simulação tb_XXX.do e wave_XXX.do, e demais necessaários para repetir o projeto.
Passo 1 - Projeto um contador binário sequencial
  • Adapte o código do contador binário para que seja genérico e uso o número de bits indicado para sua equipe.
Passo 2 - Contador Gray
  • Adapte o código do contador Gray para que seja genérico e uso o número de bits indicado para sua equipe.
Passo 3 - Contador em anel
  • Adapte o código do contador em anel para que seja genérico e uso o número de bits indicado para sua equipe.
Passo 4 - Contador Johnson
  • Adapte o código do contador Johnson para que seja genérico e uso o número de bits indicado para sua equipe.
Passo 5 - Contador LFSR
  • Adapte o código do contador LFSR para o número de bits indicado para sua equipe.
  • Ver como se pode implementar um contador LFSR de n bits.
  • Consultar [1] ou a página 5 de [2] para obter os termos que são usados na realimentação.
Entregas
  1. Envie um arquivo QAR contendo todos os arquivos necessário para compilar os projetos de todos os contadores.
  2. Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório.
  3. Use preferencialmente o Overleaf para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida.
  4. A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega.

4.5 AE15 - Timer de Segundos com Mostrador SSD

AE15 - Timer de Segundos com Mostrador SSD
Objetivos
  • Desenvolver um timer de segundos, exibindo a contagem de 00 até DU através de dois displays de sete segmentos (SSD).
  • Realizar um projeto hierárquico com componentes já utilizados anteriormente.
  • Utilizar parâmentros genéricos na instanciação dos componentes para definir o valor total da contagem DU.
  • Utilizar sinais ZERAR e CONTAR para controlar o contador BCD.
  • Possibilitar a ocultação do número zero na casa da dezena de segundo.
  • O projeto deverá ser implementado em FPGA em um dos kits disponíveis no LabSiDi.
PASSO 0 - Contador BCD
  • Adapte o contador BCD (contaBCD.vhd)
  • Baseie-se no contador desenvolvido em aula (faixa 00–99).
  • O clock do contador deverá ser o clock fornecido pelo kit (50MHz => 20ns)
  • São necessárias as seguintes modificações:
  • Adicione entradas: 1) ENABLE para controlar a contagem. 2) ZERAR: zera a contagem. 3) CONTAR: habilita ou desabilita a contagem.
  • Adicione os parâmetros (generics) para limitar a contagem de 00 até DU.
  • Use IF GENERATE para disponibilizar: 1) Um modo com overflow automático (contagem contínua). 2) Um modo com parada ao atingir o valor final (DU).
  • Simule o contador e verifique que funciona.
  • Use um CLOCK de 10Hz e um sinal de ENABLE de 1Hz com duty cycle de 10%
  • Teste o funcionamento das entradas ZERAR e CONTAR.
  • Verifique se os parâmetros genéricos D e U limitam corretamente a contagem. Teste com D = 2 e U = 3. O contador deve contar de 00 a 23.
  • Verifique se as opções de overflow e parada funcionam.
PASSO 1 - Divisor de Clock
  • Adapte o divisor de clock (div_clk.vhd)
  • Gere um pulso de habilitação (ENABLE_OUT) para o contador a cada 1 segundo, a partir do clock disponível no kit. O pulso deve durar o período de 1 clock (20ns)
  • Se ainda não tiver, inclua uma entrada de RESET assincrono neste componente.
  • Gere também um sinal de CLOCK_OUT de 1 segundo com duty cycle de 50% para ser conectado a um led externo.
  • Simule o divisor de clock e verifique que funciona.
  • Use um CLOCK de 50Hz e verifique se as saidas CLOCK_OUT e ENABLE_OUT estão corretas
PASSO 2 - Conversor BCD2SSD
  • Projeto o conversor BCD para SSD (bcd2ssd.vhd)
  • Converta o valor de entrada BCD (0 a 9) para o padrão de 7 segmentos.
  • Usando IF GENERATE selecionar o tipo de display: a) Ânodo comum b) cátodo comum.
  • Inclua uma entrada OCULTA_ZERO para ocultar o zero no display.
  • Simule o conversor BCD para SSD e verifique que funciona.
  • Use na entradas valores BCD de 0 a 9 e verifique se as saidas SSD estão corretas
  • Teste com a opção ânodo comum e cátodo comum.
  • Teste se a entrada OCULTA_ZERO funciona.
PASSO 3 - Entity Top-Level
  • Implemente a entity Top-Level (timer_seg.vhd)
  • Instancie os componentes:
2x bcd2ssd.vhd → um para as unidades, outro para as dezenas.
1x contaBCD.vhd → configurado para contar de 00 a 59, com reset automático ao final.
1x div_clk.vhd → para gerar o sinal de ENABLE de 1 Hz e o clock de 1 sec.
entity timer_seg is
    generic (DEZENA  : natural := 5; UNIDADE : natural := 9; FCLOCK : natural := 50);
    port (
        CLOCK50MHz  : in std_logic;
        RESET_PB    : in std_logic;
        CONTAR_SW   : in std_logic;
        ZERAR_PB    : in std_logic;
        LED_1SEC    : out std_logic;
        SSD_DEZENA  : out std_logic_vector(6 downto 0);
        SSD_UNIDADE : out std_logic_vector(6 downto 0));
end entity;

Arquitetura sugerida
architecture ifsc of timer_seg is
    -- Sinais internos: BCD_UNIDADE, BCD_DEZENA, ENABLE_1SEC, etc.
    -- Declaração dos componentes usados
begin
    -- Instância do divisor de clock
    -- Instância do contador BCD
    -- Instâncias dos conversores BCD para SSD
end architecture;
  • O projeto deve ser sincrono, portanto todos os registradores (flip-flops) devem estar conectados ao CLOCK50MHz
  • Conecte o RESET_PB a entrada reset dos componentes div_clk.vhd e contaBCD.vhd.
  • Conecte a saída de ENABLE_OUT ao ENABLE do contador
  • Conecte a saída BCD das dezenas a um dos conversores bcd2ssd.vhd e a saída das unidades ao outro.
  • O display das dezenas podeve ocultar o zero, enquanto que o display das unidades sempre deve mostrar o zero.
  • Simule o timer para contar de 00 a 59 com reinício automático (overflow), e para display de cátodo comum.
  • Simule o timer para contar de 00 a 23 com parada, e para display de ânodo comum.
PASSO 4 - Implemetação no Kit FPGA

Implemente o projeto no FPGA:

  • Escolha um dos kits disponíveis no laboratório.
  • Configure o projeto para exibir nos dois mostradores HEX (HEX0 e HEX1) ou DISP (DISP0 e DISP1).
  • Verifique se o display do kit é ânodo comum ou cátodo comum, e configure o bcd2ssd.vhd corretamente.
  • Verifique os clocks disponíveis no kit (Ex.: 50 MHz, 100 MHz), e configure corretamente o parâmetro FCLOCK, para que o ENABLE_1SEC e LED_1SEC estejam com período de 1 segundo.
  • Defina as chaves (ou botões) de controle para: CONTAR (SW), ZERAR (PB), RESET (PB). Verifique se os PUSH BUTTON (PB) são normalmente BAIXOS ou ALTOS. No segundo caso é necessário incluir um inversor no top-level.
  • Configure o parâmetro DU para que a contagem seja de 00 até 59 e depois reinicie automaticamente.
PASSO 5 - Entregas
  • Documentar o experimento em um relatório técnico que contenha no mínimo:
  • Identificação (título, disciplina, data, autores);
  • Introdução;
  • Descrição dos componentes utilizados e do sistema completo. Cada componente deve ser descrito em termos funcionais, e também deve ter uma simulação que demonstre o seu funcinamento.
  • Documente todas as simulações com ondas claras para cada componente e para o sistema completo.
  • Resultados obtidos (com imagens dos itens importantes) e análise dos resultados;
  • Apresente tabelas da pinagem utilizada na configuração do FPGA, número de elementos lógicos usados em cada componente e pelo sistema completo.
  • Conclusão.
  • O relatório deve também responder as questões levantadas e mostrar que os objetivos apresentados na introdução foram atendidos.
  • O arquivo QAR contendo o projeto com todos os arquivos .vhd .do necessários para repetir o projeto e as simulações
  • O arquivo SOF usado na programação do FPGA.
  • Se for solicitado disponibilize vídeos demonstrando o funcionamento do timer.

4.6 AE16 - Controlador de Semáforo de duas vias

AE16 - Controlador de Semáforo de duas vias
Objetivos
  • Projetar uma Maquina de Estados Finita (FSM) para controlar um semáforo, com timer de segundos em componente externo.
  • Reutilizar o timer de segundos (binário)
  • Reutilizar o divisor de clock, e gerador de sinal de enable a cada segundo.
  • Realizar um projeto hierárquico.
  • Realize um projeto sincrono
  • Os componentes deve usar um código em dois segmentos, no qual o primeiro segmento realiza a atualização dos registrador, e o segundo segmento realiza a Lógica do Próximo Estado, e as Lógicas de Saída.
  • O projeto pode ser implementado em FPGA em um dos kits disponíveis no LabSiDi, mas não é obrigatório.
PASSO 0 - Timer de Segundos
  • Adapte o timer de segundos para contar em binário (timer_sec.vhd)
  • O clock do contador deverá ser o clock fornecido pelo kit (50MHz => 20ns)
  • Adicione entradas: 1) ENABLE para controlar a contagem. 2) ZERAR: zera a contagem. 3) CONTAR: habilita ou desabilita a contagem.
  • Adicione os parâmetros (generics) para limitar a contagem de 0 até MAX, onde MAX é o tempo máximo de verde do semáforo.
  • Simule o contador e verifique se funciona.
  • Use um CLOCK de 10Hz e um sinal de ENABLE de 1Hz com duty cycle de 10%
  • Teste o funcionamento das entradas ZERAR e CONTAR.
PASSO 1 - Divisor de Clock
  • Utilize o divisor de clock (div_clk.vhd) da atividade AE15. Nenhuma adaptação é necessária.
PASSO 2 - FSM do semáforo
  • Projeto da FSM do semáforo (FSM_semaforo.vhd)
  • Utilize o template fornecido para descrever a FSM representada pelo seguinte diagrama de estados:

Figura AE16a - FSM - Controlador semafórico para duas vias (diagrama de estados)
Fonte: Elaborado pelo autor.
  • Adicione uma saída Mealy enviar um signal ZERAR o timer que é usado nas transições da FSM.
  • Opcionalmente, você pode enviar um signal ZERAR usando uma saída Moore, que é ativada em 6 estados adicionais inseridos antes de entrar em cada um dos 6 estados da FSM.
  • Simule a FSM do semáforo e verifique se funciona.
  • Para testar, é necessário gerar manualmente o sinal de ATIVAR e os valores do timer para verificar o avanço dos estados da FSM
  • Verifique se o sinal de saida ZERAR é ativado corretamente.
  • Mostre claramente a FSM alternando entre AM1 e AM2, e depois faça o semáforo evoluir por 2 ciclos de controle das vias.
PASSO 3 - Entity Top-Level
  • Implemente a entity Top-Level (timer_seg.vhd)
  • Instancie os componentes:
1x FSM_semaforo.vhd → FSM com saida ZERAR_CNT do tipo Mealy (ou Moore).
1x timer_sec.vhd → configurado para contar de 00 a 99, sendo reiniciado pelo sinal ZERAR_CNT .
1x div_clk.vhd → para gerar o sinal de ENABLE de 1 Hz e o clock de 1 sec.

Figura AE16b - Diagrama RTL do Controlador semafórico para duas vias
Fonte: Elaborado pelo autor.
entity controlador_semaforo IS
generic (
	tAMG : natural := 5; tVD1G : natural := 60; tVD2G : natural := 30; 
	Nbits_timer :natural := 6; 
	FCLK : natural := 50; Nbits_clk : natural := 6);
port (
	CLK50MHz : in std_logic;
	RESET_PB : in std_logic;	
	ATIVAR_SW : in std_logic;
	CONTAR_SW : in std_logic;
	LED_1sec	: out std_logic;
	vm1_LED, vd1_LED, am1_LED, vm2_LED, vd2_LED, am2_LED : out std_logic);
end entity;

Arquitetura sugerida
architecture ifsc of controlador_semaforo is
    -- Sinais internos: timer_std, zerar_cnt, ena_1sec, etc.
    -- Declaração dos componentes usados
begin
    -- Instância do divisor de clock
    -- Instância do timer binario de 1 sec
    -- Instância da FSM do semaforo 
end architecture;
  • O projeto global deve ser sincrono, portanto todos os registradores (flip-flops) devem estar conectados ao CLOCK50MHz
  • Simule o funcionamento da FSM no modo amarelo piscante (ativar = 0).

Figura AE16c - Simulação do Controlador semafórico para duas vias (amarelo piscante)
Fonte: Elaborado pelo autor.
  • Simule o funcionamento da FSM no modo normal (ativar = 1), permitindo pelo menos dois ciclos de VERDE nas duas vias controladas.

Figura AE16d - Simulação do Controlador semafórico para duas vias (ciclo verde)
Fonte: Elaborado pelo autor.
PASSO 4 - Entregas
  • Documentar o experimento em um relatório técnico que contenha no mínimo:
  • Identificação (título, disciplina, data, autores);
  • Introdução;
  • Descrição dos componentes utilizados e do sistema completo. Cada componente deve ser descrito em termos funcionais, e também deve ter uma simulação que demonstre o seu funcionamento.
  • A FSM deve ser descrita usando um diagrama de estados ou um ASM.
  • Nas simulações de FSM é importante destacar a evolução dos estados da FSM.
  • Documente todas as simulações com ondas claras para cada componente e para o sistema completo.
  • Resultados obtidos (com imagens dos itens importantes) e análise dos resultados;
  • Descrever claramente o papel de cada membro da equipe no projeto. Lembre-se que todos devem ter um papel, e podem ser questionados sobre sua participação.
  • Conclusão.
  • O relatório deve também responder as questões levantadas e mostrar que os objetivos apresentados na introdução foram atendidos.
  • O arquivo QAR contendo o projeto com todos os arquivos .vhd .do necessários para repetir o projeto e as simulações


5 Referências Bibliográficas:

Será que uma boa parte do que fazemos com calculo digital será analógico no futuro? Future Computers Will Be Radically Different (Analog Computing)

Curso de Engenharia de Telecomunicações