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

下载本文档

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

文档简介

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

2、器Abstract:This system is the use of t he software to design hardware ,the use of thissoftware Quartus II 6.0to compile and simulatio n.The systemin cludes keycircuit,decoding circuit, digital display, the shift register and latch modules.Decoder con trol data using the in put-out put tran sformati o

3、n ,the shift register is used to con trol the diali ng key,delete key, and redial key, and fin ally displayed by the digital output data.The system is con trolled through the butt ons of the digital tube display and other features.Keywords: Quartus II 6.0; Key circuit ; Decoding circuit ; Digital tu

4、be ; Latch214444445666.6.6.67.7.889999991011目录1设计任务和主要技术指标 2设计方案及工作原理 2.1系统设计思路与框图 22各模块功能分析 2.2.1 按键电路模块 2.2.2 译码电路模块2.2.3移位寄存器、锁存模块-2.2.4数码管显示模块3单元电路模块的设计、仿真测试 3.1BCD 译码3.1.1BCD译码子程序3.1.2仿真波形3.1.3 RTL 电路3.2键值显示 3.2.1 键值显示子程序(SET_NUM.VH)D3.2.2仿真波形3.3顶层文件试验总结 1.实验结果2.心得体会参考文献 附录1顶层文件程序2 BCD 译码子程序(DI

5、SPLAY.VHD).3 键值显示子程序(SET_NUM.VHD1设计任务和主要技术指标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显示数字0 0 0 0011

7、111100 0 0 1011000010 0 10101101120 0 11100111130 10 0110011040 10 1110110150 110111110160 1111110000710 0 01111111810 0 111011119其他情况0000000无2.2.3移位寄存器、锁存模块移位寄存器:移位寄存器分为三个部分,当按下拨号键时,数字按键值依次由数码管 的低位向高位移动,同时送入锁存器中;当按下删除键时,键值由高位向低位移除,高位 数码管熄灭;当按下重拨键时,锁存器中存储的键值输入到移位寄存器中,并通过数码管 显示出来。其大致的流程图如图2.2所示:图2.2按

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

9、2 BCD译码程序各端口说明分别为:输出:数码管的七段显示输入:BCD130 : 4 位 BCD码;3.1.2仿真波形faster The Bar19.125 nsBarter2.4 nsOreSlatEnd)ps20.0 阴40.0 皿叫此30.0 皿1叫5叫5刚皿39.125 inJ丄Q ECD1【X000JLcm 丫001E3LOLIO0 SKT【3FJL06理50 =L胡r03厂&DI"B I m 放 TP3.1.3 RTL 电路3.2键值显示321键值显示子程序(SET_NUM.VHD键值显示控制的框图如图3.3所示:SE:T NUMCLKKEYOUTCLEARD

10、I Rl_图3.3按键显示控制框图各端口说明分别为:输入:输出:DIN 90 : 09十个数字键;KEYOUT :可输入数字指示灯;CLK时钟脉冲;SET30:键值的BCD码CLEAR删除键;SEG320:数码管的七段;DIAL:拨号键;RE_DAIL重拨键3.2.2仿真波形10 23DIJlLB 0LPamB 01#RE JIM-B 0上 mmw onn i:( 002EETOUTB QIL曰 5EG8e: onarn低B 0HmJmm匪B 0lmn-L-SE.b arnrnL.-SE.E 0mrnrrna石-SE.E 0nrnmr-i-ss.B 0rnrnrnr-SEB 1rn-1rnB

11、Qrnmrnr-iEj SECT0L13L1323 RTLLl廿mmmm寸*m-re>一二册 苗肛=EZr三3.3顶层文件总体设计电路如图所示,通过顶层文件生成RTL电路。各端口说明分别为:输出:输入:CLEAR 删除键;;SEG716CLK1时钟脉冲;SEG82DIAL:拨号键;KEYOUTRE_DAIL重拨键0 : 8位数码管;0:数码管的七段;:可输入数字指示灯;2 HCi-,.>: U1hEvp "TnCL£ARl> CLKirDIALRE_D 地 L_ DINlj3 衍L">nDIN190 : 09十个数字键试验总结1. 实验结果

12、仿真结果如预期所想,实现了预期的目标,电话号码移位设计电路是通过按不同的按 键来控制电话号码的拨打情况,通过一个清零端可以控制(当输入错误号码后,清除当前 号码,再重新输入一组新的号码时)电话号码的输入,这样可以自由的输入和更改电话号 码。锁存器记录最后一次所拨号码可以进行重拨操作,显示时间过长可以进行挂机操作。 另外由于条件等的限制,只能进行软件仿真,而软件仿真一方面存在延时,另一方面不能 像硬件测试那样直观2. 心得体会通过本次课程设计我认识到了自己的不足,在实际操作过程中查阅了很多资料,也和 组员们讨论了很久。首先,经过这次课程设计我的实际动手能力得到很大的提高,另外对 一个课题的总体的

