Nesse projeto vamos usar o proteus para simular um contador síncrono usando flip flop JK na configuração T(toggle) para contar de 0 a 6. Usaremos uma técnica rápida e simples que não demanda mapas ou recursos de otimização e discutiremos o circuito, suas vantagens e desvantagens.
Veja mais abaixo:
-Usando flipflop JK na configuração T(flipflop tipo T)
-Contar de 0 a 6(decimal)
Vamos para a técnica usada para projeta-lo:
Nosso pré requisito é contar de 0 a 6(decimal) e retornar a contagem usando flip flops usamos a seguinte noção:
2^1=2
2^2=4
2^3= 8
2^N=x , N é o numero de flip flops necessários para contar até algum número. Sendo que "2" elevando a esse numero(N) nos dá "x" o numero de contagens possíveis.
Note N=2 conta até 4(decimal) mas precisamos chegar até 6(decimal), sendo N=3 capaz de contar até 8(decimal) usaremos obrigatoriamente 3 flip flops para poder expressar o número 6(decimal).
Abaixo uma tabela mostra os números em decimais(N) associado com números binários(q0,q1,q2) sendo (q2,q1,q0) os bits(dígitos) que a "maquina"(saída do flipflop) apresenta.
Outro objetivo é que esse circuito seja síncrono, então as entradas de clock do flipflop precisam estar todas ligadas em uma única fonte de clock(marca o tempo).
Abaixo os 3flipflops que vamos usar com fonte de clock interligada:
O flip flop JK quando tem suas duas portas J e K curto circuitadas(ligadas) se comporta como um flip flop T(toggle) comportamento que ao ter 1 troca a saída e ao ter 0 mantém a saída anterior.
Assim vamos ligar o primeiro flipflop para que esteja a cada pulso do clock alterando a saída. Esse será o q0 e ligar no segundo(q1) para que ele possa reagir conforma a mudança do primeiro.
Até ai tudo bem... A grande sacada vem agora: quando q0 e q1 chegam em (11) temos que desencadear uma alteração no q2 e para isso usamos uma porta lógica AND para detectar essa variação.
Abaixo os dois dígitos que devem ser capturados na porta AND:
Abaixo essa porta lógica destacada de vermelho:
Segundo passo e que tem a mesma estratégia utilizada no passo anterior é fazer a reinicialização do circuito. Fazer tudo voltar ao zero. Para isso temos no flipflop uma porta CLR(clear) a função que força o "0" na saída. Bom... agora o que fazer? note que se o contador chegar ao 7 temos nas saídas (q2,q1,q0) os valores:"111". Então usamos uma porta lógica para que detecte esse estado e rapidamente ative o clear forçando todo o contador a zerar e consequentemente reiniciar a contagem mantendo um loop continuo que é o nosso objetivo.
Abaixo mostra em destaque as portas quando "N" está acusando do digito "7".
Agora podemos acompanhas os dígitos alterando pelas ponteiras de estados
lógicos que estão conectadas nas saídas (q2,q1,q0). Faça o
acompanhamento juntamente com a tabela para verificar o funcionamento.
Abaixo em destaque essa ponteiras de prova que se alteram após ativar a simulação:
O que podemos dizer sobre esse tipo de técnica?
Muito pratica e permite expandir para qualquer número de contagem que desejamos. Não fizemos uso de tabelas da verdade ou outros artifícios que demandam um certo esforço.
Entretanto há uma desvantagem. Como fazermos a reinicialização do nosso sistema utilizando a detecção de uma estado que não entra na nossa contagem temos pequeno atraso(conhecido como glitches). Se colocarmos num osciloscópio conseguimos notar que a porta lógica para perceber que as saídas estão em "111" leva um certo tempo esse tempo é muito pequeno para nossa percepção humana mas ele existe no circuito e isso no caso de um contador com o propósito de montar um relógio geraria um atraso e um erro que se somaria com o passar do tempo gerando erro em um projeto de relógio que demanda precisão. Entretanto para outros projetos que basta a mudança do estado isso seria irrelevante. Vale aqui avaliar o objetivo do contador e aplicar quando favorável.
Nota:
1-O "set" é um pino que coloca todas as saídas em "1" como não vamos usar essa função as porta "set" estão todas aterradas. É um procedimento padrão para evitar interferências.
2-Usamos conectores com nomes ao invés de ligar usando fios pois deixa o projeto mais limpo. Basta verificar o nome de cada conexão e considerar que é um fio ligando um ponto a outro.
Veja mais abaixo:
Objetivo:
-Montar um contador síncrono.-Usando flipflop JK na configuração T(flipflop tipo T)
-Contar de 0 a 6(decimal)
Primeiramente: Baixe o arquivo de simulação no proteus versão 8.6 ou monte o circuito abaixo:
Observe e simule o projeto para que possa entender como projeta-lo e acompanhar o desenvolvimento desse projeto:
opção 1: Baixar arquivo aqui em pasta.
opção 2: Baixar arquivo aqui compactado .zip.
Nosso pré requisito é contar de 0 a 6(decimal) e retornar a contagem usando flip flops usamos a seguinte noção:
2^1=2
2^2=4
2^3= 8
2^N=x , N é o numero de flip flops necessários para contar até algum número. Sendo que "2" elevando a esse numero(N) nos dá "x" o numero de contagens possíveis.
Note N=2 conta até 4(decimal) mas precisamos chegar até 6(decimal), sendo N=3 capaz de contar até 8(decimal) usaremos obrigatoriamente 3 flip flops para poder expressar o número 6(decimal).
Abaixo uma tabela mostra os números em decimais(N) associado com números binários(q0,q1,q2) sendo (q2,q1,q0) os bits(dígitos) que a "maquina"(saída do flipflop) apresenta.
Outro objetivo é que esse circuito seja síncrono, então as entradas de clock do flipflop precisam estar todas ligadas em uma única fonte de clock(marca o tempo).
Abaixo os 3flipflops que vamos usar com fonte de clock interligada:
O flip flop JK quando tem suas duas portas J e K curto circuitadas(ligadas) se comporta como um flip flop T(toggle) comportamento que ao ter 1 troca a saída e ao ter 0 mantém a saída anterior.
Assim vamos ligar o primeiro flipflop para que esteja a cada pulso do clock alterando a saída. Esse será o q0 e ligar no segundo(q1) para que ele possa reagir conforma a mudança do primeiro.
Até ai tudo bem... A grande sacada vem agora: quando q0 e q1 chegam em (11) temos que desencadear uma alteração no q2 e para isso usamos uma porta lógica AND para detectar essa variação.
Abaixo os dois dígitos que devem ser capturados na porta AND:
Abaixo essa porta lógica destacada de vermelho:
Segundo passo e que tem a mesma estratégia utilizada no passo anterior é fazer a reinicialização do circuito. Fazer tudo voltar ao zero. Para isso temos no flipflop uma porta CLR(clear) a função que força o "0" na saída. Bom... agora o que fazer? note que se o contador chegar ao 7 temos nas saídas (q2,q1,q0) os valores:"111". Então usamos uma porta lógica para que detecte esse estado e rapidamente ative o clear forçando todo o contador a zerar e consequentemente reiniciar a contagem mantendo um loop continuo que é o nosso objetivo.
Abaixo mostra em destaque as portas quando "N" está acusando do digito "7".
Abaixo em destaque a implementação de uma porta AND capturando esses dígitos:
Abaixo em destaque essa ponteiras de prova que se alteram após ativar a simulação:
O que podemos dizer sobre esse tipo de técnica?
Muito pratica e permite expandir para qualquer número de contagem que desejamos. Não fizemos uso de tabelas da verdade ou outros artifícios que demandam um certo esforço.
Entretanto há uma desvantagem. Como fazermos a reinicialização do nosso sistema utilizando a detecção de uma estado que não entra na nossa contagem temos pequeno atraso(conhecido como glitches). Se colocarmos num osciloscópio conseguimos notar que a porta lógica para perceber que as saídas estão em "111" leva um certo tempo esse tempo é muito pequeno para nossa percepção humana mas ele existe no circuito e isso no caso de um contador com o propósito de montar um relógio geraria um atraso e um erro que se somaria com o passar do tempo gerando erro em um projeto de relógio que demanda precisão. Entretanto para outros projetos que basta a mudança do estado isso seria irrelevante. Vale aqui avaliar o objetivo do contador e aplicar quando favorável.
Nota:
1-O "set" é um pino que coloca todas as saídas em "1" como não vamos usar essa função as porta "set" estão todas aterradas. É um procedimento padrão para evitar interferências.
2-Usamos conectores com nomes ao invés de ligar usando fios pois deixa o projeto mais limpo. Basta verificar o nome de cada conexão e considerar que é um fio ligando um ponto a outro.
0 comentários:
Postar um comentário