|
我要实现的功能是:
输入信号主频mclk,启动信号start,输出信号en和分频后的时钟信号clken。
启动信号来之前,en和clken都为0。启动信号为一个主频信号脉宽的脉冲,当检测到其为1时,en置为1,clken是mclk的100分频。在start为0时,en为0,clken也是0。
可我用波形仿真出的结果是:en始终是1(这是我最困惑的地方),clken也从开始就分频(分频结果是对的)。问题是这两个输出信号都不是在启动信号的上升沿到来之后才有,而是从仿真开始就工作。
不知我的问题说清了没有,还请达人指教。
module clken(mclk,clken,en,start);
input mclk;
input start;
output clken;
output en;
reg clken;
reg en;
reg [6:0]counter;
localparam counter1=7'h63;
always @ (posedge mclk)
begin
en<=1'b0;
if(start==1)
begin
counter<=counter1;
clken<=0;
en<=1'b1;
end
else
begin
if(en==0)
begin
clken<=0;
en<=en;
end
else
begin
if(counter>=counter1)
begin
clken<=1'b1;
counter<=0;
end
else
begin
clken<=1'b0;
counter<=counter+1;
end
en<=en;
end
end
end
endmodule
[em04] |
|