Design do processador Logisim

Parte I
Parte II
Parte III
Parte iv
Parte v

Um 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.

imagem


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.

imagem

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.

imagem


imagem

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.
imagem

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).
imagem




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

Source: https://habr.com/ru/post/pt406157/


All Articles