欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    VHDL数码管动态扫描.docx

    • 资源ID:15231927       资源大小:311.53KB        全文页数:14页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VHDL数码管动态扫描.docx

    1、VHDL数码管动态扫描北 京 邮 电 大 学 数 电 实 验 报 告实验名称:数码管扫描显示控制器设计与实现 学 院: 信息与通信工程 姓 名: 班 级: 学 号: 班内序号: 一实验目的1.掌握VHDL语言的语法规范,掌握时序电路描述方法;2.掌握多个数码管动态扫描显示的原理和设计方法.二实验所用仪器及元器件1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板三实验任务及要求1.用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。2.用VHDL语言设计并实现六个数码管滚动显示电路。(选作)(1)循环滚

    2、动,始终点亮6个数码管,左出右进。状态为:012345123450234501345012450123501234012345四 实验设计思路及过程 1.实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此在同一时刻如果各位数码管的位选线都处于选通状态的话,6位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式

    3、,即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。总之,多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环一次点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大

    4、于50Hz,将看不到闪烁现象。6个数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象。2.设计思路设计时序电路,实验板上产生的时钟信号的频率为50MHz,频率过高,需要经过分频后才能满足电路的时延要求,所以需要经过一个分频器系数为2k的分频器,产生25kHz的扫描信号作为时钟,驱动计数器工作。选用模值为6的计数器,通过一个3线至6线译码器,产生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED点亮,同时产生对应的位段,将点亮的LED数码管赋值显示为相应的数码予以显示。由于扫描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。3.VHDL代码实验任务1:实现代码

    5、:(1)分频系数为2k的分频器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;entity div_2K isport(clk_in:in std_logic; clk_out:out std_logic);end div_2K; architecture a of div_2K issignal temp:integer range 0 to 1999;begin p1:process(clk_in)begin if clk_inevent and clk_in=1 then if temp=

    6、1999 then temp=0; else temp=temp+1; end if;end if;end process p1;p2:process(temp)begin if temp=1999 thenclk_out=1;elseclk_outCLK,clk_out=clk_tmp);P1:process(CNT6) BEGIN CASE CNT6 IS -3线至6线译码器 WHEN 0 = BT = 011111 ; A BT = 101111 ; A BT = 110111 ; A BT = 111011 ; A BT = 111101 ; A BT = 111110 ; A NUL

    7、L ; END CASE ; END PROCESS P1;P2:process(clk_tmp) BEGIN IF clk_tmpEVENT AND clk_tmp= 1 THEN -实现模6计数器 if CNT6 = 5 then CNT6 = 0; else CNT6 SG SG SG SG SG SGCLK,clk_out=clk_tmp);P1:process(CNT6) BEGIN CASE CNT6 IS -3线至6线译码器 WHEN 0 = BT = 011111 ; A BT = 101111 ; A BT = 110111 ; A BT = 111011 ; A BT =

    8、111101 ; A BT = 111110 ; A NULL; END CASE ;END PROCESS P1;P2:process(clk_tmp)BEGIN IF clk_tmpEVENT AND clk_tmp= 1 THEN -实现模6计数器 if CNT6= 5 then CNT6= 0; else CNT6=CNT6 + 1; end if; IF (FLAG = 6) THEN -设置标志 FLAG = 0; END IF; IF COUNT =4999 THEN -相当于另一个时钟 COUNT = 0; -计数周期为5000 FLAG =FLAG+1; -当记满5000时左

    9、移动一位 ELSE COUNT =COUNT+1; -不满5000继续计数 END IF;END IF; END PROCESS P2; P3:process(A,FLAG,FLAG_A)BEGIN FLAG_A SG SG SG SG SG SG NULL ; END CASE ;END PROCESS P3; END ACE;代码分析:代码主体和实验任务1中一致,基本思想也一致。为实现移位,关键改动为新增一个计数器,技术周期远远大于扫描周期,这样,在一个大的计数周期内,对于要显示的6位数码进行动态扫描(和实验任务1中相同),显示出6种移位状态中的一种;在下一个大的周期内,利用FLAG标志,

    10、并使用求余运算将显示位的数码移位,比如,大的计数周期为0时,FLAG为0,显示“012345”六位数码,大的周期为1时,FALG为1,此时各位求余(即FLAG_A求余)对应的数码为123450,显示的数码也就为“123450”。以此类推,实现循环移位。五仿真波形及分析 实验任务一:实验任务二(1):波形分析:实验任务一:由波形可见,随着时钟脉冲的不断增加,模为六计数的计数器不断重复,0至5号LED数码管依次打开,其余管熄灭,同时,数码管显示数字从0至5依次出现,两者保持同步,即n号管亮时显示的数码为n。这样每计数6次循环依次,可知仿真结果正确。当扫描速度很快时,人眼将能看到持续稳定的0至5号数

    11、码显示。在实验室实际测试时,下载到电路板测试成功,完成实验任务。实验任务二(1): 为了使仿真结果便于观察和打印,这里修改了COUNT值为20,也即在一个大的计数周期内,只扫描四遍(实际实现时需要动态扫描多次,如同实验任务1,产生稳定显示,只需把COUNT值加大即可)。由波形可见,随着大计数周期的增加,依次产生012345123450234501345012450123501234012345 (游标线每次所指的地方就是发生移位的开始周期),这样便实现了循环移位。实验室实测时,加大COUNT值为5000,观察到稳定持续的周期循环移位的数码显示,完成实验任务。六故障及问题分析1.刚开始着手做的时

    12、候,没有思路,后来沿着利用人眼的视觉暂留效应,结合书上的分析,才找到要利用分时显示的原理,在这过程中学会了思考问题解决问题的方法。2.在做仿真波形的时候由于刚开始把分频模块也加进去了,所以仿真波形很难设置,这样也很难观察出仿真结果的正确性,后来经过老师的指导和自己的摸索,原来只需将程序中的分频模块注释掉,将计数周期减小一点即可。3.没到实验室之前总是不太懂那个时钟信号是怎么加进去的,后来经过与同学讨论才明白实验板上已经有了时钟信号,我们下载的时候只需锁定引脚即可。4.在做实验任务二时,第一次下载后现实的时候,有闪烁的现象,后来把大的计数器周期改的大一些,就消除了闪烁的现象。七实验总结1.进行数

    13、字电路实验,理论分析是十分重要的一环,只有逻辑分析透彻无误了,才能用语言进行描述,进而用硬件实现。这次实验让我对VHDL这样一门硬件描述语言有了更加深刻的认识。语言是描述设计者逻辑思想的,有什么样的逻辑思维就会产生什么样的代码,换句话说,逻辑思维错误将直接导致描述错误,进而不能实现数字逻辑。应该着重优化逻辑思维,才能写出优秀的硬件代码。2.硬件描述语言的学习,不同于一般编程语言的描述,它没有汇编那样深入硬件最底层,但从硬件抽象出来的逻辑却与硬件密不可分。编写硬件描述代码,不仅要符合基本编程语言的规范,更应该时时刻刻联系实现功能的硬件,理解时序和组合的关系,理解同步和异步的差异,理解进程和信号的流程等等,这样才能使写出的代码效率更高。3.这学期开始了数字电路与逻辑设计课程,从理论课堂学习基本设计理论到实验课动测试数字电路参数、编写VHDL代码实现逻辑功能,我对数字电路设计与实现的基本思想方法有了初步的了解,为以后进一步的学习和应用到通信等系统打下了扎实的基础。八 参考文献1 数字电路与逻辑设计实验教程,北京:北京邮电大学电路中心,20112 刘培植等.数字电路与逻辑设计,北京:北京邮电大学出版社,2009


    注意事项

    本文(VHDL数码管动态扫描.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开