求高手帮我看看那里出错了 仿真没有波形

2019-03-25 09:33发布

为什么仿真没有波形  那里出错误了


功能模块:
module clkdiv
(
   clk,rst_n,
        clk_div
);

input clk;       //20MHZ时钟
input rst_n;     //复位,低电平有效
output clk_div;  //分频信号,连接到蜂鸣器

reg [23:0]cnt;   //分频计数器
always @ (posedge clk or negedge rst_n)
  if(!rst_n)
    cnt <= 24'd0;
  else
    cnt <= cnt+1'b1;
         
//////////////////////////////////

reg clk_div_r;   //clk_div信号寄存器
always @ (posedge clk or negedge rst_n)
  if(!rst_n)
    clk_div_r<=1'b0;
  else if(cnt==24'd9_999_999)
    clk_div_r<=~clk_div_r;    //每1秒让clk_div_r翻转一次
         
///////////////////////////////////

assign clk_div=clk_div_r;


endmodule

激励模块:
`timescale 1 ns/ 1 ns
module clkdiv_vlg_tst();


reg clk;
reg rst_n;
                                            
wire clk_div;
                     
clkdiv i1 (

        .clk(clk),
        .clk_div(clk_div),
        .rst_n(rst_n)
);
initial                                                
begin                                                  
clk=0;
forever
#50 clk=~clk;                                            
end


initial                                                
begin
clk=0;                                                
rst_n=0;
#100 rst_n=1;
                                       
end                                                   
endmodule 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
eeleader
2019-03-26 09:18

 

if(!rst_n)
cnt <= 24'd0;
else
cnt <= cnt+1'b1;
===============================
注意看,你的cnt只会翻转一次,并且只在rst_n复位信号为低,cnt才会清零。

如果是modelsim中,cnt+1超过24bit,会自动变为25bit,不会清零,必须要手工清零。

 

还有这事啊?

一周热门 更多>