基于FPGA的电话卡计费器设计毕业设计论文.doc
武汉工业学院毕业设计(论文) 设计(论文)题目: 基于FPGA的电话卡计费器设计姓 名 学 号 院(系) 电气与电子工程学院专 业 电子信息科学与技术指导教师 目 录摘 要IAbstractII1.绪论11. 1课题背景11. 2课题研究内容11. 2. 1设计任务目的11. 2. 2设计任务要求12.综述32. 1FPGA简介32. 1. 1FPGA概述32. 1. 2FPGA的基本结构32. 1. 3FPGA的特点52. 1. 4FPGA的配置模式52. 1. 5FPGA的应用62. 2EDA技术简介62. 2. 1EDA的技术与发展62. 2. 2Verilog HDL语言的优点72. 2. 3Verilog HDL设计流程72. 3Quartus 简介83.原理与模块介绍93. 1电话卡计费器设计原理93. 1. 1电话卡计费器的控制要求93. 1. 2方案设计和功能分割103. 2各功能模块的设计和实现103. 2. 1控制与计费模块103. 2. 2显示模块113. 2. 3报警模块124.软件设计方案134. 1系统的软件设计134. 1. 1软件整体设计134. 1. 2软件编程思路135.仿真结果与分析145. 1市话仿真结果145. 2国内长途仿真结果145. 3国际长途仿真结果165. 4特殊电话仿真结果16结束语19致谢20参考文献21各模块源代码22摘 要目前,随着通信事业的发展及人们生活水平的提高,手机、小灵通各种先进的通信设备纷纷涌现,并越来越普及。虽然固定电话面对如此冲击,但并未退出历史舞台,相反因其信号强的固定优势,而走进了各家各户。电话机用户数以万计,计费依据来自电信局交换机给出的清单。虽然清单方式是准确的,但是电话机用户并不能及时方便地看到费用清单。然而卡式电话机可以实现这个要求,它能够实时显示和计费,能够给用户一个直接的信息。本课题以现场可编程逻辑器件FPGA为设计载体,以硬件描述语言Verilog HDL为主要表达方式,以Quartus 开发软件和DE2开发板为设计工具进行公用电话计时计费系统的设计,其能够显示用户IC的卡值余额,并能够根据用户当前的话务种类和通话时间进行扣费,并将用户的实时余额和通话时间通过4位LED七段显示器显示出来。整个设计过程采用自顶向下的分块设计方法,即将整个电话计费系统分为控制与计费模块、显示模块和报警模块。在整个设计过程中一共设计了4种计费方式,其分别为市话、国内长话、国际长话和特殊电话,当话费不足时有报警功能,报警一分钟后自动切断通话,当用户结束通话,系统清零。关键词:电话计费器;FPGA;Verilog HDL;DE2;Quartus ;报警AbstractAt present, with the development of communication and peoples living standards improve, mobile phones, PHS and all kinds of advanced communications equipment have emerged, and more and more popular. Although the fixed telephone in the face of such a shock, but did not withdraw from the stage of history, because of its strong signal of fixed advantage, and walked into the families.Tens of thousands of telephone users, charging basis from the telecommunication bureau switch statement. Although the list is accurate, but the telephone users cannot easily see cost list in time. However the card telephone can achieve this requirement. It can real-time display and billing, to give the user a direct information.The field programmable logic device FPGA as design carrier, the hardware description language Verilog HDL as the main way of expression, the design with Quartus II software and DE2 development board as the design tool for timing and charging system of public telephone, it can display the user IC card value of the balance, and can be charged according to the user's current traffic type and duration of the call, and the 4 LED seven display through the user's real-time balances and call time. The whole design process adopts the block the top-down design method, the telephone billing system is divided into control and billing module, display module and alarm module. In the entire design process, designed a total of 4 kinds of charging mode, respectively, domestic long-distance telephone, international long-distance telephone calls and special, when insufficient has alarm function, alarm after a minute cut off automatically when the user call, end the call, the system clear. Key words: FPGA; Verilog HDL; DE2; Quartus ; Call the police1. 绪论1. 1 课题背景当今,随着科学技术的发展,计算机技术带来了科研和生产的许多重大的飞跃,特别复杂可编程逻辑芯片的应用已经渗透到生产和生活中的各个方面,有力推动了社会的发展,特别是在实时控制方面有着比较强的功能。其性能不断提高,应用范围愈来愈广。在公用电话业务发展中,实时电话计资系统是企业、事业单位信息管理的一个重要组成部分。1. 2 课题研究内容1. 2. 1 设计任务目的在商品经济迅猛发展中,人们对电话的需求日益增长,大力发展和普及公用电话,以满足人们日常生活以及流动人口办理业务之需,已经成为当前市场趋势。在公用电话业务发展中,由于诸多原因,计费不准的现象屡见不鲜,相关管理混乱,给人们生活带来极大不便。为了使电话计费更加准确,本文将介绍一种采用FPGA设计实现电话卡计费器的方法。1. 2. 2 设计任务要求设计电话卡计费器实现如下功能:1) 根据电话局反馈回来的信号,代表话务种类(返回信号可自己输入),“01”为市话(0.1元/分钟),“10”为国内长话(1元/分钟),“11”为国际长话(2元/分钟),“00”为特殊种类电话(1.6元/分钟),并用DE2板上的两个数码管来显示通话为何种类型。2) 利用DE2板上的两个数码管用来显示卡内余额(可自己设定初始余额),其单位为元,这里假定能显示的最大数额为10元 。余额根据打市话每分钟0.1元,打国内长话1元,打国际长话2元,打特殊电话1.6元来计算。3) 显示本次通话的时长。4) 余额过少时的发出警告信号。当打市话时,余额少于0.2元,打国内长话时,余额少于2元,当打国际长话时,余额少于4元,当打特殊电话时,少于3.2元,即会产生警告信号。 5) 当余额不足以通话一分钟时自动切断通话信号。6) 利用VHDL/Verilog语言设计电话卡计费器。7) 利用DE2板对所设计的电路进行仿真、下载验证。8) 总结电路设计结果,撰写课程设计报告。2. 综述2. 1 FPGA简介2. 1. 1 FPGA概述FPGA是英文Field Programmable Gate Array 的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable Array Logic)、门阵列逻辑GAL(Gate Array Logic)、可编程逻辑器件PLD(Programmable Logic Device)等可编程器件的基础上进一步发展的产物。它是作为专用采集成电路ASIC(Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74系列电路,都可以用FPGA来实现。FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由设计一个数字系统。通过软件仿真,我们可以事先验证设计的真确性。在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。PLD的这些优点使得PLD技术在90年代以后得到飞速的发展,同时也大大推动了电子设计自动化EDA软件和硬件描述语言VHDL的进步。2. 1. 2 FPGA的基本结构FPGA由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。每个单元简介如下:1.可编程输入/输出单元(I/O单元)目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可适应不同的电器标准与I/O物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。2.基本可编程逻辑单元FPGA的基本可编程逻辑单元是由查找表(LUT)和寄存器(Register)组成的,查找表完成组合逻辑功能。FPGA内部寄存器可配置为带同步/异步复位和置位、时钟使能的触发器,也可以配置成为锁存器。FPGA一般依赖寄存器完成同步时序逻辑设计。一般来说,比较经典的基本可编程单元的配置是一个寄存器加一个查找表,但不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同。学习底层配置单元的LUT和Register比率的一个重要意义在于器件选型和规模估算。由于FPGA内部除了基本可编程逻辑单元外,还有嵌入式的RAM、PLL或者是DLL,专用的Hard IP Core等,这些模块也能等效出一定规模的系统门,所以简单科学的方法是用器件的Register或LUT的数量衡量。3.嵌入式块RAM目前大多数FPGA都有内嵌的块RAM。嵌入式块RAM可以配置为单端口RAM、双端口RAM、伪双端口RAM、CAM、FIFO等存储结构。CAM,即为内容地址存储器。写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。简单的说,RAM是一种写地址,读数据的存储单元;CAM与RAM恰恰相反。除了块RAM,Xilinx和Lattice的FPGA还可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构。4.丰富的布线资源布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。布线资源的划分:1)全局性的专用布线资源:以完成器件内部的全局时钟和全局复位/置位的布线;2)长线资源:用以完成器件Bank间的一些高速信号和一些第二全局时钟信号的布线。3)短线资源:用来完成基本逻辑单元间的逻辑互连与布线;4)其他:在逻辑单元内部还有着各种布线资源和专用时钟、复位等控制信号线。由于在设计过程中,往往由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以常常忽略布线资源。其实布线资源的优化与使用和实现结果有直接关系。5.底层嵌入功能单元6.内嵌专用硬核与“底层嵌入单元”是有区别的,这里指的硬核主要是那些通用性相对较弱,不是所有FPGA器件都包含硬核。2. 1. 3 FPGA的特点FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA的特点如下:1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC电路的中试样片。3)FPGA内部有丰富的触发器和I/O引脚。4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。2. 1. 4 FPGA的配置模式FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度帮助地系统设计工程师以更快、更高效的方式应用65nm FPGA器件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛。2. 1. 5 FPGA的应用FPGA的应用可分为三个层面:电路设计,产品设计,系统设计。2. 2 EDA技术简介 2. 2. 1 EDA的技术与发展在传统的硬件电路设计中,主要的设计文件是电路原理图,而采用硬件描述语言(Hardware Describe Language ,HDL)设计系统硬件电路时主要使HDL编写源程序。所谓硬件描述语言,是一种用形式化方法来描述数字电路和设计数字逻辑系统的计算机语言。它可以使数字逻辑电路设计者用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,利用这种语言来描述自己的设计思想,然后利用 EDA 工具进行仿真,自动综合到门级电路,再用ASIC或CPLD/FPGA实现其功能。目前这种称之为高层设计的方法已被广泛采用。据统计,在美国硅谷目前约有80%的ASIC和FPGA/CPLD使采用HDL方法设计的。硬件描述语言的发展至今已有二十多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代时,已出现了上百种硬件描述语言,如ABEL、HDL、AHDL,它们对设计自动化曾起到了极大的促进和推动作用,与传统的门级描述方式相比,它更适合大规模系统的设计。但是,这些语言由不同的EDA厂商开发,互不兼容,一般各自面向特定的设计领域与层次,不支持多层次设计,层次间翻译工作要由人工完成,而且众多的语言使用户无所适从。因此急需一种面向设计的多领域、多层次、并得到普遍认同的标准硬件描述语言。进入 80年代后期,硬件描述语言向着标准化的方向发展。1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL(Very-High-Speed Integrated Circuit Hardware Description Language),VHDL和Verilog HDL 语言适应了这种趋势的要求,先后成为IEEE标准。VHDL诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL与Verilog语言将承担起大部分的数字系统设计任务。Verilog HDL语言可读性强,易于修改和发现错误,覆盖面广,描述能力强,能支持硬件的设计,验证,综合和测试,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此Verilog HDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用Verilog HDL来完成。2. 2. 2 Verilog HDL语言的优点1) Verilog HDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。2) Verilog HDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。3) Verilog HDL的设计不依赖于特定的器件,方便了工艺的转换。4) Verilog HDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。2. 2. 3 Verilog HDL设计流程现在的数字电路系统规模特别大,要设计这么大一个系统,一般都是由总设计师把整个硬件设计任务划分成若干个部分,编出相应的模型(行为的或者结构的),通过仿真加以验证后,在把各个模块分配给下面的工程师。下面的工程师再细化手中的工作。这样可以把一个大的系统分成很多的小系统分开给多人设计,从而提高设计的速度和缩短开发周期。而且有的部分可以利用IP核(一些成熟的商业模块)的使用权,更为有效的开发。这样的一个设计概念叫做自顶向下(TOP-DOWN)。自顶向下的设计就是从系统级开始,把系统分成若干个基本单元,然后把这些基本单元划分成下一层的基本单元,一直这样下去,一直可以用EDA元件库中的基本元件实现。Verilog HDL的设计流程一般是:1) 文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常Verilog HDL文件保存为.vhd文件。2) 功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只有在布线完成之后,才进行时序仿真)。3) 逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。逻辑综合软件会生成.bdf的EDA工业标准文件。4) 布线布局:将.bdf文件调入CPLD厂家提供的软件进行布线,即把设计好的逻辑安放到CPLD/FPGA内。5) 时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序(也叫后仿真)。2. 3 Quartus 简介Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。该软件具有开发性、与结构无关、多平台、完全集成化、丰富的设计库、模块化设计。该软件方便易用,功能齐全,是非常先进的EDA工具软件。Quartus II特点(1) 最易使用的CPLD设计软件(2) Quartus II给MAX+plus II用户带来优势(3) 器件支持(4) FPGA设计流程(5) 系统设计技术(6) 时序逼近方法(7) 验证方案(8) Quartus II软件简化了Hardcopy设计(9) 强大的软件开发工具Quartus II3. 原理与模块介绍3. 1 电话卡计费器设计原理3. 1. 1 电话卡计费器的控制要求为了使电话卡计费器能够正常稳定运行,在设计时应考虑到如下几点:1、在插入电话卡的同时,电话计费器的控制模块开始工作,这里我们用一个开关模拟读卡。2、电话计费控制器与正常通话计费、计时模块相连,以实现整个系统的计费计时功能。3、如果卡内余额不足,报警模块将实现报警功能,报警模式采用光报警,并且当告警时间过长(如超过1分钟)时自动切断通话信号,系统不工作。4、计费计时模块与显示模块相连,显示模块应实现对通话时间以及对话费余额的显示功能。其计费一般过程可概括为:用户插入电话卡整个系统开始运行显示卡内余额。由于没有信号接受器,该系统将由外部输入通话类型(市话、国内/国际长途、特殊电话等)。如果选择通话,计费系统将话费余额与所选通话类型计费率进行比较。如果话费余额小于费率值,则禁止通话且报警提示;如果话费余额大于等于通话二分钟门限, 是正常通话状态, 通话指示灯亮;如果话费余额大于或等于费率值并且小于通话二分钟门限,则进入通话报警状态,表示通话时间不足一分钟,通话报警灯亮且当告警时间过长(如超过1分钟)时自动切断通话信号,系统不工作。5、根据电话计费器的工作过程,本系统采用分层次化、分模块的方式设计,本系统设计的系统组成框图如图3.1所示三个模块:控制与计费模块、显示模块和报警模块。如图中虚线框所示。控制与计费模块完成计费功能并产生控制信号,控制另外两个模块。显示模块动态显示通话时间与通话余额计费等信息。报警模块是根据通话中出现的报警信息,及时给出光报警。 电 话 计费 控 制器时 钟正 常 通 话计 费 计 时模 块 显 示方 式通话计时显示话费余额显示余 额 不 足 报 警插入电话卡图3.1 系统设计组成框图3. 1. 2 方案设计和功能分割本系统采用层次化、模块化的设计方法,设计顺序采用自顶向下设计。首先实现系统总体框图中各子模块然后由顶层模块调用各子模块实现整个系统。为了便于BCD码显示,这里时间和费用计数器均采用十进制表示。3. 2 各功能模块的设计和实现 3. 2. 1 控制与计费模块计费计时模块是整个IC电话计费器的核心部分。它主要完成用户通话过程的计时、计费功能,且能够根据当前通话的种类(国际长途2元/分,国内长途1元/分、市话0.1元/分、特话1.6元/分)进行相应的扣费,其通话时间和卡值余额(最大余额为10.0元)信息每分钟更新一次,并能在用户通话时其卡内余额不足以继续通话时能通过告警信号提示用户,并在之后强制结束通话,其整个过程如下图3.2所示。开始选择通话类型style1:000特殊通话,01市话,10国内长途,11国际长途 enable 0所有显示清零开始计时计费 1余额remain<费率cost 进入报警模块 1 0余额remain<底线line 1通话state=1,继续报警warn=1 0正常通话state=1,不报警warn=0图3.2 控制与设计模块流程图3. 2. 2 显示模块该模块经过3选1选择器将余额信息(4位BCD码以元为单位)、计时信息(4位BCD码以秒为单位)动态显示输出,并可进行时间和余额的切换,其整个过程如下图3.3所示。当前状态使能开关 0 1计时,计费显示零下一状态计时count_time<60 1 0余额相应减少正常计时下一状态下一状态 图3.3 显示模块流程图3. 2. 3 报警模块该模块的功能是产生光报警信号,提示用户卡内余额不足。当报警条件满足时,通话指示灯亮或声音提示,其整个过程如下图3.4所示。当前状态报警warn 0 1报警,通话信号 11 10报警warn=1,继续通话state=1继续通话切断通话 图3.4 报警模块流程图4. 软件设计方案4. 1 系统的软件设计4. 1. 1 软件整体设计本系统设计的系统组成框图包括三个模块:控制与计费模块、显示模块和报警模块。控制与计费模块完成计费功能并产生控制信号,控制另外两个模块。显示模块动态显示通话时间与通话余额计费等信息。报警模块是根据通话中出现的报警信息, 及时给出声、光或者声光报警。本系统采用Verilog HDL硬件描述语言进行设计。4. 1. 2 软件编程思路1、计时方式设计为秒信号,采用开发板的时钟信号为50M HZ的时钟,故需要分频50000_0000次,这样才得到秒信号。一开始需要拨上开关一(模拟卡的插入与拔出开关),表示开始通话,并显示余额。2、计费系统开关一拨上以后,采用数码管显示卡的余额,这时候不计费.系统采用两个开关控制话务种类(返回信号可自己输入),“00”表示特殊电话,“01”表示市话,“10”表示国内长话,“11”表示国际长话;并用DE2板上的两个数码管来显示通话为何种类型;当两开关都没拨通时,处于未通话状态,系统只显示余额,不计费;当开关拨至01,处于市话状态中,拨通后,按市话通话系统计费;当开关拨至10,处于国内长途通话状态,拨通之后,采取长途计费方式;开关拨至11,处于国际长途通话状态,拨通之后,采取特别话费计费方式。3、话费刷新 每过60秒为一分钟,设计一个数码管刷新语句,该语句采用分钟信号为触发信号,实现以每一分钟刷新一次话费余额。4、设置计时变量 以四位数码管表示,以秒为单位。每过一秒,计时加一,即为通话计时。前两位为分钟,后面两位为秒。5. 仿真结果与分析5. 1 市话仿真结果当拨打市话每分钟0.1元时,仿真波形如下图5.1所示。图5.1 市话仿真结果如图5.1中所示,当计费余额初始为remain15:0=0000 1000 0000 0000时,每分钟减0.1元,所以在62.0 ns时(enable延时2.0 ns)remian=15:0=0000 0000 1001 1001即9.9元,所以计费市话仿真正确,此处由于仿真时,市话每次减0.1元,减到0.2元,即低于限额0.2元时,要经过较长时间,故没有给出warn和state在低于限额跳变时的波形,但在DE2的电路板上验证是正确的。5. 2 国内长途仿真结果当拨打国内长途每分钟1元时,仿真波形如下图5.2所示。图5.2 国内长途仿真结果如图5.2中所示,当计费余额初始为remain15:0=0000 1000 0000 0000时,每分钟减1.0元,所以在62.0 ns时(enable延时2.0 ns)remian=15:0=0000 0000 1001 0000即9.0元,所以计费国内长途仿真正确。当拨打国内长途在余额低于限额时,仿真波形如下图5.3所示。图5.3 国内长途在余额低于限额时的仿真结果如图5.3所示,当余额未低于限额时,warn=0,state=1正常通话,不报警,在363.0ns时,余额低于限额,warn=1,state=1继续通话,发出报警信号,所以仿真正确。5. 3 国际长途仿真结果当拨打国际长途每分钟2元时,仿真波形如下图5.4所示。图5.4 国际长途仿真结果如图5.4中所示,当计费余额初始为remain15:0=0000 1000 0000 0000时,每分钟减2.0元,所以在62.0 ns时(enable延时2.0 ns)remian=15:0=0000 0000 1001 0000即8.0元,所以计费仿真国际长途正确。5. 4 特殊电话仿真结果当拨打特殊通话每分钟费率cost=1.6元时,仿真波形如下图5.5所示。图5.5 特殊电话仿真结果如图5.5所示,62.0 ns时,计到一分钟(enable在2.0ns开启),余额从开始的10.0元,remain15:0=00000001 0000 0000跳变到remain15:0=0000 0000 1000 0100即8.4元,仿真正确。当拨打特殊电话余额低于限额时,仿真波形如下图5.6所示。图5.6 特殊电话余额低于限额时的仿真结果如图5.6所示,当余额未低于限额时,state=1,warn=0,正常通话,不报警,在123ns时,余额低于限额,进入报警状态,但仍然保持通话状态,故state=1,仿真正确。当余额不足以通话一分钟时,仿真波形如下图5.7所示。图5.7 特殊电话余额不足一分钟时的仿真结果如图5.7所示,通话状态信号state跳变为低电平,并且所有显示全部清零,而此时warn信号变为低电平,不再进行报警,切断通话,仿真结果正确。结束语经过了两个多月的学习和工作,我终于完成了基于FPGA的电话卡计费器设计的论文。从开始接到论文题目到系统的实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战,这也是我在大学期间独立完成的最大项目。在这段时间里,我学到了很多知识也有很多感受,从对Quartus 、Verilog HDL 的不熟悉,对电话计费器的相关技术很不了解的状态,我开始了学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己的作品进一步完善起来,每一次的改进都是我学习的收获,每一次试验的成功都会让我兴奋好一段时间。本次设计基于FPGA在Quartus 平台上使用Verilog HDL硬件描述语言完成了一个电话计费器系统的设计,整个设计过程中采用自顶向下的分模块化设计方案,将整个系统分为报警模块、计费计时模块、显示及其控制模块三大模块,而显示模块继续分为若干小模块,并对各个模块分别进行了仿真分析,最后使用代码连接将各个模块有机的组合,便完成了整个电话计费系统。通过对整个计费系统的仿真波形分析,可以看出此计费系统能够在用户摘机,并接通电话时,实时的显示用户卡值余额和通话时间,并能根据用户当前的通话种类进行相应的扣费,并且在用户余额不足时,能够提醒用户并在后强行中断用户通话。因此,本次设计基本上较好的完成了设计要求。致谢这次毕业论文能够得以顺利完成,并非我一人之功劳,是所有指导过我的老师,帮助过我的同学和一直关心支持着我的家人对我的教诲、帮助和鼓励的结果。我要在这里对他们表示深深的谢意。感谢我的指导老师李捷老师,李老师学识渊博,为人随和,对于课题的进展给予了悉心的指导,李老师给予我们的不仅是单纯的知识更重要的是学习的方法,在完成课题的过程中我不仅学到了知识,更重要的是增强了自主学习的能力,这将让我终身受益。如果没有您的悉心指导就没有这篇论文的顺利完成,所以在这我由衷的向李老师表达谢意。感谢我的同学,转眼间大学四年已经悄然而逝,你们也已经陪我走过了四个春秋。在这个意气风发的时期,我们一起学习;一起谈理想、谈梦想;发表每个人对人生、对未来的种种见解。感谢你们陪我走过求知的四年,也感谢你们一直以来的帮助和关心。感谢所有