1、脉冲按键电话显示器东 北 石 油 大 学课 程 设 计课 程 EDA技术课程设计 题 目 脉冲按键电话显示器 院 系 电子科学学院 专业班级 电子信息工程 学生姓名 学生学号 指导教师 2014年 3 月7日东北石油大学课程设计任务书课程 EDA技术课程设计题目 脉冲按键电话显示器专业 电子信息工程 姓名 学号 主要内容、基本要求、主要参考资料等主要内容:设计一个准确地反映按键数字具有8位显示的电话按键显示器,该电话显示器要求具有重拨的功能,当按下重拨键时,能够显示最后一次输入的电话号码。基本要求:1、设计一个具有8位显示的电话按键显示器;2、能准确地反映按键数字;3、显示器显示从低位向高位前
2、移,逐位显示按键数字,最低位为当前输入位;4、设置一个“重拨”键,按下此键,能显示最后一次输入的电话号码;5、挂机2秒后或按熄灭按键,熄灭显示器显示。主要参考资料:1 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限 2014.3.7 指导教师 专业负责人 2014年 3月3日一、设计思想1.基本原理EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动的完成逻辑编译、化
3、简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。在本次课程设计中是用VHDL语言实现一个能准确地反映按键数字、具有8位显示的电话按键显示器。摘机时开始工作,显示器显示从低位向高位前移,逐位显示按键数字,最低位为当前输入位;设置一个“重拨”键,按下此键能显示最后一次输入的电话号码;挂机2秒后或按熄灭键,熄灭显示器显示。脉冲按键电话显示器由五个模块组成:按键电路、译码器、移位寄存、锁存器和数码管显示电路,其中移位寄存、锁存器和数码管译码显示电路为系统的主要组成部分。(1)按键电路模块。提供“0”到“9”数字按键的输入,同时设置有拨号 键,清除键,挂机键和重拨键。(2
4、)译码电路模块。译码器有两个功能。第一,把输入的一位键值转换成 四位BCD码;第二,把四位二进制码译成相应的数码管输出显示码。(3)移位寄存器、锁存模块。移位寄存器分为三个部分。当按下拨号键时, 数字按键值依次由数码管的低位向高位移动,同时送入锁存器中;当按下删除 键时,键值由高位向低位移除,高位数码管熄灭;当按下重拨键时,锁存器中 存储的键值输入到移位寄存器中,并通过数码管显示出来。(4)数码管显示模块。数码管显示用于将设置好的每个按键的键值在数码 管上显示出来。由于实验过程中需要使用8个数码管,因此数码管显示模块必须加上数码管片选及移位得程序,从而实现数据输入以后从低位向高位移动、显示。2
5、.设计框图图1 整体设计框图用VHDL语言实现的脉冲按键电话显示器将由四个模块组成;按键电路,译码器,移位寄存器,锁存器和数码管显示电路,其中的译码器,移位寄存器,锁存器和数码管译码显示电路为系统的主要组成部分。其原理通过数字键入,通过电脉冲信号到达控制电路,信号被储存在移位寄存器,该信号可由数码管显示电路显示出来,移位寄存器中的控制信号通过另外的一个控制电路将对以下电路进行控制;脉冲产生电路和计时电路,该计时电路经过译码,可显示在译码显示器上。3.总体设计电路图2 总体设计电路模块二、设计步骤和调试过程1、模块设计和相应模块代码2.1顶层文件按键电路模块。提供“0”到“9”数字按键的输入,同
6、时设置有拨号键,清除键,挂机键和重拨键。(1) 顶层文件程序模块程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY UP_KEY IS PORT(DIN1:IN STD_LOGIC_VECTOR(9 DOWNTO 0); CLK1,CLEAR,DIAL,RE_DIAL:IN STD_LOGIC;KEYOUT:OUT STD_LOGIC; SEG71:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEG8:OUT STD_LOGIC_VECTOR(7 DO
7、WNTO 0); END ENTITY;ARCHITECTURE ONE OF UP_KEY IS COMPONENT SHOW IS 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 DOWNTO 0);END COMPONENT;COMPONENT TRA IS PORT(BCD1:IN STD_LOGIC_VECTO
8、R(3 DOWNTO 0);SEG7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END COMPONENT;SIGNAL SET_1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN U1:SHOW PORT MAP( DIN1,CLK1,CLEAR,DIAL,RE_DIAL,KEYOUT,SET_1,SEG8); U2:TRA PORT MAP(SET_1,SEG71);END ARCHITECTURE ONE;(2)各端口说明分别为:输入: 输出:DIN190:09十个数字键; KEYOUT:可输入数字指示灯;CLK1:时钟脉冲; SEG7160
9、:8位数码管; CLEAR:删除键; SEG320:数码管的七段;DIAL:拨号键;RE_DAIL:重拨键。2.2 BCD译码模块译码器有两个功能。第一,把输入的一位键值转换成四位BCD码;第二,把4位二进制码译成相应的数码管输出显示码。(1)BCD译码子程序模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TRA IS PORT( BCD1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); SEG7:OUT STD_LOGIC_VECTOR(6 DOWNTO
10、 0); END ENTITY;ARCHITECTURE ONE OF TRA ISBEGIN PROCESS(BCD1)IS BEGIN CASE BCD1 IS WHEN 0000=SEG7SEG7SEG7SEG7SEG7SEG7SEG7SEG7SEG7SEG7SEG7=0000000; END CASE; END PROCESS;END ARCHITECTURE;(2)译码模块电路图3 BCD译码程序模块电路各端口说明分别为:输入: 输出:BCD130:4位BCD码; 数码管的七段显示2.3键值显示模块数码管显示用于将设置好的每个按键的键值在数码管上显示出来。由于实验过程中需要使用8个数
11、码管,因此数码管显示模块必须加上数码管片选及移位得程序,从而实现数据输入以后从低位向高位移动、显示。4位BCD码gfedcba显示数字000001111110000101100001001010110112001110011113010011001104010111011015011011111016011111100007100011111118100111011119其他情况0000000无表1 BCD码对应的数码管显示(1)键值显示子程序模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.AL
12、L; ENTITY SHOW IS 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 DOWNTO 0);END ENTITY;ARCHITECTURE ONE OF SHOW ISSUBTYPE TEN IS STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL BCD :TEN;TYPE NU
13、MBER1 IS ARRAY(7 DOWNTO 0) OF STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL NUMBER : NUMBER1;SIGNAL 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);S
14、IGNAL LOCK: STD_LOGIC_VECTOR(31 DOWNTO 0);BEGIN PROCESS(CLK)IS BEGIN IF RISING_EDGE(CLK) THEN COUNT1=COUNT1+1; END IF; END PROCESS; CLK1=0 WHEN COUNT11100 ELSE 1; PROCESS(CLK1)ISBEGIN IF RISING_EDGE(CLK1) THEN DIN1(9 DOWNTO 0)=DIN(9 DOWNTO 0); DIAL1=DIAL; RE_DIAL1=RE_DIAL; END IF; END PROCESS; KEY=(
15、DIN1(0) OR DIN1(1) OR DIN1(2) OR DIN1(3) OR DIN1(4) OR DIN1(5) OR DIN(6) OR DIN1(7) OR DIN1(8) OR DIN1(9); PROCESS(CLK1)ISBEGIN 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; ELS
16、E COUNT2=COUNT2+1; END IF; END IF; END PROCESS; PROCESS(DIN1)ISBEGIN IF DIN1(6)=1 THEN 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 T
17、HEN BCD=0111; ELSIF DIN1(8)=1 THEN BCD=1000; ELSIF DIN1(9)=1 THEN BCD=1001; ELSE BCD=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)=NU
18、MBER(2); NUMBER(2)=NUMBER(1); NUMBER(1)=NUMBER(0); NUMBER(0)=BCD; 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);
19、NUMBER(6)= LOCK(27 DOWNTO 24); NUMBER(5)= LOCK(23 DOWNTO 20); NUMBER(4)= LOCK(19 DOWNTO 16); NUMBER(3)= LOCK(15 DOWNTO 12); NUMBER(2)= LOCK(11 DOWNTO 8); NUMBER(1)= LOCK(7 DOWNTO 4); NUMBER(0)= LOCK(3 DOWNTO 0); END IF; END IF; END PROCESS; PROCESS(CLK)IS BEGIN IF RISING_EDGE(CLK) THEN COUNTSET=NUMB
20、ER(7);SEG8SET=NUMBER(6);SEG8SET=NUMBER(5);SEG8SET=NUMBER(4);SEG8SET=NUMBER(3);SEG8SET=NUMBER(2);SEG8SET=NUMBER(1);SEG8SET=NUMBER(4);SEG8NULL; END CASE; END PROCESS; PROCESS(DIAL1)IS BEGIN IF RISING_EDGE(DIAL1) THEN LOCK(31 DOWNTO 28)=NUMBER(7); LOCK(27 DOWNTO 24)=NUMBER(6); LOCK(23 DOWNTO 20)=NUMBER
21、(5); LOCK(19 DOWNTO 16)=NUMBER(4); LOCK(15 DOWNTO 12)=NUMBER(3); LOCK(11 DOWNTO 8)=NUMBER(2); LOCK(7 DOWNTO 4)=NUMBER(1); LOCK(3 DOWNTO 0)=NUMBER(0); END IF; END PROCESS;END ARCHITECTURE;(2)键值显示模块图4按键显示控制框图各端口说明分别为:输入: 输出:DIN 90:09十个数字键; KEYOUT:可输入数字指示灯;CLK:时钟脉冲; SET30:键值的BCD码; CLEAR:删除键; SEG320:数码管
22、的七段;DIAL:拨号键;RE_DAIL:重拨键。2、仿真及仿真结果分析图5 仿真图仿真结果如预期所想,实现了预期的电话号码移位设计电路是通过按不同的按键来控制电话号码的拨打情况,通过一个清零端可以控制(当输入错误号码后,清除当前号码,再重新输入一组新的号码时)电话号码的输入,这样可以自如的输入和更改电话号码。锁存器记录最后一次所拨号码可以进行重拨操作,显示时间过长可以进行挂机操作。3、实验调试结果为验证所设计的程序是否正确,将程序下载进行硬件测试。在Quartus开发环境中进行管脚锁定,连接好数码管驱动电路,然后将目标文件下载到器件中。最终可以看到键入的数字在数码管上进行显示。重拨、清楚、挂
23、机等均能够正常使用,达到设计要求。三、结论及心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过这次的EDA课设,加深了对电子电路理论知识的理解,并锻炼了实践动手能力,具备了电子电路的基本设计能力和基本调试能力 ,能够正确的使用实验仪器。回顾起此次EDA课程设计,至今我仍感慨颇多。的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有
24、把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。虽然即将毕业,但在以后的学习工作中,我一定会继续坚持不断的学习新的专业知识,不断完善自己,只有这样才能紧跟时代的潮流。参考资料1 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.4 李云,侯
25、传教,冯永浩编. VHDL电路设计实用教程.机械工业出版社,2009.5 褚振勇,翁木云编.FPGA设计及应用.西安电子科技大学出版社,2002.6 卢毅,赖杰编.VHDL与数字电路设计.科学出版社, 2001.7 甘力,VHDL应用与开发实践M.科学出版社,2003东北石油大学课程设计成绩评价表课程名称EDA技术课程设计题目名称脉冲按键电话显示器学生姓名学号指导教师姓名职称序号评价项目指 标满分评分1工作量、工作态度和出勤率按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。202课程设计质量课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。453创新工作中有创新意识,对前人工作有一些改进或有一定应用价值。54答辩能正确回答指导教师所提出的问题。30总分评语:指导教师: 2014年 3 月 10 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1