本帖最后由 拾光333 于 2020-1-12 19:54 编辑
呼吸灯设计和实现
内容
一个周期为1s的呼吸灯,从熄灭到完全点亮一共需要1s。
将1s分为1000个1ms作为呼吸灯变化周期。将1ms分成1000个1us作为呼吸灯的变化单元。
第一个1ms内的1000个1us为全暗;第二个1ms内的第一个1us为亮,其余的999个1us为暗
第三个1ms内的第一个和第二个1us为亮,其余的998个1us为暗依次类推。
关于led的在led流水灯说过一点。
仿真文件
- `timescale 1 ns/ 1 ns
- module light_breathe_vlg_tst();
- reg sys_clk;
- reg sys_rst;
- // wires
- wire [3:0] led;
- // assign statements (if any)
- light_breathe i1 (
- // port map - connection between master ports and signals/registers
- .led(led),
- .sys_clk(sys_clk),
- .sys_rst(sys_rst)
- );
- initial
- begin
- sys_clk = 1'd0;
- sys_rst <= 1'd0;
- #100 sys_rst <= 1'd1;
- end
- always #10 sys_clk = ~sys_clk;
-
- endmodule
仿真结果
为了观察方便把各个计数器值缩短了,分别为为0~4,0~9,0~9,原来是0~49,0~999,0~999刚好1s。,计数器分别到达4,9,9时计数器清零相应计数器加一,可以看到在计数相同的1s里led波形变化一样,4个led等同时成呼吸状态。