DI2022802 2022 1 AULA04

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Contadores Síncronos

Como vimos anteriormente, o atraso de propagação dos FF nos contadores assíncronos limita a sua frequência máxima. Esse problema pode ser resolvido fazendo com que os FF mudem o estado de suas saídas no momento em que ocorre a transição de clock. Essa configuração caracteriza os contadores chamados de síncronos e é mostrada na Figura 1.


Fig24 DIG222802.png

Figura 1 - Contador síncrono ascendente.


A análise da lógica do circuito do contador mostra que os FF do tipo JK somente estão no estado TOOGLE (J = 1 e K = 1) quando todas as saídas dos FF anteriores estão em nível ALTO. Como o sinal de clock é comum a todos os FF, o atraso de propagação do contador será o atraso de um FF somado ao atraso das portas AND.

Atraso total ()


Desta forma nesse tipo de contador o atraso não depende do número de bits, mas apenas da tecnologia utilizada. Por outro lado, como o atraso de propagação é menor, o contador síncrono pode trabalhar com frequências maiores que o contador assíncrono.


Contadores Síncronos Decrescentes

Do mesmo modo que os contadores assíncronos, os contadores síncronos podem contar de forma decrescente. Para isso devemos usar as saídas no lugar vez das saídas na lógica de habilitação das entradas J e K. Porém NÃO devemos pegar o sinal de saída (ABCD) das portas .

(simulado em sala de aula)

Contadores com Carga Paralela

Os contadores podem contar a partir de um valor predeterminado pelo usuário. Nesses contadores o estado inicial de cada FF pode ser determinado através das entradas CLR () e PRE (). A Figura 2 mostra circuito de inicialização de um FF. Quando LOAD é BAIXO, o FF funciona normalmente. Quando LOAD é ALTO, o valor de D é armazenado na saída do FF através das entradas assíncronas (que não dependem do clock).


Fig25 DIG222802.png

Figura 2 - Circuito de carga.


Se fizermos isso para cada FF do contador determinar o valor inicial a ser incrementado. Esse processo é conhecido como carga paralela porque é realizado simultaneamente em todos os FF do contador. Um exemplo prático de um contador síncrono crescente-decrescente de MOD-16 com carga paralela é o 74193. O circuito de carga pode ser utilizado tanto nos contadores síncronos como nos assíncronos. A Figura 3 mostra o contador 74193 síncrono crescente/decrescente.


Fig26 DIG222802.png

Figura 3 - Contador 74193 síncrono crescente/decrescente..

Contador Síncrono Crescente-decrescente

A construção de um contador síncrono crescente-decrescente é feita de forma semelhante a mostrada para o contador assíncrono. Para analisar um contador síncrono crescente-decrescente com carga paralela, utilizamos o circuito integrado 74LS193, o qual possui as seguintes características:

  • É um contador síncrono de 4 bits e módulo 16, com saídas
  • As entradas DOWN e UP são entradas de clock. A aplicação do sinal a uma dessas entradas determina se a contagem será crescente ou decrescente.
  • A entrada assíncrona de CLR (limpar) zera o contador (0000b).
  • A entrada assíncrona (carregar) permite determinar o valor inicial de contagem (DCBA) através das entradas A, B, C e D.
  • As saídas (vai um) e (empresta um) indicam o reinicio da contagem crescente () e decrescente(), respectivamente. A Figura 4 apresenta o diagrama de funcionamento do 74LS193.


Fig27 DIG222802.png

Figura 4 - Diagrama de funcionamento do 74LS193..

Aplicações com Contadores

Contadores BCD

Os contadores BCD são bastante usados em circuitos onde pulsos devem ser contados e mostrados em um display. A Figura 5 mostra um arranjo de contadores BCD que realiza a contagem de 000 a 999. A Figura 5 apresenta como pode ser implementado um circuito contador de décadas, como o utilizado pelo CI 7490.


Fig28 DIG222802.png

Figura 5 - Contador BCD de 000 a 999.

Inicialmente todos os contadores estão em 0 e o display mostra 000. A cada borda de descida do clock, o contador de unidades é incrementado e o valor do contador é mostrado no display. Quando o valor atinge 009 (1001b), a próxima transição de descida do clock fará com que o contador de unidades retorne para 0. Nesse momento ocorrerá uma transição de 1 para 0 (borda de descida) da saída D desse contador, a qual está ligada a entrada de clock do contador de dezenas. Essa transição da saída D do contador de unidades faz com que o contador de dezenas seja incrementado e o display passa a mostrar o valor 010. As contagens prosseguem até atingir 999. Nesse estado com mais uma transição de descida do clock os contadores reiniciam com 000.


