为什么输出仿真波形为不定态?


`timescale 1ns / 1ps
//记录里程数
module jicheng(clk,start,reset,distance,distance_enable); //端口的定义
    input clk,start,reset;
    output [7:0] distance;// 输出的公里
    reg [7:0] distance;
    output distance_enable;//控制计费的公里信号
    reg distance_enable;

    always@(posedge clk or negedge reset)//异步复位
        begin
            if(!reset)//低电平复位
                begin
                    distance<=8'd0;
                end
            else if(start)// start 高电平有效
                begin
                    if(distance[3:0]==9)//判断 distance 的低四位计到 了 9 没有 
                        begin
                            distance[3:0]<=4'd0;//计到 9 清零
                            if (distance[7:4] ==9) //判断 di stance 的高四位计到了 9 没有 
                                distance [7:4] <=4'd0;//计到9清零
                            else distance[7:4]<= distance[7:4]+1'd1;// distance 的高四位没有计到 9 的时候加一 
                        end
                    else distance[3:0]<=distance[3:0]+1'd1;// distance 的低四位没有计到 9 的时候加一
                end//end start
            end//end always
            
//产生distance_enable 信号
    always@(posedge clk or negedge reset)
        begin
            if (reset)
                begin
                    distance_enable<=1'd0; // 复位
                end
            else
                if(distance>8'd2)//大于公里三的时候 
                    begin
                        distance_enable<=1'd1;//输出 distance_enable 信号
                    end
        end//end always
        
endmodule//结束计程模块

//测试模块是:
`timescale 1ns / 1ps

//计程模块测试

module jicheng_test;

    // Inputs
    reg clk;
    reg start;
    reg reset;
    // Outputs
    wire [7:0] distance;
    wire distance_enable;

    always #500 clk<=~clk;
    
    initial begin
        // Initialize Inputs
        clk = 0;
        start = 0;
        reset = 1;
        #100 start=1;
        #100000 $stop;
    end
   jicheng jicheng(.clk(clk),.reset(reset),.start(start),.distance(distance),.distance_enable(distance_enable));
                
endmodule

img


为什么distance波形是不定态?

激励信号给的不对
1.reset 信号不完整,这个信号应该是低有效,需要有一段大于时钟周期1000的低电平,最后一直是高电平。
2.start 的时间也太短了,也需要大于1000
3.两段代码中 reset 信号不一致,应该和激励信号一致,都是低电平有效

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632