Parte IParte IIParte IIIParte ivParte vUm dos capítulos do livro “Code”, de Charles Petzold, é dedicado ao design da CPU e, no início do capítulo, descreve um dispositivo que permite resumir conjuntos de números armazenados na memória. Projete este circuito no
Logisim . Pegue um conjunto de números de oito dígitos e conecte-o ao multiplexador, alternaremos de um número para outro usando um contador conectado à entrada do seletor do multiplexador e conectar o somador e a bateria à saída do multiplexador. Vamos usar o botão como um gerador de relógio. Os dados serão carregados na bateria quando o botão for liberado (isso é feito usando o elemento NOT conectado ao botão).

Vamos armazenar os números na RAM.

A RAM pode ser representada como um conjunto de registradores, que são acessados usando um desmultiplexador e um multiplexador (DMX e MUX).

Suponha que um conjunto de números seja armazenado na RAM e precisamos adicionar todos os números e salvar o resultado (em uma célula livre). Armazenaremos os comandos ("adicionar" e "salvar") em uma RAM e os números sendo processados em outra. Esse método de armazenamento é uma característica da
arquitetura de
Harvard .
O comando "1" grava o número do somador na bateria, o comando "2" grava o número do acumulador na 2ª RAM.

Suponha que na RAM várias matrizes de números sejam armazenadas. I.e. nós precisamos
- carregar números da RAM para a bateria
- carregar números do adicionador na bateria
- salvar números da bateria na RAM
Usaremos o multiplexador MUX para selecionar dados da RAM.
A nova instrução “5” alterna o multiplexador MUX ao longo da borda ascendente do gerador de clock e grava na bateria ao longo da borda descendente (em declínio).

Em seguida, armazenaremos instruções e dados em uma RAM. Esse método de armazenamento é uma característica da
arquitetura de
von Neumann .
O comando será armazenado nos quatro primeiros dígitos da célula de memória de oito bits, o endereço será armazenado nos quatro primeiros dígitos (
endereçamento direto ).
Carregaremos o endereço e o comando em registros separados e, em seguida, usaremos o multiplexador para ir para o endereço salvo. Para gravar dados na RAM, primeiro carregaremos os dados no registro temporário Temp (caso contrário, as instruções serão gravadas na RAM, não nos dados) e depois na bateria Ass. A gravação de dados em Temp e Ass será feita na extremidade à direita.
Adicionaremos, por exemplo, os números 2 e 3, que estão nas células 8 e 9, e salvaremos o resultado em uma célula com o endereço a.

Também adicionamos a capacidade de fazer saltos incondicionais.
Implementamos um dispositivo no qual apenas um comando será executado - o comando de salto incondicional. Para fazer isso, enviaremos os quatro bits menos significativos (endereço, de fato) para o contador que gera o endereço e enviaremos o comando armazenado nos bits altos da célula de memória para a porta de download.
Por exemplo, para pular para uma célula com o endereço 2, use o comando 82.

Adicione um comando para pular incondicionalmente para o esquema anterior.

Em geral, em tempos de geek, já havia um
artigo dedicado ao design da CPU no Logisim.
Todos os esquemas apresentados acima podem ser baixados em
um arquivo .
O Logisim pode ser baixado
aqui .
Considere como o somador funciona no exemplo de um chip 155im3 (7483). Para microcircuitos da série 155, concordamos que as entradas têm um resistor interno que puxa para cima (se a perna "fica suspensa no ar", então existe um "lógico"), portanto, quando a energia é conectada ao microcircuito, todos os LEDs conectados à saída acendem .

A imagem mostra o MS 74ls283 (um análogo moderno de 155im3).
Para projetar esse chip no Logisim, você precisa selecionar "Menu" - "Projeto" - "Adicionar esquema".
É assim que esse MS olha dentro de um subcircuito. Estes são quatro
meio adicionadores combinados em um somador completo.
Como bateria, usaremos o chip 155tm8 (74175) - um gatilho D quádruplo.
Os gatilhos que fazem parte do MS passam o tempo todo até que haja 1 na entrada de sincronização, e não apenas na borda (gatilhos com controle estático), mas no programa Logisim só temos gatilhos com controle dinâmico, mas, neste caso, não importa ; vamos usar o que é.
Você pode ler mais sobre
gatilhos na Wikipedia.
Vamos montar o modelo MS 155tm8 a partir dos chinelos D.
Em seguida, coletamos um esquema que permite adicionar conjuntos de números.
Por exemplo, se você adicionar um conjunto de números 2 (0010), obteremos 2 (0010), 4 (0100), 6 (0110) etc.
Primeiro, 2 aparece na saída do adicionador (LEDs vermelhos), depois 2 é carregado no flip-flop quad D (LEDs amarelos) e 4 aparece na saída do adicionador, depois 4 é carregado em 155tm8 e 6 aparece na saída do adicionador, etc.
Para projetar um módulo de memória simples, precisamos de um multiplexador. Nós projetamos um multiplexador duplo 155kp2.
Também precisamos de um balcão. Vamos projetar o chip 155ie5.
Este é um contador de quatro dígitos, mas precisamos apenas dos dois bits menos significativos.
Armazenaremos números, por exemplo, 2 (0010), 3 (0011), 5 (0101).
Combine todos os componentes em um circuito. Nós adicionaremos os números que estão armazenados na "memória"
2 + 3 + 5.
O Logisim pode ser baixado
aqui .
PS Artigo sobre o livro “Code. Linguagem secreta da ciência da computação. " está em Habré
aqui .
Z.Y. Artigos traduzidos (tradução por
PatientZero ) sobre arquitetura de processador
aqui ,
aqui e
aqui