LED灯闪烁例程讲解

若要观看该博客配套的视频教程,可点击此链接

根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤。比如非常简单的项目,我们可以省去虚线框里面的步骤,但是我们的入门级课程,即使再简单,也按照这12个步骤来进行讲解。

1. 需求解读

1.1 需求

实现LED灯(D2)间隔1秒闪烁1次

1.2 知识背景

LED灯简介
LED,又名发光二极管。 LED灯工作电流很小(有的仅零点几毫安即可发光) , 抗 冲击和抗震性能好,可靠性高,寿命长。由于这些优点, LED灯被广泛用在仪器仪表 中作指示灯、 液晶屏背光源等诸多领域。不同材料的发光二极管可以发出红、 橙、 黄、 绿、 青、蓝、 紫、白这八种颜色的光。 如下图所示:

图2.插件LED灯 这种二极管长的一端是阳极,短的那端是阴极。 开发板上板载的是贴片LED灯,实物 如下图所示:

图3.贴片LED灯 贴片发光二极管的正面一般都有颜色标记,有标记的那端就是阴极。发光二极管与普通二极管一样具有单向导电性。 给它加上阳极正向电压后,通过 5mA左右的电流就可以使二极管发光。 通过二极管的电流越大, 发出的光亮度越强。 不过我们一般将电流限定在3~20mA之间,否则电流过大就会烧坏二极管。

1.3 硬件设计


图4.LED灯原理图及PCB

图5.有源晶振

图6.按键电路

发光二极管的原理图如上图4所示, LED1到LED8这8个发光二极管的阳 极都连到3.3V上, 阴极分别与FPGA相应的管脚相连。原理图中LED与地 之间的电阻起到限流作用。通过原理图我们可以看出,LED1与FPGA的管脚 L12相连。在PCB图或实物上我们都标注出了管脚号,所以在绑管脚的时候 可以不用看原理图,直接看板上的丝印就可以,如上图PCB图所示。我们只 点亮一个LED灯(LED1),那我们只用关心LED1的管脚号(L12)。当管脚L12 输出低电平时,LED灯便有电流流过,驱动LED灯发光,如果L12输出高电 平,LED灯没有电流流过,LED不发光。

1.4 接口说明

信号名 方向 FPGA管脚号 说明
LED0 输出 L12 与LED灯相连,低电平LED灯亮
CLK50M 输入 B10 时钟信号,50MHZ
KEY1 输入 E4 独立按键,按下低电平,当作复位使用

总结:通过上述说明,可以将需求解读成,只要将FPGA的L12管脚置为低 电平(500ms),即可以点亮D2这个LED灯500ms,然后再将L12管脚置为 高电平(500ms),即可以让D2这个LED灯熄灭500ms,如此循环,便实现 了1秒闪烁1次的效果。

2. 绘制理论波形图

clk是50Mhz时钟,一个周期就是20ns,1秒=1000000000ns,1秒是50000000个时钟周期,500ms=25000000个时钟周期。

3.新建TD工程

为了让工程看起来整洁,同时方便工程移植。我们新建4个文件夹,分别是Project,Source,Sim,Doc。
Project — 工程文件夹,里面放的TD工程
Source — 源代码文件夹,里面放的工程源码(.v文件或.vhd文件)
Sim — 仿真文件夹,里面放的仿真相关的文件
Doc — 存放相关资料,比如数据手册,需求文档等

4.编写代码

 ///
