quinta-feira, 25 de março de 2021

Circuitos somadores e subtratores binários

 Já vimos em Operações com Binários como fazer operações de adição e subtração binárias manualmente, mas fazer isso não tem muito propósito, a aplicação realmente útil para esses procedimentos e preparar um circuito eletrônico que realize essas operações automaticamente, pela gente, aqui vou exemplificar o procedimento para adição, e o processo para subtração é semelhante, então primeiro vamos montar como seria a tabela verdade do circuito de soma.

Somador binário

o bit menos significativo depende apenas dos números que estamos somando, então a tabela dele terá duas entradas, mas os bits seguintes, além dos números sendo somados, podem receber um complemento dos bits anteriores, então terão 3 entradas. veja a tabela para:

Bit menos significativo:

Aqui N1 e N2 são bits que vem dos números sendo somados, são entradas, S é a soma e Co é carry out, o vai 1 que fazemos na adição, esse Co nos próximos passos se tornará Cin, carry in, S e Co são as saidas, com isso podemos ver que ao somar 2 bits a saida S é obtida com uma porta XOR, e Co é o resultado de uma porta E, essa tabela é chamada de Half adder (HA).

Bits seguintes:
A partir do segundo bit da soma serão consideradas 3 entradas, duas delas dos bits que estão sendo somados N1 e N2 e uma de carry in, que é o carry out do bit anterior, nesses circuitos a saida de um circuito serve de entrada para o seguinte fazendo uma lógica em cascata, a tabela verdade será:

Nessa tabela, como já foi comentado Cin é uma entrada que depende da soma do bit anterior, N1 e N2 vêm dos números que se faz a soma e S é o resultado e Co o estouro, esse estouro vira o Cin do próximo bit sendo somado, essa tabela verdade pertence ao circuito Full Adder (FA)
Os circuitos com portas lógicas para uma soma de 2 conjuntos de 2 bits pode ser visto abaixo:


Para somar mais bits, basta adicionar mais etapas com full adders, usando o Cout do anterior como Cin da etapa seguinte, mas não será necessário montar esses circuitos todo o tempo, existem circuitos integrados que já fazem toda essa lógica de soma para nós, como é o caso do CI 74HC283, que é um somador binário de 4 bits.

Subtrator binário

Ao invés de fazer toda essa demonstração novamente, vou apenas deixar o nome de um CI que faz a subtração binária automaticamente o 74LS83

quarta-feira, 24 de março de 2021

Base de um espaço vetorial

 Um espaço vetorial tem a sua representação usual, dada como uma ênupla que é uma série ordenada de números

Nesse caso o subíndice n é determinado pela dimensão do espaço vetorial que se está trabalhando. Mas o que isso conjunto de valores representa? Isso depende de a qual base do espaço vetorial esse vetor se refere, O número na posição da ênupla multiplica o vetor correspondente da base na definição do espaço vetorial, Veja o exemplo do espaço vetorial R2 abaixo:

A base mais comum de ser vista é a base o vetor determinado por V=(4 ,3) multiplicado pela base canônica, X=(1 , 0) e Y=(0 , 1), o vetor estará na posição avançando 4 unidades no eixo x, e 3 unidades no eixo y, mas podemos usar qualquer base, se ela atender aos seguintes fatores:

Mas o que essas coisas significam? Vamos ver isso:

1. Vetores serem LI: ou linearmente independentes, significa que os vetores da base não podem ser escritos como combinação linear uns dos outros, veja os exemplos abaixo

No exemplo à esquerda não existe um número real que multiplicado por um vetor resulte no outro, mas no exemplo à direita se multiplicarmos o primeiro vetor por 2 chegamos no 2 vetor, isso faz eles linearmente dependentes.

Na segunda linha eles gerarem todo o espaço vetorial, significa que eles devem cobrir todo o espaço vetorial, então o número de vetores da base deve ser de acordo com a dimensão do espaço, dois vetores para o R2, 3 para o R3 e assim por diante.

Se essas condições forem atendidas qualquer grupo de vetores pode ser a base de um espaço vetorial, e o vetor deve ter representado na sua ênupla a qual base ele se refere, se não houver indicação utiliza-se a base canônica.

Mudança de base

