基于EDA脉冲按键电话显示器VHDL程序设计_第1页
基于EDA脉冲按键电话显示器VHDL程序设计_第2页
基于EDA脉冲按键电话显示器VHDL程序设计_第3页
基于EDA脉冲按键电话显示器VHDL程序设计_第4页
基于EDA脉冲按键电话显示器VHDL程序设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 EDA技术与VHDL课程设计基于EDA的脉冲按键电话显示器VHDL程序设计 院 系 电子信息工程学院 班 级 12电信(专升本) 姓 名 卢文俊 学 号 1208211036 2013 年 6 月脉冲按键电话显示器摘要:本系统是利用软件的方式设计硬件,利用Quartus II 6.0这款软件对其进行编译和仿真。本系统包含按键电路、译码电路、数码显示、移位寄存器和锁存模块。利用译码器控制数据的输入输出变换,而移位寄存器用来控制拨号键、删除键以及重拨键,最后在通过数码管来显示输出数据。该系统通过按键控制了数码管的显示以及其它功能。关键词:Quartus II 6.0;按键电路;译码电路;数码管;

2、锁存器Abstract:This system is the use of the software to design hardware , the use of this software Quartus II 6.0to compile and simulation.The system includes key circuit,decoding circuit, digital display, the shift register and latch modules.Decoder control data using the input-out put transformation

3、,the shift register is used to control the dialing key,delete key, and redial key, and finally displayed by the digital output data.The system is controlled through the buttons of the digital tube display and other features.Keywords: Quartus II 6.0;Key circuit;Decoding circuit;Digital tube;Latch14目录

4、1设计任务和主要技术指标42 设计方案及工作原理42.1系统设计思路与框图42.2 各模块功能分析42.2.1按键电路模块42.2.2 译码电路模块42.2.3 移位寄存器、锁存模块52.2.4 数码管显示模块63 单元电路模块的设计、仿真测试63.1BCD译码63.1.1BCD译码子程序63.1.2仿真波形63.1.3 RTL电路63.2键值显示73.2.1键值显示子程序(SET_NUM.VHD)73.2.2仿真波形83.3 顶层文件8试验总结91 实验结果92 心得体会9参考文献9附录91 顶层文件程序92 BCD译码子程序(DISPLAY.VHD)103 键值显示子程序(SET_NUM.

5、VHD)111设计任务和主要技术指标1) 设计一个具有最高8位显示的电话按键显示器;2) 能准确地反映按键数字;3) 显示器显示从低位向高位前移,逐位显示按键数字,最低位显示当前输入数字;4) 设置“删除键”,按下此键,从最低位开始删除数字,同时显示器数字从高位向低位移动。5) 设置“拨号键”拨号键模拟拨号,按下此键拨号指示灯亮;6) 设置一个重拨键,按下此键,能显示最后一次输入的电话号码;7) 挂机2S后或按熄“灭按键”,熄灭显示器显示。2 设计方案及工作原理2.1系统设计思路与框图 我们设计的用VHDL语言实现的脉冲按键电话显示器由4个模块组成:按键电路,译码器,移位寄存、锁存器和数码管显

6、示电路,其中移位寄存、锁存器和数码管译码显示电路为系统的主要组成部分。脉冲按键电话的总体设计框图如图2.1所示:图2.1 脉冲按键电话总体设计方案2.2 各模块功能分析2.2.1按键电路模块 按键电路功能:提供09数字按键的输入,同时设置有拨号键,清除键,挂机键和重拨键。2.2.2 译码电路模块 译码电路功能:译码器的功能分为两个部分,第一部分把输入的一位键值转换成四位BCD码;第二部分把4位二进制码译成相应的数码管输出显示码。BCD码对应的七段数码管显示如表2.1所示:表2.1 BCD码对应的数码管显示4位BCD码gfedcba显示数字0000011111100001011000010010

7、10110112001110011113010011001104010111011015011011111016011111100007100011111118100111011119其他情况0000000无2.2.3 移位寄存器、锁存模块 移位寄存器:移位寄存器分为三个部分,当按下拨号键时,数字按键值依次由数码管的低位向高位移动,同时送入锁存器中;当按下删除键时,键值由高位向低位移除,高位数码管熄灭;当按下重拨键时,锁存器中存储的键值输入到移位寄存器中,并通过数码管显示出来。其大致的流程图如图2.2所示:图2.2 按键输入过程流程图2.2.4 数码管显示模块 数码管显示用于将设置好的每个按键

