tcpipchip escreveu:Podes falar com o Marcelo S.
opa! como andava tudo parado, raramente eu estava vendo... acho que fiquei mto tempo sem ver!

bom, sobre o suporte a 56 interrupcoes, eh relativamente trivial na FPGA, basicamente no mesmo clock:
- ler os inputs e guardar em um registro R0 de 56 bits
- copiar o R0 para R1
- copiar o R1 para R2
- comparar R1 com R2
- se houver diferenca, registrar em uma FIFO de 56 bits a diferenca de R1 com R2.
isso seria a parte de aquisicao de alta velocidade, isso tranquilamente pode rodar em 50MHz. a FIFO faz a interface com a UART e, tendo dados na FIFO, a UART deve transmitir eles. a FIFO em si nao adiciona latencia extra, pelo contrario ajuda a compensar o problema que a UART vai estar operando com um baud rate provavelmente baixo. alem dissso, como sao 56 bits e a UART opera em 8 bits, vc vai transmitir 7 bytes a cada dado capturado.
e daih tem um detalhe: se vc transmitir varios segmentos de 7 bytes e falhar um byte, como vc mantem o sincronismo? eu diria que talvez seja uma boa ter um protocolo que permita fazer o "framing" disso, ou seja, se vc tem 56 bits, vc poderia na verdade transmitir isso em 8 bytes de 7 bits, sendo o 8o bit 1 no primeiro byte e 0 nos outros bytes, assim vc consegue facilmente saber onde comeca o bloco de bits.
note que R0 nao pode ser usado pq pode ter meta-estabilidade... isso de fato eh um problema: se o disparo eh feito por nivel em qq um dos 56 bits, se vc mudar 2 bits ali, corre o risco de gerar 2 eventos: um com um bit e outro com outro bit, mesmo que vc tente fazer eles mudarem ao mesmo tempo. pq isso? pq existem diferencas de timing e propagacao que vao tornar a ativacao dos sinais nao simultanea qdo analisado em alta velocidade. de fato, a menos que vc consiga construir fios com o mesmo comprimento medido atomo a atomo, sempre vai chegar um sinal antes do outro.
bom, eh isso... espero que estjam todos bem por aih!