Um vetor escrito em uma base pode ser convertido para outra base, por meio de uma transformação linear, ou ao ser multiplicado por uma matriz de conversão, chamada de matriz de mudança de base. vamos supor que queremos fazer uma mudança de base no espaço R2, 
Temos a base A com os vetores de base (v1, v2) e a base B com os vetores (c1, c2) para escrever um vetor Ya na base B podemos fazer de duas maneiras, fazendo uma conversão da base A para a base canônica, e depois da base canônica para a base B, ou com uma conversão direta da base A para a base B.
Primeiro: conversão de uma base qualquer para a base canônica:
Nesse caso simplesmente colocamos os vetores da base em que queremos a mudança como colunas de uma matriz:

 
A base A tem os seus vetores de base descritos entre chaves e podemos fazer a conversão da base canônica para a base A por multiplicar um vetor por essa matriz de conversão.
 
 Segundo: conversão direta, entre bases, sem passar pela base canônica
 Esse procedimento diminui o número de passos para realizar várias conversões, mas primeiro devemos achar a matriz que faz essa transformação, para isso encontramos as matrizes que fazem a conversão dessas bases para a base canônica.
 
 Com essas matrizes achamos a matriz de conversão direta, da base B para a base A, como:



Fonte:
Aulas de N2ALN no Instituto Federal de São Paulo, IFSP, no período de 01/19 até 07/19

quinta-feira, 11 de março de 2021

Codificadores e Decodificadores

 Já sabemos realizar conversões entre sistemas de numeração manualmente, mas para realizar essa conversão dentro de um circuito elétrico como faríamos? 

Um modo seria levantar uma tabela verdade e projetar o circuito lógico para cada conjunto de entrada e saida, mas podemos ver facilmente que seria circuitos gigantescos cheios de portas lógicas, uma boa noticia, esses circuitos existem e já são encapsulados em CI´s prontos, Esses são os codificadores:

Esses circuitos integrados, possuem o número de entradas para um determinado numero de bits, que estarão no sistema de origem, por exemplo, podemos representar o sistema decima como 10 pinos , representando de 0 até 9, e as saídas estarão no sistema de numeração que desejamos o resultado, então para sistemas decimal, hexadecimal e octal, teremos uma grande quantidade de pinos, mas para o sistema binário a entrada ou saída já estará na codificação de números binários, que é chamada de BCD (binary converted decimal) dessa forma não confundimos o nome da codificação com o estado lógico dos pinos, para as codificações para outros sistemas, que não o binário haverá um número de pinos, de acoro com o número de algarismos do sistema, 10 para decimal, 16 para hexadecimal, e cada pino será um número. Abaixo eu vou deixar alguns CI´s de codificadores, mas esteja ciente que existem outros componentes.

BCD para decimal: CD4028

Decimal para BCD: 74HC147

Preste atemção na hora de fazer as conexões com esses CI's ao realizar a montagem tenha o datasheet com a pinagem a disposição, uma versão em pdf já basta, isso porque esses chips possuem pinos de entradas e saidas, e se conectar sem querer uma saida com a alimentação, o CI não irá funcionar, e pode até queimar, eles não fincionam como mão dupla, o CI que converte BCD para decimal não faz a tarefa contraria ao conectar reverso. Então atenção nas montagems.

Aqui representei as conversões mais comuns de serem usadas, com o sistema BCD é feito o processamento de dados, e com esses CI's podemos converter em um valor mais facil para entendermos, já que somos acostumados com a base 10, desde pequenos. Mas esses não são os unicos conversores que existem, ainda há conversores para displays, analógicos digitais, mas falarei deles em outro momento.




quarta-feira, 10 de março de 2021

Derivada implicita

 Esse método de derivação é usado quando não podemos isolar as variáveis de uma função, uma de cada lado da igualdade, e quando a derivação não é em razão de uma variável independente, mas de uma variável pela outra, essa explicação parece confusa mas vou exemplificar:

Nessa equação não podemos colocar x e y em lados diferentes do sinal de igual, por isso essas variáveis são não separáveis, e a derivação de uma variável pela outra significa que queremos calcular:


