• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

FPGA之verilog流水灯小程序 - 大道至简,知易行难!

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

FPGA之verilog流水灯小程序

同样话不多说直接上代码:

//自己修改过的流水灯,从板子上的led4亮到led1,延迟改为了2s
module led_water(
             led,
             clk,
             rst_n

             ); // 模块名及端口参数

            input clk; // 输入端口定义,50M 时钟
           input rst_n;
           output[3:0] led; // 输出端口定义
          reg[3:0] led; //变量led_out 定义为寄存器型
          reg[26:0] counter; /*变量led_out 定义为寄存器型,至于为甚么要定义27位宽,
                                      是因为延迟时间的要求,要计数100000000次的话,那么该次数
                                      值在2的26次方到2的27次方之间,所以采用27位宽*/
/*接下来严格按照明德扬代码编写规范,一个always中只一个输出信号。第一个always块用于编写计数器*/
always @(posedge clk or negedge rst_n)begin
if(rst_n == 1\'b0)begin
counter <= 0;
end
else if(counter == 27\'d99999999)begin /*时钟周期为50MHz,那么一个时钟周期就是1/50M=20ns,
那么若要实现延迟2s下一个灯亮的话,就要计数时钟周期100000000次。*/
counter <= 0;
end
else begin
counter <= counter+1;
end
end
//第二个always块用于编写流水灯
always @(posedge clk or negedge rst_n)begin
if(rst_n == 1\'b0)begin
led <= 4\'b0000;
end
else if(led == 4\'b0000 && counter == 99_999_999)begin
led <= 4\'b1111;
end
else if(counter == 99_999_999)begin
led <= led<<1;
end
end
endmodule


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
小程序上线 部分手机报错 thirdScriptError发布时间:2022-07-18
下一篇:
微信小程序生态的3个阶段发布时间:2022-07-18
热门推荐
    热门话题
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap