logo资料库

7段数码管译码器设计与实现.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
实验二 7段数码管译码器设计与实现 [实验目的] 熟悉 VHDL 语言的语法规范 了解模块之间的连接 [重点和难点] VHDL 语言中 port map 的使用 模块化设计方法 [设备器材] 稳压电源 万用表 示波器 计算机 实验板一块 Quartus II 4.1 Syplify8.1 [预习思考题] 1) 仔细阅读下面的[相关知识]介绍,怎样在本次设计里面体现出 顶层设计和底层设计(解释一下你的功能划分和端口定义)? 2) 为了控制实验板上的数码管,我们需要定义哪些端口? 3) 要使数码管 DISP6 点亮,控制端口应该怎样控制? [实验内容] 用 VHDL 描述7段数码管译码器,完成编译、仿真和下载。
要求: 1) 输入为一个四位二进制数,使用拨码开关 SW1、SW2、SW3 和 SW4 表示,其中 SW1 是最高位,SW4 是最低位,并使用 发光二极管 LD1、LD2、LD3 和 LD4 显示这四位二进制数, LD1 是最高位,LD4 为最低位,亮表示‘1’,不亮表示‘0’。 2) 输出为0~9这10个数码管图形,在数码管 DISP6 上显示。 具体编码方式可以参考下面的表格。注意:这里的 0 (10) 9~ (10) 为 十进制表示,对应着二进制的 0000 (2) ~ 1001 (2) 3) 对于二进制的1 010 (2) ~ 1111 (2) 这6个状态要求数码管什么都不 显示,处于全灭的状态。 [相关知识] 1) 7段数码管结构如图所示: 每一段都是一个发光二极管,它们的负极全部连接到一 起,所以叫共阴极(Common cathode)。我们开发板上的 CAT 就是阴极的缩写。 如(c)图所示,当需要用7段数码管显示数字时,我们 只需要点亮某些二极管即可,这是0~9通常的显示模式。
图(d)是每个字符对应的管脚输入值。 通常7段数码管还有一个小数点显示,所以它的输入端有 8个,设计时要注意是否需要点亮小数点。 在实验板上我们用 AA,AB,AC,AD,AE,AF,AG, AP 分别表示 a,b,c,d,e,f,g,p。 实验板上有6个7段数码管,它们的8个输入端(a~g 和 p)都是并联在一起的,共阴极是分开的(CAT1~CAT6)。我 们需要点亮某个数码管只需要给对应的 CATn 置‘0’即可。 注意6个 CAT 端不允许同时出现一个以上‘0’。 所以我们的设计里,输出管脚除了数据端(a~g 和 p)外 还应有6个控制端(CAT1~CAT6),并且必须保证6个控制端 上的数据在任意时刻只有一个为 0。 有兴趣的同学想想,怎样利用这个硬件特点,在不同位置 显示不同的数(不要求同时显示)。 2) 我们一般把具体实现叫做顶层设计,在这一层次主要考虑需要
用到多少 IO 口;对于这些 IO 口的信号的处理模块我们叫做底 层设计,例如各种译码模块。 一般我们写好一个译码模块后,不必要每次在新的设计里 面都加入这个 process,而是把它做成一个独立的文件,今后 直接使用这个独立的文件(事先要用 component 定义),用 port map 关键字给实例化。 这样能够保证设计的一致性,只要修改一个底层设计文件, 所有用到这个底层设计文件的顶层设计在重新编译后就都会 使用新的设计了。 更进一步,可以使用 package 来打包,这样连 component 定义都可以省去,通过 use 语句加入自己的包之后就能够直接 port map 了。 3) 在模块例化中使用名称符号,不要用位置符号,便于检查错误。 在完成了前面基本实验要求后,才可以选择下面的扩展实验 [扩展实验] 1) 7段数码管输入端改为第一次实验的2位加法器的结果。由于 2位加法器的结果也是2位,而7段数码管输入端是4位的, 所以需要扩展2位加法器的输出,构成4位宽度才能够连接到 译码器输入端。 注意,2位加法器模块和7段数码管显示模块都不能再进 行改动,而是直接使用。用一个顶层设计把它们包括进去。
分享到:
收藏