APS4
APS4
APS4
Relatório de Atividade
Equipe 9
Breno Orapacen da Nobrega Oliveira Filho
Bernardo Siqueira Batista
Danilo Regino Barrote
Vitor Buarque de Gusmão Montenegro
1 Introdução 2
2 Parte 1 - Jogar 3
3 Parte 2 - Desenvolver 8
4 Questão 6 - Conclusão 18
1
1 Introdução
Optamos por não fazer a sı́ntese do nosso circuito, visto que são utilizados mui-
tas funcionalidades não-sintetizáveis do Verilog em nossa composição. Além disso, os
diagramas de blocos fornecidos representam em sua totalidade o projeto.
2
2 Parte 1 - Jogar
3
Em seguida, construimos o sistema de instruções
Figura 2: Instruction
4
E então, fomos trabalhar na unidade de controle do nosso processador.
5
E finalmente, encaixamos todas as peças do nosso quebra-cabeça, que culminou no
computador.
Figura 4: Computer
Dessa forma, chegamos no objetivo final da nossa disciplina, que era montar um
computador funcional com base na componentização das portas NAND.
6
Por último, fizemos um dispositivo representativo de Input-Output.
Figura 5: Input-Output
7
3 Parte 2 - Desenvolver
Com base no diagrama de blocos, juntamente com os códigos fornecidos pelo ar-
quiteto, criamos o sistema de memória para nosso computador.
8
Figura 7: Writing A to RAM and loading it into B
9
3.2 Questão 3 - Data Path
Com nossa memória pronta, podemos construir o Data Path, que funciona basica-
mente como um multiplexador gigante com diversas funções.
10
Figura 11: Arithmetic Operations
Foi assim que decidimos implementar nossa solução. Outra forma de executar esse
problema é simplesmente armazenar o valor de A na RAM e carrega-lo em B. Esse método
é mais intuitı́vo, porém requer mais linhas de código na ROM.
11
3.3 Questão 4 - Controller
12
Figura 15: Branch if Less than Zero
13
Figura 18: State Example
Cada estado possui um bloco como o apresentado, sendo 79 ao todo. Cada ciclo
do computador inicia buscando o que está armazenado em ROM no endereço do Program
Counter. Sendo assim, cada ciclo possui 3 estágios: Fetch, Decode e Execute, sendo este
último variável para cada tipo de operação realizada.
14
3.4 Questão 5 - Run a Program
Sequência de Fibonacci
15
Figura 22: State Diagram and Program Flow
16
O computador é extremamente dinâmico com relação às portas de from-memory
e to-memory. É necessário muito cuidado ao programar, pois esses fios sempre possuem
dados que nem sempre devem ser lidos ou escritos na memória. Isso também se aplica
aos registradores, que são conectados aos Buses, que sempre estão sendo utilizados.
Perceba o fluxo bem ordenado de informações que chegam nos alvos corretamente.
Dessa forma, o computador funciona corretamente e lê as instruções sem erros. Abaixo,
está o loop de estados para o programa de Fibonacci.
17
4 Questão 6 - Conclusão
Considerações finais:
O projeto funciona bem para os casos testados. Acreditamos que o programa esco-
lhido para representar nosso computador, o calculador dos termos da função de Fibonacci,
é bastante compreensivo e faz um ótimo uso do conjunto de instruções e é naturalmente
algo que o Computador é bom em fazer.
Acreditamos que o projeto pode ser melhorado com um conjunto maior de ins-
truções. Por exemplo, a implementação de uma instrução que troca de imediato os valo-
res dos registradores A e B, instrução de Parada, outras operações mais complexas e um
refinamento nas instruções existentes. Idealmente, a implementação de uma linguagem
de nı́vel mais alto que transpila para o nosso código de máquina também seria ideal, já
que a programação no nosso Assembly é tediosa e sucetı́vel a erros. Porém isso está fora
das nossas capacidades no momento.
Por fim, gostarı́amos de expressar nossa sincera gratidão ao nosso professor, cujas
aulas nos guiaram através dos complicados conceitos de sistemas digitais, e à equipe de
monitoria, cujo apoio constante foi um diferencial em nossos estudos.
18
Certificate of Completion
APS4.pdf ID: e9e4f9d1-22ba-462e-aa91-f11cb4a91a66
23 Jul, 2024, 08:29 PM UTC Breno Orapacen da Nobrega Oliveira Filho has
signed the document
[email protected] Verified
201.140.237.173
23 Jul, 2024, 08:29 PM UTC Breno Orapacen da Nobrega Oliveira Filho has
invited to sign the document
[email protected] Verified
23 Jul, 2024, 08:29 PM UTC Breno Orapacen da Nobrega Oliveira Filho has
invited to sign the document
[email protected] Verified
23 Jul, 2024, 08:33 PM UTC Vitor Buarque de Gusmão Montenegro has signed
the document
[email protected] Verified
179.73.179.46
23 Jul, 2024, 09:44 PM UTC Danilo Regino Barrote has signed the document
[email protected] Verified
2804:14d:5482:a5a2:e94d:b4fe:5e87:1a1f
24 Jul, 2024, 12:35 PM UTC Bernardo Siqueira Batista has signed the document
[email protected] Verified
150.161.2.200