//QQ:3181961725
//TEL/WX:13540738439
//作者:Mr Wang
//模块介绍:实现LED灯(D8)间隔1秒闪烁1次
///
module led_ctrl(input       clk     ,//时钟,50MHZinput     rst_n   ,//复位,低电平有效output    reg led      //LED灯控制信号);parameter  time_500m=25000000;//500ms//为了缩短仿真时间,减小了参数值,仅仅用于仿真//parameter    time_500m=2500;//500msreg  [24:0] cnt;always@(posedge clk or negedge rst_n)beginif(!rst_n)cnt<=0;else if(cnt==time_500m-1)cnt<=0;elsecnt<=cnt+1;endalways@(posedge clk or negedge rst_n)beginif(!rst_n)led<=1;else if(cnt==time_500m-1)led<=~led;else;end
endmodule

5.编写仿真测试激励文件

 ///
//QQ:3181961725
//TEL/WX:13540738439
//作者:Mr Wang
`timescale 1ns/1ns
module led_ctrl_tb;reg  clk;reg rst_n;initialbeginclk=0;rst_n=0;//生成复位激励信号#1000rst_n=1;//生成复位激励信号end//生成时钟激励信号always #10 clk<=~clk;//例化被仿真模块led_ctrl Uled_ctrl(.clk      (clk    ),.rst_n        (rst_n  ),.led        (     ));
endmodule

仿真时,我们主要关心的是输入端口,在led_ctrl这个模块中,有两个输入端口, rst_n,clk,所以,我们在仿真测试文件编写时,就是给这两个端口灌入激励信号。

6.Modelsim仿真

这个例程非常简单,只用了一条语句,所以不需要仿真验证。但是为了给大家演示一个完整的开发流程,这个实验我们也新建一个仿真工程,从最简单的一个代码开始教大家如何编写仿真激励文件以及如何使用Modelsim软件进行仿真。将第三步编写的源码和第四步编写的仿真测试激励文件一起加入到Modelsim仿真工程中,即可进行仿真观察波形。
Modelsim仿真一般有两种方法

  1. 图形化界面仿真,即所有的操作都是在Modelsim软件界面上来完成,该方式的优点是,简单易学,适用于简单的项目,缺点是操作步骤繁琐。

  2. 批处理仿真,这种方式在仿真前需要编写相应的脚本文件,该方式的优点是,一键即可完成仿真,省时省力,缺点是前期需要编写脚本文件。为了让大家所学的能够很快的应用到工程实践,仅仅第一个实验和第二个实验,采用图形化界面仿真,后面的实验均采用批处理方式仿真。

图形化界面仿真步骤:
1.新建工程,file–>new–>Project

2.填写工程名以及指定仿真工程存放路径

3.添加文件,源文件和仿真激励文件
4.编译
5.开始仿真

6.添加观测信号

7.中断仿真

8.输入运行命令,run+仿真时间

到此,我们就可以在波形窗口观察到仿真信号的电平状态。
当我们改变了源码,又需要从第4步开始操作一次。
仿真出的波形如下图所示:

7.对比波形图

将第二步绘制的理论波形图与第六步Modelsim仿真出来的波形图进行对比,结果一致,说明我们的逻辑设计是正确的。如果发现比对结果不一致,就需要找到不一致的原因,最终要保证对比结果一致。
通过对比,理论波形与仿真波形一致,说明功能符合设计要求。

8 添加.v文件

9 绑定管脚并保存约束文件(.adc)


10 编译综合生成BIT文件

11.下载BIT文件


下载成功后,便可以观察到开发板上的实验现象,如果实验现象与设计需求相符,那说明我们的设计是没有问题的,即可进行下一步固化配置文件。

12 固化配置文件

FPGA有一个特性,就是掉电后配置信息会丢失,所以我们需要将配置信息存储在配置芯片(FLASH)中,待开发板上电后,FPGA便会读取配置芯片中的配置信息,这样开发板掉电再上电后同样可正常工作

固化成功后,开发板断电再重新上电,可以观察到开发板仍然可以执行刚刚的功能。

实验现象

与FPGA管脚L12相连的LED灯实现1秒闪烁1次的效果,符合设计要求,设计完成!

【小月电子】安路国产FPGA开发板系统学习教程-LESSON2 LED灯闪烁相关推荐

  1. 【小月电子】安路国产FPGA开发板系统学习教程-LESSON3 LED流水灯

    LED流水灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们 ...

  2. 【小月电子】安路国产FPGA开发板系统学习教程-LESSON1点亮LED灯

    点亮LED灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们 ...

  3. 【小月电子】安路国产FPGA开发板系统学习教程-LESSON10无源蜂鸣器驱动

    无源蜂鸣器驱动实验例程讲解 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们可以省去虚线框里面的步骤,但是我们的入 ...

  4. 【小月电子】安路国产FPGA开发板系统学习教程-LESSON7串口通信

    串口通信例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们可以 ...

  5. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON3 LED流水灯

    LED流水灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去 ...

  6. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON10无源蜂鸣器驱动

    无源蜂鸣器驱动实验例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如 ...

  7. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON12 IPCORE核之FIFO详细教程

    ALTERA FPGA IPCORE核之FIFO详细教程 若要观看该博客配套的视频教程,可点击此链接 一. FIFO简介 FIFO: 是英文first in first out的缩写,即先进先出,指的 ...

  8. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON4数码管静态显示

    数码管静态显示例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省 ...

  9. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON7串口通信

    串口通信例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中 ...

最新文章

  1. Git2.29让Git成功“牵 手”Gerrit
  2. 【思考】PHP——成也Web,败也Web
  3. matlab 病态方程组,数值分析(Hilbert矩阵)病态线性方程组的求解Matlab程序
  4. CentOS下安装JDK完整步骤
  5. infopath 小结
  6. oracle手动 建库_Oracle Create the Database for 11g(手动创建数据库)
  7. 什么叫python设计模式_什么是Python设计模式
  8. web前端(八)——ajax与jsonp
  9. js正则替换html字符串,js正则找出字符串的内容,并替换内容
  10. Js判断当前浏览者的操作系统
  11. MFC如何正常关闭一个程序
  12. Solidworks 课程大纲(虎课网)
  13. 怎么取消linux ssh互信,[系统-linux] ssh互信操作
  14. [转]抽象基类与接口,共性与个性的选择!
  15. mac linux 笔记
  16. Gson:GitHub 标星 18K 的 JSON 解析器,Google 出品的 Java JSON 解析器,强烈推荐!
  17. 基于ACF多通道特征的人脸检测——从原理到实现
  18. 数字音乐生财:月入10万不是梦
  19. 如何从0到1搭建一个个人网站
  20. Ae 效果详解:湍流置换

热门文章

  1. 设计模式案例代码之适配器模式
  2. android file.renameto 不成功,android – File.renameTo()返回true,但文件尚未重命名
  3. 【Unity问题】当Unity导出文件不完整怎么办
  4. STM32之中断方式实现串口通信
  5. 被动抓病毒的日子(1)【入侵大佬:198.46.202.146】 一种针对Linux服务器疑似挖矿病毒流入
  6. 图像入门——3. 图像处理的视觉基础与应用
  7. 摇杆控制舵机(云台)
  8. 公司业务宾馆开房均被直播 360:是否开启取决于商家
  9. 什么是柔性制造?相比传统的生产有什么特点?
  10. 使用 GPU 渲染元素 问题