F - Assembly
| Entrega |
|---|
| Quarta - 06/05 |
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/
Assembly_test.py
programCPU_FPGA.py
/FPGA
/jar
/src
*.nasm
/tests
/abs
/add
....
FPGA: Projeto Quartus já compilado para gravar o computador na FPGA*.py: Scripts em python que automatizam a execução dos testes e grava software na FPGA;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:
$ 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.
Para selecionar apenas um teste (como o add), abra o terminal na pasta f_Assembly/ e execute:
$ pytest -k add
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 :
- 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 :
- Controle do carrinho:
- Considere que os pinos GPIO_IN[0], GPIO_IN[1], GPIO_IN[2], GPIO_IN[3] representam os quatros sensores do carrinho usado na APS-A.
- Considere que os pinos GPIO_OUT[0], GPIO_OUT[1], GPIO_OUT[2], GPIO_OUT[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+
O funcionamento dos arquivos que envolvem SWs, LEDs e GPIOs deve ser demonstrado na FPGA.