Então nessa fração primeiro vamos fixar esse denominador dx, e vamos derivando a equação C termo a termo, com o denominador fixado e o numerador será a variável que estamos derivando, termos que contèm x e y juntos usaremos nesse caso a regra do produto (veja as regras em Derivadas). Fazendo a derivada dy/dx de C teremos:
Aqui dx/dx vale 1, porque o numerador e o denominador são iguais, nesse ponto se isolarmos dy/dx de um lado da igualdade chegaremos ao resultado final, então vamos passar todos os termos com dx/dx para o outro lado, e colocar dy/dx em evidência:
Agora passamos os termos multiplicando dx/dy, dividindo para o outro lado.


Tome cuidado na notação de derivada utilizada na aplicação, se em uma função de várias variáveis a derivada for a função em relação a uma das variáveis , usamos derivadas parciais, mas se for referentes às variáveis apenas,  sem citar o nome da função, usamos derivadas implícitas.




terça-feira, 9 de março de 2021

Autovalores e Autovetores de uma matriz e diagonalização de matrizes

 Uma matriz pode ser usada para representar um transformação linear, quando trabalhamos em algebra linear, um sistema linear, quando trabalhamos com cálculo numérico, ou um sistema real quando trabalhamos com modelagem e teoria de controle.

E nessas situações deveremos multiplicar uma matriz quadrada por um vetor, mas o calculo de matrizes é bastante trabalhoso (veja em Operações com matrizes), então para simplificar a conta realizamos uma diagonalização da matriz vamos ver aqui os passos para isso.

Dada uma matriz quadrada qualquer:

Já sabemos como calcular o produto dessa matriz por um vetor, mas para simplificar a conta podemos encontrar uma matriz diagonal que realize a mesma operação da matriz A.
A matriz Adiag possui apenas os elementos da diagonal principal não nulos, e todos os outros elementos são 0, mas ao multiplicar essa matriz por um vetor, o resultado será o mesmo que se multiplicássemos a matriz A pelo mesmo vetor, mas chegamos nesse resultado de uma maneira muito mais fácil, então como podemos encontrar essa matriz diagonal, primeiro devemos encontrar os autovalores e os autovetores da matriz.

Autolavores e Autovetores de uma matriz

O autovalor e o autovetor de uma matriz é quando, ao multiplicar uma matriz por um vetor, o vetor resultante será o vetor original, multiplicado por um número real:
Para encontrar esses números relacionados a matriz devemos seguir um procedimento.

Primeiro devemos encontrar os autovalores associados à matriz A, para isso devemos encontrar a expressão de:
A nxn é a matriz original, I é uma matriz identidade que está multiplicando a incógnita alfa, ao realizar essa subtração obteremos alfa sendo subtraído dos elementos da diagonal principal de A, quando tentarmos calcular o determinante, obteremos uma equação de grau igual à dimensão da matriz A, ao igualarmos essa equação obtida à 0 e calcular os valores de alfa que fazem isso ser verdade, encontramos os autovalores associados à matriz.
Depois de encontrar os autovalores podemos encontrar os autovetores, quando procuramos esses vetores nós não encontramos um vetor especifico, mas encontramos toda uma família de vetores. nós substituimos os autovalores que encontramos em alfa em, A-α*I, e multiplicamos essa matriz pelo vetor de coordenadas equivalentes à matriz A, então se A for uma matriz 2x2 será duas coordenadas, se for 3x3 será três coordenadas. essa multiplicação nos dará um sistema, igualamos esse sistema a o e encontramos a familia de autovetores associados, haverá uma família associada à cada autovalor.

A matriz diagonal será a matriz de mesma dimensão que A, mas os elementos da diagonal principal serão os autovalores de A.

Um outro processo que também podemos encontrar a matriz diagonal, é calculando:

Aqui D é a matriz diagonal, A é a matriz que queremos diagonalizar, P é a matriz de mudança de base, da matriz dos autovetores para a base canônica, e P^-1 é a matriz inversa dessa matriz.











segunda-feira, 8 de março de 2021

Circuitos de memória - Latches

 Portas lógicas como vimos até agora possuem uma saída que depende exclusivamente de suas entradas, porém em alguns usos, não apenas as entradas são importantes, mas a saída anterior, ou as saídas passadas, também importam, isso cria uma nova divisão na eletrônica digital, de memórias capazes de guardar uma informação passada.

Latch SR

