Montando os circuitos dos registradores acumulador (ACC) e auxiliar (B)
Nosso computador já começou a tomar a forma de um computador de verdade. :D
No post de hoje, trataremos da montagem e do estudo dos circuitos dos registradores acumulador (ACC) e do registrador auxiliar (B).
Os registradores (no nosso caso, de 8 bits) são as memórias utilizadas internamente pelo computador para guardar as informações relativas ao processamento. No caso do registrador ACC, ele é utilizado para que o computador realize as operações lógicas (bit a bit) e aritméticas.
O registrador B recebe a denominação de auxiliar por ser um coadjuvante nessas operações lógicas e aritméticas e. em alguns casos ele é utilizado, também, para guardar endereços de memória em operações de salto de programa.
Na arquitetura de nosso computador, o registrador B somente recebe dados do barramento (BUS). Por se tratar de um registrador auxiliar de operações lógicas e aritméticas, o circuito responsável por receber as informações enviadas pelo registrador B é a ALU (Unidade Lógica e Aritmética - circuito que montaremos e estudaremos futuramente).
Ao final de toda operação executada pela ALU, o valor do resultado é sempre armazenado no registrador ACC.
Para fins de testes do circuito do registrador B, foi implementado o sinal de controle BR_OUT (este sinal faz com que o conteúdo do registrador B vá para o BUS - novamente - somente para testes; este sinal não é utilizado pela arquitetura).
Como visto em outros circuitos, o registrador B possui mais 3 sinais de controle. São eles: BR_IN, CLK e RST.
O sinal BR_IN é responsável por sinalizar ao nosso circuito que, na próxima borda de subida de clock, ele deve ler e armazenar o valor presente no BUS. Esse é o sinal que habilita a escrita em nosso registrador.
O sinal CLK e RST, como já vistos, são respectivamente o sinal de clock (síncrono para todos os circuitos de nosso computador) e o sinal de reset.
O circuito do registrador ACC é muito semelhante (na verdade, quase idêntico) ao circuito do registrador B. Sua maior diferença está no papel que ele desempenha na arquitetura do computador.
O registrador ACC envia e recebe dados do BUS e, por isso, possui o sinal ACC_OUT disponível para uso do computador (na verdade, esse sinal se torna imprescindível ao funcionamento). Ele também possui uma ligação com a ALU (naturalmente, pois participa ativamente de todas as operações lógicas e aritméticas).
Portanto, os sinais de controle do circuito do registrador ACC são: ACC_IN, ACC_OUT, CLK e RST. O funcionamento dos sinais do registrador ACC são os mesmos do registrador B. Por isso, para evitar a verbosidade (na verdade, para evitar a fadiga... rs) não vou descrevê-los novamente. Creio que o funcionamento desses sinais tenha ficado claro. Qualquer dúvida, pode deixar nos comentários. ;)
Para implementar o circuito de ambos os registradores (lembre-se: eles são idênticos, eletronicamente falando) foram utilizados os CIs 74LS173 (registrador de 4 bit, tipo D, com saídas tri-state) e o nosso já conhecido 74LS245 (transceptor de barramento de oito bits, tri-state).
Já comentei alguma coisa sobre o 245 no post onde implementamos o circuito do Program Counter (PC).
Já o 74LS173 é novo e merece ser estudado.
O 173 é um registrador de 4 bit, com saídas tri-state, desenvolvido para uso em sistemas onde se utiliza a organização lógica por barramento.
Sua lógica tri-state permite que coloquemos as saídas do CI em estado de alta impedância, sem comprometer o conteúdo armazenado no registrador. Isso é realmente muito importante quando estamos lidando com um barramento de dados por onde trafegará MUITA informação (dados lógico-aritméticos, endereços de memória, conteúdo de memória, sinais, etc).
Sua arquitetura interna, como o próprio descritivo do CI já diz, faz uso de flip-flops do tipo D para armazenar cada um dos 4 bit de dados. Ele possui também portas AND, OR e NOT nos circuitos combinacionais de controle dos sinais de habilitação das entradas e saídas.
Como sempre, indico à todos os interessados em conhecer um pouco mais sobre eletrônica digital, a leitura dos datasheets desses componentes. Se aprende muito com essa leitura!
Como é de costume, vou deixar abaixo algumas fotos dos circuitos e uma visão geral de como está, por hora, nosso computador.
Espero que estejam gostando do projeto. Sintam-se livres para comentar e participar.
Detalhe do circuito acumulador (ACC). Seu valor é exibido nos LEDs.
Circuitos dos registradores ACC e B. Note a semelhança de construção!
Circuitos dos registradores ACC e B acoplados aos circuitos do clock (CLK) e do program counter (PC).