《EDA技术实用教程》
课 程 设 计
设计题目: 脉冲按键电话显示器
系 别: 班 级:
1
一 引言 1 背景说明
EDA(Electronic Design Automation,电子设计自动化 )技术正是为了适应现代电子产品设计的要求,吸引多学科最新成果而形成的一门新技术。利用 EDA 进行电子系统设计,具有以下几个特点: (1)用软件的方式设计硬件; (2)用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的; (3)设计过程中可用有关软件进行各种仿真; (4)系统可现场编程,在线升级; (5)整个系统可集成在一个芯片上,体积小,功耗低,可靠性高。因此, EDA 技术是现代电子设计的发展趋势。我们本学期开设了EDA课程,并开设了为期八周的 EDA 实验课,主要利用 Verilog 语言
2、内容:
设计一个准确地反映按键数字显示的电话按键显示器,该电话显示器要求具有拨通、挂断的功能,当按下拨通键时,表示电话拨通。当按下挂断键时,表示电话挂断。 3、要求:
(1)计一个用数码管显示电话号码的电话按键显示器; (2)地反映按键数字;
(3)示器显示从低位向高位前移,逐位显示按键数字,最低位为当前输入位;
(4)置一个“拨通键,按下此键,能显示最后一次输入的电话号码; 。
2
二、总体设计思想 1.基本原理
本次课程设计是用verilog语言实现一个能准确地反映按键数字、具有8位显示的电话按键显示器。摘机时开始工作,显示器显示从低位向高位前移,逐位显示按键数字,最低位为当前输入位;设置一个“拨通”键,按下此键表示电话已经拨通;蜂鸣器开始工作,设置一个“挂断”键,按下此键表示电话已经挂断;蜂鸣器停止工作,
本文设计的脉冲按键电话显示器由五个模块组成:分频模块、按键电路模块、按键输入模块、防抖模块、蜂鸣器模块和数码管显示定时模块(10S)电路六个模块,其中移位寄存、按键输入模块和数码管译码显示电路为系统的主要组成部分。
(1)按键电路模块。提供“0”到“9”数字按键的输入,同时设置有拨号键,挂机键。
(2)去抖动电路模块。 由于按键按下时由于操作原因,不可避免的会有按键抖动,为了消除抖动对系统稳定性的影响,所以加上去抖动电路。
(3)移位寄存器、锁存模块。移位寄存器分为三个部分。当按下拨号键时,数字按键值依次由数码管的低位向高位移动,同时送入锁存器中;当按下删除键时,键值由高位向低位移除,高位数码管熄灭;当按下重拨键时,锁存器中存储的键值输入到移位寄存器中,并通过数码管显示出来。
(4)数码管显示模块。数码管显示用于将设置好的每个按键的键值在数码管上显示出来。由于实验过程中需要使用8个数码管,因此数码管显示模块必
3
须加上数码管片选及移位得程序,从而实现数据输入以后从低位向高位移动、显示。
(6)倒计时(10S)模块 当电话按下拨通键后,蜂鸣器开始响,与此同时计数器也开始工作,在此期间若没有模拟电话没有接通,计数器一直工作,直到超过十秒
2、设计框图
脉冲按键电话总体设计方案 三、设计步骤和调试过程 1、总体设计电路
4
2、模块设计和相应模块程序 1)顶层文件程序
各端口说明分别为:
输入: 输出:
DIN1[9…0]:0~9十个数字键; KEYOUT:可输入数字指示灯; CLK1:时钟脉冲; SEG71[6…0]:数码管; DIAL:拨号键;
RE_DAIL:挂断键
5
2)分频子程序
分频模块的封装图如下图所示:
分频程序
1
6
2
3
7
4
5 (3)键值显示子程序
键值显示控制的框图如下图所示
8
按键显示控制框图 模块程序:
module JIANPAN(GD,CLK,A,B,R,PP);
input CLK; input GD; input [3:0] A; output [3:0] B; output [3:0] R; output PP; reg PP; reg [1:0] C ; reg [3:0] R,B ;
always @ (posedge CLK) begin
9
C<=C+1; case(C)
0: B=4'B0111; 1: B=4'B1011; 2: B=4'B1101; 3: B=4'B1110; endcase case({B,A} )
8'B0111_1110 : R=4'HB; 8'B0111_1101 : R=4'HC; 8'B0111_1011 : R=4'HD; 8'B0111_0111 : R=4'HF; 8'B1011_1110 : R=4'H1; 8'B1011_1101 : R=4'H4; 8'B1011_1011 : R=4'H7; 8'B1011_0111 : R=4'HA; 8'B1101_1110 : R=4'H2; 8'B1101_1101 : R=4'H5; 8'B1101_1011 : R=4'H8; 8'B1101_0111 : R=4'H0; 8'B1110_1110 : R=4'H3; 8'B1110_1101 : R=4'H6; 8'B1110_1011 : R=4'H9; 8'B1110_0111 : R=4'HE; endcase case(GD) 1'B1:R=4'HE; endcase end always@(PP or R ) begin
if( R == 4'B1011) PP <= 1'B1;
10
if(R == 4'B1110) PP <= 1'B0; end endmodule (4)数码管模块 数码管显示封装图
数码管子程序 LIBRARY IEEE ;
USE IEEE.STD_LOGIC_11.ALL ; ENTITY DECL7S IS
PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ;
ARCHITECTURE one OF DECL7S IS BEGIN PROCESS( A )
11
BEGIN CASE A IS
WHEN \"0000\" => LED7S <= \"0111111\" ; WHEN \"0001\" => LED7S <= \"0000110\" ; WHEN \"0010\" => LED7S <= \"1011011\" ; WHEN \"0011\" => LED7S <= \"1001111\" ; WHEN \"0100\" => LED7S <= \"1100110\" ; WHEN \"0101\" => LED7S <= \"1101101\" ; WHEN \"0110\" => LED7S <= \"1111101\" ; WHEN \"0111\" => LED7S <= \"0000111\" ; WHEN \"1000\" => LED7S <= \"1111111\" ; WHEN \"1001\" => LED7S <= \"1101111\" ; WHEN \"1010\" => LED7S <= \"1110111\" ; WHEN \"1011\" => LED7S <= \"1111100\" ; WHEN \"1100\" => LED7S <= \"0111001\" ; WHEN \"1101\" => LED7S <= \"1011110\" ; WHEN \"1110\" => LED7S <= \"1111001\" ; WHEN \"1111\" => LED7S <= \"1110001\" ; WHEN OTHERS => NULL ; END CASE ; END PROCESS ; END ;
12
(5)蜂鸣器模块 蜂鸣器封装图
蜂鸣器子程序
(6)去抖动电路模块
13
去抖动电路子程序
(7) 计数器(10S)模块 计数器封装图
14
计数器中间模块
计数器子程序
4、实验调试结果
为验证所设计的程序是否正确,将程序下载进行硬件测试。在QuartusⅡ开发环境中进行管脚锁定,连接好数码管驱动电路,然后将目标文件下载到器件
15
中。最终可以看到按键正常显示、“重拨”键功能正常、达到设计要求。
四、结论及心得体会
课程设计是培养学生综合运用所学发现、提出、分析和解决实际问题锻炼•实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,通过这次的EDA课设,加深了对电子电路理论知识的理解,并锻炼了实践动手能力,具备了电子电路的基本设计能力和基本调试能力,回顾这次起这次EDA课程设计,至今仍感慨颇多,从选题到定稿,从理论到实践,在这段时间内,可以说是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和思考的能力,在设计的过程遇到问题,可以说是困难重重,难免会遇到各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解的不够深刻,掌握的不够牢固。此次设计中,学到了很多东西,懂得了做任何事情都要认真严谨。非常感谢王睿庭老师给我们讲授的 EDA。如果没有他严谨细致、孜孜不倦的讲授精神,我们就不会有这么多的收获,这表示真诚的感谢!在应用 Verilog的过程中让我真正领会到了其并行运行与其他软件( C 语言)顺序执行的差别及其在电路设计上的优越性。用 Verilog硬件描述语言的形式来进行数字系统的设计方便灵活,利用 EDA 软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越
参考资料
16
[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005. [2] 谭会生,张繁昌. EDA技术及应用, 西安电子科技大学出版社,2004.. [3] 李云,侯传教,冯永浩. VHDL电路设计实用教程 ,机械工业出版社,2009
[4] 康光华. 电子技术基础 数字部分(第五版) ,高等教育出版社,2006
17
2016年 7 月 11