F - Assembly
| Entrega |
|---|
| Quarta - 29/10 |
Nesse projeto cada grupo terá que implementar diversos códigos em assembly a fim de entendermos a linguagem e as limitações do hardware propostos.
Tip 1
Você é Scrum Master e não sabe por onde começar?
De uma olhada nessas dicas:
Vixi! Sou Scrum Master
Instruções
Seguir as instruções a seguir para desenvolvimento do projeto.
Entendendo a Organização do Projeto
A pasta do projeto F, no repositório Z01, possui a seguinte estrutura:
f_Assembly/
compileALL.py
test_CPU.py
CPU_cocotb.py
Z01simulator.py
/Quartus
/src
*.nasm
/tests
/abs
/add
....
Quartus: Projeto Quartus para gravar o computador na FPGA*.py: Scripts em python que automatizam a execução dos testes;src/*.nasm: Arquivos ASSEMBLY que serão implementados pelo grupo;tests/*: Arquivos que realizam o teste nos arquivos códigos do rtl.
Executando o Script de Teste
Abra o terminal na pasta f_Assembly/ e execute:
$ ./compileALL.py
$ pytest -s
O mesmo irá compilar os arquivos src/*.nasm e executar os testes unitários em cada um deles. Nesse momento do teste, como os módulos não estão implementados, o resultado deverá ser falho.
Esse comando executa um teste unitário em cada um dos módulos, verificando se sua implementação está correta. O resultado é exibido na tela como pass ou fail.
Tip 2
O arquivo config_testes_nasm.txt define quais testes serão executados.
Projeto
Deve-se implementar diversos programas na linguagem de máquina do Z01 que irão manipular a memória RAM a fim de implementar o que é pedido. A descrição a seguir está classificada em ordem de dificuldade, começando pelos mais simples.
Módulos
- Esses arquivos estão localizados em
f_Assembly/src/
A descrição de cada módulo está localizada no cabeçalho do arquivo.
Conceito C+
- add
- Arquivo :
add.nasm
- Arquivo :
- sub
- Arquivo :
sub.nasm
- Arquivo :
- mov
- Arquivo :
mov.nasm(lab 11)
- Arquivo :
- abs
- Arquivo :
abs.nasm(lab 11)
- Arquivo :
- max
- Arquivo :
max.nasm(lab 11)
- Arquivo :
- mult
- Arquivo :
mult.nasm(lab 11)
- Arquivo :
- mod
- Arquivo :
mod.nasm
- Arquivo :
- div
- Arquivo :
div.nasm
- Arquivo :
- pow
- Arquivo :
pow.nasm
- Arquivo :
- É par
- Arquivo :
isEven.nasm
- Arquivo :
- String length
- Arquivo :
stringLength.nasm
- Arquivo :
Conceito B+
- Palindromo
- Arquivo :
palindromo.nasm
- Arquivo :
- Linha
- Arquivo :
LCDlinha.nasm - Edite o arquivo para desenhar uma linha completa
- Arquivo :
- Mean
- Arquivo :
vectorMean.nasm
- Arquivo :
- Chaves e Leds
- Arquivo :
SWeLED.nasm
- Arquivo :
Conceito A+
- fatorial
- Arquivo :
factorial.nasm
- Arquivo :
- Chaves e Leds
- Arquivo :
SWeLED2.nasm
- Arquivo :
- Multiplicação com chaves
- Arquivo :
mult_SW.nasm
- Arquivo :
O funcionamento dos arquivos que envolvem SWs, LEDs e LCD deve ser demonstrado na FPGA.
Extra
- Controle do carrinho:
- Considere que as chaves SW[0], SW[1], SW[2], SW[3] representam os quatros sensores do carrinho usado na APS-A.
- Considere que os LEDs LEDR[0], LEDR[1], LEDR[2], LEDR[3] representam os quatros bits dos dois motores do carrinho.
- Agora, queremos usar nosso CPU como controlador do carrinho. Assim, faça o código em Assembly que realize as mesmas condições lógicas indicadas na APS-A, mas desssa vez por software.
- Esse item não tem arquivo e nem testes.
- O funcionamento deve ser demonstrado na FPGA
- Se for feito, substitui um dos itens do Conceito A+