Projeto do SAP-1 construído no simulador

microprocessador SAP-1 microprocessador básico
Este post faz parte da série Um microprocessador tão simples quanto possível. Leia também os outros posts da série:

O projeto demonstrado aqui é baseado no circuito original apresentado por Malvino. O SAP-1 é construído com circuitos integrados, já neste projeto foram utilizados os blocos do simulador logsim que não tem relação com modelo e/ou fabricantes desses componentes. A visão do do projeto do SAP-1 construído no simulador é mostrada na Figura 1.

Projeto do SAP-1 - Arquitetura do SAP-1 no logsim.
Figura 1: Arquitetura do SAP-1 no logsim.

Contador de Programa

O contador de programa, mostrado na Figura 2, é representado por um registrador de 4 bits conectado a um circuito somador. Assim, uma das entradas do circuito somador é o valor atual de PC e a outra o valor 1. Esse circuito é controlado pelo sinal Cp, ativado no estado T2, que é responsável por habilitar o registrador durante o pulso de clock (!CLK). Além desses sinais, o registrador pode ser reiniciado a partir da entrada CLR. Já sua conexão com o barramento W é feita por um buffer tri-state controlado pelo sinal Ep.

Cabe ressaltar que o mesmo procedimento pode ser implementado por um conjunto de flip-flops, formando um contador assíncrono. Esse é o caso do projeto real do SAP-1.

Contador de Programa.
Figura 2: Contador de Programa.

Registrador de Endereços de Memória

O registrador REM, mostrado da Figura 3, é controlador pelo sinal !Lm. Durante o pulso de clock esse registrador armazenará os 4 bits menos significativos do barramento W. Esse valor é utilizado para endereçar a memória RAM.

Registrador de Endereços de Memória.
Figura 3: Registrador de Endereços de Memória.

Registrador de Instruções

O registrador de instruções, mostrado na Figura 4, é composto por um elemento de memória de 8 bits. Esse registrador é controlado pelo sinal !Li que é responsável por habilitar o registrador durante o pulso de clock. Além desses sinais, o registrador pode ser reiniciado a partir da entrada CLR. Já sua conexão com o barramento W (somente os 4 bits menos significativos) é feita por um buffer tri-state controlado pelo sinal Ei. Cabe ressaltar que os 4 bits mais significativos determinam o código de operação da instrução, que é utilizado pela unidade de controle.

Registrador de Instruções.
Figura 4: Registrador de Instruções.

Registrador Acumulador

O registrador acumulador, mostrado na Figura 5, é composto por um elemento de memória de 8 bits. Esse registrador é controlado pelo sinal !La que é responsável por habilitar o registrador durante o pulso de clock CLK. Além desses sinais, o registrador é conectado ao módulo somador/subtrator, já sua conexão com o barramento W é feita por um buffer tri-state controlado pelo sinal Ea.

Registrador Acumulador.
Figura 5: Registrador Acumulador.

Registrador B

O registrador B, mostrado na Figura 6, é composto por um elemento de memória de 8 bits. Esse registrador é controlado pelo sinal !Lb que é responsável por habilitar o registrador durante o pulso de clock CLK. Esse registrador tem conexão apenas com o módulo somador/subtrador.

Registrador B.
Figura 6: Registrador B.

Módulo Somador/Subtrator

O módulo somador/subtrator é mostrado na Figura 7. Basicamente, esse circuito é composto de um elemento somador. Para realizar o processo de subtração a representação de valores em complemento de 2 é utilizada. Além disso, sua conexão com o barramento W é feita por um buffer tri-state controlado pelo sinal Eu.

Módulo somador/subtrator.
Figura 7: Módulo somador/subtrator.

Para entender sua operação, considere que o sinal Su em zero indica a operação de adição. Fazendo a operação XOR de B com 8 bits (com valores iguais ao de Su), temos o mesmo valor de B, isto é, qualquer valor XOR com zero resulta no mesmo valor. Dito de outra maneira, na operação de adição o circuito XOR não tem função. Além disso, com Su igual a zero, a entrada de carry in do circuito somador também não terá função. Desse modo, o resultador da operação é simplesmente A + B.

Já na operação de subtração o sinal Su será 1. Fazendo a operação XOR de B com 8 bits (com valores iguais ao de Su), temos o valor inverso de B (complemento de um), isto é, qualquer valor XOR com 1 resulta no seu complemento. Além disso, com Su igual a um, a entrada de carry in do circuito somador estará adicionado um na operação. Desse modo, o resultador da operação é simplesmente A + (~B + 1), isto é, a operação A - B. De modo resumido, o sinal Su em 1 determina o complemento de 2 da entrada B, fazendo com que a operação seja de subtração;

Registrador de Saída

