版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、东 北 石 油 大 学课 程 设 计课 程 eda技术课程设计 题 目 脉冲按键电话显示器 院 系 电子科学学院 专业班级 学生姓名 学生学号 指导教师 2012年 3 月2日东北石油大学课程设计任务书课程 eda技术课程设计题目 脉冲按键电话显示器专业 姓名 学号 主要内容、基本要求、主要参考资料等主要内容:设计一个准确地反映按键数字具有8位显示的电话按键显示器,该电话显示器要求具有重拨的功能,当按下重拨键时,能够显示最后一次输入的电话号码。基本要求:1、设计一个具有8位显示的电话按键显示器;2、能准确地反映按键数字;3、显示器显示从低位向高位前移,逐位显示按键数字,最低位为当前输入位;4、
2、设置一个“重拨”键,按下此键,能显示最后一次输入的电话号码;5、挂机2秒后或按熄灭按键,熄灭显示器显示。主要参考资料:1 潘松著.eda技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限 2012.3.2 指导教师 专业负责人 2012年 3月2日 一、总体设计思想1.基本原理本题目是用vhdl语言实现一个能准确地反映按键数字、具有8位显示 的电话按键显示器。摘机时开始工作,显示器显示从低位向高位前移,逐位显示按键数字,最低位为当前输入位;设置一个“重
3、拨”键,按下此键能显示最后一次输入的电话号码;挂机2秒后或按熄灭键,熄灭显示器显示。脉冲按键电话显示器由五个模块组成:按键电路、译码器、移位寄存、锁存器和数码管显示电路,其中移位寄存、锁存器和数码管译码显示电路为系统的主要组成部分。(1)按键电路模块。提供“0”到“9”数字按键的输入,同时设置有拨号 键,清除键,挂机键和重拨键。(2)译码电路模块。译码器有两个功能。第一,把输入的一位键值转换成 四位 bcd 码;第二,把四位二进制码译成相应的数码管输出显示码。(3)移位寄存器、锁存模块。移位寄存器分为三个部分。当按下拨号键时, 数字按键值依次由数码管的低位向高位移动,同时送入锁存器中;当按下删
4、除 键时,键值由高位向低位移除,高位数码管熄灭;当按下重拨键时,锁存器中 存储的键值输入到移位寄存器中,并通过数码管显示出来。(4)数码管显示模块。数码管显示用于将设置好的每个按键的键值在数码 管上显示出来。由于实验过程中需要使用8个数码管,因此数码管显示模块必须加上数码管片选及移位得程序,从而实现数据输入以后从低位向高位移动、显示。2.设计框图数字键入控制电路1译码显示器移位寄存器脉冲产生电路控制电路2计时电路译码显示电路图1 整体设计框图二、设计步骤和调试过程1、总体设计电路图2总体设计电路2、模块设计和相应模块程序(1) 顶层文件程序library ieee; use ieee.std_
5、logic_1164.all; use ieee.std_logic_unsigned.all; entity upkey isport(din1:in std_logic_vector(9downto 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 downto 0); end entity; architecture one of upkey is component show
6、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 isport(bcd1:in std_logic_vector(3 downto 0);seg7:out std_logic_vector(6 downto 0); end compon
7、ent; 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)译码器译码部分的设计图3 bcd译码电路图bcd译码子程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tra is port( bc
8、d1:in std_logic_vector(3 downto 0); seg7:out std_logic_vector(6 downto 0); end entity; architecture one of tra is begin process(bcd1)is begin case bcd1 is when 0000=seg7seg7seg7seg7seg7seg7seg7seg7seg7seg7seg7=0000000; end case;end process; end architecture;(3)键值显示部分设计图4按键显示控制电路图按键显示控制子程序:library ie
9、ee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; 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 is su
10、btype 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; 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:
11、std_logic_vector(2 downto 0); signal din1: std_logic_vector(9 downto 0); signal lock: std_logic_vector(31 downto 0); beginprocess(clk)is begin if rising_edge(clk) 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)
12、=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 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
13、=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 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 d
14、in1(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 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); numbe
15、r(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)=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
16、(6)= number(7); number(7)=1111; else number(7)= lock(31 downto 28); 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
17、process; process(clk)is begin if rising_edge(clk) then countset=number(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
18、)=number(7); lock(27 downto 24)=number(6);lock(23 downto 20)=number(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;3、仿真及仿真结果分析输入8位数字以后显示结果如图所示:图5仿真图仿真结果如预期所想,实现了
19、预期的电话号码移位设计电路是通过按不同的按键来控制电话号码的拨打情况,通过一个清零端可以控制(当输入错误号码后,清除当前号码,再重新输入一组新的号码时)电话号码的输入,这样可以自如的输入和更改电话号码。锁存器记录最后一次所拨号码可以进行重拨操作,显示时间过长可以进行挂机操作。4、实验调试结果为验证所设计的程序是否正确,将程序下载进行硬件测试。在quartus开发环境中进行管脚锁定,连接好数码管驱动电路,然后将目标文件下载到器件中。最终可以看到键入的数字在数码管上进行显示。重拨、清楚、挂机等均能够正常使用,达到设计要求。三、结论及心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过这次的eda课设,加深了对电子电路理论知识的理解,并锻炼了实践动手能力,具备了电子电路的基本设计能力和基本调试能力 ,能够正确的使用实验仪器。回顾起此次eda课程设计,至今我仍感慨颇多。的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论