Post on 17-Apr-2015
Aula 10 - VHDL: Processos, Paralelismo e o Comando
process (final)
LABORGLABORG
11/maio/2009
Ney Laert Vilar Calazans
2César Marcon / Ney Calazans
Sumário
Introdução
TRABALHO A FAZER
A ENTREGAR
3César Marcon / Ney Calazans
Sumário
Introdução
TRABALHO A FAZER
A ENTREGAR
4César Marcon / Ney Calazans
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.
5César Marcon / Ney Calazans
Sumário
Introdução
TRABALHO A FAZER
A ENTREGAR
6César Marcon / Ney Calazans
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
7César Marcon / Ney Calazans
TRABALHO A FAZER (3)
Sin
cro
niz
ado
r d
e E
ntr
ada
s
Rel
óg
io
Cristal de 10MHz
Tempo
MinutosSegundos
Centésimos
C_Tempo
C_Minutos
C_Segundos
Reinicializa
Parar
Prosseguir
O Circuito Sincronizador de Entradas deve ser ignorado para o atual trabalho. Mas pensem: Para que ele serve?
Carga
Atenção: Todas as ações do sistema devem ser síncronas com o sinal de relógio!!!
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??
8César Marcon / Ney Calazans
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
9César Marcon / Ney Calazans
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
10César Marcon / Ney Calazans
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.
11César Marcon / Ney Calazans
Sumário
Introdução
Processos em VHDL
TRABALHO A FAZER
A ENTREGAR
12César Marcon / Ney Calazans
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.