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.
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. :)
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.
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!