O registrador de saída, mostrado na Figura 8, é composto por um elemento de memória de 8 bits. Esse registrador é controlado pelo sinal !Lo que é responsável por habilitar o registrador durante o pulso de clock. Esse registrador aciona um conjunto de 8 leds.

Registrador de Saída.
Figura 8: Registrador de Saída.

Controlador e Sequencializador

O circuito mostrado na Figura 9 apresenta o módulo contador em anel. Esse circuito é responsável por gerar os sinais de estado da unidade de controle. A cada pulso de clock o bit de valor 1 é deslocado no registrador. Esse bit tem seu valor determinado na condição de Reset. Além disso, devido à instrução HLT, o processamento é encerrado quando a instrução é decodificada. Essa operação foi implementada com uma lógica AND do sinal HLT com o pulso de clock.

Contador em Anel.
Figura 9: Contador em Anel.

Além dos sinais de controle, esse módulo tem como entrada a instrução atual armazenada no registrador de instruções. Para cada código de entrada um valor decodificado acionará somente um dos sinais, indicando qual instrução está sendo executada. Esse circuito é mostrado na Figura 10.

Decodificador de Instruções.
Figura 10: Decodificador de Instruções.

Esses sinais são utilizados como entradas da matriz de controle. A matriz de controle, mostrado na Figura 11, é o circuito lógico responsável por determinar as saídas que acionarão os outros elementos do SAP-1. Portanto, o circuito tem como entradas ativadas a instrução e o estado atual.

Matriz de Controle.
Figura 11: Matriz de Controle.

As funções booleanas para cada saída são mostradas abaixo:

  • Cp=T2
  • Ep=T1
  • Li= NOT(T3) 
  • Ea=OUT.T4
  • Su=SUB.T6
  • Lo= NOT(OUT.T4) 
  • Lb= NOT((ADD.T5)+(SUB.T5)) 
  • Eu=(ADD.T6)+(SUB.T6)
  • La= NOT((LDA.T5)+(ADD.T6)+(SUB.T6)) 
  • Ei= NOT((ADD.T4)+(LDA.T4)+(SUB.T4)) 
  • CE= NOT(T3+(LDA.T5)+(ADD.T5)+(SUB.T5)) 
  • Lm= NOT(T1+(LDA.T4)+(ADD.T4)+(SUB.T4)) 

Memória RAM

A memória RAM, mostrada na Figura 12, tem como sinal de controle a entrada CE. Com esse sinal em zero, os dados do endereço selecionado são passados para o barramento W.

Memória RAM.
Figura 12: Memória RAM.

Executando um Programa

Para testar o SAP-1, utilizou-se o programa de exemplo do primeiro artigo. Na Figura 13 é mostrado o conteúdo da memória, em que instruções e dados são armazenados.

EndereçoProgramaConteúdo da MemóriaCategoria
0HLDA 9H0000 1001Instruções
1HADD AH0001 1010
2HADD BH0001 1011
3HSUB CH0010 1100
4HOUT1110 0000
5HHLT1111 0000
6HXXXXXX XXXXDados
7HXXXXXX XXXX
8HXXXXXX XXXX
9H10H 0001 0000 
AH14H0001 0100
BH18H0001 1000
CH20H0010 0000

Deste modo, basta gerar os pulsos de clock para o SAP-1 entrar em operação! Para manter o clock contínuo basta pressionar CTRL+K.

Conteúdo da Memória RAM.
Figura 13: Conteúdo da Memória RAM.

Projeto

Para realizar o download do circuito e do programa de exemplo acesse os links indicados abaixo:

  • [wpfilebase tag=fileurl path='posts/Sap1.circ' linktext='Projeto do Logisim' /]
  • [wpfilebase tag=fileurl path='posts/Teste' linktext='Fonte (conteúdo da memória ram)' /]

Referências

  • [1] MALVINO, A.P. Microcomputadores e Microprocessadores. McGRAW-HILL do Brasil, 1985.
  • Crédito da imagem destacada.

Outros artigos da série

<< Operação do microprocessador SAP-1
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware » Sistemas Digitais » Projeto do SAP-1 construído no simulador
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Othavio Santos rodrigues
19/09/2018 12:54

Por que não consigo fazer download do projeto ?

Souza
Souza
03/11/2016 14:18

Que delícia de conteúdo.
Quero mais.

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
NVIDIA JETSON – A Inteligência Artificial na palma de sua mão

Data: 08/07 às 14:00h Apoio: Arrow | NVIDIA
 
INSCREVA-SE AGORA »



 
close-link

WEBINAR
 
Redes Mesh para Monitoramento
e Controle de Sensores

Data: 15/07 às 14:00h Apoio: Artimar| Microchip| Tecsus
 
INSCREVA-SE AGORA »



 
close-link