Contadores como Divisores de Frequência

Uma outra aplicação de contadores é geração digital de um sinal de clock de menor frequência () a partir de uma onda quadrada de frequência superior (). Usando a característica de divisão de frequência dos contadores, determina-se a contagem N que o contador deve realizar.


Em seguida configura-se o contador para realizar N contagens. O sinal de saída do último estágio do contador é um sinal que tem a frequência desejada (). Esse sinal pode não ser uma onda quadrada, mas isso pode ser resolvido fazendo uma contagem N/2, seguido de um divisor por 2 (FF do tipo T).


Exemplo

Deseja-se obter uma frequência de 1Hz (1 segundo), a partir de um sinal digital com frequência de 60Hz obtido a partir da rede de energia elétrica.


Ou seja, eu preciso realizar uma contagem até 60 (MOD-60) para obter uma frequência de 1Hz.


Nota: Se não houver nenhuma restrição quanto a forma do sinal, basta dividimos diretamente o sinal de 60Hz por 60 e obter o sinal de 1 Hz.

60Hz MOD-60 1Hz
Outro exemplo

Deseja-se obter uma frequência de 20Hz, a partir de um sinal digital com frequência de 1kHz.






No entanto, para obter um sinal quadrado de 1Hz, é necessário dividimos primeiro o sinal de 60Hz por 30 e em seguida dividir esse sinal por 2 para obter o sinal de 1Hz.


60Hz MOD-30 2Hz FF tipo T 1Hz

Circuitos Integrados de Contadores

Existem vários circuitos integrados de contadores, tanto TTL como CMOS. Nos Datasheet os contadores assíncronos são simplesmente identificados como COUNTERS, enquanto que os contadores síncronos são identificados como SYNCHRONOUS COUNTERS. A seguir são mostrados as pinagens e os diagramas de alguns contadores.

  • 74XX90 – Contador assíncrono decádico
  • 74XX92 – Contador assíncrono módulo doze
  • 74XX93 – Contador assíncrono binário de 4 bits
  • 74XX73 – 2 FF do tipo JK para construir contadores síncronos ou assíncronos.
  • CD4040 – Contador assíncrono binário de 12 bits
  • 74XX163 – Contador síncrono binário de 4 bits
  • 74XX169 – Contador síncrono binário de 4 bits crescente-decrescente
  • 74XX190 – Contador síncrono decádico de 4 bits crescente-decrescente
  • 74XX390 – Duplo contador assíncrono decádico
  • 74XX393 – Duplo contador assíncrono binário de 4 bits

Exercícios

[1] Explique o funcionamento do contador síncrono crescente visto da figura abaixo.

Fig79 DIG222802.png

[2] Quantos FF e portas lógicas eu preciso para fazer um contador síncrono que conte 0 até 100.

[3] Quantos FF são necessários para gerar um sinal de onda quadrada com uma frequência de 24Hz a partir de um sinal original de 2,4GHz.

[4] Quantos CI 74193 seriam necessários para mostrar uma contagem, em display de 7 segmentos, de 0 até 1000.

[5] Que frequência eu tenho no pino QD do CI 74193 sendo uma frequência de clock de 8kHz, numa configuração de contador crescente de 4 bits.


Lista de exercícios de contadores

http://wiki.sj.ifsc.edu.br/images/1/11/EX2_DIG222802.pdf

Lista de exercícios de contadores e registradores

http://wiki.sj.ifsc.edu.br/images/2/2a/EX1_DIG222802.pdf

VHDL

O código abaixo representa a realização do circuito VHDL de um contador crescente de 4 bits.

 
library ieee;
use ieee.std_logic_1164.all; 
use ieee.std_logic_arith.all;

entity CONTADOR is
port(
	CLK:	in  std_logic;
    	RESET:	in  std_logic;
	ENABLE:	in  std_logic;
	Q:	out std_logic_vector (3 downto 0)
);
end CONTADOR;

architecture CONTADOR_arq of CONTADOR is 
begin
	process(CLK,RESET)
		variable X: integer range 0 to 15;
	begin
		if (RESET = '1') then
			X := 0;

		elsif (CLK'event and CLK='1') then
			if (ENABLE = '1') then
				X := X + 1;
			end if;
		end if;

		Q <= conv_std_logic_vector(X, 4);

	end process;
end CONTADOR_arq;

Referências

[1] Apostila do CURSO DE ELETRÔNICA DIGITAL. CEFET/SC: São José, 2011.



Icone voltar.png Icone menu.png Icone prox.png