andre_teprom escreveu:Algo implicito no fato de optar por FPGA é que pode pensar em colocar um softcore, explorando os recursos de um projeto hibrido, se é que pode chamar assim.
isso eh uma confusao entre "como deveria ser" e "como as pessoas fazem". implicito quando se adota uma FPGA ou CPLD deveria ser o cara estudar logica digital, que eh o que estes componentes fazem.
mas o que encontramos normalmente sao:
a) programadores que querem estar na crista da onda, compram um kit caro de FPGA com duas interfaces 10GbE e acabam fazendo software para o dolar/MIPS mais caro que existe.
b) estudantes de engenharia que querem adicionar uma aura tecnologica em seus TCCs e adotam um kit de FPGA para fazer algo que daria para fazer com um ARM, PIC ou um mero 555.
c) curiosos que entram no negocio com os tres pes esquerdos, passam anos sofrendo com VHDL e ficam achando que FPGAs sao chips de brinquedo que nao servem para nada serio.
d) incautos que compram o kit com FPGA para rodar linux e garimpar bitcoins (esse eh o mais mocorongo!).
eu diria que o melhor seria o cara:
a) comecar com uma CPLD ou FPGA pequena, para ele nao cair na tentacao de colocar um softcore e resolver o problema por software.
b) comecar com esquematico e entender bem o que sao flip-flops e como todo o resto se constroi por LUTs. o cara tem que entender que FPGA nao eh software, eh hardware.
c) quando tiver nocao de que FPGA eh hardware, optar por uma linguagem de descricao de hardware, de preferencia verilog, para nao ficar perdendo tempo tentando decorar coisas que sao obvias, como se faz em VHDL.
d) saber separar as coisas: problemas que sao de software vs. problemas que sao de hardware. software eh flexivel e pode ter milhoes de regras, mas roda de forma serial, regra por regra. hardware eh engessado e pode ter apenas milhares de regras, mas de forma paralela, tudo ao mesmo tempo.
e) saber usar os recursos adequadamente: software se roda em microcontrolador, hardware se roda em uma FPGA. uma coisa eh uma coisa, outra coisa eh outra coisa.
f) passar a vida estudando logica programavel atras do calice sagrado: projetar um processador com o menor numero de slices e com o maior numero de MIPS possivel, tentando superar a relacao dolar/MIPS de um processador convencional... evidentemente, isso eh o mesmo que dizer que N = N+1 para N!=0, o que eh impossivel, mas focar no impossivel vai tornar o resto mais simples.
feito isso, uma de duas coisas podem acontecer:
a) ou vc vai usar um microcontrolador ou FPGA de forma apropriada, conforme o caso do problema ser software ou hardware, obtendo assim um custo menor e uma forma mais eficiente de trabalhar, lembrando que eficiencia eh o caminho para um futuro feliz e alegra para toda a humanidade.
b) ou vc vai querer resolver tudo por hardware puro pq os caras do software sao sempre incompetentes! e eles nunca consegue resolver as coisas de uma forma eficiente, como todo mundo a sua volta em todas as outras areas! e vc vai se tornar uma especie de profeta do fim do mundo, postando no asm51 como as tecnologias diferentes da que vc utiliza (PIC, ARM, x86, altera, VHDL, windows, android, comida asiatica, socialistas, taxistas, cupins, etc) vao morrer e como o universo vai colapsar em breve, pq a humanidade nao aprendeu verilog quando teve oportunidade e agora todos merecem sofrer eternamente enquanto queimam no marmore do inferno! \o/ hahaha