FPGA课设 手机自动拨号器.doc

上传人:b****1 文档编号:244051 上传时间:2022-10-07 格式:DOC 页数:20 大小:353.06KB
下载 相关 举报
FPGA课设 手机自动拨号器.doc_第1页
第1页 / 共20页
FPGA课设 手机自动拨号器.doc_第2页
第2页 / 共20页
FPGA课设 手机自动拨号器.doc_第3页
第3页 / 共20页
FPGA课设 手机自动拨号器.doc_第4页
第4页 / 共20页
FPGA课设 手机自动拨号器.doc_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

FPGA课设 手机自动拨号器.doc

《FPGA课设 手机自动拨号器.doc》由会员分享,可在线阅读,更多相关《FPGA课设 手机自动拨号器.doc(20页珍藏版)》请在冰豆网上搜索。

FPGA课设 手机自动拨号器.doc

1.绪论

1.1FPGA简介

FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。

这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。

在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

时至今日,FPGA(现场可编程逻辑器件)产品的应用领域已经从原来的通信扩展到消费电子、汽车电子、工业控制、测试测量等广泛的领域。

而应用的变化也使FPGA产品近几年的演进趋势越来越明显:

一方面,FPGA供应商致力于采用当前最先进的工艺来提升产品的性能,降低产品的成本;另一方面,越来越多的通用IP(知识产权)或客户定制IP被引入FPGA中,以满足客户产品快速上市的要求。

此外,FPGA企业都在大力降低产品的功耗,满足业界越来越苛刻的低功耗需求。

1.2AlteraQuartusII简介

AlteraQuartusII是一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

当前官方提供下载的最新版本是v13.0。

