CASE H IS
WHEN 0 => SG <=\WHEN 2 => SG <=\WHEN 4 => SG <=\WHEN 6 => SG <=\WHEN 8 => SG <=\WHEN 10 =>SG <=\WHEN 12 =>SG <=\WHEN 14 =>SG <=\WHEN OTHERS => NULL; END CASE; END PROCESS P3; END;
2、分频器VHDL设计程序: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpinq IS PORT(V:IN STD_LOGIC; X:OUT STD_LOGIC); END fenpinq ;
ARCHITECTURE one OF fenpinq IS SIGNAL F:STD_LOGIC:='0';
SIGNAL R:STD_LOGIC_VECTOR(13 DOWNTO 0):=\BEGIN PROCESS(V) BEGIN
IF(V'EVENT AND V='1') THEN IF(R/=4999) THEN R<=R+1; ELSE F<=NOT F;
R<=(OTHERS =>'0'); END IF; END IF; END PROCESS; X<=F; END one ;
原理图:
仿真结果
为了让结果可见,采用十分频: (1)分频器波形:
(2)仿真波形
三、结论:
采用扫描方式实现LED数码管的动态显示是,控制好数码管之间的时间延时是很重要的,根据人眼视觉暂留原理,LED数码管每秒导通16次以上,人眼就无
法分辨LED数码管短暂的不亮,认为一直点亮的。
动态扫描显示方式是利用人眼的视觉暂留效应,把8个数码管按一定顺序(从左至右或者从右至左)进行点亮。然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。因此我们只要给数码管这样一个扫描频率,就可以实现两个以上的数码管同时点亮。而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。
四、心得体会:
通过此次动态扫描电路的设计,我们进一步学习了VHDL基本逻辑电路的综合设计应用,掌握VHDL语言的语法规范,掌握时序电路描述方法,掌握多个数码管动态扫描显示的原理及设计方法。同时也熟悉掌握了Quartus II 的使用方法以及使用的各种流程。明白了多个数码管动态扫描显示,是讲所有的数码管并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描频率大于50Hz,将看不到闪烁现象。 本次设计是培养了我们的综合能力,从理论到实践,我学到了很多东西,在设计过程中难免遇到很多问题,同时发现了自己的的不足之处,对以前的知识理解不够深刻,掌握不够牢固,还需要更努力的学习。我还体会到,做任何事情都要有耐心,有团结合作的精神,要养成高度的责任心,这次课程设计为我以后的工作得到一定的磨练。
五、参考文献:
[1]潘松,黄继业.EDA技术实用教程——VHDL版(第四版).科学出版社,2010; [3]包明.EDA技术与可编程器件的应用(第一版).北京:航空航天大学出版社,2007.3;
[4]郑燕,赫建国.基于VHDL与QuartusII软件的可编程逻辑器件应用于开发.北京:国防工业出版社,2011;
[5]阎石.数字电子技术基础(第五版).北京:高等教育出版社,2006.5;