Montando o circuito da unidade lógica e aritmética (ALU) - Parte 2

Bom dia, boa tarde ou boa noite!

Estamos aqui novamente para tratar da segunda parte da montagem e estudos dos circuitos que compõem a ULA (unidade lógica e aritmética).

Este é o circuito da ULA (Unidade Lógica e Aritmética). Dá para perceber a complexidade na montagem né? :)

Confesso que, até agora, esse foi o circuito que mais deu trabalho para montar. Caso você vá montá-lo, tenha em mente que será necessário uma boa dose de paciência e atenção na montagem.

Como você pode ver abaixo, o número de interconexões entres os integrados é enorme! Montei tudo com o multímetro ao meu lado, fazendo testes de continuidade em cada uma das conexões. Creio que, com isso, eu tenha diminuído bastante a probabilidade de erros. (E. ainda assim, eles aconteceram! :)

Como tratamos da montagem e estudos da circuitaria responsável pelas operações aritméticas na primeira parte deste post (caso você tenha perdido, você pode lê-la aqui ou no link no final do post), neste, trataremos da montagem dos circuitos de operações lógicas (AND, OR, XOR e NOT) e seleção.

O circuito de operações lógicas é composto por integrados responsáveis pelas operações lógicas AND, OR e XOR (74LS08, 74LS32 e 74LS86, respectivamente). As operações AND e OR foram implementadas com 8 portas lógicas AND e 8 portas lógicas OR, uma para cada sinal do barramento (é importante relembrar que todos os nossos valores vêm do barramento de dados de 8 bits).

A operação NOT foi implementada combinando portas lógicas OR e XOR, da seguinte maneira:

As linhas amarelas indicam a operação NOT (complemento de A). Desculpem-me pela bagunça ;)

Quando temos HIGH (nível lógico ALTO) no pino /XOR_NOT, perceba que na saída S temos o complemento (NOT) do que tivermos na entrada A. Quando o pino /XOR_NOT estiver em LOW (nível lógico BAIXO), temos na saída S a operação XOR entre as entradas A e B.

Lembre-se que essa operação acontece bit a bit em nossa ULA, ou seja, temos 8 circuitos destes trabalhando em cada um dos bits do nosso barramento. Em nosso circuito, a entrada A é ligada à um bit do registrador ACC (acumulador) e a entrada B, liagada ao registrador auxiliar (B).

A entrada /XOR_NOT é comum à todos os 8 circuitos destes que temos em nosso computador. Essa interligação compõe o sinal de controle da ULA XOR_NOT.

Tendo montado o circuito de operações lógicas, chegou a hora de montar o circuito de seleção.

Esse circuito é o responsável por selecionar a operação que desejamos executar na ULA (soma, subtração, operação and, or, etc) e enviar o resultado da operação para o barramento.

Ele é composto por 5 integrados: 4 x 74LS153 (multiplexadores de 2 x 4 entradas e 1 saída) e 1 x 74LS245 (nosso velho conhecido transceptor de barramento de oito bits, tri-state).

Cada multiplexador possui 2 conjuntos de 4 entradas selecionáveis. Como teremos 4 operações (ADD ou SUB, AND lógico, OR lógico e XOR ou NOT) e, para cada operação temos 8 bits, precisamos de 4 integrados multiplexadores para podermos controlar nossos valores de saída das operações . Por exemplo, temos 4 sinais de controle de operação e cada sinal tem 8 bits de saída. Portanto, para controlar esses 32 sinais de saída, precisamos de 4 integrados multiplexadores (32 / 8 = 4).

O 245 utilizado aqui, serve para, com em todos os circuitos que se comunicam ao barramento, controlar as entradas e saídas de valores do/para o barramento e, com isso, criar um estado de alta-impedância quando estiver em stand-by.

Agora, vou contar um pouco da experiência montando esse circuito:

A operação do circuito é bastante simples. O que se torna mais rebuscado é a implementação da lógica NOT. Outro ponto um pouco mais complicado de entender o funcionamento é o circuito de seleção. Mas, nada que um pouco de paciência e estudo não resolva. :)

Mas, sinceramente, montar esse circuito é um porre! X(

São MUITAS ligações, interconexões, alimentações, etc, etc, que se devem tomar cuidado. A falta de atenção a ligar um único fio, faz com que o circuito todo pare de funcionar. E acreditem, mesmo fazendo dupla-checagem e utilizando e utilizando teste de continuidade, eu ainda errei.

Passei ao menos duas horas fazendo troubleshooting para encontrar um erro ao testar o circuito. No fim, descobri que havia ligado um fio em um pino errado de um dos integrados de um dos multiplexadores e, mesmo consultando o esquemático do circuito, esqueci de ligar um ramo de uma das portas OR.

Mas, no final, tudo vale a pena! Como tudo na vida, isso serve de lição também! ;)

Agora, temos uma grande parte do computador em funcionamento e já dá até para fazer os testes com a ULA. Inclusive, alimentando e sendo alimentada pelo barramento!

 Visão geral do computador de 8 bits com os circuitos de clock, registradores ACC e auxiliar e a ULA.

No vídeo abaixo dá para ver nosso computador (parcialmente) em funcionamento. :D


Por hoje é só! Nos próximos posts, avançaremos com nosso estudo/montagem.

Forte abraços à todos!

Link para a parte 1 da montagem da ULA.

Comentários

Postagens mais visitadas