LABORG Aula 10 - VHDL: Processos, Paralelismo e o Comando process (final) Ney Laert Vilar Calazans 11/maio/2009 Sumário Introdução TRABALHO A FAZER A ENTREGAR César Marcon / Ney Calazans 2 Sumário Introdução TRABALHO A FAZER A ENTREGAR César Marcon / Ney Calazans 3 Introdução • Nas aulas anteriores deste trabalho, vimos: – Estudo geral de processos VHDL e do comoand process – Exercícios iniciais de interpretação de comandos process – Um exercício complexo, o cronômetro de basquete – Para efetivamente implementar este hardware de forma modular, é eficiente usar o modelo Bloco de Dados-Bloco de Controle visto em aula – O objetivo desta última aula deste trabalho é justamente verificar que a implementação do cronômetro pelos alunos siga este formato. César Marcon / Ney Calazans 4 Sumário Introdução TRABALHO A FAZER A ENTREGAR César Marcon / Ney Calazans 5 TRABALHO A FAZER (1) 1. Repete-se aqui a especificação inicial: Implemente o hardware para cronômetro de basquete: – Jogos de basquete atuais são compostos de 4 tempos de 15 minutos cada. Assim, o cronômetro deve contar até 15 minutos e saber em que tempo o jogo se encontra – O cronômetro deve poder ser parado e reiniciado a qualquer instante, e deve poder ser reinicializado para o instante 00 minutos, 00 segundos e 00 centésimos do primeiro tempo – Como pode ser intuído no item anterior, são 4 as saídas do cronômetro: minutos, segundos, centésimos e tempo do jogo – Em situações excepcionais, tais como erros de arbitragem, o cronômetro deve poder ser inicializado para um instante qualquer de um tempo qualquer, com precisão máxima a nível de segundos inteiros. Um sinal carga controla a inicialização – A seguir apresenta-se um diagrama da interface externa do cronômetro César Marcon / Ney Calazans 6 TRABALHO A FAZER (3) Atenção: Todas as ações do Cristal de 10MHz sistema devem ser síncronas com o sinal de relógio!!! Sincronizador de Entradas Relógio O Circuito Sincronizador de Entradas deve ser ignorado para o atual trabalho. Mas pensem: Para que ele serve? Carga Minutos Segundos Centésimos C_Tempo C_Minutos C_Segundos Reinicializa Parar Prosseguir César Marcon / Ney Calazans Tempo Pensem! O clock da placa Nexys é de 25MHz, 50MHz ou 100MHz. Como gerar a partir de um destes o clock de 10MHz da especificação?? 7 TRABALHO A FAZER (3) 2. Para implementar o cronômetro, inicia-se no Bloco de Dados – Pode-se implementar o Bloco de Dados usando 5 contadores: » 1 contador que conta ciclos de relógio e detecta quando se passou 1 centésimo de segundo » 1 contador que conta centésimos de segundo e detecta quando se passou 1 segundo » 1 contador que conta segundos e detecta quando se passou 1 minuto » 1 contador que conta minutos e detecta quando se passou 15 minutos, ou seja quando terminou um tempo do jogo » 1 contador que conta tempos – O primeiro contador é interno ao sistema (não gera saídas diretamente), portanto pode contar em qualquer sentido – Os demais ficam mais fáceis se contarem na ordem de geração das informações César Marcon / Ney Calazans 8 TRABALHO A FAZER (4) – Assim, os contadores de centésimos, segundos e minutos devem contar em ordem decrescente, enquanto o contador de tempos conta em ortdem crescente – Centésimos conta 00, 99, 98, … 01, segundos conta 00, 59, 58,… 01, minutos conta 15, 14, … 0, e tempo conta 1, 2, 3, 4. Assim, o valor de contagem pode ser a própria saída do sistema – Segundo o princípio de projeto síncrono, todos os contadores possuem o mesmo sinal de relógio. Assim, a detecção de quando um contador “vira” deve durar exatamente 1 ciclo de relógio e deve ser a habilitação (chip enable) do contador de ordem imediatamente superior. Assim, ao chegar no ultimo ciclo antes de virar, cada contador gera uma habilitação para o contador seguinte (centésimos para segundo, etc) – Exceção é o contador de minutos, que ao vira pára automaticamente o cronômetro César Marcon / Ney Calazans 9 TRABALHO A FAZER (5) 3. O Bloco de Dados deve ser comandado por um Bloco de Controle – O Bloco de Controle deve ser uma máquina de estados síncrona, controlada pelo mesmo relógio que o Bloco de Dados – Cada um dos sinais de controle do cronômetro (carga, Reinicializa, Parar, Prosseguir) deve ser entrada primária da máquina de estados – As saídas da máquina de estados devem comandar as ações do Bloco de Dados – Analise as diferentes situações pelas quais passa o cronômetro para definir o número e a semântica dos estados do Bloco de Controle – Para comandar o Bloco de Dados, defina sinais de controle com semântica adequada. Estas serão as saídas do Bloco de Dados. César Marcon / Ney Calazans 10 Sumário Introdução Processos em VHDL TRABALHO A FAZER A ENTREGAR César Marcon / Ney Calazans 11 A ENTREGAR Os quatro projetos Active-HDL da aula anterior e os dois projetos Active-HDL desta aula, com as implementações em processos, contendo 1. Os fontes de cada implementação 2. Os testbenches de cada implementação 3. Formas de onda mostrando a funcionalidade da implementação 4. Texto breve descrevendo a implementação de cada projeto (pode ser arquivo .txt acrescentado a cada projeto) 5. Sugestão de como implementar o cronômetro de basquete na placa Nexys do laboratório, resolvendo todos os problemas de incompatibilidade entre a especificação do cronômetro e os recursos da placa (a nível de sinal de relógio, periféricos, etc.) . A implementação na placa é opcional. César Marcon / Ney Calazans 12