打印

为什么?这样计数都不对,天啊!

[复制链接]
1905|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddddddd|  楼主 | 2007-7-19 16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人前两天用Verilog在Quartus II下写了个计数器,用来输出多个脉冲的。clk为100MHz时钟,想实现当U2输入一个几十ns的脉冲信号后,OP输出在一定的时间间隔后输出几个几十ns的脉冲。仿真的结果是OP出了nnn个脉冲,并不是我想要的结果。希望不幸看到这帖子的各位的江湖救急,能指点一二,感谢:)

module epm7000(OP,  U2,clk);

    input U2,clk;    //U2为输入脉冲,clk为100MHz时钟
    output OP;    //脉冲输出
    reg OP;
    reg start,stop;
    reg [15:0]out;
    
    always @(posedge U2 or negedge stop or posedge clk)//设置启停
    begin
        if(U2)
        begin
            start <= 0;
        end
        if(stop == 0)
        begin
            start <= 1;
        end
    end
    
    always @(posedge clk or negedge start)//计数出脉冲
    begin
        if(start == 0)
        begin
            out <= out + 1;
                        
            case(out)
                16'H0042: OP <= 1;    //1脉冲
                16'H004C: OP <= 0;
                    
                16'H014D: OP <= 1;    //2脉冲
                16'H0157: OP <= 0;
                    
                16'H029B: OP <= 1;    //3
                16'H02A5: OP <= 0;
                    
                16'H0536: OP <= 1;    //4
                16'H0540: OP <= 0;
                        
                16'H07D1: OP <= 1;    //5
                16'H07DB: OP <= 0;
                                
                16'H07F2: OP <= 1;    //6
                16'H07FC: OP <= 0;
                    
                16'H0D08: OP <= 1;    //7
                16'H0D12: OP <= 0;
                    
                16'H1A11: OP <= 1;    //8
                16'H1A1B: OP <= 0;
                    
                16'H2EE8: OP <= 1;    //9
                16'H2EF2: OP <= 0;
                    
                16'H4000: stop <= 0;    //停止
                //default:;
            endcase
        end
        else
        begin        //复位
            OP <= 0;
            out <= 0;
            stop <=1;
        end
    end
    
endmodule

相关帖子

沙发
gudeng614| | 2007-7-27 21:14 | 只看该作者

我用VHDL

使用特权

评论回复
板凳
ddddddd|  楼主 | 2007-8-23 15:59 | 只看该作者

自己顶

怎么办呢?

使用特权

评论回复
地板
风中De舞者| | 2007-8-24 08:28 | 只看该作者

我也用VHDL

我也用VHDL

使用特权

评论回复
5
sibaidong| | 2007-8-24 09:43 | 只看该作者

你这个问题我昨天碰到过!

  思想跟我昨天编的那个定时器差不多!
  先请问一下你以前是否用过VHDL语言?
  我就凭我的经验说一下吧!
  一开始我也是这样编写的,可是怎么也得不到我想要的波形。
  这里在第一个always里:
     1、有附加寄存器产生,if语句不完全;
     2、U2仿真时不能一置高,否则你这个系统就不能正常工作;
  不知道你为什么要用那么多寄存器start,stop,都是多余的,感觉有点乱,就一个U2使能就行了,还有要发现这里的问题,最好找本讲Verilog语法的看看always语法执行的情况!
     

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

12

帖子

0

粉丝