Lagrange Zu 2022-03-29 21:58 采纳率: 100%
浏览 100
已结题

verilog语言做呼吸灯仿真,为啥仿真结果中有的变量一开始没有显示?

问题遇到的现象和发生背景

做呼吸灯的设计,开发板20ns一个系统时钟周期。将2s分为1000个2ms作为呼吸灯变化周期,将2ms分为1000个2us作为呼吸灯变化单元。分别用cnt_2us、cnt_2ms、cnt_2s作为记时2us,2ms,2s的计数器。
用quartus调用modelsim仿真后,将计数器的结果也显示出来,可是这三个计数器一开始却是没有值的!

问题相关代码
//50Mhz,,计数1次20ns
module breath_led(
input wire clk,
input wire rst_n, 
output reg led
);
/*
parameter CNT_2s_END = 999? //??2s????
parameter CNT_2ms_END = 999? //??2ms????
parameter CNT_2us_END = 99? //??2us????
*/
reg [9:0] cnt_2s;            //999转换为二进制需要10个位宽
reg [9:0] cnt_2ms;  
reg [6:0] cnt_2us; 
//--------------------< 2us计数>------------------------------------------
always@(posedge clk or negedge rst_n)
if (rst_n==0)
    cnt_2us <= 0;
else if(cnt_2us == 99) 
    cnt_2us <= 0;
else
    cnt_2us <= cnt_2us+1;
//--------------------< 2ms计数 >------------------------------------------
always@ (posedge clk or negedge rst_n)
if (rst_n ==0)
    cnt_2ms <= 0;
else if( (cnt_2ms == 999) && (cnt_2us == 99) ) 
    cnt_2ms <= 0;
else if( (cnt_2us==99) && (cnt_2ms <999) )
    cnt_2ms <= cnt_2ms+1;
//--------------------< 2s计数 >------------------------------------------
always@ (posedge clk or negedge rst_n)
if (rst_n ==0)
    cnt_2s <= 0;
else if( (cnt_2ms == 999) && (cnt_2us == 99) && (cnt_2s == 999) ) 
    cnt_2s <= 0;
else if( (cnt_2us==99) && (cnt_2ms==999) )
    cnt_2s <= cnt_2s+1;
//--------------------< LED >------------------------------------------
always@ (posedge clk or negedge rst_n)
if(rst_n == 0)
    led <= 0;
else if(cnt_2s > cnt_2ms)
    led <= 1;
else 
    led <=0;

endmodule

tb代码:

`timescale 1 ns/ 1 ps
module breath_led_vlg_tst();
parameter period = 20;
//localparam period = 20;
//--------------------< 端口>------------------------------------------
reg clk;
reg rst_n;
wire led;
//--------------------< 模块例化>------------------------------------------
breath_led breathled_inst(
.clk(clk),
.rst_n(rst_n),
.led(led)
);
//--------------------< 初始信号>------------------------------------------
initial begin
    clk=0; //clk阻塞性赋值
    rst_n<=0;
    #100    //延时100ns便于观察波形
    rst_n<=1;
end
//--------------------< 设计输入信号 >-----------------------------------------
always #(period/2) clk=~clk;
endmodule
运行结果及报错内容

img

img

恳切希望得到解答!!
  • 写回答

2条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 4月13日
    • 已采纳回答 4月5日
    • 创建了问题 3月29日

    悬赏问题

    • ¥15 Python算法设计Seam carving--让图片比例随心缩放
    • ¥15 页面制作,HTML CSS
    • ¥15 通个批处理实现 win7和win10 修改或设置:显示操作系统列表时间为2秒
    • ¥20 报错:Unsupported class file major version 59
    • ¥18 如何使用c++语言完成网站用户管理系统?(语言-c++)
    • ¥15 用ASP代码实现跨站脚本攻击
    • ¥15 自己写的c语言程序报错
    • ¥50 ABP中怎样接收vue上传的图片
    • ¥15 uniapp设置音频的倍速播放无效
    • ¥15 关于#hc#的问题,如何解决?