tcpipchip escreveu:Ola Marcelo
Podes olhar se conseguimos implementar num FPGA ?
Segue descricao e projeto
https://www.dropbox.com/sh/rdzpj2ru2ins ... TOV_a?dl=0
tcpipchip escreveu:Se conseguir, já quero adotar na disciplina!
Ai posto uns exemplos de código de máquina!
MOV 00,A;
ESCREVE:
MOV A,OUT0;
MOV A,OUT1;
MOV A,OUT2;
MOV A,OUT3;
INC A,A;
JMP ESCREVE;
07, C0, 00, C3, CB, D3, DB, E0, 07, 03, 00, 03
------------
MOV 00,A
-----------------------
MOV A,OUT0..3
------------------
JMP 0003
reg alguem;
always@(linha)
if(linha==0) alguem = algum_lugar;
reg alguem;
always@(posedge linha)
alguem <= algum_lugar;
reg alguem;
always@(posedge clk)
if(linha==0)
alguem <= algum_lugar;
reg alguem;
always@(posedge clk)
if(reset)
alguem <= 0;
else
if(linha)
alguem <= algum_lugar;
reg alguem;
always@(posedge clk)
alguem <= reset ? 0 : linha ? algum_lugar : alguem;
reg alguem;
always@(posedge clk) alguem <= reset ? 0 : linha ? algum_lugar : alguem;
wire alguem;
assert alguem = reset ? 0 : linha ? algum_lugar : alguem;
tcpipchip escreveu:Marcelo S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tu é rápido hein! Até parece que entende de FPGA![]()
Brincadeira!
Aqui é um dos exemplos que executamos na nossa M++
- Código: Selecionar todos
MOV 00,A;
ESCREVE:
MOV A,OUT0;
MOV A,OUT1;
MOV A,OUT2;
MOV A,OUT3;
INC A,A;
JMP ESCREVE;
Zera acumulador, manda acumulador para as 4 saidas, incrementa acumulador, repete o ciclo.
O código de máquina é
- Código: Selecionar todos
07, C0, 00, C3, CB, D3, DB, E0, 07, 03, 00, 03
------------
MOV 00,A
-----------------------
MOV A,OUT0..3
------------------
JMP 0003
Veja se isto já roda! E depois vamos para pilha para CALL/RET
Execucao no simulador
https://www.dropbox.com/s/orgtcsjjmxuzw ... B.png?dl=0
Aqui a parte interna da M++
http://www.inf.furb.br/~maw/pdf/
xultz escreveu:Bola um curso de FPGA prá nóis, Sam...
Você tinha comentado que não sabia qual abordagem usar, uma ementa que envolva sintetizar um Risc V e colocar uns perféricos (USART, SPI, etc), você acha viável ou é necessário ser um tanto jedi prá isso?
msamsoniuk escreveu:xultz escreveu:Bola um curso de FPGA prá nóis, Sam...
Você tinha comentado que não sabia qual abordagem usar, uma ementa que envolva sintetizar um Risc V e colocar uns perféricos (USART, SPI, etc), você acha viável ou é necessário ser um tanto jedi prá isso?
eh que tem ***varios*** detalhes! lembra que no curso de DSP tinha uma plaquinha com um DSP, ele era facilmente programavel via UART e de quebra tinha ateh um tool que simulava um osciloscopio puxando dados da UART vindos do DSP. tudo isso complementado com uma interface de desenvolvimento que permitia programar comodamente em C... no caso da FPGA, eu precisaria desenvolver uma plaquinha, pq nao tem exatamente uma plaquinha muito didatica de FPGA que seja barata e programavel com facilidade. a vantagem agora seria jah prever um cp2102 ou ftdi p/ USB/UART, de modo a facilitar a vida. mas tem um pequeno dilema reference a parte de programacao da FPGA, que nao eh exatamente aquele conceito seguro que o DSP tinha de bootar de uma ROM interna... se pah, um daqueles attiny85 acabaria sendo melhor, pq conecta via USB, cai em uma serial e via serial descarrega a imagem para a FPGA ou para a SPI dela, algo assim. daih outro dilema sao os tools: as FPGAs mais novas nao tem mto problema quanto a isso, mas justamente as FPGAs que sao economicamente melhores para isso possuem alguns problemas com os tools, do tipo ***nao funciona em windows 10***, nada critico neh, ateh aqui nem precisamos chamar o obi wan para salvar o universo hahaha
supondo que resolvamos os problemas com os kits de desenvolvimento e ferramentas, daih temos aquele dilema: low level ou high level? no low level tem logica digital e verilog. dah para inclusive projetar o processador do zero e entender o que ele faz, o que nao faz e pq.... como diria o clovis de barros filho, EH BEM LEGAL!
jah no high level dah para comecar integrando uns blocos pre-fabricados, tipo RISCV com UART, SPI, GPIO, timer, etc. daih vai do que tem no kit, em principio teria uma USB/UART, a propria FLASH SPI e GPIOs. dah para implementar facil um timerzinho em verilog para fazer uma saida no GPIO controlada pelo RISCV e por aih afora. mas eu vejo por onde uso ele: daih jah vai querer ver a forma de onda no osciloscopio, daih jah precisa de um osciloscopio e por aih afora. alternativamente, daria para ligar um AD/DA de audio facil facil. e o meu RISCV tem extensao MAC, entao ateh rolaria puxar o cursinho de DSP, soh que rodando em um RISCV dentro da FPGA... sobre o dilema lah dos tools nao funcionarem no windows 10, tem uma saida: WSL2. roda os tools certinho e de quebra permite rodar outras coisas interessantes, como gtkwave e icarus verilog. sem falar no GCC! eu jah estava esquecendo o GCC! como compila as coisas para o RISCV sem GCC? o negocio eh meio casado saca, vc aumenta a memoria de programa no RISCV na FPGA, tem q mexer no linker lah no GCC. adiciona instrucao MAC no RISCV, tem que criar uma funcao dummy e mapear o opcode em assembler no GCC. eh um p*ta know know e se pah serve para qq processador isso... mas nao sei se nao eh complicado *demais*!
tcpipchip escreveu:O Marcelo é muito bom mesmo!!!!! Caranba! Entendeu em minutos o que levamos 40 dias para fazer...
Aqui tem um link de aula
http://www.inf.furb.br/~maw/mais/
1) Descompacte
DigitalWorks_full_free.zip
execute digitaworks
2) Abra o projeto
maquina.dwm
3) execute
MontadorMmaismais.exe
Edite o teu programa e pressione o lampada da esquerda e entao da direita...
Vai "compilar" e gerar um .MAP
4) volte para o digital works (projeto)
click em ROM e abra o MAP
5) Click em play no DIGITAL WORKS
vAI SIMULAR...TEM UM MENU PARA AUMENTAR SIMULACAO PARA 100Hz
6) CLICANDO na M++ vai entrar nos blocos mais internos
7) SINAIS DE CONTROLE
http://www.inf.furb.br/~maw/mais/Controle.txtRESUMO INSTRUCOES
http://www.inf.furb.br/~maw/mais/tabela_instrucoes.doc
9) EXEMPLOS
http://www.inf.furb.br/~maw/mais/exerci ... rucoes.rtf
Toca ficha Marcelo!!!!!!!
tcpipchip escreveu:O Marcelo é muito bom mesmo!!!!! Caranba! Entendeu em minutos o que levamos 40 dias para fazer...
Aqui tem um link de aula
http://www.inf.furb.br/~maw/mais/
1) Descompacte
DigitalWorks_full_free.zip
execute digitaworks
2) Abra o projeto
maquina.dwm
3) execute
MontadorMmaismais.exe
Edite o teu programa e pressione o lampada da esquerda e entao da direita...
Vai "compilar" e gerar um .MAP
4) volte para o digital works (projeto)
click em ROM e abra o MAP
5) Click em play no DIGITAL WORKS
vAI SIMULAR...TEM UM MENU PARA AUMENTAR SIMULACAO PARA 100Hz
6) CLICANDO na M++ vai entrar nos blocos mais internos
7) SINAIS DE CONTROLE
http://www.inf.furb.br/~maw/mais/Controle.txtRESUMO INSTRUCOES
http://www.inf.furb.br/~maw/mais/tabela_instrucoes.doc
9) EXEMPLOS
http://www.inf.furb.br/~maw/mais/exerci ... rucoes.rtf
Toca ficha Marcelo!!!!!!!
Voltar para Verilog, VHDL, SystemC ( PLAs, CPLDs, FPGAs, etc... )
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante