ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:353.06KB ,
资源ID:244051      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/244051.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FPGA课设 手机自动拨号器.doc)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、1.绪论1.1 FPGA简介FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式

2、。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。时至今日,FPGA(现场可编程逻辑器件)产品的应用领域已经从原来的通信扩展到消费电子、汽车电子、工业控制、测试测量等广泛的领域。而应用的变化也使FPGA产品近几年的演进趋势越来越明显:一方面,FPGA供应商致力于采用当前最先进的工艺来提升产品的性能,降低产品的成本;另一方面,越来越多的通用IP(知识产权)或客户定制IP被引入FPGA中,以满足客户产品快速上市的要求。此外,FPGA企业都在大力降低产品的功耗,满足业界越来越苛刻的低功耗需求。1.2 Altera Quartus II简

3、介 Altera Quartus II 是一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。当前官方提供下载的最新版本是v13.0。 Altera Quartus II (3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。工程师使用同样的低价位工具对 Stratix FPGA进行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。系统设计者现在能够用Quartus II软件评估HardCopy Stratix器件的性能和功耗,相应地进行最大吞吐量设计。 Altera的

4、Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。1.3 Verilog HDL 简介Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件

5、的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。2.设计任务及要求2.1 设计任务 设计一个自动重复拨号器电路。当按下拨号键后,该电路能够自动地、重复地输出一个11位的手机号码(本课题用于学生本人的手机号、固定电话号加拨027)。并用数码管显示该号码。显示的数码清晰明亮,无闪烁。2.2 设计要求 1、选择

6、FPGA开发板。 2、定义输入输出变量。 3、编写FPGA程序。 4、仿真并测试系统功能。5、规定的格式(见附录),写出课程设计报告。3.电路的设计过程3.1 设计思路 本次课程设计的主要任务就是要将一个手机号码自动重复地输出,并且用数码管显示出来。因此,可以将本次的设计电路分为两大模块:循环计数模块和译码模块。前者负责产生循环的手机号码输出,后者则负责对输出的信号进行译码以便用于数码管显示。最后我们可以加上一个D触发器对输出信号进行寄存输出,以使输出信号更加稳定。在本次设计中,采用的语言为Verilog HDL。3.2模块设计原理3.2.1循环计数输出模块原理概述:考虑到我们要对一个手机号码

7、进行循环地输出,而手机号往往是没有太强规律性的一串数字,因此我们可以用状态机中的每一个状态分别代表每一位号码,从而利用状态的循环输出达到设计要求的目的。另外我们还需要对输出进行一定的控制,在这里我们加入一个RESET信号进行复位,当RESET有效时(本次设计中为低电平有效),计数从头开始。图3.1中每一个状态都分别对应着一位手机号的输出,通过这11个状态的循环切换,即可以实现手机号码的循环输出。RESET=0 st0 St0st2st1st3st4st5st6 st6st7st8st9st10 图3.1 状态转换图状态机的选用在设计本模块时,我们用到了有限状态机(Finite State Ma

8、chine)。这是一种重要的时序电路,在数字系统设计中有着非常重要的地位和作用,使用它可以较容易设计出复杂的数字系统,包含组合逻辑电路。有限状态机可以描述和实现大部分的时序电路。这里所谓的有限状态机实际上就是一种算法思想,它能够根据控制信号按照有序方式遍历预先定义的状态序列,它由一组状态、一个初始状态、输入和根据输入及现有状态转换为下一个状态的转换函数组成。 有限状态机根据输出信号与当前状态以及输入信号的关系来分,可以分为Moore型和Mealy型两种。其中输出信号只和当前状态有关的状态机称为Moore型状态机;输出信号不仅与当前与状态有关,而且也和输入信号有关的状态机称为Mealy型状态机

9、。由于Moore状态机与mealy状态机相比,由于其状态输出与输入无关,而只与当前状态有关,所以它可以避免由输入信号引起的毛刺,一般建议使用Moore状态机。因此在本次设计中选用了Moore状态机进行设计。状态机的编码常用的编码有三种:二进制编码、Gray码、one-hot编码。另外,还可以自定义编码,比如在高速设计中以状态编码作为输出。FSM几种常用的编码实例如表3.1所示。 表3.1 FSM几种常用的编码实例几种编码的特点: 顺序编码、Gray码使用最少的FlipFlop(触发器);OneHot编码使用最多的FlipFlop; FSM的编码方式、各个具体状态的编码形式决定了FSM所需要的F

10、lipFlop数目及FSM的输出逻辑、状态转换逻辑的复杂性。采用顺序编码、Gray码、Johnson编码,FSM的状态转换逻辑、输出逻辑较复杂,逻辑延时级数较多;采用OneHot编码,FSM的转态转换逻辑、输出逻辑相对简单,速度快,但FlipFlop的使用数量最多;必要时,须对FSM的状态数目加以划分。在本次设计中只是要实现简单的手机号各位状态的转换和输出,每个状态的跳转只有一个分支,我们可以使用格雷码进行编码,它使用的触发器较少,而且在这种情况下有着良好的抗毛刺效果。 模块程序设计Moore状态机的结构图如图3.2所示。 图 3.2 Moore状态机结构图 状态机的代码编写一般有三种风格:一

11、段式、两段式、三段式。一段式将状态转移寄存、状态译码和输出放在一个always块中;二段式有两个always块,一个完成状态转移寄存、另一个完成状态译码和输出;三段式中两个always块,一个完成状态转移、另一个完成状态译码和输出,还对状态输出进行了寄存,有可能使用三个always,也有可能是两个(本身已经对状态输出进行了寄存)。一段式描述可读性差,更重要的是这种风格不能被综合工具很好的识别,因而比较难被优化。二段式把组合逻辑和时序逻辑分开,有较好的可读写,能被优化,但可能出现毛刺。三段式在保留二段式有点的基础上,可以有效滤除毛刺,提高工作频率,只是资源占用略多,三段式中两个always块,一

12、个完成状态转移、另一个完成状态译码和输出,还对状态输出进行了寄存,有可能使用三个always,也有可能是两个(本身已经对状态输出进行了寄存)。因此在本次设计中使用了三段式写法。根据以上选定的设计方案,得到程序流程图如图3.3所示。 开始 等待时钟(clk)上升沿或 复位(reset)下降沿 是 复位 if(!reset) 否 次态逻辑 完成状态转移 输出逻辑 根据pre_state决定 pres_state = next_state; 根据pres_state next_state 决定相应输出 图 3.3循环计数模块流程图基于以上分析编写模块程序,所得的模块电路符号如图3.4所示: 图3.4

13、 循环计数模块符号3.2.2 译码模块 在循环计数模块中我们一般采用的是二进制或BCD码的形式进行输出。在此次设计中,我们需要的是一个BCD七段数码管的译码器。LED数码管的结构如图3.5所示。 图3.5 LED数码管 根据数码管的结构,我们就可以进行相应的译码。BCD七段译码的真值表如表3.2所示。 表3.2 BCD七段译码真值表 根据真值表,译码模块的逻辑比较容易实现,只要利用case语句以各个输入状态为条件进行判断选择相应的输出即可。编写模块程序,所得模块电路符号如图3.6所示。 图3.6 BCD七段译码模块符号3.2.3 D触发器模块 在组合电路中,由于输入变量不在同一时间改变,会有设计外的信号产生,形成“毛刺”。即两个信号的变化有先有后,而不是同时变化,将会导致有一瞬间

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

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