当前位置:文档之家› 毕业论文

毕业论文

基于FPGA的话机系统设计

摘要

以硬件描述语言(VHDL)来设计一个数字时钟已越来越普遍,这对我们来说已经没有挑战性了,而怎样在此基础上添加一些新的模块以此来实现新的功能就成为了我们研究的意义所在。基于FPGA话机系统设计正是在数字时钟的基础上添加了拨号功能、通话计时功能、一键拨号功能的一种创新性设计。

本系统设计以FPGA作为主控制器,通过编写VHDL语言来完成模块的设计。设计的模块主要包括:分频模块、消抖模块、转换模块、时间模块、计时模块、拨号模块、显示模块。经过QuartusⅡ软件的编译仿真,并在GW48-SOPC试验箱上进行结果验证,本设计实现了话机的基本功能。在设计的过程中,进行了控制按键、拨号、重拨、显示切换功能的研究。控制按键的设计上采用组合按键解决了实验箱上按键紧张的问题;拨号功能设计上采用脉冲拨号方式,每到一个脉冲实现号码的输入与左移;显示切换设计上采用数据选择器的方式,根据使能按键的不同组合来控制输出显示。本次课题研究结果:完成了各功能模块设计,并通过了相应的软件仿真和硬件仿真,基本实现了时间显示、拨号、通话计时、一键重拨的功能。

关键词:硬件描述语言,FPGA,话机,模块,QuartusⅡ,控制

DESIGN OF THE PHONE SYSTEM

BASED ON FPGA

ABSTRACT

Using hardware description language ( VHDL ) to design a digital clock has been more and more popular, but now it has no challenge for us, so how to add some new module based on it in order to achieve a new function becomes the significance of our study. The telepho ne system design Based on the FPGA is a kind of creative design based on the digital clock in added dial-up function, calling timing function, a key dial-up function.

The design of this system is to use FPGA as the main contro ller, through the compilation of VHDL language to comp lete the module design. Design module mainly include: frequency d ivision module, elimination Buffeting module, time module, timing module, dial-up module, displaying module. After the Quartus Ⅱsoftware comp iled simulation, and the result is verified in GW48-SOPC test box, the system design achieves the basic function of telephone. In the process of design, we carried out a control key, dial, redial, display-switching functio n research. Contro l button design uses a key comb inatio n to solve the key problems o f the experimental box; Dialing function design use pulse dialing mode, each pulse arrival achieve number of the input and shift left; Disp lay switch is designed by adopting data selector means, controlling the output disp lay according to enable different combination of key. The research results : the completion of the design of various functional modules, and the corresponding software simulation and hard ware emulation, the basic realization of the time display, dialing, call timing, a redial function.

KEY WORDS:VHDL, FPGA, telephone, module, QuartusⅡ, contro l

目录

前言 (1)

第1章绪论 (2)

§1.1 选题的依据与意义 (2)

§1.2 选题背景 (2)

§1.2.1 课题相关技术的发展 (2)

§1.2.2 课题研究的必要性 (3)

第2章FPGA及开发工具 (4)

§2.1 FPGA简介 (4)

§2.1.1 FPGA的基本结构 (4)

§2.1.2 FPGA的主要特点 (6)

§2.1.3 FPGA系统设计流程 (7)

§2.2 QuartusⅡ (9)

第3章设计要求与总体设计 (11)

§3.1 设计要求 (11)

§3.2 总体设计 (11)

第4章系统模块设计及仿真 (13)

§4.1 话机系统的VHDL语言设计 (13)

§4.1.1 模块示意图和输入输出描述 (13)

§4.1.2 系统顶层设计 (18)

§4.2 波形仿真 (19)

第5章结果及分析 (21)

§5.1 硬件调试结果 (21)

§5.2 结果分析 (21)

结论 (23)

参考文献 (24)

致谢 (26)

附录 (27)

前言

随着科学技术日新月异的发展以及人类社会生活水平的提高,电话机已经进入千家万户,成为了人们相互联系、相互沟通的必不可少的电子产品。虽然手机的出现对话机提出了新的挑战,造成了一定的影响,但因话机有这它不可替代的作用而存活下来了。所以对于话机的研究还是很有必要,很有实际意义的。

本文对话机的研究是从一个很小的方面入手,通过我们所学过的理论知识与掌握的实践经验来设计一个普通的话机系统。设计的主要思想是:采用FPGA来控制数码管的显示来模拟一个电话机的显示系统。这一课题是对我四年学业的一个综合考验,具有其现实意义以及指导意义。课题要求的目标是实现话机的系统的设计:有挂机时间显示,有摘机通话计时,还有一键重拨的功能。

本文阐述的主要设计思路是在数字时钟的基础上添加基本的摘机/挂机、开始/结束通话、拨号、重拨等控制键实现基本的话机系统,并添加了时间校准、通话计时功能,利用摘机/挂机、开始/结束通话、重拨等控制键对时间显示、拨号显示、计时显示、重拨显示四个模块的显示进行切换。采用模块化设计的方法来实现系统的设计,具体的功能模块有:分频模块、消抖模块、转换模块、时间模块、计时模块、拨号模块、重拨模块、显示模块。利用VHDL 语言编写各功能模块,所有模块组建成顶层文件,从而完成了话机的系统设计。

