Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!

Participe do fórum, é rápido e fácil

Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!
Vilarejo PK2P
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Grupo para reunir as pessoas que acompanham os vídeos no canal Press Key to Play e discutir os assuntos abrangidos pelo Blog PK2P.

Últimos assuntos

» RPG de Mesa: A fronteira Volume 4: O Castelo Owlrick. (D&D5e)
por Ariano 10/12/2020, 23:18

» [tutorial] hash em C/C++ com openssl
por kodo no kami 21/9/2020, 13:37

» ping lista grafico
por kodo no kami 24/7/2020, 07:53

» [Discord] Campanha de RPG D-cyber
por Jonatan15 17/7/2020, 11:11

» [tradução] 1869 (msdos)
por kodo no kami 26/6/2020, 13:43

» [source] exemplo filtro mediano
por kodo no kami 1/6/2020, 00:24

» [tutorial] criar filtro nas imagens (python)
por kodo no kami 22/5/2020, 19:29

» Wireless IDS Sagemcom
por kodo no kami 22/4/2020, 23:50

» [source] detectar dispositivos no wifi (sagemcom)
por kodo no kami 9/3/2020, 20:25

» [tutorial] wla assemblador (65xx, 68xx, z80, 8008, 8080 e huc6280)
por kodo no kami 2/2/2020, 16:42


Você não está conectado. Conecte-se ou registre-se

[tutorial] usando o icarus verilog

Ir para baixo  Mensagem [Página 1 de 1]

kodo no kami

kodo no kami

bom galera nesse tutorial estaremos mexendo com o icarus verilog, sendo ele um sintetizador e simulador da linguagem verilog. A linguagem verilog é uma linguagem de descrição de hardware, por ela podemos descrever o funcionamento interno de um hardware especifico, podemos como exemplo recriar todo o funcionamento de uma arquitetura ou de um processador usando apenas uma determinada linguagem. Existem inclusive chips construídos especificamente para sintetizar internamente toda aquela logica usando esse tipo de linguagem como ocorre nos FPGA, onde podemos recriar uma arquitetura e o seu funcionamento em cima daquele chip e daquela linguagem (ainda não tive a oportunidade de mexer com FPGA T.T ). Bom galera para começar a gente baixa o icarus no site oficial, o icarus é opensource e existem para diversas plataformas como windows e linux (em boa parte das distros linux ele ja tem no repositorio da distro)

site oficial

depois de baixar e instalar via repositório ou via binário (dependendo temos que coloca nas variáveis de ambiente para conseguir executar ele em qualquer diretório), criamos um código basicão que ira exibir uma string na tela do simulador (não vou ensinar a linguagem verilog nesse tutorial apenas o uso do icarus), para isso criamos em um arquivo o nosso codigo verilog (normalmente com extensão .v)

Código:
module kodo;
initial begin
  $display("ola mundo by kodo");
end
endmodule

o codigo a cima vai exibir na tela do simulador a mensagem "ola mundo by kodo", para a gente sintetizar e rodar no simulador usamos o comando iverilog, passamos como argumento o nosso código fonte (também podemos ter uma saída com um nome especifico usando o argumento -o seguido do nome do arquivo de saída antes do nome do código fonte)

Código:
iverilog -o kodo.out kodo.v

[tutorial] usando o icarus verilog KefgtTV

para simular ele usamos o comando vvp seguido do arquivo de saida

Código:
vvp kodo.out

[tutorial] usando o icarus verilog XAzpYk4

outro exemplo seria sintetizar um clock, que ira exibir uma mensagem quando tiver uma borda de subida e outra mensagem quando for uma borda de descida

Código:
module kodo;
reg clock = 0;

initial begin
end

always #100 clock = ~clock;

always @(posedge clock)
begin
  $display("borda de subida");
end

always @(negedge clock)
begin
  $display("borda de descida");
end
endmodule

[tutorial] usando o icarus verilog AfW5A6f

no exemplo anterior ele ficara preso em um loop infinito, se a gente apertar control+c vai dar um break e depois ira cair em um terminal interativo, onde podemos digitar finish para sair, cont para continuar, step para rodar passo a passo, ls para listar os modulos, entre outros comandos

[tutorial] usando o icarus verilog KIcwbU5

podemos exportar um vcd e carregar em um programa para exibir toda essa mudança dos estados. Para fazer isso usamos as diretivas $dumpfile e $dumpvars, nesse meu exemplo a baixo sera armazenado no registrador k o estado invertido do clock

Código:
module kodo;
reg clock = 0, k = 0;

initial begin
  $dumpfile("kodo.vcd");
  $dumpvars(0,clock);
  $dumpvars(1,k);
end

always #100 clock = ~clock;

always @(clock)
begin
  k = ~clock;
end
endmodule

[tutorial] usando o icarus verilog KGrkxTE

depois do dump bastaria carregar o nosso vcd em algum programa que interprete esse formato como o gtkwave, waview ou qualquer outro desse genero.

[tutorial] usando o icarus verilog FQtX9mi

bom galera esse é o básico do icarus ^^

by kodo no kami

https://eofclub.in/forum

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos