Circuitos Lógicos
Vamos agora pegar nas portas lógicas da abstração matemática com que começámos este trabalho e combiná-las entre si de acordo com raciocínios lógicos que nos conduzem ao fim pretendido. Vamos sempre tentar começar por dizer o que se pretende e depois chegar lá por um raciocínio lógico que iremos desenvolver passo a passo.
Durante o Capítulo vamos abordar um conceito fundamental da operação de um computador, aquele que permite a sincronização de todos os seus componentes e da sua atividade: A Lógica Temporizada.
Clock, pois é, é assim que se chama ao pulso elétrico emitido nos circuitos de um computador por um cristal de quartzo excitado eletricamente. Cada cristal de quartzo tem uma frequência própria de vibração, que se repete inexoravelmente à mesma cadência enquanto o cristal estiver eletricamente excitado.
Imaginem os atuais relógios de quartzo. Têm uma pilha não é verdade? E quando a pilha falha deixam de funcionar. Correto? E porquê? Porque o cristal de quartzo que têm deixa de ser eletricamente excitado. A frequência de vibração desse cristal de quartzo é analisada por um contador digital (já veremos o que é) que vai associar um determinado valor da contagem a uma unidade de tempo, o segundo por exemplo (mas não obrigatoriamente), que vai incrementar (acrescentar 1) de cada vez que o contador atingir esse valor de contagem e se reiniciar.
Cada componente do computador utiliza uma frequência própria de vibração dos seus circuitos, a qual é do conhecimento dos principais Chips responsáveis pela sua sincronização, como iremos ver ao longo do trabalho.
O funcionamento de um computador apoia-se na Lógica Temporizada. Quando pomos um conjunto de bits a correr pelos diversos circuitos de um processador, temos que garantir que os vamos analisar só quando todos cumprirem as suas funções. Para isso temos que parar o primeiro a chegar e esperar pelo último, para que a análise possa ser feita pelo valor que esse conjunto de bits assumiu e que resulta de uma operação que mandámos executar.
A título de exemplo: A memória tem uma frequência de vibração diferente da do barramento que transporta os dados entre esta e o Processador, o qual também tem uma frequência de vibração diferente. Mas todos os bits que compõem em conjunto um determinado dado são colocados controladamente em conjunto nos devidos locais, de forma a que quando forem lidos representem efetivamente o dado em questão de forma correta.
Com o mesmo método sempre utilizado, com exemplos simples e com uma linguagem também simples tentaremos tornar claro este conceito de tão importante compreensão, que é a Lógica Temporizada, o qual aliás vai sendo abordado de forma a se lhe acrescentar valor, ao longo da evolução deste trabalho.
Neste Capítulo vamos combinar as diversas portas lógicas de que falámos há dois Capítulos atrás em circuitos que têm funções muito específicas para os temas que vamos tratar depois. É com estes circuitos que as operações aritméticas mais complexas são executáveis, concretamente a divisão e a multiplicação por iterações. É com estes circuitos que os processadores são possíveis.
Vamos ver os Multiplexer, tipo de circuito que permite com uma indicação binária selecionar uma de entre várias opções. Por exemplo, permite com 1 bit selecionar duas opções ou entradas do circuito. Note-se que temos aqui um decisor condicional. A ordem de escolha que chega ao circuito vem sob a forma binária, 0 ou 1, falsa ou verdadeira, podendo resultar da análise de uma expressão de cálculo proposicional ou predicativo, portanto, por exemplo da comparação lógica de valores humanos. E esse valor binário vai permitir escolher entre duas possíveis operações ou caminhos.
Vamos analisar os Descodificadores, circuitos que permitem com um conjunto de bits, por exemplo 4, que correspondem a 16 possíveis combinações, escolher 16 de entre as 256 possíveis combinações de 8 bits, pois são só essas 16 combinações que nos interessam. Este circuito terá a sua aplicação bem evidenciada quando analisarmos a CPU.
Vamos analisar os circuitos lógicos de memorização, que podem assumir uma de entre duas variáveis, sempre que a que interessa mude de estado (Flip-Flop SR), podem assumir o valor de uma variável à entrada sempre que o clock esteja em alta (Flip-Flop D) ou podem assumir os valores que se encontram às entradas para as suas saídas sempre e só quando o sinal de clock muda de estado (Básculas D).
São as Básculas D o local que referimos atrás em que os bits se vão encontrar e esperar uns pelos outros no final de cada ciclo de clock.
Com os elementos atrás mencionados vamos conhecer os circuitos deslocadores de bits. Na realização de operações como a divisão e a multiplicação, por exemplo, a cada iteração feita à mão passamos ao número ao lado quando multiplicamos ou baixamos mais um quando dividimos. Isto em linguagem lógica não é mais do que deslocar bits à esquerda ou à direita. E para isso existem circuitos específicos. Que serão utilizados em muito mais aplicações do que essas. Por exemplo na simples conversão de uma emissão de bits em paralelo numa outra em série. Um conjunto de 64 bits pode ser carregado de uma vez num destes circuitos para 64 bits que depois executa 64 deslocações, uma por cada ciclo de clock e por bit que emite, voltando de seguida a carregar outro conjunto de 64 bits.
Mas então como é que este circuito sabe quando emitiu 64 bits? Porque tem associado a ele um circuito contador lógico, que neste caso pode contar de 63 até 0 (contador decrescente), uma vez por cada ciclo de clock. Ao atingir o limite, por deteção de zero, dá indicação disso, provocando a reinicialização do circuito deslocador com novo conjunto de 64 bits.
Tal como acabámos de dizer, qualquer um destes circuitos tem que poder ser inicializado com o valor que se pretende trabalhar. Para isso iremos ver as versões destes circuitos com carregamento em paralelo, isto é, que quando recebem informação para tal, em lugar de deslocarem ou contarem, carregam o valor pretendido.
E como tem sido habitual até agora, vamos tentar chegar a todos estes circuitos por deduções lógicas.
Ver a síntese global deste trabalho
Inserimos de seguida o índice da edição em livro como forma de descrição dos temas abordados neste Capítulo