8、的键值(对应09的数字)在数码管上显示出来。由于实验过程中需要使用8个数码管,因为在数码管显示模块必须加上数码管片选及移位的程序,从而实现数据在输入以后从低位向高位移动、显示。在进行编写脉冲按键电话显示器程序时,我们主要是利用元件例化语句来实现的,在顶层文件基础上,调用了数码管BCD码译码、键值显示两个底层文件,分别命名为DISPLAY.VHD、SET_NUM.VHD。3 单元电路模块的设计、仿真测试3.1BCD译码3.1.1BCD译码子程序BCD译码程序的框图如图3.2所示图3.2 BCD译码程序各端口说明分别为:输入: 输出:BCD130:4位BCD码; 数码管的七段显示3.1.2仿真波形

9、3.1.3 RTL电路3.2键值显示3.2.1键值显示子程序(SET_NUM.VHD)键值显示控制的框图如图3.3所示:图3.3按键显示控制框图各端口说明分别为:输入: 输出:DIN 90:09十个数字键; KEYOUT:可输入数字指示灯;CLK:时钟脉冲; SET30:键值的BCD码 CLEAR:删除键; SEG320:数码管的七段;DIAL:拨号键;RE_DAIL:重拨键3.2.2仿真波形3.2.3 RTL电路图3.3 顶层文件总体设计电路如图所示,通过顶层文件生成RTL电路。各端口说明分别为:输入: 输出:CLEAR:删除键; SEG7160:8位数码管;CLK1:时钟脉冲; SEG82

10、0:数码管的七段; DIAL:拨号键; KEYOUT:可输入数字指示灯; RE_DAIL:重拨键 DIN190:09十个数字键 试验总结1 实验结果仿真结果如预期所想,实现了预期的目标,电话号码移位设计电路是通过按不同的按键来控制电话号码的拨打情况,通过一个清零端可以控制(当输入错误号码后,清除当前号码,再重新输入一组新的号码时)电话号码的输入,这样可以自由的输入和更改电话号码。锁存器记录最后一次所拨号码可以进行重拨操作,显示时间过长可以进行挂机操作。另外由于条件等的限制,只能进行软件仿真,而软件仿真一方面存在延时,另一方面不能像硬件测试那样直观2 心得体会通过本次课程设计我认识到了自己的不足

11、,在实际操作过程中查阅了很多资料,也和组员们讨论了很久。首先,经过这次课程设计我的实际动手能力得到很大的提高,另外对一个课题的总体的驾驭能力也上升的一个新的层面。其次,此次设计中也遇到了很多不同困难,在和组员之间的相互讨论中认识到团队合作的重要性。最后,我更加深刻的体会到理论与实际相结合的重要性,只有将理论与实践相结合,才能真正的提高自己的动手能力,而理论运用于实践正式当代大学生所学习的一项基本技能。 参考文献1. 潘松,黄继业.EDA技术与VHDL(第3版).清华大学出版社,2009.2. 卢毅,赖杰.VHDL与数字电路设计M.科学出版社,2007.3. 潘松,EDA技术实用教程(第二版).

