• 欢迎光临富优迪科技!
  • 设为首页 设为首页 收藏 收藏本站
  • 首页
  • 业界聚焦
  • 互联网络
  • 热点专题
  • 科技前沿
  • 风云人物
  • 媒体动态
  • 产业经济
  • 移动通信
  • 数码电子
  • 科技创新网_互联网科技资讯门户|电子|通信|数码|信息安全
    科技创新网 > 数码电子 >
  • 芯创电子手把手教你学习FPGA—数码管篇

  • 发布时间:2020-10-17 04:59
  • 4.09K
  •   2013 芯创电子 FPGA 开发板配套教程 手把手教你学习 FPGA—数码管篇 或许您可能听说过 FPGA, 但不是很了解; 或许您已经知道 FPGA 的 存在,但没有掌握这门技术;或许您打算在不久的将来对 FPGA 进 行初步尝试;不管怎样,只要您对 FPGA 感兴趣,那么就让我们一 起踏出通往 FPGA 世界的第一步,芯创电子手把手教你学习 FPGA。 芯创电子工作室 51FPGA 2013/3/3 芯创电子 FPGA 开发板配套教程 2013 目录 1 实验简介............................................................................................................................. 3 2.背景知识............................................................................................................................. 3 2.1.数码管基础知识 ...................................................................................................... 3 2.2.数码管简易测试方法 .............................................................................................. 6 2.3.DIY 开发板数码管电路图 ....................................................................................... 8 3.实验环境............................................................................................................................. 8 4.实验一(数码管静态显示) ............................................................................................. 8 4.1.实验目的.................................................................................................................. 8 4.2.试验任务.................................................................................................................. 9 4.3.原理分析.................................................................................................................. 9 4.4.代码实现.................................................................................................................. 9 4.5.实验步骤................................................................................................................ 10 4.6.实验现象................................................................................................................ 11 4.7.日积月累................................................................................................................ 11 4.8.总结和作业............................................................................................................ 13 5.实验二(数码管动态显示) ........................................................................................... 13 5.1.实验目的................................................................................................................ 13 5.2.试验任务................................................................................................................ 13 5.3.原理分析................................................................................................................ 13 5.4.代码实现................................................................................................................ 14 5.5.实验步骤................................................................................................................ 16 5.6.实验现象................................................................................................................ 17 5.7.日积月累................................................................................................................ 17 5.8.总结和作业............................................................................................................ 17 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 1 实验简介 本教程以实验为主,力求以详细的步骤和讲解让大家以最快的方式了解 FPGA 的开发的基本流程以及 Quartus II 软件的使用方法。数码管篇的实验 相对简单,为基础实验,希望通过对数码管篇的学习,大家能够掌握以下 知识要点: ? 熟悉和掌握 FPGA 开发的基本流程和 Quartus II 软件的基本使用方法。 ? 掌握数码管的基本原理。 ? 掌握数码管静态显示的基本原理和实现方法。 ? 掌握数码管动态显示的基本原理和实现方法。 2.背景知识 2.1.数码管基础知识 ? 数码管分类: 数码管是一种半导体发光器件,也称半导体数码管,它是将若干发光二 极管按一定图形排列并封装在一起的最常用的数码显示器件之一。LED 数码管具有发光显示清晰、响应速度快、耗电省、体积小、寿命长、耐 冲击、易与各种驱动电路连接等优点,在各种数显仪器仪表、数字控制 设备中得到广泛应用。 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码 管多一个发光二极管单元 (多一个小数点显示) 按能显示多少个 ; “8” 可分为 1 位、2 位、3 位、4 位等等数码管,如下图 1 所示; 按发光 二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管 是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管, 共阳数码管在应用时应将公共极 COM 接到+5V,当某一字段发光二极 管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平 时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到 一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时, 相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。 图 1 LED 数码管实物外形图 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 ? 数码管结构及特点: 目前,常用的小型 LED 数码管多为“8”字形数码管,它内部由 8 个发光二 极管组成,其中 7 个发光二极管(a~g)作为 7 段笔画组成“8”字结构 (故也称 7 段 LED 数码管) ,剩下的 1 个发光二极管(h 或 dp)组成小 数点, 如图 2 (a) 所示。 各发光二极管按照共阴极或共阳极的方法连接, 即把所有发光二极管的负极(阴极)或正极(阳极)连接在一起,作为 公共引脚; 而每个发光二极管对应的正极或者负极分别作为独立引脚 (称 “笔段电极”,其引脚名称分别与图 2(a)中的发光二极管相对应,即 ) a、b、c、d、e、f、g 脚及 h 脚(小数点) ,如图 2(b)所示。若按规定 使某些笔段上的发光二极管发光, 就能够显示出图 2 (c) 所示的“0~9”10 个数字和“A~F”6 个字母,还能够显示小数点,可用于 2 进制、10 进制 以及 16 进制数字的显示,使用非常广泛。 图 2(a)结构图 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 图 2(b)电路图 图 2(c)显示符 常用小型 LED 数码管是以印制电路板为基板焊固发光二极管, 并装入带有显示窗 口的塑料外壳, 最后在底部引脚面用环氧树脂封装而成。 由于 LED 数码管的笔段 是由发光二极管组成的, 所以其特性与发光二极管相同。 数码管的主要特点: LED 能在低电压、小电流条件下驱动发光,并能与 CMOS、TTL 电路兼容;它不仅发 光响应时间极短(<0.1μs) 、高频特性好、单色性好、亮度高,而且体积小、重 量轻、抗冲击性能好、使用寿命长(一般在 10 万小时以上,最高可达 100 万小 时) 、成本低。 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 2.2.数码管简易测试方法 一个质量保证的 LED 数码管,其外观应该是做工精细、发光颜色均匀、 无局部变色及无漏光等。对于不清楚性能好坏、产品型号及管脚排列的数码 管,可采用下面介绍的简便方法进行检测。 ? 干电池检测法。 如图 3 (a) 所示, 取两节普通 1.5V 干电池串联 (3V) 起来, 并串联一个 100Ω、 1/8W 的限流电阻器,以防止过电流烧坏被测 LED 数码管。将 3V 干电池的负 极引线(两根引线均可接上小号鳄鱼夹)接在被测数码管的公共阴极上,正 极引线依次移动接触各笔段电极(a~h 脚) 。当正极引线接触到某一笔段电 极时, 对应笔段就发光显示。 用这种方法可以快速测出数码管是否有断笔 (某 一笔段不能显示)或连笔(某些笔段连在一起) ,并且可相对比较出不同的 笔段发光强弱是否一致。若检测共阳极数码管,只需将电池的正、负极引线 对调一下,方法同上。 如果将图 3(a)中被测数码管的各笔段电极(a~h 脚)全部短接起来,再 接通测试用干电池,则可使被测数码管实现全笔段发光。对于质量保证的数 码管,其发光颜色应该均匀,并且无笔段残缺及局部变色等。 如果不清楚被测数码管的结构类型(是共阳极还是共阴极)和引脚排序,可 从被测数码管的左边第 1 脚开始,逆时针方向依次逐脚测试各引脚,使各笔 段分别发光,即可测绘出该数码管的引脚排列和内部接线。测试时注意,只 要某一笔段发光,就说明被测的两个引脚中有一个是公共脚,假定某一脚是 公共脚不动,变动另一测试脚,如果另一个笔段发光,说明假定正确。这样 根据公共脚所接电源的极性,可判断出被测数码管是共阳极还是共阴极。显 然,公共脚如果接电池正极,则被测数码管为共阳极;公共脚如果接电池负 极,则被测数码管应为共阴极。接下来测试剩余各引脚,即可很快确定出所 对应的笔段来。 图 3(a)干电池检测法 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 ? 万用表检测法。 这里以 MF50 型指针式万用表为例, 说明具体检测方法: 首先, 按照图 3 (b) 所示,将指针式万用表拨至“R×10k”电阻挡。由于 LED 数码管内部的发光二 极管正向导通电压一般≥1.8V,所以万用表的电阻档应置于内部电池电压是 15V(或 9V)的“R×10k”挡,而不应置于内部电池电压是 1.5V 的 “R×100”或 “R×1k”挡, 否则无法正常测量发光二极管的正、 反向电阻。 然后, 进行检测。 在测图 3(b)所示的共阴极数码管时,万用表红表笔(注意:红表笔接表内 电池负极、黑表笔接表内电池正极)应接数码管的“-”公共端,黑表笔则分别 去接各笔段电极(a~h 脚) ;对于共阳极的数码管,黑表笔应接数码管的“+” 公共端,红表笔则分别去接 a~h 脚。正常情况下,万用表的指针应该偏转 (一般示数在 100kΩ 以内) ,说明对应笔段的发光二极管导通,同时对应笔 段会发光。 若测到某个管脚时, 万用表指针不偏转, 所对应的笔段也不发光, 则说明被测笔段的发光二极管已经开路损坏。与干电池检测法一样,采用万 用表检测法也可对不清楚结构类型和引脚排序的数码管进行快速检测。 2013 图 3(b)万用表检测法 以上所述为 1 位 LED 数码管的检测方法,至于多位 LED 数码管的检测,方法 大同小异,不再赘述。 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 2.3.DIY 开发板数码管电路图 通过原理图可以看出, 与FPGA引脚相连的位选DIG0-DIG7, 如果分别输出低电平, 则相应的三极管导通,与数码管的位选端口将呈现高电平,而此时只要数码管的 A-G设置低电平,则相应位的相应段被点亮。 3.实验环境 ? 硬件实验环境为 EEPW FPGA 开发板 DIY 活动套件 ? 软件实验环境为 Quartus II9.0 开发软件 4.实验一(数码管静态显示) 4.1.实验目的 ? 掌握数码管静态显示的基本原理和实现方法。 ? 掌握采用 Verilog HDL 语言编程实现 7 段数码管显示译码器的方法。 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 4.2.试验任务 本试验的任务是实现开发板上的数码管静态循环显示 0~F。 4.3.原理分析 数码管 LED 显示是工程项目中使用较广的一种输出显示器。 常见的数码 管有共阴和共阳两种。DIY 开发板上采用的是共阳极数码管,共阳数码 管就是 8 个发光二极管的阳极连接在一起作为公共端。公共端常称为位 码,而将其他八位称为段码。本实验先将板载 50M 时钟源进行分频,输 出 1HZ 频率的脉冲信号, 然后将分频后的频率作为四位计数器的使能信 号,使其计数以 1S 间隔循环输出 0~F,最后经 Verilog HDL 编写的译码 模块译码后显示于数码管上。 4.4.代码实现 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 4.5.实验步骤 (1)建立新工程项目: 打开 Quartus II 软件,进入集成开发环境,点击 File→New project wizard 建立一个工程项目。 (2)建立文本编辑文件: 点击 File→New..在该项目下新建 Verilog HDL 源程序文件, 输入试验程 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 按钮启动编译,若在编译 序中的源程序代码保存后选择工具栏中的 中发现错误,则找出并更正错误,直到编译成功为止。 (3)选择器件型号及引脚的其他设置: 选择所用的 FPGA 器件----EP2C5Q208C8, 以及进行一些配置。 选择配置 器件 EPCS4,设置不需要使用的 IO 功能为 As inputs,tri-stated。点击两 次 ok,回到主界面。 (4)配置 FPGA 引脚: 在 Quartus II 软件主页面下,选择 Assignments→Pins 或选择工具栏上 按钮,配置相关引脚。 (5)编译工程项目: 在 Quartus II 主页面下,选择 Processing→Start Compilation 或点击工具 栏上的 OK 即可。 (6)下载设计程序.sof 文件到目标 FPGA,下载采用 JTAG 方式(由于配置芯片 擦写次数有限,实验均采用 JTAG 下载方式) 。 按钮启动编译,直到出现“Full Compilation Report”对线.实验现象 DIY 开发板上的 8 个数码管循环显示 0~F,由于数码管静态显示占用较 多的 IO 口,且功耗较大,因此在大多数场合通常不采用静态显示,而采 用动态扫描的方法来控制数码管显示,即数码管动态显示。下次试验将 介绍实现数码管动态显示的方法。 4.7.日积月累 阻塞和非阻塞语句作为 verilog HDL 语言的最大难点之一,一直困扰着 FPGA 设计者,即使是一个颇富经验的设计工程师,也很容易在这个点上 犯下一些不必要的错误。阻塞和非阻塞可以说是血脉相连,但是又有着 本质的差别。理解不清或运用不当,都往往会导致设计工程达不到预期 的效果,而其中的错误又很隐晦。下面我给大家谈谈阻塞和非阻塞语句 的本质区别和在 FPGA 设计中的不同运用。 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 ? 阻塞语句 顾名思义, 即本条语句具有影响下一条语句的作用, 在同一个进程 always 中, 一条阻塞赋值语句的执行是立刻影响着下条语句的执行情况和结果。 如果该条语句没有执行完, 那么下条语句不可能进入执行状态的, 因此, 从字面层上理解,该条语句阻塞了下面语句的执行。阻塞语句最能体现 verilog HDL 和 C 语言之间的血缘关系,比如,在时钟沿触发的 always 进 程里, 若先执行 b=c, 再执行 a=b, 那么本质上, 在一个时钟沿触发里面, a=c 成立, 即是说, 不要 b 变量, 直接在进程里赋值 a=c, 结果是一样的。 这和 c 语言中 b=c,a=b 性质相同。 ? 非阻塞语句 非阻塞语句应该来说,更能体现硬件电路的特点。这正是非阻塞语句广 泛应用于时序逻辑电路的原因。接上面的例子,如果在一个时钟沿触发 的 always 进程里面,b=c,a=b 那么就不可能直接在进程里面赋值 a=c. 因为 c 的值要经过两个时钟延迟才传到 a 里面, c 若从 0 变为 1, 即 那么 要经过两个 clk 上升沿才传到 a,a 的值才从 0 变为 1。两次赋值正是体 现了两个时钟延迟的特点。这种特点即是非阻塞语句非阻塞的的原因导 致的,就是说,a=b,不会因为 b=c 没有执行完毕而不执行,只要时钟 触发进程,那么 a=b,b=c 同时执行。所以,如果 c 为 1,b 为 0,a 为 1 的话,那么在在非阻塞语句的进程里面,一个时钟沿到来,由于他们 之间是同时执行的,所以把 c 的 1 赋给了 b,把 b 的 0 赋给了 a,但是在 阻塞语句里面,c 的 1 先给了 b,然后 b 把新赋值的 1 又给了 a,那么 a 在一个时钟之后即变成了 1。(在一次触发进程里,无论是阻塞和非阻塞 语句,每条语句只能执行一次)。 所以从上面的介绍里面,可以看出,阻塞语句是顺序执行的,而非 阻塞语句是同时执行的,那么,如何在设计里面运用好阻塞语句和非阻 塞语句呢,总体上来讲,遵循大体原则:阻塞语句运用在组合逻辑电路 设计里面,非阻塞语句运用在时序逻辑电路设计里面。但是一般来讲, 一个设计往往包含着组合逻辑和时序逻辑。 推荐可综合编码风格的 verilog HDL 阻塞赋值和非阻塞赋值的编程 的八个原则: ? 当为时序逻辑建模,使用“非阻塞赋值”。 ? 当为锁存器(latch)建模,使用“非阻塞赋值”。 ? 当用 always 块为组合逻辑建模,使用“阻塞赋值” ? 当在同一个 always 块里面既为组合逻辑又为时序逻辑建模, “非 使用 阻塞赋值”。 ? 不要在同一个 always 块里面混合使用 “阻塞赋值”“非阻塞赋值” 和 。 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 ? 不要在两个或两个以上 always 块里面对同一个变量进行赋值。 ? 使用$strobe 以显示已被“非阻塞赋值”的值。 ? 不要使用#0 延迟的赋值。 2013 4.8.总结和作业 总结:通过本实验我们应掌握数码管静态显示的基本原理及实现方法。 课后作业:利用拨码开关控制数码管进行八进制数字显示。即拨动 SW1,数码管 显示 1,以此类推,拨动 SW8,数码管显示 8。 5.实验二(数码管动态显示) 5.1.实验目的 ? 掌握数码管动态显示的基本原理和实现方法。 ? 掌握采用 Verilog HDL 语言编程实现 7 段数码管显示译码器以及数码管 动态扫描显示的方法。 5.2.试验任务 实现 DIY 开发板上 8 个数码管动态显示 0~7。 5.3.原理分析 由于LED静态显示需要占用较多的I/O口,且功耗较大,因此在大多数场合通 常不采用静态显示,而采用动态扫描的方法来控制LED数码管的显示。动态 显示的特点是将所有位数码管的段选线并联在一起, 由位选线控制是哪一位 数码管有效。点亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各 位数码管送出字形码和相应的位选,只要扫描显示速度够快,利用发光管的 余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态 显示的亮度比静态显示要差一些, 所以在选择限流电阻时应略小于静态显示 电路中的。 动态扫描显示时刷新频率最好大于50HZ,即每显示一轮的时间不 超过20ms,每个数码管显示时间不能太长也不能太短,时间太长会影响刷新 率,导致总体显示呈现闪烁的现象,时间太短发光二极管的电流导通时间也 就短,会影响总体的显示亮度。一般控制在1ms左右最佳。 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 5.4.代码实现 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 2013 5.5.实验步骤 (1)建立新工程项目: 打开 Quartus II 软件,进入集成开发环境,点击 File→New project wizard 建立一个工程项目。 (2)建立文本编辑文件: 点击 File→New..在该项目下新建 Verilog HDL 源程序文件, 输入试验程 序中的源程序代码保存后选择工具栏中的 按钮启动编译,若在编译 中发现错误,则找出并更正错误,直到编译成功为止。 (3)选择器件型号及引脚的其他设置: 选择所用的 FPGA 器件----EP2C5Q208C8, 以及进行一些配置。 选择配置 器件 EPCS4,设置不需要使用的 IO 功能为 As inputs,tri-stated。点击两 次 ok,回到主界面。 (4)配置 FPGA 引脚: 淘 宝 店 铺 : 芯创电子 FPGA 开发板配套教程 在 Quartus II 软件主页面下,选择 Assignments→Pins 或选择工具栏上 按钮,配置相关引脚。 (5)编译工程项目: 在 Quartus II 主页面下,选择 Processing→Start Compilation 或点击工具 栏上的 OK 即可。 (6)下载设计程序.sof 文件到目标 FPGA,下载采用 JTAG 方式(由于配置芯片 擦写次数有限,实验均采用 JTAG 下载方式) 。 按钮启动编译,直到出现“Full Compilation Report”对线.实验现象 DIY 开发板 8 个数码管动态显示 0~7。 5.7.日积月累 建立硬件意识,要明白的是软件设计和逻辑设计的不同,并理解什么是 硬件意识。软件代码的执行是一个顺序的过程,编绎以后的机器码放在 存储器里,等着 CPU 一条一条的取指并执行;因此软件设计中经常会带 有顺序处理的思维。而逻辑设计则不同,我们设计的是数字电路,它是 由很多很多的与非门及 D 触发器构成的,上电之后所有与非门和 D 触发 器都同时工作, 不会因为 A 触发器的代码描述在 B 触发器之前 A 触发器 就是先工作,事实上,RTL 级代码的代码先后顺序在综合成网表文件后 这种顺序就消失了,取代的是基本逻辑电路之间的互联关系描述;因此 逻辑设计需要的是一种并发的思维,我们也需要用并发的思维去考虑电 路的设计。当然,我们设计的电路功能一般都有先后顺序的关系,如果 这种顺序不能通过代码的先后顺序来实现,那么要怎么完成这一功能呢? 在逻辑设计中,我们所说的先后顺序都是基于时间轴来实现:它的承载 体就是时序逻辑,也就是那些触发器。 5.8.总结和作业 ? 总结: 回想一下我们通过这个实验学会了什么?采用 Verilog HDL 语 言编程实现 7 段数码管显示译码器以及数码管动态扫描显示的方法 你应该学会了吧! ? 课后作业:设计一个模为 60 的计数器,计数结果动态显示在两个数 码管上。 淘 宝 店 铺 :

    上一篇:编程在4个七段LED数码管上显示1234
    下一篇:数码管百科_电子发烧友网
  • 图说天下
    首页 | 免责声明 | 业界聚焦 | 互联网络 | 热点专题 | 科技前沿 | 风云人物 | 媒体动态 | 产业经济 | 移动通信 | 数码电子 |
  • Copyright©2008-2018 富优迪科技(www.fudsi.com)版权所有 All rights reserved
    本站部分文章、图片源自网络或网友自主发布,不代表本站观点,如有版权问题请及时联系我们删除。