看看我这5分频器哪儿出错了
时间:10-02
整理:3721RD
点击:
module fenpinqi(fout,clock,reset);
output fout;
input clock,reset;
integer i;
reg fout;
always @(posedge clock,reset)
begin
if(reset)
begin
i<=0;
fout<=0;
end
if(i==2)
begin
fout=~fout;
i<=i+1;
end
if(i==4)
begin
fout=~fout;
i<=0;
end
i<=i+1;
end
endmodule
这是测试
module fenpinqitest;
wire fout ;
reg clock,reset;
fenpinqi f(fout,clock,reset);
initial
begin
clock=1'b0;
forever #20 clock=~clock;
end
initial
begin
reset=1'b1;
forever #100 reset=~reset;
end
endmodule
仿真
output fout;
input clock,reset;
integer i;
reg fout;
always @(posedge clock,reset)
begin
if(reset)
begin
i<=0;
fout<=0;
end
if(i==2)
begin
fout=~fout;
i<=i+1;
end
if(i==4)
begin
fout=~fout;
i<=0;
end
i<=i+1;
end
endmodule
这是测试
module fenpinqitest;
wire fout ;
reg clock,reset;
fenpinqi f(fout,clock,reset);
initial
begin
clock=1'b0;
forever #20 clock=~clock;
end
initial
begin
reset=1'b1;
forever #100 reset=~reset;
end
endmodule
仿真
呵呵,你这个是6分频,不是5分频;
要做奇数分频,要检测每个边沿,不止是上升沿;
因为奇数个周期里面要输出高电平和低电平,每个电平期间包含x.5个时钟周期的宽度,那么这0.5个时钟如何判断呢?这个可以自己考虑一下;
或者按你的方法可以做成占空比非50%的分频输出,高、低电平的宽度相差1个时钟周期!这个也可以自己考虑下该怎么做。
另外为什么fout一直是0 ,我写成6分频的话,输出总该有吧。能解答一下么,谢谢
这个还真回答不上来,我的硬件描述语言还没学透,上面的回答只是从其他方面的知识给你的意见,不好哦意思哈
你的testbench时间太短了,module fenpinqi_testbench_v;
wire fout ;
reg clock,reset;
fenpinqi f(fout,clock,reset);
initial
begin
clock=1'b0;
forever #10 clock=~clock;
end
initial
begin
#10 reset=1;
#20 reset=0;
end
endmodule
改成这个就好了
是reset为0的时间太短了不足以发生变化
还是很谢谢您能回答
我用的是forever 一直在翻转,reset时间间隔为100单位,应该不短啊
我都仿过了,你按我说的试一下,你就知道问题出在哪了
你时钟周期40,reset时间才100,这才两个周期,你怎么分频呢。
明白了,原来是这样啊,谢谢谢谢啊