12、科学出版社,2005. 附录1 顶层文件程序LIBRARY IEEE; -库定义USE IEEE.STD_LOGIC_1164.ALL; -包定义USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PLUSE_KEY IS -定义实体名、端口PORT(DIN1:IN STD_LOGIC_VECTOR(9 DOWNTO 0); -定义09数字输入CLK1,CLEAR,DIAL,RE_DIAL:IN STD_LOGIC;KEYOUT:OUT STD_LOGIC; -定义可输入脉冲指示灯SEG71:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -定义

13、七位段码SEG8:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - 8个数码管END ENTITY;ARCHITECTURE ONE OF PLUSE_KEY IS -定义结构体COMPONENT SET_NUM IS -调用SET_NUM底层文件PORT(DIN:IN STD_LOGIC_VECTOR(9 DOWNTO 0);CLK,CLEAR,DIAL,RE_DIAL:IN STD_LOGIC;KEYOUT:OUT STD_LOGIC;SET:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);SEG8:OUT STD_LOGIC_VECTOR(7 DO

14、WNTO 0);END COMPONENT;COMPONENT DISPLAY IS -调用DISPLAY底层文件 PORT(BCD1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);SEG7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END COMPONENT;SIGNAL SET_1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN -各端口的连接U1: SET_NUM PORT MAP( DIN1,CLK1,CLEAR,DIAL,RE_DIAL,KEYOUT,SET_1,SEG8); U2:DISPLAY PORT MAP(SE

15、T_1,SEG71);END ART;2 BCD译码子程序(DISPLAY.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY IS PORT( BCD1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); SEG7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END ENTITY;ARCHITECTURE ONE OF DISPLAY ISBEGIN PROCESS(BCD1)IS BEGIN CASE BCD1 IS WH

16、EN 0000=SEG7SEG7SEG7SEG7SEG7SEG7SEG7SEG7SEG7SEG7SEG7=0000000; -其他情况下数码管熄灭 END CASE; END PROCESS;END ARCHITECTURE;3 键值显示子程序(SET_NUM.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SET_NUM IS PORT(DIN:IN STD_LOGIC_VECTOR(9 DOWNTO 0); CLK,CLEAR,DIAL,RE_DIAL:IN STD_L

17、OGIC; KEYOUT:OUT STD_LOGIC; SET:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEG8:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY;ARCHITECTURE ONE OF SET_NUM ISSUBTYPE TEN IS STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL BCD :TEN;TYPE NUMBER1 IS ARRAY(7 DOWNTO 0) OF STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL NUMBER : NUMBER1;SIGNA

18、L KEY,KEY1,CLK1,DIAL1,RE_DIAL1:STD_LOGIC;SIGNAL COUNT:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL COUNT1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL COUNT2:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL DIN1: STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL LOCK: STD_LOGIC_VECTOR(31 DOWNTO 0);BEGIN- PROCESS(CLK)IS BEGIN IF RISING_EDGE(CLK

19、) THEN COUNT1=COUNT1+1; END IF; END PROCESS; CLK1=0 WHEN COUNT11100 ELSE 1; PROCESS(CLK1)IS BEGIN IF RISING_EDGE(CLK1) THEN DIN1(9 DOWNTO 0)=DIN(9 DOWNTO 0); DIAL1=DIAL; RE_DIAL1=RE_DIAL; END IF; END PROCESS; KEY=(DIN1(0) OR DIN1(1) OR DIN1(2) OR DIN1(3) OR DIN1(4) OR DIN1(5) OR DIN(6) OR DIN1(7) OR

20、 DIN1(8) OR DIN1(9); PROCESS(CLK1)IS BEGIN IF FALLING_EDGE(CLK1) THEN IF COUNT2=100 THEN IF CLEAR=0AND RE_DIAL=0 THEN KEY1=KEY; ELSIF CLEAR =1 AND RE_DIAL=0 THEN KEY1=CLK; ELSE KEY1=RE_DIAL1; END IF; COUNT2=000; ELSE COUNT2=COUNT2+1; END IF; END IF; END PROCESS;- PROCESS(DIN1)IS BEGIN IF DIN1(6)=1 T

21、HEN BCD=0110; ELSIF DIN1(1)=1 THEN BCD=0001; ELSIF DIN1(2)=1 THEN BCD=0010; ELSIF DIN1(3)=1 THEN BCD=0011; ELSIF DIN1(4)=1 THEN BCD=0100; ELSIF DIN1(5)=1 THEN BCD=0101; ELSIF DIN1(0)=1 THEN BCD=0000; ELSIF DIN1(7)=1 THEN BCD=0111; ELSIF DIN1(8)=1 THEN BCD=1000; ELSIF DIN1(9)=1 THEN BCD=1001; ELSE BC

22、D=0000; END IF; END PROCESS;- KEYOUT=KEY1; PROCESS(KEY1)IS BEGIN IF RISING_EDGE(KEY1) THEN IF CLEAR=0 AND RE_DIAL1=0 THEN -输入数字,实现数字从低位向高位移动 NUMBER(7)=NUMBER(6); NUMBER(6)=NUMBER(5); NUMBER(5)=NUMBER(4); NUMBER(4)=NUMBER(3); NUMBER(3)=NUMBER(2); NUMBER(2)=NUMBER(1); NUMBER(1)=NUMBER(0); NUMBER(0)=BC

23、D; ELSIF CLEAR=1 AND RE_DIAL1=0 THEN -按下删除键,数字从高位向低位移动 NUMBER(0)=NUMBER(1); NUMBER(1)=NUMBER(2); NUMBER(2)=NUMBER(3); NUMBER(3)=NUMBER(4); NUMBER(4)=NUMBER(5); NUMBER(5)=NUMBER(6); NUMBER(6)= NUMBER(7); NUMBER(7)=1111; ELSE -在重拨键以后,显示已拨号码 NUMBER(7)= LOCK(31 DOWNTO 28); NUMBER(6)= LOCK(27 DOWNTO 24); NU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论