Relógio estrutural
- Detalhes
- Categoria: Exemplos com CPLD
- Publicado em Segunda, 25 Abril 2011 19:18
- Escrito por André Dzis Giacomini
- Acessos: 3979
Exemplo VHDL: Relógio Estrutural
{youtube}Q6S19P9IzZ4|480|320|1{/youtube}
O projeto exemplo a seguir apresenta um relógio (horas e minutos) escrito na forma estrutural em VHDL. Para adequar a cronometragem dos segundos, devemos utilizar um clock externo (do próprio kit de PLD) de 256Hz.
Diagrama de blocos
Código em VHDL:
Vamos ao primeiro elemento do relógio estrutural, o arquivo ¨relogio.vhd¨. Logo no começo, existe um processo chamado PRESCALER, nele é feita a adequção da frequência de 256 Hz para contegem de segundos de um relógio comum. Percebemos que a cada 64 contagens de clock o sinal HabilitAavacon vai para ´0´. Então, 256 dividido por 64 temos que a cada segundo HabilitaAvacon vai 4 vezes para '0'
No mesmo arquivo ¨relógio¨, encontramos a declaração de componente para outro arquivo .vhd (o componente ¨base_cronometragem¨) em que o sinal HabibilitaAvacon e outros sinais são interligados com o componente ¨base_cronometragem¨, assim forma-se um típico projeto estrutural. Repare que não só interligamos sinais de bloco para bloco, mas também sinais da própria entidade do projeto (HorIncN, MinInc e clock).
No arquivo base_cronometragem.vhd,temos a definição final da contagem do sistema. Se os sinais externos HorIncN e MinIncN forem acionados (através de um botão nível lógico '0'), incrementamos diretamente o sinal temp_h (horas do relógio) ou o sinal temp_m (minutos do relógio). Assim poderemos alterar horas e minutos. Se o relógio não estiver em estado de ajuste estará automaticamente funcionando normalmente (incrementando a variável cont_temp a cada decida de HabilitaAvacon).
Ainda no componete "base_cronometragem", a variável cont_temp será incrementada 4 vezes a cada segundo por causa do sinal HabilitaAvacon. Sendo assim, quando a cont_temp chegar a 240 a contagem será de exatamente 60 segundos (240/4 = 60), então o sinal minutos será incrementado
Depois de definir a cronometragem, voltamos ao arquivo relogio.vhd para completar o projeto interligando os blocos CONTROLE_DISPLAY e DECOD_7SEG.