Esses são dispositivos de memória que possuem dois bits de controle, um exemplo desses componentes é o CI 74LS373, com um diagrama de funcionamento visto abaixo:


Aqui OC é output control, ele liga e desliga a saída, e ele é barrado, pois é ativado em 0 e desativado em 1, e o pino G habilita a e desabilita a memória do componente.

Aqui temos as entradas e as respectivas saídas do componente, e temos ainda dois bits de controle, o que acontece quando mudamos alteramos essas entradas? Veja a tabela abaixo:


Aqui vemos que quando o pino que habilita o latch está em 0 a saída será a própria entrada, mas quando G vai para 1 a saída irá permanecer a mesma que estava quando G foi de 0 para 1, independente de qual for a entrada, e se o pino que habilita a saída estiver em 1, por ele ser barrado a saída será desabilitada, e não terá nível lógico 0 nem 1, ela será uma saída de alta impedância, Z, que não é interpretada por circuitos digitais, chamada de tri-state.

Latch tipo D

O funcionamento desse latch é um pouco diferente, esse latch possui apenas 1 bit de controle e a entrada, se o enable está em 0 a saída se mantém no valor que estava quando o dispositivo recebeu 0 no enable e se enable é 1 a saída será a entrada, é essa mudança na saída ocorre assim que a entrada muda.

Mas por necessitarem dos bits de controle Latches não são comuns de serem utilizados em circuitos, no lugar deles usamos outro tipo de componente.
 
Uma coisa importante de prestar atenção é que esses dispositivos,assim como as portas lógicas, são sensiveis ao nível do sinal, se ele está em 0, baixo, ou em 1, alto.



quarta-feira, 3 de março de 2021

Operações em binário

 Em eletrônica digital várias vezes vamos ter que realizar operações de adição e subtração com números binários, primeiro devemos saber como realizar essas operações manualmente, e depois podemos ver circuitos que realizem essas tarefas.

Adição binária

Adição com números binários é muito parecida com o que já fazíamos com números na escala decimal, a diferença será que o estouro que envia um número para a posição à esquerda não será mais no 10, mas no 2, por exemplo:

Para demonstrar essa operação primeiro vamos escrever um sobre o outro, como já sabemos do ensino básico:
 
Então realizamos a soma da mesma maneira que faziamos quando crianças, a diferença é que o resultado não pode ser maior do que 1.
Então para o bit mais a direita temos 0+1 = 1, sem problemas aqui, na posição do meio temos 1+1=2, como 2 em binário é 10, a posição do meio ficará com 0 e o 1 restante é somado na posição à esquerda, novamente então teremos 1+1 e faremos o mesmo procedimento anterior, mas ao invés do 1 somar à algo ele simplesmente irá aparecer, porque não existe mais números sendo somados à esquerda, então o resultado será:
O número 1001 em binário, corresponde ao 9 em decimal, então vemos que a soma está correta.

Subtração em binário

Essa operação é mais trabalhosa para ser efetuada do que a adição, existem alguns métodos diferentes, mas aqui veremos somente um deles:

Complemento de 1
Vamos supor uma operação de subtração, e resolveremos com esse método.

Para ser mais simples o raciocínio escrevemos os números empilhados, igual aprendemos na escola, e colocarei as explicações junto também:
Primeiro invertemos o segundo número, onde era 0 se transforma em 1, e onde era 1 se transforma em 0, e então somamos esse número da inversão ao primeiro número da subtração, perceba que o número resultante dessa soma tem um dígito a mais que os termos da subtração original, esse digito está destacado em vermelho, e é chamado de estouro, dependendo do valor desse estouro tomaremos ações diferentes.
Se o estouro for 0 nós invertemos o resultado novamente, substituindo 1 por 0 e vice versa, e a subtração tem resultado negativo.
mas se o estouro for 1 nós removemos o estouro e somamos 1 ao resto dele:
E esse é o resultado final, perceba que 1000 em binário é 8, e esse é o resultado correto da subtração inicial 25-17=8.

Mas você pode pensar, porque não converter de binário para decimal, realizar as operações e depois converter o resultado? a resposta é que com essas lógicas podemos fazer um circuito combinacional, com portas lógicas, que fará essas operações, esses circuitos são usados em calculadoras, e em Unidades Lógicas Aritméticas de processadores.