第1章绪论

§1.1选题的依据与意义

现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronic design auto matic,EDA)技术。

VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。

基于FPGA的话机系统设计正是利用VHDL来实现,是电子设计自动化的一种体现。采用VHDL语言的模块化设计来完成复杂系统的设计也越来越成为现代电子设计的一种主流趋势。本次设计要求我们利用学过的专业知识来构建各个功能模块并能实现多模块的和谐工作,其完成并实现的过程正是我们探索未知的过程,是我们发挥聪明才智求取创新的过程,所以本课题有很重要的实际意义。

§1.2选题背景

§1.2.1课题相关技术的发展

当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别师大量使用大规模可编程逻辑器件,

使产品的性能提高,体积缩小,功耗降低.同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。

美国ALTERA公司的可编程逻辑器件采用全新的结构和先进的技术,加上Maxp lusII(或最新的QUARTUS)开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计。

EDA技术,技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。最终形成集成电子系统或专用集成芯片的一门新技术。

本设计是利用VHDL硬件描述语言结合可编程逻辑器件进行的,并通过数码管动态显示结果。话机可以由各种技术实现,如单片机等。利用可编程逻辑器件具有其他方式所没有的特点,它具有易学,方便,新颖,有趣,直观,设计与实验项目成功率高,理论与实践结合紧密,体积小,容量大,I/O 口丰富,易编程和加密等特点,并且它还具有开放的界面,丰富的设计库,模块化的工具以及LPM定制等优良性能,应用非常方便。因此,本设计采用可编程逻辑器件实现。

§1.2.2课题研究的必要性

现在是一个知识爆炸的新时代。新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。随着话机的出现,人们之间的距离越来越近,关系越来越亲密,相互间的交流也越来越轻松。那么怎样实现人与机器的交流也显得越来越重要,很显然机器必须以一种人类能够理解的方式才能实现交流。而话机的显示系统正是人们所能够获得的有用的信息,所以本课题的研究有很重要的意义。

第2章FPGA及开发工具

§2.1FPGA简介

