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
Download

laborg_aula10