任务一:LED循环闪烁
任务二:流水灯
时间间隔:0.5s
一、硬件需求
4个LED灯,50MHz Clock
二、参数化设计
1、定义参数可以一次性修改代码中所有需要用到该参数地方。
2、功能仿真中在test_bench文件中可以例化参数减少仿真时间。
如:计数满24_999_999,LED实现翻转,可定义参数CNT_MAX
在testbench中例化如下
led_flash
#(.CNT_MAX(25'24_999))
led_flash0(
例化其他接口
)
但是得特别注意的是,这种例化方式只能用于功能仿真,时序仿真会报错。
三、移位与拼接
led <= led << 1; //移位,高位自动补0.
led <= {led[2:0],led[3]}; //位拼接,将高位移到最低位
实现流水灯的过程中,移位会导致全0的现象,因此需要添加限定条件,代码会更加复杂。
四、modelsim仿真要点
在testbench中做了修改后,可在modelsim中的library>>work>>xxx_tb,右击,然后recomplie,然后restart,run_all。