点灯大师第一步:LED流水灯

1. 需求分析

      实现四个led灯每500ms流水循环闪烁

2. 设计关键

a. 计数器实现500ms间隔

//时间参数定义parameter TIME_500MS = 25_000_000;//500ms//内部信号定义reg     [24:0]      cnt_500ms       ;//500ms计数器计数值wire                add_cnt_500ms   ;//加1条件wire                end_cnt_500ms   ;//结束条件//计数器always @(posedge clk or negedge rst_n)begin if(!rst_n)begin cnt_500ms <= 25'd0; endelse if(add_cnt_500ms)begin if(end_cnt_500ms)begin cnt_500ms <= 25'd0;endelse begin cnt_500ms <= cnt_500ms + 1'b1;endendendassign add_cnt_500ms = led_en_1;assign end_cnt_500ms = add_cnt_500ms && cnt_500ms == TIME_500MS - 1;

b. 移位寄存器实现流水灯

always @(posedge clk ,negedge rst_n)begin if(!rst_n)begin led_out <= 4'b0001;endelse if(end_cnt_500ms)beginled_out <= {led_out[2:0],led_out[3]};endend

c. 移位运算符实现流水灯

//移位运算符always @(posedge clk ,negedge rst_n)begin if(!rst_n)begin led_out <= 4'b0001;endelse if(end_cnt_500ms)beginled_out <= led_out << 1;endend

3. 完整代码

//流水灯,间隔500msmodule flow_led(input               clk     ,//输入时钟信号,50MHz input               rst_n   ,//输入复位信号,低有效input               led_en_1,output  reg [3:0]   led_out  //输出led驱动信号
);//时间参数定义parameter TIME_500MS = 25_000_000;//500ms//内部信号定义reg     [24:0]      cnt_500ms       ;//500ms计数器计数值wire                add_cnt_500ms   ;//加1条件wire                end_cnt_500ms   ;//结束条件//描述输出(时序逻辑、组合逻辑)
//计数器always @(posedge clk or negedge rst_n)begin if(!rst_n)begin cnt_500ms <= 25'd0; endelse if(add_cnt_500ms)begin if(end_cnt_500ms)begin cnt_500ms <= 25'd0;endelse begin cnt_500ms <= cnt_500ms + 1'b1;endendendassign add_cnt_500ms = led_en_1;assign end_cnt_500ms = add_cnt_500ms && cnt_500ms == TIME_500MS - 1;//循环移位寄存器// always @(posedge clk ,negedge rst_n)begin //     if(!rst_n)begin //         led_out <= 4'b0001;//     end//     else if(end_cnt_500ms)begin//         led_out <= {led_out[2:0],led_out[3]};//     end// end//移位运算符always @(posedge clk ,negedge rst_n)begin if(!rst_n)begin led_out <= 4'b0001;endelse if(end_cnt_500ms)beginled_out <= led_out << 1;endelse if(led_out == 4'b0000)beginled_out <= 4'b0001;endendendmodule 

4. 上板验证

代码比较简单,不进行仿真了

流水灯效果实现如下:

led流水灯


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部