《EDA课程设计说明书正文.doc》由会员分享,可在线阅读,更多相关《EDA课程设计说明书正文.doc(19页珍藏版)》请在三一办公上搜索。
1、目录1.前言12.总体方案设计22.1 需求分析22.1.1单片机设计22.1.2 EDA技术设计22.2 方案论证32.2.1单片机总体设计方框图设计及分析32.2.2 EDA技术设计32.3 方案选择43单元模块设计53.1设计思路53.1.1卡的插入模拟53.1.2设计三种电话种类53.1.3告警系统53.1.4 计费系统示意图53.2 各单元模块功能介绍及电路设计54软件设计74.1 FPGA概述74.2设计方法74.2.1计时方式74.2.2计费系统74.2.3话费刷新74.2.4 设置计时变量74.2.5程序流程图84.2.6 模块的源程序104.3 画出主要软件设计流程框图105
2、系统调试115.1硬件调试115.2 软件调试116结论127总结与体会138谢辞149参考文献15附录一:161.前言EDA使用户在无需实际芯片、电路板和仪器仪表的情况下进行电路设计和分析;采用在系统编程技术,在现场对系统进行逻辑重构和升级,实现硬件设计软件化。EDA技术以可编程逻辑器件FPGA和CPLD及其开发系统为硬件平台,以EDA开发软件如Quartus 为开发工具,基于逻辑功能模块的层次化设计方法设计数字系统。Quartus 设计可采用原理图、硬件描述语言(VHDL)等多种输入方式,并支持这些文件的任意混合设计。对于不同层次,可采用不同的输入方式进行设计。由于VHDL擅长描述模块的逻
3、辑功能,所以在对底层模块设计中,常采用VHDL进行描述,而原理图则擅长描述模块间的连接关系,故在顶层设计中,常采用原理图输入方法。模拟IC卡电话计费器通常以单片机为核心进行设计,本文以为它例介绍基于EDA技术的数字系统混合设计方法。本次设计尝试用Verilog实现计费功能,进行了多层次的计费功能及软件调试仿真验证,分析时序以保证设计的正确性。2.总体方案设计2.1 需求分析设计一个模拟IC卡电话的计费器。话卡插入后,计费器能将卡中的币值读出和显示,通话过程中,可根据话务的种类计话费并将话费从卡值中扣除,卡值余额每分钟刷新一次,计时与计费按每分钟3角钱计费,长话按6角钱计费,特话不收费。当卡上余
4、额不足时产生告警信号,告警时间到一定长度后自动切断当前通话。2.1.1单片机设计以单片机为核心的控制系统的公用电话计费系统。单片机在这里充当了很重要的角色,是输入与输出的核心控制部件,它通过读入打电话人输入的电话号码来启动不同的计费方式,并且能显示出来,单片机接有几个按键分别是用来选择计时的单位和费率,因为不同的费率与所拨打的电话的区域不同是相关的。单片机控制是比较简单的一种,也是最使用的一种。2.1.2 EDA技术设计 EDA技术以可编程逻辑器件FPGA和CPLD及其开发系统为硬件平台,以EDA开发软件如Quartus 为开发工具,基于逻辑功能模块的层次化设计方法设计数字系统。Quartus
5、 设计可采用原理图、硬件描述语言(VHDL)等多种输入方式,并支持这些文件的任意混合设计。2.2 方案论证2.2.1单片机总体设计方框图设计及分析如图1所示图1 单片机总体设计方框图2.2.2 EDA技术设计 根据VHDL特点,设计者不再需要考虑选择固定功能的标准芯片,而是从实现系统功能与性能出发来,建立计费器系统模块,如图2所示。图2 计费器系统模块2.3 方案选择经过比较及分析,我选择了利用EDA技术设计此系统,因为EDA使用户在无需实际芯片、电路板和仪器仪表的情况下进行电路设计和分析;采用在系统编程技术,在现场对系统进行逻辑重构和升级,实现硬件设计软件化。以EDA开发软件如Quartus
6、 为开发工具,基于逻辑功能模块的层次化设计方法设计数字系统。Quartus 设计可采用原理图、硬件描述语言(VHDL)等多种输入方式,并支持这些文件的任意混合设计。对于不同层次,可采用不同的输入方式进行设计。单片机设计需要用到芯片,相对于EDA技术设计来说,设计思路要复杂的多。本次设计尝试用Verilog实现计费功能,进行了多层次的计费功能及软件调试仿真验证,分析时序以保证设计的正确性。3单元模块设计3.1设计思路3.1.1卡的插入模拟 卡的插入为一检测信号,采用开关信号来模拟。一旦开关拨上开始计费并显示,一旦拨下,则数码管全部熄灭,相当于挂断电话,把卡拔出。3.1.2设计三种电话种类 市话、
7、长途、特别电话。其中卡的初始值为50元,即为500角。市话(com_com)采用01表示,每分钟计费0.3元。长途话费(com_far)采用10表示,每分钟计费0.6元。最后为特别通话(com_spe)采用11表示,如110、119、120等,通话免费。3.1.3告警系统 如果话费余额不足,则设计一指示灯亮,表示警告。警告超过30秒,则数码管全灭,灯灭,表示强行切断通话。3.1.4 计费系统示意图 图3为计费系统的大致示意图图3 计费系统的示意图3.2 各单元模块功能介绍及电路设计 本设计用Verilog语言描述,有1个主控模块,具有输入输出端口,利用输入信号,将结果显示出来,整个主控模块如图
8、4所示:图4 主控模块4软件设计4.1 FPGA概述 FPGA是英文FieldProgrammable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA工作原理:FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线
9、(Interconnect)三个部分。FPGA的基本特点主要有: (1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 (2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 (3)FPGA内部有丰富的触发器和IO引脚。 (4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 (5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式
10、,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。因此,FPGA的使用非常灵活。 FPGA配置模式:FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
11、 4.2设计方法 采用文本编辑法,利用VerilogHDL语言描述计费功能,代码如附件一4.2.1计时方式 设计为秒信号,采用开发板的时钟信号为50MHZ的时钟,故需要分频50000_0000次,这样才得到秒信号。一开始需要拨上开关一(卡的插入与拔出开关),表示开始通话,并显示余额。4.2.2计费系统 开关一拨上以后,采用数码管显示卡的余额,这时候不计费.当开关二(市话)拨通后,按市话通话系统计费;当开关二拨通之后,采取长途计费方式。4.2.3话费刷新 每过60秒为一分钟,设置一个always(minute)语句,该语句采用分钟信号为触发信号,实现以每一分钟刷新一次话费余额。开关三拨通之后,采
12、取特别话费计费方式。4.2.4 设置计时变量 以四位数码管表示,以秒为单位。每过一秒,计时加一,即为通话计时。前两位为分钟,后面两位为秒。4.2.5程序流程图 图5为设计分频信号,实现秒时钟;图6为设置市话计方式;图7为长途电话计费方式;图8为特话计费方式;图9为显示话费流程图;图10为计时流程图。 图5 分频信号程序 图6 市话计方式 图7 长途电话计费方式 图8特话计费方式 图9 显示话费流程图 图10 计时流程图4.2.6 模块的源程序 如附录一。4.3 画出主要软件设计流程框图 程序流程图如图11所示图11 程序流程图5系统调试5.1硬件调试 此设计利用Quartus II开发软件进行
13、编程研究模拟IC电话的计费功能的实现过程,硬件界面如图12所示。图12 硬件界面5.2 软件调试软件调试过程仿真时序如图13所示:图13 仿真时序图6结论 用Verilog硬件描述语言的形式进行数字系统的设计方便灵活,利Quartus II软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误。降低了开发成本,这中设计方法必将在未来的数字系统设计中发挥越来越重的作用。本设计的模拟电话计费系统,基本实现在题目所给你要求。本设计采用的正式FPGA来控制计费功能的逻辑运行,具有编程灵活,性能可靠等优点,而且FPGA在去电后配置数据自动消失,用户可以控制加载进程,在现场修改器件的逻辑功能。在设计
14、过程中我们首先把整个计费设计根据功能分成若干个功能模块,然后理清各个模块的时序,以便将各个功能模块综合在一起,能够公用总线,使其能正常工作不受干扰,FPGA在实现计费功能方面比较灵活,可以通过对程序的修改来达到计费的不同功能。通过本次课程设计进一步熟悉Quartus II软件的使用和操作方法;以及对Verilog HDL语言的自顶向下设计方法有了进一步的认识,对其中的许多语句也有了新了解,掌握;对自己独立思考和解决问题的能力也有了很大的锻炼。7总结与体会模拟IC电话计费器系统的设计已全部完成,能按预期的效果进行模拟电话选通、 停止、计费、显示等功能,并设计动态扫描电路显示话费数目,由动态扫描电
15、路来完成。电话暂时停止不计费,话费保持不变。模拟电话计费器系统的设计已全部完成,能按预期的效果进行模拟电话选通、 停止、计费、显示等功能,并设计动态扫描电路显示话费数目,由动态扫描电路来完成。各模块完成后,在将它们组合成完整的电话计费系统,在设计过程中还需要改进的是控制系统的纠错功能。电话计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。 通过这次实验使我收获很多,对书本理论知识有了进一步加深,初步掌握了MAXPLUSII软件的一些设计使用方法。对一些器件的使用方法了解更深刻了,如一些器件
16、的使能端的作用等。主要有以下一些实验感想: 1、 应该对实验原理有深刻理解;2、 做实验必须不急不躁,不能看见其他同学做的快就沉不住气了;3、 熟练掌握软件是必要的;必须学会自己调试电路,一般第一次设计出的电路都会通不过编译的,所以要学会调试电路,而不是等老师解答或同学帮助;8谢辞 短暂的课程设计就要结束了,在此,感谢所有在学习和生活中给予我关心和帮助的人们。首先我要感谢杨坤明老师,本次课程设计设计的选题、课题调研与撰写工作实在和老师的指导下完成的。和老师渊博的知识、严谨的治学态度、一丝不苟的工作作风、和不厌其烦的精神对我影响至深,使我受益终生,在此我向和老师表示崇高的敬意和衷心的感谢。其次,
17、在我的课程设计期间,各个组对于相同相似问题进行几列讨论,逐一侦破,在此向这些同学们表示衷心的感谢。 最后,向所有曾给予我关心和帮助的老师和同学们再次致以最衷心的感谢。9参考文献1王金明.数字系统设计与Verilog HDLM.北京:电子工业出版社.2010.2潘松,黄继业.EDA技术实用教程M.北京:科学出版社.2010.3周润景,基于Quartus II的数字系统Verilog HDL设计实例详解,电子工业出版社,2010.4李景华,杜玉远.Verilog HDL语言及数字系统设计,国防工业出版社.5付家才,EDA原理与应用,北京:化学工业出版社教材出版中心,2005.6张立,张光新,柴磊,
18、周泽魁. FPGA在多功能计费器系统中的应用期刊论文-仪器仪表学报2005.7姜煜,基于FPGA芯片设计多功能数字钟的研究期刊论文-应用科技, 2001(12).8候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计修订版电子工程师必备知识,1999.9张昌凡.可编程逻辑器件及VHDL设计技术,2001.10王玫,王桂珍,田丽红.基于EDA改革数电课程设计,培养学生创新能力期刊论文-电气电子教学学报,2006(04).11王晓峰.可编程逻辑器件及硬件描述语言的EDA方法期刊论文-长春大学学报(自然科学版), 2005(04).附录一:源程序:module account(state,clk,c
19、ard,decide,disptime,dispmoney,write,read,warn,cut);/output write,read,warn,cut;input state,clk,card;input2:1 decide;/话务种类output10:0 dispmoney;/显示余额output8:0 disptime;/显示通话时间reg10:0 money; /reg8:0 dtime;reg warn,cut,write,t1m;reg set,reset_ena;integer num1,temp;assign dispmoney=card?money:0;assign di
20、sptime=dtime;assign read=card?1:0;always (posedge clk)beginif (num1=59) begin num1=0; t1m=1; endelse beginif(state)num1=num1+1;else num1=0; t1m=0; endendalways (negedge clk)begin if(!set) begin money=11h500; set=1; end if(card&state) if(t1m) case(state,decide) 3b101: if(money3)begin warn=1; write=0;
21、 reset_ena=1; endelsebeginif(money3:04b0011)beginmoney3:0=money3:0+7;if(money7:4!=0)money7:4=money7:4-1;elsebegin money7:4=9; money10:8=money10:8-1; endendelse money3:0=money3:0-3; write=1; if(dtime3:0=9)begindtime3:0=0;if(dtime7:4=9)begin dtime7:4=0; dtime8=dtime8+1; endelse dtime7:4=dtime7:4+1;end
22、elsebegindtime3:0=dtime3:0+1; warn=0; reset_ena=0;endend 3b110: if(money6)begin warn=1; write=0; reset_ena=1; endelse beginif(dtime3:0=9)begin dtime3:0=0; if(dtime7:4=9)begin dtime7:4=0; dtime8=dtime8+1; endelse dtime7:4=dtime7:4+1;endelse dtime3:0=dtime3:0+1;if(money3:04b0110)beginmoney3:0=money3:0
23、+4;if(!money7:4)begin money7:4=9; money10:8=money10:8-1; endelse money7:4=money7:4-1;endelse money3:0=money3:0-6;write=1; reset_ena=0; warn=0;end endcaseelse write=0;else begin dtime=0; warn=0; write=0; reset_ena=0; endendalways (posedge clk) beginif(warn) temp=temp+1;else temp=0;if(temp=15)begin cut=1; temp=0; endif(!card|!reset_ena)begincut=0;temp=0;end endendmodule