13、驾驭能力也上升的一个新的层面。其次,此次设计中也遇到了很多不同 困难,在和组员之间的相互讨论中认识到团队合作的重要性。最后,我更加深刻的体会到 理论与实际相结合的重要性,只有将理论与实践相结合,才能真正的提高自己的动手能力, 而理论运用于实践正式当代大学生所学习的一项基本技能。参考文献1. 潘松,黄继业.EDA技术与VHDL第 3版).清华大学出版社,2009.2. 卢毅,赖杰.VHDL与数字电路设计M.科学出版社,2007.3. 潘松,EDA技术实用教程(第二版).科学出版社,2005.附录1顶层文件程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE

14、 IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PLUSE_KEY ISP0RT(DIN1:IN STD_L0GIC_VECT0R(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 DOWNTO 0); END ENTITY;ARCHITECTURE ONE OF PLUSE_KEY IS-库定义-包定义-定义实体名、端口-定义09数字输入-定

15、义可输入脉冲指示灯-定义七位段码-8个数码管-定义结构体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 DOWNTO 0);END COMPONENT;-调用DISPLAY底层文件COMPONENT DISPLAY ISPORT(BCD1:IN STD_

16、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(SET_1,SEG71);END ART;2 BCD 译码子程序(DISPLAY.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_11

17、64.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY ISPORT(BCD1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);SEG7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY;ARCHITECTURE ONE OF DISPLAY ISBEGINPROCESS(BCD1)ISBEGINCASE BCD1 ISWHEN "0000"=>SEG7<="0111111"-显示 0WHEN "0001"=>S

18、EG7<="0000110"-显示 1WHEN "0010"=>SEG7<="1011011"WHEN "0011"=>SEG7<="1001111"WHEN "0100"=>SEG7<="1100110"WHEN "0101"=>SEG7<="1101101"WHEN "0110"=>SEG7<="1111101&quo

19、t;WHEN "0111"=>SEG7<="0000111"WHEN "1000"=>SEG7<="1111111"WHEN "1001"=>SEG7<="1101111"WHEN OTHERS=>SEG7<="0000000"-显示2-显示3-显示4显示5-显示6显示7-显示8-显示9-其他情况下数码管熄灭END CASE;END PROCESS;END ARCHITECTURE;3 键值显示子程序(SET

20、_NUM.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SET_NUM ISPORT(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 O

21、F 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;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

22、COUNT2:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL DIN1: STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL LOCK: STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINPROCESS(CLK)ISBEGINIF RISING_EDGE(CLK) THENCOUNT1<=COUNT1+1;END IF;END PROCESS;CLK1<='0' WHEN COUNT1<"1100" ELSE '1'PR0CESS(CLK1)ISBEGINIF

23、RISING_EDGE(CLK1) THENDIN1(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 DIN1(8) OR DIN1(9);PROCESS(CLK1)ISBEGINIF FALLING_EDGE(CLK1) THENIF COUNT2="1OO"

24、 THENIF CLEAR='0'AND RE_DIAL='0' THENKEY1<=KEY;ELSIF CLEAR ='1' AND RE_DIAL='0' THENKEY1<=CLK;ELSE KEY1<=RE_DIAL1;END IF;COUNT2<="000"ELSECOUNT2<=COUNT2+1;END IF;END IF;END PROCESS;PROCESS(DIN1)ISBEGINIF DIN1(6)='1' THEN BCD<="

25、0110"ELSIFDIN1(1)='1'THENBCD<="0001"ELSIFDIN1(2)='1'THENBCD<="0010"ELSIFDIN1(3)='1'THENBCD<="0011"ELSIFDIN1(4)='1'THENBCD<="0100"ELSIFDIN1(5)='1'THENBCD<="0101"ELSIFDIN1(0)='1'THENBC

26、D<="0000"ELSIFDIN1(7)='1'THENBCD<="0111"ELSIFDIN1(8)='1'THENBCD<="1000"ELSIFDIN1(9)='1'THENBCD<="1001"ELSE BCD<="0000"END IF;END PROCESS;KEYOUT<=KEY1;PR0CESS(KEY1)ISBEGINIF RISING_EDGE(KEY1) THENIF CLEAR='

27、;O' AND RE_DIAL1='O' THENNUMBER(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(O)<=BCD;ELSIF CLEAR='1' AND RE_DIAL1='0' THENNUMBER(0)<=NUMBER(1)

28、;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"ELSENUMBER(7)<= LOCK(31 DOWNTO 28);NUMBER(6)<= LOCK(27 DOWNTO 24);NUMBER(5)<= LOCK(23 DOWNTO 20);NUMBER(4)<= LOC

29、K(19 DOWNTO 16);NUMBER(3)<= LOCK(15 DOWNTO 12);NUMBER(2)<= LOCK(11 DOWNTO 8);NUMBER(1)<= LOCK(7DOWNTO 4);NUMBER(0)<= LOCK(3DOWNTO 0);END IF;END IF;END PROCESS;-输入数字,实现数字从低位向高位移动-按下删除键,数字从高位向低位移动-在重拨键以后,显示已拨号码PROCESS(CLK)ISBEGINIF RISING_EDGE(CLK) THENCOUNT<=COUNT+1;END IF;END PROCESS;PROCESS(COUNT)ISBEGINCASE COUNT IS-片选,选择数码管WHEN

温馨提示

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

评论

0/150

提交评论