FPGA(Field-Programmab le Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

§2.1.1FPGA的基本结构

FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。

FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这3种可编程电路是:可编程逻辑模块(CLB--Configurable Logic Block)、输入/输出模块(IOB--I/O Block)和互连资源(IR—Interconnect Resource)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB 之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。

1.CLB是FPGA的主要组成部分。图2-1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G’、F’和H’。G有4个输入变量G1、G2、G3

和G4;F也有4个输入变量F1、F2、F3和F4。这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G’和F’,而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。

CLB中有许多不同规格的数据选择器(四选一、二选一等),通过对CLB 内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。

CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出。另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写存储器使用,它由信号变换电路控制。

2.输入/输出模块IOB。IOB提供了器件引脚和内部逻辑阵列之间的连接。它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。

每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。当IOB 控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。缓冲器的输出分成两路:一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。

当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D触发器,再送至输出缓冲器。

IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。

3.可编程互连资源IR。可编程互连资源IR可以将FPGA内部的CLB和CLB

之间、CLB 和IOB 之间连接起来,构成各种具有复杂功能的系统。IR 主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。

图2-1 FPGA 的基本结构

§2.1.2 FPGA 的主要特点

(1) 采用FPGA 设计AS IC 电路(特定用途集成电路),用户不需要投片生产,就能得到合用的芯片。

(2

FPGA

可做

其它

全定制或半定制AS IC 电路的中试样片。 (3) FPGA 内部有丰富的触发器和I /O 引脚。

(4) FPGA 是ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一。

(5) FPGA 采用高速CHMOS 工艺,功耗低,可以与CMOS 、TTL 电平兼容。

可以说,FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA 是由存放在片内RAM 中的程序来

设置

其工

作状态

,因

可编程开关矩

输入输出模块

互连资源

工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA 功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

§2.1.3FPGA系统设计流程

图2-2 CPLD/FPGA系统设计流程

一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具

体实现,这就是TOP DOWN(自顶向下)的设计方法。目前这种高层次的设计方法已被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。

CPLD/FPGA系统设计的工作流程如图2-2所示。

流程说明:

(1)工程师按照“自顶向下”的设计方法进行系统划分。

(2)输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。

(3)将以上的设计输入编译成标准的VHDL文件。

(4)进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。

(5)利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。

(6)利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一步骤。

(7)利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。

(8)在适配完成后,产生多项设计结果:(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。

(9)最后将适配器产生的器件编程文件通过编程器或下载电缆载入到

目标芯片CPLD/FPGA中。

§2.2QuartusⅡ

Quartus II是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

§2.2.1 Quartus II下的FPGA设计

Quartus II为硬件电路的设计提供了很大的方便。FPGA之所以能够广泛应用于电路设计中,就是因为它们有使用相当方便的开发软件工具包,通过编程工具和软件的配合使用,对器件芯片可以进行流畅的开发、校验。FPGA 特别适用于正向设计,即从电路原理图或各种硬件描述语言到芯片成品的设计,在这些设计流程中,设计人员对特别底层的硬件知识并不需要特别的了解和掌握,完全可以从功能应用出发,根据任务需求,自顶向下地进行电路设计。下面我们来看看FPGA的设计流程,Quartus II环境下的FPGA设计过程主要包括5个步骤:

(1)设计输入

运用电路原理图输入、HDL文本输入等方式,表达设计思想,指定所用HIGA器件的型号,分配其外部管脚。

(2)综合

将原理图、HDL语言等设计输入翻译成由基本电路逻辑单元组成的连接网表,供布局布线器进行实现。

(3)布局布线

根据连接网表文件,进行布局布线的分析和优化,完成FPGA器件内、外的虚拟连接。

(4)仿真

仿真分为功能仿真和时序仿真。功能仿真验证电路功能是否符合设计要

求;时序仿真包含了延时信息,能较好反映芯片的工作情况。

(5)编程和配置

成功编译后,将生成的编程文件下载到目标FPGA系统中调试;调试成功后,烧写到FPGA的配置芯片中。

§2.2.2QuartusⅡ的仿真

仿真分为功能仿真和时序仿真。通常,功能仿真用于验证电路的功能是否正确。本次设计主要是在QuartusⅡ软件中进行功能仿真验证。仿真的一般步骤如下:

(1)新建波形编辑文件。

(2)设置仿真时间区域。

(3)保存文件。

(4)导入欲观察的信号节点。

(5)编辑激励信号。

(6)设置数据格式。

(7)设置仿真器参数。

(8)启动仿真和观察仿真结果。

第3章设计要求与总体设计

§3.1设计要求

本次设计话机系统具有如下功能:

(1)在未使用电话机时,正常时间显示。

(2)有拨号时,显示拨号号码。

(3)通话过程中有计时。

(4)挂机后返回正常的时间显示。

(5)固定按键一键拨号。

§3.2总体设计

(1)总体设计框图如下:

图3-1 系统总体设计框图

(2)各个模块实现功能如下:

(a)分频模块:将对基准脉冲分频生成设计中所需要的几个脉冲信

号。

(b)消抖模块:对控制按键进行消除抖动的处理。

(c)时间模块:实现时间的显示及校对时间的功能。

(d)计时模块:对通话的时间进行统计。

(e)拨号模块:对拨号的输入及输出进行控制。

(f)重拨模块:对所拨的号码寄存并对输出进行控制。

(g)显示模块:通过摘机信号和通话信号对时间显示、计时显示和拨

号显示进行显示切换。

第4章系统模块设计及仿真

§4.1话机系统的VHDL语言设计

§4.1.1模块示意图和输入输出描述

(1)分频模块fenp in

图4-1 分频模块

端口声明:

输入in_clk:试验箱上提供的基准脉冲信号。

输出clk_1:经分频后的1HZ脉冲信号,作为时间显示模块和通话计时模块的时钟输入信号。

输出clk_2:经分频后的2HZ的脉冲信号,作为校时模块和显示模块的脉冲输入信号。

输出clk_4:经分频后的4HZ的脉冲信号,作为消抖模块的脉冲输入信号。

(2)消抖模块xiaodou

图4-2 消抖模块

端口声明:

输入clk_4:4HZ的脉冲输入,用于消抖的时钟信号。

13

输入din[8..0]:9位控制按键输入信号。

输出dout[8..0]:经消抖后的9位控制按键的输出信号。

(3)转换模块zhuanhuan

图4-3 转换模块

端口声明:

输入din[8..0]:消抖后的按键控制信号。

输出dout[8..0]:输入的脉冲信号变为高低电平信号。

(4)时间模块times

图4-4 时间总模块

时间模块又由六十进制计数器、二十四进制计数器、校时子模块组成:(a)时间子模块(六十进制计数器)

图4-5 六十进制计数器模块

(b)时间子模块(二十四进制计数器)

14

图4-6 二十四进制计数器模块(c)时间子模块(校时模块)

图4-7 校时模块

图4-8 时间模块总体结构图:

15

端口声明:

输入js:校时按键控制信号。

输入clk_2:用于校时的2HZ脉冲信号。

输入clk_1:作为时钟走时的1HZ脉冲信号。

输出dout[23..0]:时间显示的输出。

(5)通话计时模块js

图4-9 通话计时模块

端口声明:

输入th:通话的按键控制信号。

输入zj_gj:摘机/挂机的按键控制信号。

输入clk_1:作为计时的时钟脉冲信号。

输出dout[23..0]:作为通话计时的输出。

(6)拨号模块d ial

图4-10 拨号模块

端口声明:

输入zj_gj:摘机/挂机的按键控制信号,电平触发。

输入enable:作为拨号的使能信号,上升沿有效,实现拨号的左移。输入din[3..0]:四位组合按键实现0~9的拨号输入。

输出dout[31..0]:作为拨号的输出。

16

相关主题
文本预览
相关文档 最新文档