FPGA课设手机自动拨号器_第1页
FPGA课设手机自动拨号器_第2页
FPGA课设手机自动拨号器_第3页
FPGA课设手机自动拨号器_第4页
FPGA课设手机自动拨号器_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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的编码方式、各个具体状态的编码形

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

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

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

13、路符号如图3.4所示: 图3.4 循环计数模块符号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触发器模块 在组合电路中,由于

14、输入变量不在同一时间改变,会有设计外的信号产生,形成“毛刺”。即两个信号的变化有先有后,而不是同时变化,将会导致有一瞬间的毛刺。在电路最后的译码输出上再加上D触发器,可以有效地对输出的组合信号进行同步,从而有效地消除毛刺影响,使得输出信号更加稳定。在Verilog HDL中,要实现D触发器,只需要利用always (posedge CLK) 语句对输出进行控制即可。编写模块程序所得模块电路符号如图3.7所示。 图3.7 D触发器模块符号 利用Verilog HDL 语言和Quartus ii软件对各模块分别编写相应的程序(见附录),再利用软件进行分析综合以及编译,即可得到各个模块的电路符号。在

15、BDF文件中对模块进行连接,我们就得到了电路的完整模型,如图3.8所示。 图3.8 总电路仿真模型图 4. 电路仿真结果通过quartus ii软件我们可以对所设计的电路进行波形仿真。由图4.1我们可以知道电路的输入包括clk和reset,输出data_out和Q6分别为译码前的计数输出和译码后的计数输出。Q则为经过D触发器寄存后的输出。这几个部分的仿真结果如图4.1、4.2、4.3和4.4所示。 图4.1 总体仿真波形 图4.2 循环计数输出波形 图4.3 七段译码输出波形 图4.4 D触发器输出波形5.仿真结果分析 从仿真波形我们可以看出,循环计数模块输出的正好是我们设定好的手机号码,而且

16、能够不断地循环输出。当我们提供了一个RESET有效(低电平)时,可以看到循环计数输出又开始从头计数。译码器的输出波形与译码真值表相一致。设计中要求用数码管显示结果,且要求数码显示清晰明亮,因此我们需要对输出频率进行相应调整,对此我们只需要将时钟周期设为1s左右即可。另外本次仿真所用的模式为时序模式,从仿真结果可以看到,输出的波形还存在着细微的毛刺现象。但对比七段译码输出和D触发器的输出波形可以发现,经过D触发器的寄存输出得到的波形更加平滑,因而输出的信号也更加稳定。 综上可知,本次设计能够达到目的,满足了设计的要求。6.心得体会 通过本次所做的课程设计,我学到了很多。例如我在程序中一些时序问题

17、,还有程序并行的问题等等。同事由于本次实验要用quartusII软件,对软件不熟悉导致了许多错误和问题的发生。通过这次实验,我不但熟悉了quartusII软件,也了解了开发的最基本流程和方法,也进一步加深了对Verilog编程语言的理解。 这是一次颇有收获的实训,这次的实训中,我们更进一步体会到自主学习和团队合作的乐趣与必要性。为了完成项目,在网络上找到了许多相关资料,大大扩充自己的知识面,使许多以前想解决却无法解决的困难迎刃而解, 这才知道老师的良苦用心。相信以后的我不管是做网络亦或是从事软、硬件开发,都会有一个扎实的基础和良好的开发习惯的。同时在此次FPGA课设的过程中

18、,我越来越认识到一点,编写程序对项目实现有着至关重要的,我们在硬件开发的过程中更应该重视编程,将编程看作是完善开发的不可缺少的一部分。在一次次的反复设计、论证和测试中,提高了逻辑分析能力、全面分析问题的能力以及发现问题、解决问题的能力。虽然设计过程非常烦琐,但这也磨练了我的意志。通过对各方面资料的收集,我的知识面也进一步拓宽了。同时,我也发现了自己的不足,像语言表达还比较差,不能更清楚地表达自己的意思,逻辑分析能力有提高。 通过这次课程设计,加强了我们动手、思考和解决问题的能力。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践

19、相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。总而言之,在这次课程设计中,从最初的系统设计到最后的调试,中间碰到的许多困难都无一不使我得到了进步。对于我的不足之处,我将会在以后的学习中不断改进,不断提高。参考文献1吕思忠.数字电路实验与课程设计.北京:清华大学出版社,2009.102Altera Corporation. QUARTUS II简介. 2005.43周景润.基于QUARTUS II的FPGA/CPLD数字系统设计实例.北京:电子工业出版社,2007.54王开军,姜宇柏.面向CPLD/FPGA的VHDL设计.北京:机械工业出版社,20

20、06.285潘松,黄继业.EDA技术与VHDL.北京:清华大学出版社,2008附录 /循环计数模块module aa ( data_out, reset, clock);output3:0 data_out;input reset, clock;reg 3:0 data_out;reg 3:0 pres_state, next_state;parameter st0=4'b0000, st1=4'b0001, st2=4'b0011, st3=4'b0010, st4=4'b0110, st5=4'b0111, st6=4'b0101,

21、st7=4'b0100, st8=4'b1100, st9=4'b1101, st10=4'b1111; /完成状态编码/第一段,完成状态转移always (posedge clock or negedge reset)begin: stateregif(!reset)pres_state <= st0;elsepres_state <= next_state;end / statereg/第二段,定义次态逻辑always (pres_state)begin: fsmcase (pres_state)st0: next_state=st1; st1:

22、 next_state=st2; st2: next_state=st3; st3: next_state=st4;st4: next_state=st5;st5: next_state=st6;st6: next_state=st7;st7: next_state=st8;st8: next_state=st9;st9: next_state=st10;st10: next_state=st0;endcaseend/ 第三段,定义输出逻辑always (pres_state) begin: outputscase(pres_state) st0: data_out<=4'd1;

23、 st1: data_out<=4'd8; st2: data_out<=4'd6; st3: data_out<=4'd2; st4: data_out<=4'd7; st5: data_out<=4'd9; st6: data_out<=4'd2; st7: data_out<=4'd5; st8: data_out<=4'd1; st9: data_out<=4'd1; st10: data_out<=4'd6;endcaseend / outputsendmodule / Mooremodule DISP(D,Q); /七段译码模块input 3:0 D;output reg 6:0 Q;always (D) begin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论