Por negedge sensoriamento não está funcionando?

S

steven852

Guest
Olhe para o seguinte código:

qualquer módulo (en, clk);
entrada en;
clk saída;
reg clk;

clk inicial = 0;

always @ (negedge PT) começam
sempre começar
# 1 clk = clk ~;
fim
fim
endmodule

Ao testar o módulo sem qualquer margem queda en, o CLK é ainda flopping.Assim, parece que a declaração não é sempre verificar o negedge do PT.Alguém pode explicar isto?

Obrigado.

 
Oi steven852,
functionality and how to use and where to use it.

Em primeiro lugar, u deve compreender a funcionalidade do laço para sempre
e como usar e onde usá-lo.Minha sugestão é u ler este livro "Verilog HDL: A Guide to Digital Design and Synthesis", de Samir Platnikar.

É um bom livro para quem quer aprender Verilog codificação e até mesmo para o avanço do usuário como um livro de referência.

Por favor, verifique o código abaixo:
Código:`1ns/10ps calendáriomódulo whtever3 (en, clk);entrada en;

clk saída;reg clk;inicial

começo

clk = 0;

forever @ (negedge pt) clk clk # 5 = ~;

fim

endmodule

 
Primeiro de tudo, obrigado por suas sugestões e código.No entanto, se você mudar a negedge posedge, você vai entender o que eu quis dizer lá.No caso posedge, a declaração de sempre não será executado se não houver uma posedge.Alguma coisa está em conflito.

ObrigadoAdicionado após 3 minutos:Eu esqueci de dizer: seu código não está realmente funcionando como um gerador de clock conforme o esperado.

 
Oi,

Eu compreendo que o meu código não está funcionando como uma geração de clock.Para fazer com que uma geração de relógio, abaixo está o código:

Código:reg clk;initial begin

clk = 0;

sempre clk clk # 5 = ~; / clock / com prazo de 10 unidades

fim

 
Acho que isso é o que você está procurando?
Código:

clkgen (módulo

/ / Outputs

clk,

/ / Entradas

pt

);

entrada en;

clk saída;

reg clk;

initial begin

clk = 1'b0;

sempre começar

if (PT) começam

# 5 clk = 1'b0;

# 5 clk = 1'b1;

end else

# 1;

fim

fim

endmodule / clkgen /teste de módulo ();

reg pt;

clk fio;

clkgen clkgen (

/ / Outputs

. clk (clk)

/ / Entradas

. en (en));

initial begin

$ shm_open ( "onda");

$ shm_probe (teste, "AS");

en = 0;

# 200 en = 1;

# 200 en = 0;

# 200 en = 1;

# 100 $ finish;

fimendmodule / test /

 
porque quando a primeira en = 1 é detectado,

então sempre começar
# 1 clk = clk ~;
fim
declaração será executar sempre,

o seguinte en transição não será detectado.

atenciosamente

steven852 escreveu:

Olhe para o seguinte código:qualquer módulo (en, clk);

entrada en;

clk saída;

reg clk;clk inicial = 0;always @ (negedge PT) começam

sempre começar

# 1 clk = clk ~;

fim

fim

endmoduleAo testar o módulo sem qualquer margem queda en, o CLK é ainda flopping.
Assim, parece que a declaração não é sempre verificar o negedge do PT.
Alguém pode explicar isto?Obrigado.
 

Welcome to EDABoard.com

Sponsor

Back
Top