entao, eu passei DECADAS tentando ficar fluente em VHDL e nunca consegui! :O
a fluencia significa ter a capacidade de escrever diretamente uma logica complexa em VHDL e, ateh entao, eu usava a metodologia popular na decada de 80: logica TTL discreta. construia o prototipo usando logica TTL discreta, testava e soh entao integrava aquela logica em um codigo VHDL para uma CPLD ou FPGA. quando comecei a trabalhar na siemens, percebi que a metodologia que eu conhecia nao era diferente da que eles utilizavam, de modo que grande parte das placas tinham uma CPLD para integrar a logica TTL discreta. e nessa epoca as pessoas que pareciam conhecer algo sobre o assunto frequentemente eram vistas com um chapelao de bruxo e um cajado murmurando coisas como "eu tenho que salvar os pequeninos dos orcs!". quando o problema saia do basico testavel com TTL discreto, tudo ficava dificil, tudo ficava caro, tudo demorava tempo infinito e, no final, nada cabia dentro das FPGA disponiveis.
mas ateh entao o mundo para mim era simples: verilog era uma aberracao utilizada apenas na esfera de influencia americana, enquanto o resto do mundo livre utilizava vastamente VHDL.
entao um dia isso aqui me chamou a atencao:
http://www.see.ed.ac.uk/~gerard/Teach/V ... ooley.htmlconversei com um amigo "revolucionario" que usava verilog e pedi umas dicas. contei que perdi DECADAS tentando aprender VHDL, ele riu e me falou que provavelmente eu estaria fluente em verilog em uma ou duas semanas. eu nao acreditei, daih ele me passou esse site:
http://www.asic-world.com/verilog/veritut.htmldepois a introducao tem um topico chamado "verilog em um dia". do ponto de vista de algoritmo, VHDL e verilog sao essencialmente a mesma coisa: para criar um contador, vc vai criar uma variavel e vai incrementar a cada ciclo de clock. a forma de descrever eh que muda.
em VHDL:
- Código: Selecionar todos
entity COUNTER is
port(
CLK: in std_logic;
COUNTERO: out std_logic_vector(7 downto 0)
);
end COUNTER;
architecture COUNTER_a of COUNTER is
signal COUNTER : std_logic_vector(7 downto 0);
process(CLK)
begin
if(CLK=1 and CLK'event)
then
COUNTER <= COUNTER+1;
end if;
end process;
COUNTERO <= COUNTER;
end COUNTER_a;
provavelmente deve ter algum erro de sintaxe, visto que eu nao consigo escrever isso em VHDL sem consultar um manual.
em verilog, porem, a coisa fica simples:
- Código: Selecionar todos
module counter(input CLK, output reg [7:0] COUNTER);
always@(posedge CLK) COUNTER <= COUNTER+1;
endmodule;
o algortimo eh exatamente o mesmo! mas a diferenca de notacao eh gigantesca. como todos apontam, vc perde tanto tempo com firulas decorativas em VHDL que vc nao consegue se concentrar no problema real!
sobre o nivel de utilizacao, bom, primeiro temos que dividir as coisas: ASICs vs. FPGAs e sintese vs. simulacao. a diferenca entre ASIC e FPGA eh clara: FPGAs sao mais faceis de testar e alterar. no caso do ASIC, vc nao pode errar. jah a diferenca entre sintese e simulacao implica em tempo de implementacao e tempo de verificacao. e no caso do ASIC, como vc nao pode errar, a relacao entre o tempo de implementacao e verificacao pode chegar a 1:10. jah no caso da FPGA, essa relacao tende a ficar em 1:1, pq vc pode corrigir o projeto a qualquer momento. disso vc obtem quatro graficos de utilizacao no mundo.
para a implementacao e verificacao de FPGAs, temos o cenario que todos conhecem, com VHDL na frente, mas seguido de perto de verilog:
http://s3-blogs.mentor.com/verification ... ig-8-2.gifhttp://s3-blogs.mentor.com/verification ... ig-8-5.gifeh de onde sai aquela tipica "o bom desenvolvedor deveria ser fluente em ambas".
porem, tendo em mente que o risco em ASICs eh bem maior, quando olhamos o cenario sob o ponto de vista dos ASICs, para implementacao e verificacao temos a lideranca de verilog por larga margem:
http://s3-blogs.mentor.com/verification ... ig-8-1.gif http://s3-blogs.mentor.com/verification ... ig-8-3.gifnote que existe uma migracao de verilog para systemverilog: essencialmente eh algo como ir de C para C++ e preenche o "vazio" de alto nivel que verilog possui em relacao a VHDL.
agora, faca uma estatistica rapida em todos os eletronicos a sua volta e calcule de cabeca o volume de FPGAs em relacao a outros ASICs... eh realmente bem baixo, provavelmente bem abaixo de 5%, embora exista um esforco atualmente para migrar ASICs caros para FPGAs baratas. mas pegue nao apenas em termos de escala atual, mas tambem em escala acumulada na historia... desde quando se usam ASICs e desde quando se usam FPGAs? provavelmente isso empurra a representatividade acumulada para abaixo de 1%! e isso significa que em termos de escala, que a representatividade dos dois primeiros graficos eh apenas 1% em relacao aos dois ultimos.
bom, migrar de VHDL para verilog foi a melhor coisa que jah fiz. soh pegando o gancho da historinha do gandalf lah em cima, hoje eu tenho o cenario totalmente oposto do que tinha com VHDL: as coisas sao faceis, baratas e rapidas... e quando tudo fica pronto, em geral cabe na FPGA mais barata disponivel! hehehe