微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > testbench问题:时钟和复位都是对的,就是out没有正常显示结果

testbench问题:时钟和复位都是对的,就是out没有正常显示结果

时间:10-02 整理:3721RD 点击:
这是我的Counter4_tp代码:`timescale 1ns/1ns
module Counter4_tp;
reg clk,reset,ena;
wire[3:0] out;
parameter DELY=100;
Counter4 mycount(
.sys_clk(clk),
.sys_rst_n(reset),
.ena(ena),
.dout(out)
);
always #(DELY/2) clk=~clk;
initial
begin
clk=0;
ena=0;
reset=0;
#DELY reset=1;
#DELY reset=0;
#DELY ena=1;
#(DELY*20) $finish;
end
endmodule


这是我的Counter4.v代码:
module Counter4(
//input
sys_clk,
sys_rst_n,
ena,

    //output
dout,
cout
                    );
//input ports
input                    sys_clk;      //system clock;
input                    sys_rst_n;    //system reset, low is active;
input                    ena;          //
//output ports
output [3:0]             dout;
output                   cout;
//reg define
reg    [3:0]             counter;
//wire define


/*******************************************************************************************************
**                              Main Program   
**  
********************************************************************************************************/
always @(posedge sys_clk or negedge sys_rst_n) begin
        if (sys_rst_n ==1'b0) begin
            counter <= 1'b0;
        end
        else if (ena == 1'b1) begin
            counter <= counter + 1'b1;
        end
end
assign cout = &counter;
assign dout = counter;
endmodule
//end of RTL code                       

波形在附件中,为何输出out没有正常显示呢,谢谢各位!

没有正常输出时正常的,因为在ena信号拉高之前,你一直处于复位(reset=0), 模块代码不可能跳转到
else if (ena == 1'b1) begin
            counter <= counter + 1'b1;
end



   按照您的意见已经改好了,真的非常感谢啊,大哥!

你的复位信号最后保持为低了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top