输入时钟为 1MHz 即1us,需要产生如下图所示的周期信号
20us 10us 20us
____
________ ________
我的思路是通过计数器 分别计数20,30,50
复位时 输出 ‘0’
计数器 == 20:输出 ‘1’
计数器 == 30:输出 ‘0’
计数器 == 50:计数器清零。
以下是我的代码:
module div(clk_in, rst, clk_out);
input clk_in;
input rst;
output clk_out;
reg clk_out;
reg [7:0] cnt;
always @(posedge clk_in) //clk_in = 1MHz
begin
if(!rst)
begin
clk_out <= 0;
cnt <= 0;
end
else
begin
if(cnt == 49) //50us周期
cnt <= 0;
else if(cnt == 29) //30us 电平跳变
clk_out <= ~clk_out;
else if(cnt == 19) //20us 电平跳变
clk_out <= ~clk_out;
else
cnt <=cnt + 1;
end
end
endmodule
我的问题出在 行为仿真时 输出没有信号,
本人初学者,不知道我的代码是否有问题??
此帖出自
小平头技术问答
一周热门 更多>