【FPGA实验】流水灯实验

举报
zstar 发表于 2022/08/06 01:20:56 2022/08/06
【摘要】 流水灯通常是硬件领域的”Hello World”,本次将使用正点原子的开拓者FPGA开发板来实现简单的流水灯。 Quartus Ⅱ芯片选择设置 Verilog代码 module fl...

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

Quartus Ⅱ芯片选择设置

请添加图片描述

Verilog代码


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 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

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

管脚绑定

管脚绑定参照正点原子给的管脚图:
在这里插入图片描述

实验效果

请添加图片描述

文章来源: zstar.blog.csdn.net,作者:zstar-_,版权归原作者所有,如需转载,请联系作者。

原文链接:zstar.blog.csdn.net/article/details/120984624

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。