首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【FPGA实验】流水灯实验

【FPGA实验】流水灯实验

作者头像
zstar
发布2022-06-14 14:05:39
发布2022-06-14 14:05:39
61300
代码可运行
举报
文章被收录于专栏:往期博文往期博文
运行总次数:0
代码可运行

流水灯通常是硬件领域的”Hello World”,本次将使用正点原子的开拓者FPGA开发板来实现简单的流水灯。

Quartus Ⅱ芯片选择设置

Verilog代码

代码语言:javascript
代码运行次数:0
运行
复制
module flow_light(
    input               sys_clk  ,  //系统时钟
    input               sys_rst_n,  //系统复位,低电平有效
	 
    output  reg  [3:0]  led         //4个LED灯
    );

//reg define
reg [23:0] counter;

//*****************************************************
//**                    main code
//***************************************************** 
                                                                                                                                                                                                                         
//计数器对系统时钟计数,计时0.2秒
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        counter <= 24'd0;
    else if (counter < 24'd1000_0000)
        counter <= counter + 1'b1;
    else
        counter <= 24'd0;
end

//通过移位寄存器控制IO口的高低电平,从而改变LED的显示状态
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        led <= 4'b0001;
    else if(counter == 24'd1000_0000) 
        led[3:0] <= {led[2:0],led[3]};
    else
        led <= led;
end

endmodule 

这里注明一下0.2秒实现的思路: 开发板的时钟频率为50Hz,时钟周期是20ns,0.2s/20ns=10^7。 因此,计数器counter的值累加到10^7即为0.2秒。 通过计算器的程序员模式,可以查看10^7次方需要的寄存器位数。

因此,寄存器定义时就设定为24位。

管脚绑定

管脚绑定参照正点原子给的管脚图:

实验效果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Quartus Ⅱ芯片选择设置
  • Verilog代码
  • 管脚绑定
  • 实验效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档