verilog 实现一个时钟

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog 实现一个时钟相关的知识,希望对你有一定的参考价值。

参考技术A testbench中:

initial
clk=0;

always
#25 clk=~clk; //周期为50的clk追问

这。。。然后呢?

追答

然后就行了啊~~ testbench是由quartusii 和 ise软件直接生成的。 你在initial 和 always中输入上述语句 就是一个 周期信号啊 可以作为 自己编的.v程序的周期输入

参考技术B 产生时钟的方法有很多,以下是一个:
在testbench中编写一下测试脚本,
initial begin
clk=0;
forever #10 clk=~clk; // 周期为20ns的时钟
end

可以利用此编写的时钟测试你所编写的verilog程序
希望能帮到你哦哦!!!!

verilog行为仿真时钟激励显示总是z

仿真代码如下:
module test();
div div(
.CLK(CLK),
.CLK_out(CLK_out)
);
reg CLK=0;
wire CLK_out;
initial
begin
while(1)begin
CLK=0;
#100;
CLK=1;
#100;
CLK=0;
#100;
CLK=1;
#100;
end
end
endmodule
使用的是vivado
仿真波形如下。我的激励根本没起作用。

initial内部就写信号的初始值,出现z的情况一般是没有初始值。后面测试的逻辑以及时钟的产生用always进程来写。这样就可以了。 参考技术A 把时钟激励改成 always@ #100 CLK = ~CLK;你完全是C语言的思路啊。追问

创造时钟激励的写法确实有问题。。然后我改了。。仿真结果依然是z,不止这个程序,我按书上的例程照抄然后进行仿真CLK信号也是z。。我写的时钟激励信号根本输不进去

参考技术B reg CLK = 0; 改成 reg CLK;追问

改了之后还是z。。。

追答

你的div代码是不是也乱赋值了?

试试这个:
module div (CLK, CLK_out);
input CLK;
output CLK_out;
assign CLK_out = CLK;
endmodule

如果还不行,换编译器吧。

z(高阻)的形成的还有一个原因是内部定义是tri类型。其他都应该是 x(不确定) 态。

追问

请问tri类型是什么意思。。

参考技术C 最后怎么解决的 我也是这样

以上是关于verilog 实现一个时钟的主要内容,如果未能解决你的问题,请参考以下文章

Verilog输入两个时钟是对齐的吗

Verilog HDL 实现时钟计数器

求一个用verilog实现二分之一分频(是提高频率,不是降低频率)的代码

Verilog实现之任意分频电路

verilog之时钟信号的编写2

异步fifo的Verilog实现