看看我这5分频器哪儿出错了

2019-07-16 00:46发布

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

仿真
QQ图片20140427145833.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
woodmice
1楼-- · 2019-07-16 02:00
 精彩回答 2  元偷偷看……
adasdsad
2楼-- · 2019-07-16 07:47
woodmice 发表于 2014-4-27 16:59
呵呵,你这个是6分频,不是5分频;
要做奇数分频,要检测每个边沿,不止是上升沿;
因为奇数个周期里面要输 ...

另外为什么fout一直是0 ,我写成6分频的话,输出总该有吧。能解答一下么,谢谢
woodmice
3楼-- · 2019-07-16 08:09
这个还真回答不上来,我的硬件描述语言还没学透,上面的回答只是从其他方面的知识给你的意见,不好哦意思哈
天、
4楼-- · 2019-07-16 10:06
你的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
改成这个就好了
天、
5楼-- · 2019-07-16 13:10
是reset为0的时间太短了不足以发生变化
adasdsad
6楼-- · 2019-07-16 17:51
 精彩回答 2  元偷偷看……

一周热门 更多>