用户工具

站点工具


icore4tfpga_14
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-03-02 gingko 初次建立

实验十四:计数器实验——呼吸灯

一、 实验目的与意义

  1. 掌握计数器原理及实现方法。
  2. 掌握QuartusII的使用方法。

二、 实验设备及平台

  1. iCore4T 双核心板。点击购买
  2. Blaster(或相同功能)仿真器。点击购买
  3. Micro USB线缆。
  4. Keil MDK 开发平台。
  5. Quartus开发平台。
  6. 电脑一台。

三、 实验原理

  • 计数器是实现计数的一种最基本的加法运算。在FPGA中计数器的实质其实就是驱动参考时钟进行计数,每当触发事件到来,计数器参数实现自加,到某个状态进行清零操作。FPGA中常用计数器实现时钟分频、定时器、延时、计数、控制等功能,是FPGA实现功能中常用的一种逻辑电路。

四、 代码讲解

  • 本实验是通过计数器实现一个周期为1s的定时器,然后通过定时器产生的信号作为触发事件控制led电平高低切换,实现led的闪烁功能。驱动参考时钟为25MHz,也就是说时钟周期为40ns,1s的周期需要25000000个时钟周期,因此定时器的计数器需要在25000000个周期时进行清零操作。其代码如下:
/*************************************************/
//利用计数器实现一个定时器,定时为1s
    reg [31:0]time_cnt;
 
    always@(posedge clk_25m or negedge rst_n)
        begin
            if(!rst_n)
                begin
                    time_cnt <= 32'd0;
                end
            else
                begin
                    if(time_cnt==32'd24999999)
                        begin
                            time_cnt <= 32'd0;///计数器清零
                        end
                    else
                        begin
                            time_cnt <= time_cnt + 1'd1;//计数器自加1
                        end
                end
        end
 
    wire time_sig = (time_cnt==32'd24999999) ? 1'd1 : 1'd0;//定时器信号

五、 实验步骤及实验结果

图14.1

  1. 将硬件正确连接,如图14.1所示。
  2. 将编写好的代码进行编译,并下载到开发板中;
  3. 观察实验现象——FPGA_LED闪烁,间隔1s。

六、 拓展实验

  1. 通过Signaltap观察定时信号与定时计数器之间的关系。
icore4tfpga_14.txt · 最后更改: 2022/04/01 11:02 由 sean