AlteraQuartusII(3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。

工程师使用同样的低价位工具对StratixFPGA进行功能验证和原型设计,又可以设计HardCopyStratix器件用于批量成品。

系统设计者现在能够用QuartusII软件评估HardCopyStratix器件的性能和功耗,相应地进行最大吞吐量设计。

Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。

该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。

Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。

改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

1.3VerilogHDL简介

VerilogHDL是一种硬件描述语言(HDL:

HardwareDescriptionLanguage),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

VerilogHDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。

前者由GatewayDesignAutomation公司(该公司于1989年被Cadence公司收购)开发。

两种HDL均为IEEE标准。

2.设计任务及要求

2.1设计任务

设计一个自动重复拨号器电路。

当按下拨号键后,该电路能够自动地、重复地输出一个11位的手机号码(本课题用于学生本人的手机号、固定电话号加拨027)。

并用数码管显示该号码。

显示的数码清晰明亮,无闪烁。

2.2设计要求

1、选择FPGA开发板。

2、定义输入输出变量。

3、编写FPGA程序。

4、仿真并测试系统功能。

5、规定的格式(见附录),写出课程设计报告。

3.电路的设计过程

3.1设计思路

本次课程设计的主要任务就是要将一个手机号码自动重复地输出,并且用数码管显示出来。

因此,可以将本次的设计电路分为两大模块:

循环计数模块和译码模块。

前者负责产生循环的手机号码输出,后者则负责对输出的信号进行译码以便用于数码管显示。

最后我们可以加上一个D触发器对输出信号进行寄存输出,以使输出信号更加稳定。

在本次设计中,采用的语言为VerilogHDL。

3.2模块设计原理

3.2.1循环计数输出模块

①原理概述:

考虑到我们要对一个手机号码进行循环地输出,而手机号往往是没有太强规律性的一串数字,因此我们可以用状态机中的每一个状态分别代表每一位号码,从而利用状态的循环输出达到设计要求的目的。

另外我们还需要对输出进行一定的控制,在这里我们加入一个RESET信号进行复位,当RESET有效时(本次设计中为低电平有效),计数从头开始。

图3.1中每一个状态都分别对应着一位手机号的输出,通过这11个状态的循环切换,即可以实现手机号码的循环输出。

RESET=0

st0St0

st2

st1

st3

st4

st5

st6st6

st7

st8

st9

st10

图3.1状态转换图

②状态机的选用

在设计本模块时,我们用到了有限状态机(FiniteStateMachine)。

这是一种重要的时序电路,在数字系统设计中有着非常重要的地位和作用,使用它可以较容易设计出复杂的数字系统,包含组合逻辑电路。

有限状态机可以描述和实现大部分的时序电路。

这里所谓的有限状态机实际上就是一种算法思想,它能够根据控制信号按照有序方式遍历预先定义的状态序列,它由一组状态、一个初始状态、输入和根据输入及现有状态转换为下一个状态的转换函数组成。

有限状态机根据输出信号与当前状态以及输入信号的关系来分,可以分为Moore型和Mealy型两种。

其中输出信号只和当前状态有关的状态机称为Moore型状态机;输出信号不仅与当前与状态有关,而且也和输入信号有关的状态机称为Mealy型状态机。

由于Moore状态机与mealy状态机相比,由于其状态输出与输入无关,而只与当前状态有关,所以它可以避免由输入信号引起的毛刺,一般建议使用Moore状态机。

因此在本次设计中选用了Moore状态机进行设计。

③状态机的编码

  常用的编码有三种:

二进制编码、Gray码、one-hot编码。

另外,还可以自定义编码,比如在高速设计中以状态编码作为输出。

FSM几种常用的编码实例如表3.1所示。

表3.1FSM几种常用的编码实例

几种编码的特点:

顺序编码、Gray码使用最少的Flip-Flop(触发器);

One-Hot编码使用最多的Flip-Flop;FSM的编码方式、各个具体状态的编码形式决定了FSM所需要的Flip-Flop数目及FSM的输出逻辑、状态转换逻辑的复杂性。

采用顺序编码、Gray码、Johnson编码,FSM的状态转换逻辑、输出逻辑较复杂,逻辑延时级数较多;采用One-Hot编码,FSM的转态转换逻辑、输出逻辑相对简单,速度快,但Flip-Flop的使用数量最多;必要时,须对FSM的状态数目加以划分。

在本次设计中只是要实现简单的手机号各位状态的转换和输出,每个状态的跳转只有一个分支,我们可以使用格雷码进行编码,它使用的触发器较少,而且在这种情况下有着良好的抗毛刺效果。

④模块程序设计

Moore状态机的结构图如图3.2所示。

图3.2Moore状态机结构图

状态机的代码编写一般有三种风格:

一段式、两段式、三段式。

一段式将状态转移寄存、状态译码和输出放在一个always块中;二段式有两个always块,一个完成状态转移寄存、另一个完成状态译码和输出;三段式中两个always块,一个完成状态转移、另一个完成状态译码和输出,还对状态输出进行了寄存,有可能使用三个always,也有可能是两个(本身已经对状态输出进行了寄存)。

一段式描述可读性差,更重要的是这种风格不能被综合工具很好的识别,因而比较难被优化。

二段式把组合逻辑和时序逻辑分开,有较好的可读写,能被优化,但可能出现毛刺。

三段式在保留二段式有点的基础上,可以有效滤除毛刺,提高工作频率,只是资源占用略多,三段式中两个always块,一个完成状态转移、另一个完成状态译码和输出,还对状态输出进行了寄存,有可能使用三个always,也有可能是两个(本身已经对状态输出进行了寄存)。

因此在本次设计中使用了三段式写法。

根据以上选定的设计方案,得到程序流程图如图3.3所示。

开始

等待时钟(clk)上升沿或

复位(reset)下降沿

复位if(!

reset)

次态逻辑完成状态转移输出逻辑

根据pre_state决定pres_state<=next_state;根据pres_state

next_state决定相应输出

图3.3循环计数模块流程图

基于以上分析编写模块程序,所得的模块电路符号如图3.4所示:

图3.4循环计数模块符号

3.2.2译码模块

在循环计数模块中我们一般采用的是二进制或BCD码的形式进行输出。

在此次设计中,我们需要的是一个BCD—七段数码管的译码器。

LED数码管的结构如图3.5所示。

图3.5LED数码管

根据数码管的结构,我们就可以进行相应的译码。

BCD七段译码的真值表如表3.2所示。

表3.2BCD七段译码真值表

根据真值表,译码模块的逻辑比较容易实现,只要利用case语句以各个输入状态为条件进行判断选择相应的输出即可。

编写模块程序,所得模块电路符号如图3.6所示。

图3.6BCD七段译码模块符号

3.2.3D触发器模块

在组合电路中,由于输入变量不在同一时间改变,会有设计外的信号产生,形成“毛刺”。

即两个信号的变化有先有后,而不是同时变化,将会导致有一瞬间

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1