Depois de falar sobre o básico da eletrônica digital, está na hora de falar um pouco sobre circuitos mais complexos.
Neste post vamos identificar e diferenciar Microprocessadores e Microcontroladores assim como seus possíveis usos.
Microprocessador: O "Cérebro" da computação.
Para que um circuito eletrônica possa realizar alguma tarefa de forma organizada é necessário que ele seja programado, um programa é uma sequência de regras lógicas a serem seguidas com o objetivo de realizar alguma atividades.
Um circuito que realiza essa atividade é chamado de Microprocessador, ele é o que chamamos de "Cérebro" do computador ou equipamento, já que ele é quem segue a sequência que foi determinada previamente.
Para que um programa seja executado ele precisa estar armazenado em algum lugar, nos microcomputadores eles ficam em uma memória externa como um Disco Rígido, Pendrive ou Mídia de CD/DVD. Mas esse programa não pode ser executado pelo microprocessador enquanto está nesse tipo de armazenamento, então a forma de executar um programa é fazer uma cópia do seu conteúdo para a memória principal (também chamada de memória RAM).
Dessa forma vemos que o "Cérebro" possui uma unidade que interpreta as instruções (Microprocessador) e outra que "lembra" dessas informações (As memórias RAM ou ROM).
Vamos criar um exemplo fictício e didático apenas para mostrar como os comandos poderiam ser tratados e executados por um Microprocessador, antes veja as seguintes considerações importantes sobre este exemplo:
1) Cada instrução possui um valor numérico equivalente, já que na memória só é possível armazenar números.
2) Um registrador interno é o local dentro do Microprocessador onde um valor pode ser armazenado temporariamente.
3) A memória é endereçada por meio de números (nesse exemplo usei a notação decimal, mas o comum é usar em hexadecimal).
4) Nesse exemplo tanto o programa como os dados são armazenados na mesma memória, mais adiante mostrarei que isso depende da arquitetura do Microprocessador.
5) Cada instrução aqui está ocupando dois bytes, mas em um caso real diferentes instruções usam quantidades diferentes de bytes, isso só depende de como o Microprocessador foi projetado. O primeiro byte indica qual instrução deve ser executada e o segundo indica qual o parâmetro para essa instrução.
6) O endereçamento inicial é a posição de memória 01 e será assumido como o endereço inicial para que a rotina seja executada, geralmente os endereços reais começam em zero. Esse programa já está armazenado em algum tipo de memória acessível ao Microprocessador como ROM, RAM ou Flash.
Considerações sobre portas de entrada/saída nesse exemplo:
A porta 01 está ligada um botão e o valor lido nessa porta pode ser 0 (botão não pressionado) ou 1 (botão pressionado)
A porta 02 está conectada a um LED, quando a porta estiver em 0 o LED estará apagado e quando estiver em 1, aceso.
obs: em um dispositivo real é provável que sejam necessários diversos circuitos extras para ligar tanto as portas de I/O quanto às memórias RAM ou ROM ao Microprocessador, mas não vamos abordar esse assunto aqui por enquanto.
As instruções disponíveis no microprocessador são:
Código da instrução: Mnemônico - Descrição
01: IN XX - Leia o estado da porta XX e armazene em um registrador interno.
02: CMP XX - Compare o valor do registrador interno com o valor XX.
03: JE XX - Se a última comparação foi igual, pule para o endereço XX.
04: OUT XX - Armazena o valor do registrador interno na porta XX.
05: JMP XX - Salta para o endereço XX.
06: MOV XX - Movimenta o valor XX para dentro do registrador interno.
07: LD XX - Carrega para o registrador o conteúdo da memória em XX.
08: ST XX - Armazena na memória em XX o valor do registrador interno.
obs: Mnemônicos são representações na forma de siglas dos comandos que são entendidos por um Microprocessador, esse conjunto é definido pelo fabricante e equivale a uma configuração de bits que instrui como devem ser executados os comandos.
O programa a seguir verifica se o botão está pressionado, se estiver faz com que o LED fique piscando.
Posição: Conteúdo - Mnemônico # Comentário
01: 06 00 - MOV 00 # Zera o registrador
03: 08 31 - ST 31 # Armazena o zero na variável
05: 01 01 - IN 01 # Lê o valor da porta 1 (botão)
07: 02 00 - CMP 00 # Verifica se botão não pressionado
09: 03 05 - JE 05 # Se não estiver, salta para INI
11: 07 31 - LD 31 # Lê a variável
13: 02 00 - CMP 00 # Compara se é zero
15: 03 23 - JE 23 # Pula, se for zero
17: 06 00 - MOV 00 # Coloca 0 no registrador
19: 08 31 - ST 31 # Salva na variável
21: 05 27 - JMP 27 # Volta para piscar o LED
23: 06 01 - MOV 01 # Coloca 1 no registrador
25: 08 31 - ST 31 # Salva na variável
27: 04 02 - OUT 02 # Alterna o LED na porta 2
29: 05 05 - JMP 05 # Volta para o início
31: 00
A primeira coluna mostra o número do endereço de memória, em seguida vem os bytes que representam o código a ser entendido pelo Microprocessador e em seguida o seu parâmetro.
Tente ler o código e observar como o programa se comporta.
Observe que a posição 31 não possui instrução, ela é usada como um local de armazenamento de dados, contém o estado atual do LED (aceso ou apagado) para fazer ele piscar. Essa arquitetura que armazena programas e dados na mesma memória é chamada de arquitetura de Von-Neumann e é usada nos microprocessadores dos computadores pessoais da atualidade. Isso quer dizer que quando usamos uma memória RAM ela é usada para armazenar tanto os programas que serão executados quanto os dados que são usados por estes programas.
Mas existe também a arquitetura Harvard em que o Microprocessador possui uma ligação com um barramento de memória para programas e outro barramento diferente para dados. Isso significa que eles não são armazenados no mesmo local. Cada uma possui suas vantagens e desvantagens características.
Esse tipo de codificação de comandos em mnemônicos é conhecido como linguagem Assembly, o programa que faz a "montagem" (ou seja, converte os mnemônicos em valores binários entendíveis pelo Microprocessador) são chamados de Assembler, como os mnemônicos variam de um Microprocessador para outro, a linguagem Assembly também varia. Na prática podemos criar os programas usando uma linguagem de programação mais simples e de mais alto nível, como a linguagem C, por exemplo, e usar um programa chamado "compilador" para converter nosso programa que está escrito na forma de texto em um arquivo binário que contém as instruções que o Microprocessador entendem e que são equivalentes ao programa que escrevemos.
Microcontrolador: Mais próximo ao Hobby e ao hardware.
Agora vamos falar um pouco sobre os Microcontroladores. Estes circuitos integrados são muito importantes para quem quer usar a eletrônica como hobby, eles implementam um pequeno computador quase completo em um único circuito integrado. Em geral eles possuem um Microprocessador, memória RAM, memória Flash (onde os programas são armazenados e executados), portas de I/O digitais, alguns possuem portas analógicas e PWM (esse último tipo vale uma postagem só sobre esse assunto, vou deixar para explicar depois).
Dentre os circuitos Microcontroladores mais usados na atualidade temos a linha PIC da Microchip e os AVR da Atmel que são o núcleo das famosas placas Arduino.
Os Microprocessadores da linha ARM são os mais comuns em dispositivos móveis como Smartphones e Tablets, mas geralmente a indústria não utiliza esse Microprocessador na forma de um circuito integrado discreto, geralmente eles utilizam um circuito chamado SoC (System on Chip) onde além do Microprocessador eles colocam no mesmo integrado outros circuitos para controlar o acesso à memória, unidades de cartão SD, gráficos, touchscreen, som e etc.
Utilizar Microprocessadores em um projeto de hobby é impraticável, eles necessitam de muitos outros circuitos adicionais e tornam o projeto muito complexo. Por outro lado os Microcontroladores foram feitos para suprir essa necessidade, eles operam em uma velocidade muito inferior, possuem menos recursos mas são suficientes para a maioria dos projetos, desde pequenos robôs, impressoras 3D e drones esses circuitos podem fazer muita coisa, mas quando isso não for suficiente podemos criar um sistema híbrido (que também é um bom tema a ser explorado em outra postagem) onde podemos usar um celular como processamento central e um microcontrolador como interface com dispositivos de hardware ou controlar ele por meio de um computador usando uma comunicação WiFi.
quarta-feira, 27 de abril de 2016
segunda-feira, 25 de abril de 2016
Encoder... Quais são as suas prioridades?
Além do Shift Register, existem outras formas de se utilizar menos pinos digitais dos microcontoladores com o apoio de circuitos integrados externos, hoje vamos conversar um pouco sobre um circuito chamado "Encoder", com ele é possível se "ler" o valor de vários bits de entrada e indicar qual deles está ativo a partir de uma saída codificada com menos sinais.
Vamos ver como isso é feito na prática, vou usar o circuito integrado 74LS148, mas existem outros Encoders com características diferentes no mercado. Esse CI possui oito sinais de entrada (ou oito bits) e a saída é feita por meio de três sinais que codificam as entradas, é como se fosse feita a conversão da posição do sinal na entrada em um valor binários (com 3 bits).
A entrada ativa é indicada por um sinal em nível LOW e todos os outros sinais deveriam estar inativos (em nível HIGH), no caso de mais de uma entrada estar ativa com o valor LOW, o circuito decide por um processo de prioridades onde os sinais de numeração maior são considerados primeiro, ou seja, dos sinais de entrada de 0 a 7 o sinal do pino 7 é o de maior prioridade, se ele estiver ativo (em LOW) não importa se outros sinais também estão ativos, ele será o resultado.
Nas imagens abaixo você pode conferir a tabela verdade que mostra a ordem de prioridade e o símbolo desse circuito integrado. Na tabela os valores "1" equivalem a HIGH, "0" a LOW e "X" a qualquer valor.
A pinagem do circuito integrado e o diagrama interno são mostrados na figura abaixo:
Vamos ver como isso é feito na prática, vou usar o circuito integrado 74LS148, mas existem outros Encoders com características diferentes no mercado. Esse CI possui oito sinais de entrada (ou oito bits) e a saída é feita por meio de três sinais que codificam as entradas, é como se fosse feita a conversão da posição do sinal na entrada em um valor binários (com 3 bits).
A entrada ativa é indicada por um sinal em nível LOW e todos os outros sinais deveriam estar inativos (em nível HIGH), no caso de mais de uma entrada estar ativa com o valor LOW, o circuito decide por um processo de prioridades onde os sinais de numeração maior são considerados primeiro, ou seja, dos sinais de entrada de 0 a 7 o sinal do pino 7 é o de maior prioridade, se ele estiver ativo (em LOW) não importa se outros sinais também estão ativos, ele será o resultado.
Nas imagens abaixo você pode conferir a tabela verdade que mostra a ordem de prioridade e o símbolo desse circuito integrado. Na tabela os valores "1" equivalem a HIGH, "0" a LOW e "X" a qualquer valor.
A pinagem do circuito integrado e o diagrama interno são mostrados na figura abaixo:
sexta-feira, 22 de abril de 2016
Shift Register... chega pra lá, fazendo o favor !!!
Shift Register, um conversor de serial em paralelo.
Quando projetamos circuitos eletrônicos utilizando microcontroladores podemos nos deparar com o problema da existência de poucas portas de comunicação, uma boa solução é a utilização de um conversor de serial em paralelo, assim podemos expandir o número de saídas digitais.
Vou apresentar agora cada um dos conceitos envolvidos nesse tipo de circuito para depois juntar todas as peças desse quebra-cabeças.
Bit: Nesse circuito e em muitos outros o uso do termo bit identifica uma informação que pode ser armazenada indicando um estado lógico, como vimos nas portas lógicas, onde 0 é o mesmo que falso ou LOW (0V) e 1 é verdadeiro ou HIGH (5V).
Entrada serial: os bits são enviados um por vez usando o mesmo canal, para que o receptor saiba quando ocorre a mudança de bit pode ser usado um temporizador sincronizado ou uma fonte de sincronismo gerada pelo emissor.
Saída paralela: todos os bits carregador serialmente no registrador ficam disponíveis cada qual em sua saída individual.
Deslocamento de bit: A entrada funciona como uma fila, a cada novo bit que chega os outros que já existem são deslocados para a próxima posição, o último bit é "jogado pra fora" do circuito por uma porta para esse fim e pode ser usado para "transbordar" esse bit para a entrada de outro circuito.
Tamanho do registrador: Número de bits que podem ser armazenados, depende do tipo de circuito integrado, alguns modelos são construídos para suportar 4 ou 8 bits, mas eles podem ser "cascateados" de forma que juntos podem funcionar como um único circuito de tamanho maior.
Porta de três estados: Já vimos que existem dois estados possíveis em um sistema binário (falso/verdadeiro, 0/1, desligado/ligado, etc..) mas alguns circuitos implementam um terceiro estado que não representa nenhum dos dois casos chamado de alta impedância, é como se o circuito estivesse desconectado, isso é útil quando utilizamos uma saída comum unindo a saída de vários outros circuitos, nesse estado ele não interfere no sinal dos outros circuitos.
Clock: Entrada que dá o ritmo de leitura dos bits seriais e também faz com que os existentes sejam deslocados.
Latch: Se você acompanha o Blog deve ter lido o meu artigo sobre Latch, se ainda não leu e quiser entender mais sobre o assunto pode dar uma olhada lá, para quem não quer saber disso agora eu vou comentar brevemente, o Latch é um circuito que, quando acionado, faz uma cópia dos dados das entradas e os deixa disponíveis na saídas, depois de acionado o pulso de cópia os dados de saída não se modificam mais (como uma foto) até que seja solicitada uma nova cópia.
Juntando tudo: O Shift register é um circuito integrado onde os bits entram por uma única porta de forma serial, controlada pelo pino de clock preenchendo as posições internas do registrador por meio de deslocamento (Shift), após carregar todos os bits podemos acionar um Latch que copia todos os bits de uma vez para a saída paralela, enquanto essa saída não estiver habilitada ela estará em alta impedância, após a habilitação da saída, cada pino apresentará um sinal equivalente ao bit que foi carregado.
O circuito Shift Register é construído por meio de uma série de circuitos chamados flip-flops, cada um armazena um bit, a entrada de um é ligado na saída do seu predecessor e a saída do último vai para um dos pinos do CI que pode ser usado como entrada do próximo CI, no caso de cascateamento.
Veja a ilustração abaixo:
Cada flip-flop é ilustrado por uma caixa, o sinal CK é o clock que faz a leitura do bit em D, colocando o seu valor na saída Q, observe que o valor anterior de um flip-flop é a entrada do próximo, no exemplo existem 4 bits e a sua saída paralela está nos sinais Q0 a Q3.
O dado entra pelo SERIAL IN, a cada pulso em CK os dados são lidos e deslocados e o bit em Q3 vai para o SERIAL OUT. É como se fossem várias caixas que transferem os seus conteúdos para a caixa ao lado e a última despeja o seu conteúdo pra fora do circuito.
O Latch, quando acionado, tira uma "foto" do registrador de deslocamento e faz com que eles sejam mostrados na saída paralela, veja o diagrama abaixo que mostra a pinagem do TTL 74595 e com ele implementa o Shift Register com Latch em um único circuito integrado:
Podemos usar esse circuito integrado em nossos projetos eletrônicos, por meio de apenas 3 pinos digitais de saída podemos controlar 8 saídas digitais ou mais, bastando ligar o pino 9 (SERIAL DATA OUTPUT) no pino 11 (SHIFT CLOCK) de outro circuito obtendo assim um registrados de 16 bits e ligando em paralelo os sinais de CLOCK e LATCH.
Veja um exemplo de como usar o circuito:
Para controlar 8 LEDs o microcontrolador precisa enviar cada bit pela porta de entrada "dataPin", pulsando (alternando entre 1 e 0) o sinal na portal "clockPin" e, ao final da transferência, pulsar o sinal na portal "latchPin" para que os bits transferidos sejam enviados para as saídas controlando cada um dos LEDs individualmente.
Quando projetamos circuitos eletrônicos utilizando microcontroladores podemos nos deparar com o problema da existência de poucas portas de comunicação, uma boa solução é a utilização de um conversor de serial em paralelo, assim podemos expandir o número de saídas digitais.
Vou apresentar agora cada um dos conceitos envolvidos nesse tipo de circuito para depois juntar todas as peças desse quebra-cabeças.
Bit: Nesse circuito e em muitos outros o uso do termo bit identifica uma informação que pode ser armazenada indicando um estado lógico, como vimos nas portas lógicas, onde 0 é o mesmo que falso ou LOW (0V) e 1 é verdadeiro ou HIGH (5V).
Entrada serial: os bits são enviados um por vez usando o mesmo canal, para que o receptor saiba quando ocorre a mudança de bit pode ser usado um temporizador sincronizado ou uma fonte de sincronismo gerada pelo emissor.
Saída paralela: todos os bits carregador serialmente no registrador ficam disponíveis cada qual em sua saída individual.
Deslocamento de bit: A entrada funciona como uma fila, a cada novo bit que chega os outros que já existem são deslocados para a próxima posição, o último bit é "jogado pra fora" do circuito por uma porta para esse fim e pode ser usado para "transbordar" esse bit para a entrada de outro circuito.
Tamanho do registrador: Número de bits que podem ser armazenados, depende do tipo de circuito integrado, alguns modelos são construídos para suportar 4 ou 8 bits, mas eles podem ser "cascateados" de forma que juntos podem funcionar como um único circuito de tamanho maior.
Porta de três estados: Já vimos que existem dois estados possíveis em um sistema binário (falso/verdadeiro, 0/1, desligado/ligado, etc..) mas alguns circuitos implementam um terceiro estado que não representa nenhum dos dois casos chamado de alta impedância, é como se o circuito estivesse desconectado, isso é útil quando utilizamos uma saída comum unindo a saída de vários outros circuitos, nesse estado ele não interfere no sinal dos outros circuitos.
Clock: Entrada que dá o ritmo de leitura dos bits seriais e também faz com que os existentes sejam deslocados.
Latch: Se você acompanha o Blog deve ter lido o meu artigo sobre Latch, se ainda não leu e quiser entender mais sobre o assunto pode dar uma olhada lá, para quem não quer saber disso agora eu vou comentar brevemente, o Latch é um circuito que, quando acionado, faz uma cópia dos dados das entradas e os deixa disponíveis na saídas, depois de acionado o pulso de cópia os dados de saída não se modificam mais (como uma foto) até que seja solicitada uma nova cópia.
Juntando tudo: O Shift register é um circuito integrado onde os bits entram por uma única porta de forma serial, controlada pelo pino de clock preenchendo as posições internas do registrador por meio de deslocamento (Shift), após carregar todos os bits podemos acionar um Latch que copia todos os bits de uma vez para a saída paralela, enquanto essa saída não estiver habilitada ela estará em alta impedância, após a habilitação da saída, cada pino apresentará um sinal equivalente ao bit que foi carregado.
O circuito Shift Register é construído por meio de uma série de circuitos chamados flip-flops, cada um armazena um bit, a entrada de um é ligado na saída do seu predecessor e a saída do último vai para um dos pinos do CI que pode ser usado como entrada do próximo CI, no caso de cascateamento.
Veja a ilustração abaixo:
Cada flip-flop é ilustrado por uma caixa, o sinal CK é o clock que faz a leitura do bit em D, colocando o seu valor na saída Q, observe que o valor anterior de um flip-flop é a entrada do próximo, no exemplo existem 4 bits e a sua saída paralela está nos sinais Q0 a Q3.
O dado entra pelo SERIAL IN, a cada pulso em CK os dados são lidos e deslocados e o bit em Q3 vai para o SERIAL OUT. É como se fossem várias caixas que transferem os seus conteúdos para a caixa ao lado e a última despeja o seu conteúdo pra fora do circuito.
O Latch, quando acionado, tira uma "foto" do registrador de deslocamento e faz com que eles sejam mostrados na saída paralela, veja o diagrama abaixo que mostra a pinagem do TTL 74595 e com ele implementa o Shift Register com Latch em um único circuito integrado:
Podemos usar esse circuito integrado em nossos projetos eletrônicos, por meio de apenas 3 pinos digitais de saída podemos controlar 8 saídas digitais ou mais, bastando ligar o pino 9 (SERIAL DATA OUTPUT) no pino 11 (SHIFT CLOCK) de outro circuito obtendo assim um registrados de 16 bits e ligando em paralelo os sinais de CLOCK e LATCH.
Veja um exemplo de como usar o circuito:
Para controlar 8 LEDs o microcontrolador precisa enviar cada bit pela porta de entrada "dataPin", pulsando (alternando entre 1 e 0) o sinal na portal "clockPin" e, ao final da transferência, pulsar o sinal na portal "latchPin" para que os bits transferidos sejam enviados para as saídas controlando cada um dos LEDs individualmente.
quarta-feira, 20 de abril de 2016
Latch... O fotógrafo de bits
O Latch funciona como um buffer pra onde os dados, depois de totalmente carregados, são transferidos e ficam disponíveis para uso. Esse tipo de circuito é importante nos casos onde as entradas ficam modificando de valor até que cheguem a um estado final que interessa ser trabalhado.
Quando acionado, o latch tira uma "foto" dos sinais de entrada e faz com que eles sejam mostrados na saída. Resumindo, ele armazena a cópia da entrada em um determinado momento.
Esse circuito é composto por uma série de flip-flops tipo D que, após receber o pulso de clock CK, guardam o estado dos sinais de entrada D em sua memória e os deixa expostos na saída Q, depois de receber o pulso de clock as variações nas entradas já não influenciam mais nas saídas até que um novo pulso ocorra. Cada flip-flop D é responsável por um bit, os sinais de entrada são individuais mas veja que o pulso de clock é o mesmo para todos eles.
Vejam o esquema do CI TTL 74377, ele implementa um Latch de 8 bits, observem que existe um flip-flop D conectado a cada entrada, o sinal de clock de todos eles está ligado ao pino chamado LE (Latch Enable, que é ativo em LOW - barra acima do nome do sinal), após pulsar esse sinal os dados são copiados para as memórias internas mas só serão apresentados na saída quando os amplificadores operacionais (representados pelos triângulos) estiverem habilitados pelo sinal OE (acionado em LOW, observe que ele entra no amplificador por meio de uma porta inversora representada pela bolinha).
Abaixo está a pinagem completa do circuito 74LS377.
Uma boa aplicação para o Latch é usar em conjunto com o circuito de Shift Register pois essas entradas ficam mudando até que uma conversão de serial para paralelo seja concluída, mas isso é assunto para próxima postagem, acompanhem...
Quando acionado, o latch tira uma "foto" dos sinais de entrada e faz com que eles sejam mostrados na saída. Resumindo, ele armazena a cópia da entrada em um determinado momento.
Esse circuito é composto por uma série de flip-flops tipo D que, após receber o pulso de clock CK, guardam o estado dos sinais de entrada D em sua memória e os deixa expostos na saída Q, depois de receber o pulso de clock as variações nas entradas já não influenciam mais nas saídas até que um novo pulso ocorra. Cada flip-flop D é responsável por um bit, os sinais de entrada são individuais mas veja que o pulso de clock é o mesmo para todos eles.
Vejam o esquema do CI TTL 74377, ele implementa um Latch de 8 bits, observem que existe um flip-flop D conectado a cada entrada, o sinal de clock de todos eles está ligado ao pino chamado LE (Latch Enable, que é ativo em LOW - barra acima do nome do sinal), após pulsar esse sinal os dados são copiados para as memórias internas mas só serão apresentados na saída quando os amplificadores operacionais (representados pelos triângulos) estiverem habilitados pelo sinal OE (acionado em LOW, observe que ele entra no amplificador por meio de uma porta inversora representada pela bolinha).
Abaixo está a pinagem completa do circuito 74LS377.
Uma boa aplicação para o Latch é usar em conjunto com o circuito de Shift Register pois essas entradas ficam mudando até que uma conversão de serial para paralelo seja concluída, mas isso é assunto para próxima postagem, acompanhem...
terça-feira, 19 de abril de 2016
Flip-flop... A menor memória do mundo
Primeiro é bom começar falando pra que serve esse tipo de circuito, vamos lá, esse circuito funciona como se fosse uma memória de 1 único bit, ou seja, você pode armazenar um sinal verdadeiro/falso e depois consultar o valor armazenado. Agora vamos ver como isso é possível.
O flip-flop tipo JK possui 3 entradas e 1 saída (algumas implementações colocam duas saídas mas uma é sempre o inverso da outra, então vamos ignorar isso por enquanto). A saída sempre será indicada pela letra "Q" (a saída invertida, quando existir, será indicada por um "Q" com um traço acima da letra indicando que é o inverso do sinal "Q").
Para que uma informação seja armazenada é preciso pulsar o pino de clock indicado por "CK", na verdade toda a ação ocorre exatamente no momento em que ele muda do nível LOW para o nível HIGH. No caso do tipo JK esse armazenamento é feito a partir da seguinte lógica:
1) Se os valores de J e K estão em LOW, o valor da saída não é modificado.
2) Se o valor de J é LOW e K é HIGH então a saída Q será forçada a ficar em LOW.
3) Se o valor de J é HIGH e K é LOW então a saída Q será forçada a ficar em HIGH.
4) Quando os valores de J e K estão em HIGH o valor de Q será invertido.
O outro flip-flop do tipo D ("Data" pois armazena o dado de entrada) possui um funcionamento semelhante ao JK nos pinos Q e CK, mas o armazenamento se comporta de forma diferente. Em vez de ter dois sinais de entrada "J" e "K" agora temos apenas um sinal "D" e o valor que estiver presente em "D", seja LOW ou HIGH, será transferido para a memória interna na mudança de clock.
Observe os símbolos de cada um, o sinal com um triângulo (ou seta) é o clock.
Dentre as várias implementações de circuitos integrados com flip-flops
eu selecionei dois da linha TTL 74xx, o 7474 possui dois flip-flops tipo
D e o 7476 com dois flip-flops JK, veja as imagens abaixo.
Até a próxima !!!
segunda-feira, 18 de abril de 2016
Portas NAND, NOR e XOR... as portas diferenciadas
Portas NAND, NOR e XOR
Portas NAND:
Uma porta NAND funciona exatamente como uma porta AND mas a sua saída é invertida, em uma porta AND a saída só é verdadeira quando todas as entradas são verdadeiras, no caso da porta NAND a saída será falsa nessa condição e verdadeira nos outros casos. O símbolo da porta NAND é semelhante ao da porta AND mas possui uma bolinha na saída, essa bolinha indica a inversão do valor.
Como exemplo podemos ver o circuito integrado 7400 que implementa quatro portas NAND com duas entradas e uma saída.
Portas NOR:
Assim como a porta NAND a porta NOR é semelhante a porta OR mas com a saída invertida, isso significa que a saída dela será falsa quando qualquer uma das entradas for verdadeira. O símbolo da porta NOR também é semelhante ao símbolo da porta OR mas possui a bolinha que indica a inversão na saída dela.
Um exemplo de implementação das portas NOR em circuitos integrados é o 74xx que possui quatro portas de duas entradas e uma saída.
Portas XOR:
A porta XOR é semelhante à porta OR mas possui uma particularidade, enquanto na porta OR se uma ou mais entradas é verdadeira então a saída será verdadeira na porta XOR a saída só é verdadeira se APENAS uma das entradas é verdadeira, ou seja, ela exige exclusividade e daí que vem a sigla XOR (eXclusive OR). O símbolo e a tabela verdade são apresentados na figura abaixo.
Esse tipo de porta pode ser usado em situações que exijam que uma, e apenas uma, das entradas esteja no nível lógico alto (ou verdadeiro).
Portas NAND:
Uma porta NAND funciona exatamente como uma porta AND mas a sua saída é invertida, em uma porta AND a saída só é verdadeira quando todas as entradas são verdadeiras, no caso da porta NAND a saída será falsa nessa condição e verdadeira nos outros casos. O símbolo da porta NAND é semelhante ao da porta AND mas possui uma bolinha na saída, essa bolinha indica a inversão do valor.
Como exemplo podemos ver o circuito integrado 7400 que implementa quatro portas NAND com duas entradas e uma saída.
Portas NOR:
Assim como a porta NAND a porta NOR é semelhante a porta OR mas com a saída invertida, isso significa que a saída dela será falsa quando qualquer uma das entradas for verdadeira. O símbolo da porta NOR também é semelhante ao símbolo da porta OR mas possui a bolinha que indica a inversão na saída dela.
Um exemplo de implementação das portas NOR em circuitos integrados é o 74xx que possui quatro portas de duas entradas e uma saída.
Portas XOR:
A porta XOR é semelhante à porta OR mas possui uma particularidade, enquanto na porta OR se uma ou mais entradas é verdadeira então a saída será verdadeira na porta XOR a saída só é verdadeira se APENAS uma das entradas é verdadeira, ou seja, ela exige exclusividade e daí que vem a sigla XOR (eXclusive OR). O símbolo e a tabela verdade são apresentados na figura abaixo.
Esse tipo de porta pode ser usado em situações que exijam que uma, e apenas uma, das entradas esteja no nível lógico alto (ou verdadeiro).
sexta-feira, 15 de abril de 2016
Portas lógicas - a matemática da computação
Relembrando o padrão, valores verdadeiros (True) correspondem a uma saída de 5V e valores falsos correspondem a uma saída de 0V.
A porta AND:
Essa porta possui pelo menos duas entradas e uma saída que será verdadeira apenas quando TODAS as entradas também forem verdadeiras, mesmo que apenas uma seja falsa isso vai fazer com que a saída também seja falsa.
Observe na imagem abaixo o símbolo e a tabela que mostra uma como se comporta uma porta AND com duas entradas e uma saída, esse tipo de tabela é chamado de "Tabela Verdade".
Para mostrar um exemplo dessa porta, veja esse circuito integrado da família TTL chamado 7408, o esquema abaixo mostra o CI com suas 4 portas de duas entradas e uma saída além da descrição dos seus pinos.
Podemos usar esse CI, por exemplo, para destravar uma porta que dependa de vários requisitos serem atendidos previamente (sensores, chaves, códigos, etc) o sinal de cada um pode ser ligado a uma das entradas e a saída só será ativada quando todos os requisitos forem resolvidos, essa saída poderia ser ligada à liberação da trava da porta.
A porta OR:
Essa porta possui pelo menos duas entradas e uma saída que será verdadeira quando QUALQUER UMA das entradas for verdadeira, mesmo que apenas uma seja verdadeira isso vai fazer com que a saída também seja verdadeira.
Aqui estão o símbolo e a tabela que mostra uma como se comporta uma porta OR de duas entradas e uma saída.
Como exemplo de CI que implementa a porta OR, observe o TTL 7432, o esquema abaixo mostra o CI com as 4 portas de duas entradas e uma saída.
Um exemplo de uso seria a ativação de um alarme a partir de vários sensores diferentes, qualquer um deles ao passar para o estado verdadeiro ativaria a saída ligando o alarme.
A porta NOT:
Diferente das outras, essa porta possui uma entrada e uma saída, ela inverte o valor da entrada, se a entrada é falsa a saída é verdadeira e vice-versa.
O símbolo da porta not é um triângulo (que representa um amplificador operacional, é um termo técnico, não se preocupe com isso) com uma bolinha em um dos lados que representa a saída da porta. Na prática a bolinha é o inversor de sinal e será usado em conjunto com outras portas para modificar as entradas ou saídas, veja nos próximos artigos portas como NAND e NOR que são portas AND e OR com inversores na saída.
O CI de exemplo de implementação da porta NOT se chama 7404 e possui seis portas inversoras conforme o diagrama abaixo.
Esse circuito pode ser usado quando um determinado sinal gera uma informação invertida, por exemplo, um sensor de alarme instalado em uma janela poderia ser feito por um tipo de botão que fica pressionado o tempo todo, mas quando a janela é aberta esse botão é liberado, se usarmos um sinal passando por esse botão ele será verdadeiro (passando corrente elétrica) quando não precisamos acionar o alarme e falso quando o alarme precisa ser acionado, para gerar o alarme nós temos que inverter essa lógica e isso pode ser feito pela porta NOT.
Em futuras postagens vou voltar a falar sobre o assunto mostrando como fazer isso na prática.
quinta-feira, 7 de abril de 2016
Circuitos Lógicos TTL... uma família inteira para conhecer, se prepare !!!
A sigla TTL significa Lógica Transistor-Transistor e se refere a uma
classe de circuitos integrados que implementam funções lógicas
utilizando transistores em sua composição, mas o termo TTL também é
usado frequentemente para indicar que algum outro circuito integrado ou
porta lógica opera na mesma faixa de tensão que é de 5V. Tive um professor
que antes de iniciar suas aulas no laboratório de eletrônica digital deu a seguinte
explicação, logicamente como brincadeira, mas que facilita a memorização: "Dentro desses chips existe
uma fumacinha que faz ele funcionar, mas se você deixar a fumacinha
sair, ele não funciona mais... por isso sempre devemos manter a tensão
em 5V, um valor maior do que esse vai fazer a fumacinha escapar de
dentro do chip". Portanto, amigos, lembrem-se sempre disso, circuitos
TTL devem sempre ser alimentados com 5V.
Um exemplo que será visto em outro artigo são as portas seriais TTL que muitos microcontroladores implementam, nesse caso a indicação TTL não indica uma porta lógica e sim a tensão de trabalho, o nome serve para diferenciar da porta serial RS-232 comum que trabalha com tensões mais altas e poderia facilmente queimar o microcontrolador se fosse ligado diretamente. Para entender cada um desses circuitos é interessante entender como funcionam as portas lógicas. Basicamente uma porta lógica realiza a nível de circuitos eletrônicos o mesmo comportamento da lógica de Boole ou lógica booleana. Esse nome estranho vem de um matemático chamado George Boole que definiu como essas conexões lógicas podem ser combinadas e compõe a base para todos os circuitos digitais.
Na lógica booleana os sinais assumem valores Verdadeiro (True) ou Falso (False), não existem outros valores e isso é muito bom para a implementação por meio da eletrônica pois podemos assumir que um sinal baixo (0V) é falso e um sinal alto (5V) é verdadeiro, esse também é o motivo pelo qual os computadores trabalham internamente com numeração binária, nesse sistema numérico só existe os dígitos 0 e 1 que podem ser mapeados como Falso e Verdadeiro ou na eletrônica como 0V e 5V.
Vamos ver como se comportam essas tais portas lógicas:
Porta AND (lógica "E") a saída só é verdadeira se todas as entradas são verdadeiras.
Porta OR (lógica "OU") a saída é verdadeira se qualquer uma das entradas for verdadeira.
Porta NOT (lógica "Não" ou inversora) nessa porta em especial só existe uma entrada e a saída é o inverso da entrada.
Porta NAND (lógica "Não E") a lógica é a mesma da porta AND mas a saída é invertida por uma porta NOT.
Porta NOR (lógica "Não OU") a lógica é a mesma da porta OR mas a saída é invertida por uma porta NOT.
Porta XOR (lógica "OU exclusivo") a lógica é parecida com a port OR porque a saída é verdadeira se uma das entradas é verdadeira, a diferença é que a saída será falsa se todas as entradas foram verdadeiras simultaneamente, isso significa que somente uma das duas pode ser verdadeira de cada vez e por isso ela é chamada de "exclusiva".
Cada tipo de porta possui um desenho característico, veja o exemplo abaixo de um circuito com 4 portas AND de duas entradas, observe que além das portas lógicas existem os pinos VCC (+5V) e GND (0 V) para fornecer a alimentação do circuito integrado. Os símbolos e pinagens dos circuitos integrados das diversas portas lógicas serão vistos em outra postagem.
A porta NOT só precisa de uma entrada, todas as outras precisam de, no mínimo, duas entradas mas existem circuitos integrados que implementam essas mesmas portas lógicas com mais de duas entradas e existem circuitos que implementam várias portas lógicas independentes dentro do mesmo componente, apesar de ter várias entradas, cada porta lógica possui apenas uma saída.
Maiores detalhes você pode conferir nos artigos específicos de cada uma dessas portas e de outros circuitos com lógica TTL.
Um exemplo que será visto em outro artigo são as portas seriais TTL que muitos microcontroladores implementam, nesse caso a indicação TTL não indica uma porta lógica e sim a tensão de trabalho, o nome serve para diferenciar da porta serial RS-232 comum que trabalha com tensões mais altas e poderia facilmente queimar o microcontrolador se fosse ligado diretamente. Para entender cada um desses circuitos é interessante entender como funcionam as portas lógicas. Basicamente uma porta lógica realiza a nível de circuitos eletrônicos o mesmo comportamento da lógica de Boole ou lógica booleana. Esse nome estranho vem de um matemático chamado George Boole que definiu como essas conexões lógicas podem ser combinadas e compõe a base para todos os circuitos digitais.
Na lógica booleana os sinais assumem valores Verdadeiro (True) ou Falso (False), não existem outros valores e isso é muito bom para a implementação por meio da eletrônica pois podemos assumir que um sinal baixo (0V) é falso e um sinal alto (5V) é verdadeiro, esse também é o motivo pelo qual os computadores trabalham internamente com numeração binária, nesse sistema numérico só existe os dígitos 0 e 1 que podem ser mapeados como Falso e Verdadeiro ou na eletrônica como 0V e 5V.
Vamos ver como se comportam essas tais portas lógicas:
Porta AND (lógica "E") a saída só é verdadeira se todas as entradas são verdadeiras.
Porta OR (lógica "OU") a saída é verdadeira se qualquer uma das entradas for verdadeira.
Porta NOT (lógica "Não" ou inversora) nessa porta em especial só existe uma entrada e a saída é o inverso da entrada.
Porta NAND (lógica "Não E") a lógica é a mesma da porta AND mas a saída é invertida por uma porta NOT.
Porta NOR (lógica "Não OU") a lógica é a mesma da porta OR mas a saída é invertida por uma porta NOT.
Porta XOR (lógica "OU exclusivo") a lógica é parecida com a port OR porque a saída é verdadeira se uma das entradas é verdadeira, a diferença é que a saída será falsa se todas as entradas foram verdadeiras simultaneamente, isso significa que somente uma das duas pode ser verdadeira de cada vez e por isso ela é chamada de "exclusiva".
Cada tipo de porta possui um desenho característico, veja o exemplo abaixo de um circuito com 4 portas AND de duas entradas, observe que além das portas lógicas existem os pinos VCC (+5V) e GND (0 V) para fornecer a alimentação do circuito integrado. Os símbolos e pinagens dos circuitos integrados das diversas portas lógicas serão vistos em outra postagem.
A porta NOT só precisa de uma entrada, todas as outras precisam de, no mínimo, duas entradas mas existem circuitos integrados que implementam essas mesmas portas lógicas com mais de duas entradas e existem circuitos que implementam várias portas lógicas independentes dentro do mesmo componente, apesar de ter várias entradas, cada porta lógica possui apenas uma saída.
Maiores detalhes você pode conferir nos artigos específicos de cada uma dessas portas e de outros circuitos com lógica TTL.
Assinar:
Postagens (Atom)