毕业论文-基于FPGA的小数分频电路设计与实现_第1页
毕业论文-基于FPGA的小数分频电路设计与实现_第2页
毕业论文-基于FPGA的小数分频电路设计与实现_第3页
毕业论文-基于FPGA的小数分频电路设计与实现_第4页
毕业论文-基于FPGA的小数分频电路设计与实现_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、大连东软信息学院本科毕业设计(论文) 论文题目论文题目:基于FPGA的小数分频电路设计与实现 系 所: 电子工程系 专 业:电子信息工程(集成电路设计与系统方向) 学生姓名: 学生学号: 指导教师: 导师职称: 讲师 完成日期: 2014年4月28日 大连东软信息学院Dalian Neusoft University of Information大连东软信息学院毕业设计(论文) 摘要 IV基于FPGA的小数分频电路设计与实现摘 要 现场可编程门阵列(FPGA,FieldProgrammable Gate Array),它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为

2、专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。频率合成技术是现代通讯系统的重要组成部分,是对一个高精度和高稳定度的基准频率进行加、减、乘、除四则运算,产生具有同样稳定度和基准度的频率。分频器是数字逻辑电路设计中经常使用的一个基本电路。通常,整数分频可以很容易地用计数器或状态机来实现。但在某些场合下,时钟源与所需要的频率并不成整数关系,此时便需要采用小数分频器进行分频。基于FPGA的小数分频电路的设计与实现,目前广泛采用的方法是双模前置小数分频。双模前置小数分频器是由一个异或门、一个模N计数器和一个二分频组成。其基本原理

3、是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两个分频比出现的不同次数来获得所需要的小数分频值。关键词:集成电路,FPGA,小数分频大连东软信息学院毕业设计(论文) AbstractDesign and Implementation of the Fractional Divider Circuit Based on FPGA Abstract FPGA is the English abbreviation Field of Programmable Gate Array for the site programmable gate array, w

4、hich is in PAL, GAL, EPLD, programmable device basis to further develop the product. It is as ASIC (ASIC) in the field of a semi-customized circuit and the emergence of both a customized solution to the shortage circuit, but overcome the original programmable devices doors circuit few limited shortc

5、omings. Frequency synthesis technology is an important part of modern communication system, is of a high precision and high stability of the reference frequency add, subtract, multiply and divide arithmetic, produce has the same frequency stability and the benchmark. Divider is often used in digital

6、 logic circuit design of a basic circuit. Usually, the integer frequency division can be easily with counter or a state machine to implement. But in some instances, the frequency clock source and need not to integer, which need to use the decimal frequency divider. Design and Implementation of the F

7、ractional Divider Circuit Based on FPGA, widely adopted method is dual mode Pre Decimal Frequency divider. Dual mode Pre Decimal Frequency divider is composed of an XOR gate, a module N counter and a two frequency. Its basic principle is used to design two different frequency than the integer freque

8、ncy divider pulse swallow counter and phase locked loop technique, and then through the two frequency dividing control unit of time than different times appear to get fractional values as needed. Key words: Integrated Circuit, FPGA, The Decimal Frequency Divider大连东软信息学院毕业设计(论文) 目录目 录 TOC o 1-3 u 摘 要

9、 PAGEREF _Toc4885 IAbstract PAGEREF _Toc3828 II第1章绪 论 PAGEREF _Toc28902 11.1 课题研究背景与意义 PAGEREF _Toc5972 11.2 课题研究内容与方法 PAGEREF _Toc6253 11.3 课题研究现状 PAGEREF _Toc27753 2第2章关键技术介绍 PAGEREF _Toc3402 32.1 关键性开发技术的介绍 PAGEREF _Toc11289 32.1.1 FPGA PAGEREF _Toc905 32.1.2 硬件描述语言HDL PAGEREF _Toc30989 32.2 开发软件

10、 PAGEREF _Toc7865 42.2.1 Xilinx ISE与ModelSim PAGEREF _Toc28156 42.2.2 Microsoft Office Visio PAGEREF _Toc1676 52.3数字系统设计方法 PAGEREF _Toc5188 6第3章系统分析 PAGEREF _Toc26002 73.1 构架概述 PAGEREF _Toc16437 73.2 系统设计目标 PAGEREF _Toc2229 73.3 系统功能需求 PAGEREF _Toc28019 73.4 系统非功能需求 PAGEREF _Toc32054 83.5 系统任务的可行性分析

11、 PAGEREF _Toc5129 83.5.1 技术可行性 PAGEREF _Toc1521 83.5.2 经济可行性 PAGEREF _Toc23697 9第4章系统设计 PAGEREF _Toc26587 104.1 系统设计指导原则 PAGEREF _Toc7151 104.2 体系结构设计 PAGEREF _Toc13196 104.3 系统的状态机 PAGEREF _Toc28694 114.4 系统设计流程 PAGEREF _Toc5003 12第5章系统实现 PAGEREF _Toc13412 165.1环境配置 PAGEREF _Toc11489 165.2功能模块实现 PA

12、GEREF _Toc31803 165.3设计实现 PAGEREF _Toc17893 165.4 系统集成与实现 PAGEREF _Toc23345 19第6章系统测试 PAGEREF _Toc14370 216.1 模块仿真测试 PAGEREF _Toc12226 216.1.1小数分频模块测试 PAGEREF _Toc11963 216.1.2时钟分频模块测试 PAGEREF _Toc3253 226.2系统测试 PAGEREF _Toc31940 22第7章结论 PAGEREF _Toc32405 23参考文献 PAGEREF _Toc29526 24致 谢 PAGEREF _Toc5

13、604 25附录A PAGEREF _Toc7543 26大连东软信息学院 PAGEREF _Toc9205 31大连东软信息学院毕业设计(论文)- 第1章绪 论1.1 课题研究背景与意义 频率合成技术是现代通讯系统的重要组成部分,他将一个高稳定和高准确度的基准频率,经过四则运算,产生同样稳定度和基准度的频率。分频器是集成电路中最基础也是最常用的电路。整数分频器的实现比较简单,可采用标准的计数器或可编程逻辑器件设计实现。但在某些场合下,时钟源与所需的频率不成整数倍关系,此时可采用小数分频器进行分频。本文利用Verilog HDL硬件描述语言的设计方式,通过ModelSim SE开发软件进行仿真

14、。1.2 课题研究内容与方法 小数分频器的实现方法很多,但基本原理一样,即在若干个分频周期中采取某种方法使某几个周期多计或少计一个数,从而在整个计数周期的总体平均意义上获得一个小数分频比,设要进行分频比为K的小数分频,K可表示为: (1-1) 式中:n,N,X均为正整数;n为到X的位数,即K有n位小数。另一方面,分频比又可以写成: (1-2) 式中:M为分频器输入脉冲数;P为输出脉冲数 (1-3) 令P=10n,则: (1-4) 以上是小数分频器的一种实现方法,即在进行10n次N分频时,设法多输入X个脉冲。 每个周期分频N+10-n.X,其电路双模前置小数分频器电路由N/N+1双模分频器、控制

15、计数器和控制逻辑3部分组成。当a点电平为1时,进行N分频;当a点电平为0时进行N+1分频。适当设计控制逻辑,使在10n个分频周期中分频器有X 次进行N+1分频,这样,当从fo输出10n个脉冲时,在fi处输入了X.(N+1)+(10n-X).N个脉冲,也就是10n.N+X个脉冲,其原理如图1所示。图1.1小数分频的原理图 每进行一次分频,计数值为10减去分频系数的小数部分,各次计数值累加。若累加结果小于10,则进行N+1分频,若大于10或等于10,则进行N分频。该例中计数值为(107)3,前3次累加结果都小于10,所以为9分频,第四次累加结果为12,则去掉十位数后累加结果变为2,同时进行88分频

16、,表1给出了该分频器的分频过程。表1.1 分频器的分频过程 分频系数8.7序号累加结果分频系数139269399412-28559689711-188499791010-081.3 课题研究现状FPGA现场可编程门阵列(Field Programmable Gate Array)是20世纪80年代中期出现的 高密度 可编程逻辑器件。FPGA及其软件系统是开发数字电路的最新技术。他利用EDA技术,以电路 原理图、硬件描述语言、状态机等形式输入设计逻辑;他提供功能模拟、时序 仿真等模拟手段,在功能模拟和时序仿真度满足要求后,经过一系列的变换,将输入逻辑转 换成FPGA器件的编程文件,以实现专用集成

17、电路。本设计选用Xilinx公司推出的90 nm工艺 制造的现场可编程门陈列Spartan-3 来设计小数分频器,体积减小,可靠性提高 。大连东软信息学院毕业设计(论文)第2章关键技术介绍2.1 关键性开发技术的介绍2.1.1 FPGA 现场可编程门阵列(FPGA,FieldProgrammable Gate Array)。它是在CPLD、PAL、EPLD、GAL等可编程器件的基础上进一步发展起来的产物,作为专用集成电路(ASIC)领域中的一种半定制电路而出现,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)

18、这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(In put Output Block)和内部连线(Interconnect)三部分。可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为 微处理器的外设,由微处理器对其编程。FPGA具有三种可编程资源的特点:I/O是可编程的,用户可以设置引脚是输入/出、COMS/TTL电平、可以决定是否有上拉或者信号激变情况、速率快慢等等;逻辑是可编程的,也就是说它中间的排成行和列的逻辑单元是可编程的,可以实现组合逻辑电路和时许逻辑电路,在

19、逻辑块里实现组合逻辑块和集成元件触发器;可编程的互联线资源,在贯穿了行和列的逻辑块之间,分布的或连线可编程。具备了这三种可编程资源后,就构成了FPGA,同时根据它的逻辑查表实现,编程SRAM方式实现和逻辑通过多路开关实现,编程通过熔丝通断实现分为SRAM查表和多路开关反熔丝两种结构,目前SRAM工艺的运用更为普遍。一般的FPGA构成分为:数字时钟管理模块(DCM)、可编程输入/出单元(IOB)、布局布线、逻辑单元(CLB)、RAM、底层功能单元和专用硬件模版等。在现在的FPGA开发应用中,全球知名的FPGA生产厂商有:Altera,Xilinx,Actel,Lattice,Atmel等。这几家

20、公司生产的FPGA在内部结构和模块上都有所区别,使用的开发环境也不一样,在我们日常工作中应用时应该加以区分。 2.1.2 硬件描述语言HDL 硬件描述语言(HDL,hardware description language)是一种可以用来描述数字电路并且可以描述系统的语言。人们可以使自己抽象的方法通过硬件描述语言描述自己具体的设计的理念,硬件描述语言是用几个活若干分层次的模块组合成非常复杂的系统。然后会用电子设计自动化工具(EDA)进行逐步的仿真、验证等步骤,把一些需求变成具体的物理模块的组成经由一些工具变为一个门级电路的网表。最后再用FPGA把网表转换成电路布线并且进行实现。硬件描述语言经过

21、三十多年的发展已经变得更加被人们熟知,更加的完善。人们在各个阶段都在应用它,它可以用来建模、验证、仿真、综合等。在20世纪末期,世界上已经出现了非常多的硬件描述语言,这对人们设计自动化领域无疑起到了非常巨大的促进和推动作用。但是这些语言一般各自面向特定的设计领域与层次,因此急需一种可面向设计的多领域、多层次、并得到普通认同的标准硬件描述语言。最终,VHDL和Verilog HDL语言适应了这种趋势,成为了IEEE标准。而Verilog HDL是硬件描述语言中的一种,用于数字电子系统设计。并且该语言支持各种级别的逻辑设计, 而且该语言可以用于验证与仿真和时序的分析等,他是目前为止在世界上应用最为

22、广泛的一种硬件的描述语言。硬件描述语言HDL随着世界科技以及硬件语言的发展而变得更加的完善,更加的成熟。2.2 开发软件2.2.1 Xilinx ISE与ModelSimXilinx(赛灵思)是全世界来讲在可编程领域是比较领先的供应商。Xilinx研发、制造并且销售范围广泛。赛灵思的高集成电路、软件设计工具以及作为预定义系统级功能的IP(Intellectual Property)核为广大的客户所接受和应用。Xilinx成立于1984年,首创了现场可编程逻辑阵列(FPGA)这一创新性技术,而且在1985年首次推出商业化产品。ISE(Integrated Software Environment

23、)全称为集成软件环境,是Xilinx公司的硬件设计工具。相对容易使用并且首屈一指的PLD设计环境。ISE是先进的技术与灵活性、易使用性的图形界面结合在一起,让用户能在短时间内做出最佳的硬件设计的软件。Xilinx公司的ISE开发设计软件的工程设计流程具体分为五个步骤:输入(Design Entry 原理图、状态机、波形图、硬件描述语言)、综合(Synthesis 网表文件)、实现(Implementation 翻译、映射、布局布线)、验证(Verification 综合后仿真、功能仿真)、下载(Download 编程)。图形或文本输入包括原理图、状态机、波形图、硬件描述语言(HDL),是工程设

24、计的第一步。常用的设计输入方法为硬件描述语言和原理图设计输入方法。原理图输入是一种基本的输入方式,利用元件库的图形符号和连线在ISE软件的图形编辑器中做出设计原理图,ISE中设置了具有各种电路原件的元件库,包括各类门电路、触发器、锁存器、计数器、各种中规模电路、各种宏功能块等;综合是将行为和功能层次表达的电子系统转化为低层次模块的组合,一般是针对VHDL的;实现是根据所选择的芯片型号将综合输出的逻辑网表适配到具体器件上;验证包含了综合后仿真与功能仿真。功能仿真就是通过波形图显示的输入与输出信号的关系在对该电路的逻辑功能进行模拟时;下载就是编程设计开发的最后步骤,将已经仿真完毕检查没有错误的程序

25、下载到开发板上,调试程序并生成配置文件。ModelSim是Mentor公司生产的业界最优秀的HDL语言仿真软件,它能给用户创建优良的仿真环境,并且还是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术,可以直接优化你的编译,单一内核仿真技术,可以使你的仿真速度更加的快速,提高办事效率,是你的办公更加的便捷,另外,它还可以保护你的IP核,优美个性化的界面,为你提供了更优质的服务。可以单独或同时进行行为、RTL级和门级的代码。RTL和门级优化,本地编译结构,能跨越版本进行仿真,还可以但内核VHDL和Verilog混合仿真。功能强大的Xilinx ISE8.2i和

26、ModelSim通常在基于FPGA的设计中应用比较广泛,是最热门的两款仿真软件。因为在大学四年的学习过程中更多学习使用的是Xilinx ISE8.2i,而且鉴于可操作性比较赛灵思操作更为简便,软件更为熟悉性能,所以在此次毕业项目的测试阶段采用的是Xilinx ISE8.2i。2.2.2 Microsoft Office VisioOffice Visio是一款功能强大的绘图软件,对于IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流。Microsoft Office Visio能创建具有专业外观图表,能记录分析信息、数据、系统和过程。Visio与其他图形软件相比具有更高的可视性

27、与直观性,并且操作简单对使用者无技能基础要求。应用此软件,可以绘制多钟图表,包括组织结构图、日程表、日历和甘特图。在进行项目设计过程时,通过Visio可以方便快捷的完成系统框图、流程图和状态机等各种图形的绘制工作,是学习、工作人员拥护的优秀绿色软件。该软件具有标准图标,可以使用现有的数据生成各种标准图标,如组织结构图、日程表、日历等。并且自带帮助文件Office Visio 2007便于IT和商务专业人员就复杂的信息、系统和流程进行可视化操作,通过这种图标,可以促进对系统以及流程的深入认知。最为客观的是,Office Visio 2007具有两个独立的版本:professional与stand

28、ard两个版本。虽然他们的基本功能一致,但是professional版本包含的功能模块在standard版本里都有。不想其他软件,Office Visio 2007可以通过编程或跟其他程序集成的方式拓展,用以满足不同情况下的需求。这一功能使得软件更具人性化,受到广大软件工作者的爱好。在Visio 2007的软件开发工具包(SDK)中,有可以满足人们需要的各种自定义应用程序开发示例、工具和文档,同时提供了普遍适用的可重用函数、类和过程,而且支持多种语言开发,其中就包括了Microsoft Visual Basic、Visual Basic.NET、Microsoft Visual C#.NET和

29、Microsoft Visual C+。2.3数字系统设计方法数字系统的设计方法通常分为自上而下设计和自下而上设计两大类。一般自上而下的设计是从系统级开始,系统被划分为若干基本单元,然后每个基本单元又被划分为下一层次的若干基本单元,以此类推,一直到可以直接用EDA元件库中的基本元件来实现为止。在某种意义上讲,自下而上的设计过程可以看作是自上而下设计的逆过程。同样自下而上设计也是从系统级开始的,就是从设计树的树根开始对整个设计进行逐次划分,但是必须从已经存在的基本单元出发,所以划分时首先考虑的是单元是否存在。最终设计最底层的单元或者是已经制造出来的单元,或者是已开发好的单元或者是可以通过外购得到

30、的基本单元。自下而上的设计流程包括:首先独立的设计和优化每个子模块,然后在顶层的设计中集成所有已经优化好的子模块,最后进行总体设计的验证。在综合和优化之后可以将每个子模块具有的单独的网表整合在顶层的设计中。这样在顶层模块设计中,各个子模块之间的性能都不会相互影响。与此同时,由于在高层次进行设计的主要仿真和调试过程,所以能够尽早的发现结构设计上的错误,减少了设计工作的浪费,同时又减少了模块逻辑仿真的工作量。第3章系统分析3.1 构架概述3.1.1 设计思想根据需求分析所设计的小数分频器的外部结构图,如图3.1所示。图3.1 系统体系结构3.2 系统设计目标 可以用FPGA设计高精度的小数分频器。

31、采用FPGA组成的数字频率合成器,单环鉴相频率达100MHz以上,通过分频系数的分频,可以在LCD显示屏上清晰地显示出经过分频后的小数,通过此方法可以分出任意分频的小数频率。3.3 系统功能需求 本次设计要求设计一个可以分成半整数或小数的小数分频器:本小数分频器有3个输入端,其中2个输入端为基础时钟和复位信号,分别为clk,rst,其余1个为50MHZ基础时钟分出的10MHZ的时钟。输出端为5个,分别为lcd_e、lcd_r、lcd_rs、lcd_rw、data7:0其中四个为LCD显示屏的控制信号,data7:0为小数分频的分频数。小数分频器的具体功能如下:1、设置一个清屏信号,当要重置小数

32、分频器的时候,要有一个清屏信号是LCD显示屏清屏。 2、设置一个显示功能设置命令,当高电平是4位的总线的时候,低电平为8位总线时,低电平显示为单行显示,而高电平为双行显示。低电平的时候,显示的是35的点阵字符,高电平的时候,显示的是50的点阵字符。3、设置显示开关开关start,此状态可以控制LCD显示屏整体的开关,高电平表示显示屏开启,低电平表示显示屏关闭。控制光标的闪烁和开关,高电平表示光标开并闪烁,低电平表示光标关并不要闪烁。 4、设置显示屏光标显示模式,这个状态表示光标的移动方向。高电平的时候光标向右移动,低电平的时候光标向左移动。 5、设置显示地址模式,这个状态表示地址的显示状态,是

33、控制地址在第几行显示的。 6、设置写数据模式,此状态要判断cnt=5d6时是否跳转,最后是结束。3.4 系统非功能需求 1、性能 小数分频器的基本原理就是吞脉冲技术,在计数的过程中吞掉部分脉冲,得到平均意义下的小数分频比。基于小数分频原理,本文讨论了三种不同分频比的小数分频器的设计方法以及整数分频的方法。采用双模前置分频器的小数分频器,小数分频器的精度受控制计数器的影响,当分频比为一位小数时,n值为10,小数分频的精度达到1/10;当分频比为两位小数时,n值为100,小数分频的精度达到1/100;依次类推。另外,在设计的过程中,小数分频无法保证占空比永远只是50%,但可以尽可能地让占空比相对均

34、匀化。一般可做到只出现50%和75%两种占空比,但若出现连续扣除两个或两个以上脉冲,则占空比就不再只局限于50%和75%这两种情况了。利用FPGA器件丰富的逻辑资源及方便的开发工具,可以实现大部分逻辑电路。因此可以用FPGA设计高精度的小数分频器。采用FPGA组成的数字频率合成器,单环鉴相频率达100MHz以上,分辨率可达10-6。 2、成本 本课题以CPLD/FPGA作为可编程ASIC器件,在Quartus II 12.1环境中进行仿真。所以成本较低。 3、系统开发环境 硬件配置:350GB硬盘;2GB内存操作系统:Windows7 旗舰版编程语言:Verilog HDL(硬件描述语言)软件

35、环境:Xilinx ISE8.2i、ModelSim、Visio、Quartus II3.5 系统任务的可行性分析3.5.1 技术可行性小数分频器采用Verilog HDL编写,根据EDA工具自动生成。要设计完成该项目需要懂得数字电路,SoC,高级数字系统设计与验证,硬件编程语言等软硬件相关知识。并且,能够较为熟练的使用Visio,Xilinx ISE,ModelSim,Quartus II等硬件设计及仿真验证相关软件工具,然后要对各种比赛赛制有一定了解与清晰的设计思路,并具备相应的开发器件与设备。3.5.2 经济可行性 该设计将芯片核心集成在可编程逻辑器件FPGA芯片上,大大简化了外围电路。

36、既减少了使用芯片的数量和种类,而且起到了降低功耗,缩小体积,提高系统的整体性能作用,系统在使用中的故障率大大的减少。此外,基于可编程逻辑器件采用Verilog为硬件描述语言进行设计。在此设计的各个阶段、各个层次来进行计算机模拟验证。既保证了设计过程的正确性,又能够有效的降低设计的成本,缩短设计的周期,具有广泛的前景。第4章系统设计4.1 系统设计指导原则 针对市场上的一些分频器进行分析与整理后,相关类型的分频器进行整合记录,分析完善精简功能,提高运行周期和效率。小数分频器首要目标是满足对于小数分频的要求,同时要确保在LCD液晶显示屏上能够清晰的显示出来,系统要稳定。而且具备的分频功能要能准确无

37、误的显示小数的分频,分频的系数。在满足以上基本点后,可以拓展功能或者使项目设计实物更便捷、实用。本课题是一个基于FPGA的分频电路设计。该电路输出的波形稳定准确,系统根据数字系统设计和实现的基本流程进行设计,包括整体流程图的设计、数据通道和控制单元的设计、并用可综合的Verilog语言实现、最后经过ModelSim软件做各模块和整体系统的功能仿真,并在设计实现过程中不断对电路性能进行优化。4.2 体系结构设计该小数分频器的设计中主要包括三大模块:1.时钟分频模块 2.LCD显示控制模块 3.小数分频模块 ,小数分频模块中又包括控制模块和算法模块,控制模块分为显示控制和小数控制,系统体系架构如图

38、4.1所示。图4.1 系统体系结构4.3 系统的状态机本次项目的状态总共有8个,状态转换图如图4.2所示。图4.2 控制显示模块的状态机表4.1 1602指令参考序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址续表4.1 1062指令参考表4.2控制通道状态控制信号详细状态

39、CLEARState设置一个清屏信号,当要重置小数分频器的时候,要有一个清屏信号是LCD显示屏清屏。XIAN_MOSHI State设置一个显示功能设置命令,当高电平是4位的总线的时候,低电平为8位总线时,低电平显示为单行显示,而高电平为双行显示。低电平的时候,显示的是35的点阵字符,高电平的时候,显示的是50的点阵字符。ZHENG_TI State设置显示开关开关start,此状态可以控制LCD显示屏整体的开关,高电平表示显示屏开启,低电平表示显示屏关闭。控制光标的闪烁和开关,高电平表示光标开并闪烁,低电平表示光标关并不要闪烁。SHIFT State设置显示屏光标显示模式,这个状态表示光标的

40、移动方向。高电平的时候光标向右移动,低电平的时候光标向左移动。 XIANSHI_DIZHI cnt设置显示地址模式,这个状态表示地址的显示状态,是控制地址在第几行显示的。XIE_SHUJU cnt设置写数据模式,此状态要判断cnt=5d6时是否跳转OVER State结束4.4 系统设计流程小数分频器的项目设计流程如图4.3所示。图4.3 项目设计流程(1)规划与设计阶段充分的规划设计对一个项目及时如质如量完成具有非常大的作用,设计者必须做好前期各项准备,包括了解该设计的背景、功能、软硬件支持等。(2)构架设计与划分模块在这部分,必须决定系统模块组成部分并且确定各个模块已经具备的各种功能,并且

41、直观看出输入输出,因此在进过项目设计后规划出项目基本构架分为三部分:计时钟分频模块,LCD显示模块,最后是小数分频模块。详细系统结构框图如图4.4所示。图4.4 系统结构框图在项目设计中,定义top_xiaoshu模块分别由控制小数分频模块和算法模块两部分构成,完成项目的主要功能。在多功能运动记分器的实现设计过程中,分频器、控制器与计数器是重要的组成部分。在本次设计中,计分模块包括了时钟分频模块,LCD显示模块还有小数分频模块,其又分为ctrl_xiaoshu与xiaoshu两部分。它们的模块图依次如图4.5、4.6、4.7、4.8、4.9所示。图4.5 小数分频模块本设计中采用可变分频和多次

42、平均的方法实现的小数分频,输入端为一个10MHZ的时钟clk_in和一个复位rst,输出端为时钟输出clk_out。图4.6 时钟分频模块小数分频器的时钟分频模块是整个设计中非常重要的组成部分,它把初始时钟50MHZ分为10MHZ。该模块的输入端由一个基础时钟50MHZ和一个复位信号rstn组成,输出为一个10MHZ的时钟。在这个RTL级图形中可以直观看出,输入有初始时钟、端复位和分频时钟。图4.7 LCD显示模块LCD显示模块能够显示进行小数分频以后的频率。先清屏,设置8位格式,2行,5x10,当时钟信号有效时,整体显示,开光标,不闪烁,文字不动,光标自动右移,地址设置,初始化,文字不动,光

43、标自动右移,整体显示,开光标并闪烁,设置8位格式,2行,5x7,计数器开始计数,当计数到2499999, 时钟翻转,那么周期即为10HZ。图4.8 小数分频模块算法模块中,输入为sel_in1:0,counter9:0,clk,rst。输出为clk_out1。这个模块主要功能是通过sel选择9位的计数,将clk_div模块中产生的输出clk_10MHZ信号通过分频系数进行小数分频并且传递给ctrl_xiaoshu模块,并通过它下载到LCD显示屏进行数字显示。图4.9 ctrl_xiaoshu模块在ctrl_xiaoshu模块中,有两个输入端,分别是rst,clk输出端则为counter9:0,

44、sel_out1:0.。(3)测试仿真阶段Xilinx ISE、ModelSim工具进行逻辑测试与仿真,确保设计正确性。在这个阶段,通过编写激励文件,模拟系统功能完成检测。(4)综合阶段在这个阶段,可以将程序代码的逻辑进行部分的化简,并根据标准单元选取最佳的单元组成最佳电路。大连东软信息学院毕业设计(论文)第5章系统实现5.1环境配置硬件环境:Altera Cyclone EP2C35F672C6软件环境:Quartus II 12.15.2功能模块实现模块一实现项目的流程图为图5.1所示。图5.1 流程图 设置一个清屏信号,当要重置小数分频器的时候,要有一个清屏信号是LCD显示屏清屏。设置一

45、个显示功能设置命令,当高电平是4位的总线的时候,低电平为8位总线时,低电平显示为单行显示,而高电平为双行显示。低电平的时候,显示的是35的点阵字符,高电平的时候,显示的是50的点阵字符。设置显示开关开关start,此状态可以控制LCD显示屏整体的开关,高电平表示显示屏开启,低电平表示显示屏关闭。控制光标的闪烁和开关,高电平表示光标开并闪烁,低电平表示光标关并不要闪烁。设置显示屏光标显示模式,这个状态表示光标的移动方向。高电平的时候光标向右移动,低电平的时候光标向左移动。设置显示地址模式,这个状态表示地址的显示状态,是控制地址在第几行显示的。设置写数据模式,此状态要判断cnt=5d6时是否跳转,

46、最后是结束。5.3设计实现使用Verilog描述硬件的基本设计单元是模块(module)。构建复杂的电子电路,主要是通过模块的相互连接调用来实现的。模块被包含在关键字module、endmodule之内。实际的电路元件。Verilog中的模块类似C语言中的函数,它能够提供输入、输出端口,可以实例调用其他模块,也可以被其他模块实例调用。模块中可以包括组合逻辑部分、过程时序部分。以下为状态机模块的代码实现:module ctrl_xianshi(clk,rst,lcd_rs,lcd_rw,lcd_e,data);input clk, rst;output reg lcd_rs;output wir

47、e lcd_rw;output wire lcd_e;output reg 7:0 data;parameter IDLE = 7d0;parameter CLEAR = 7d1; parameter XIAN_MOSHI = 7d2; parameter ZHENG_TI = 7d4; parameter SHIFT = 7d8; parameter XIANSHI_DIZHI = 7d16; parameter XIE_SHUJU = 7d32;parameter OVER = 7d64; parameter CUR_TO_R = 1b1, DATA_SHIFT= 1b0; paramet

48、er DISPLAY_ON = 1b1, CUR_ON = 1b1, CUR_BLANK = 1b1; parameter DATA_WTH = 1b1, LINE = 1b1, FONT = 1b1; parameter NUM_10HZ = 23b100_1100_0100_1011_0011_1111; reg 6:0 state;reg 4:0 cnt;reg 4:0 cnt1;wire 4:0 char_addr;wire 7:0 data_in;reg 22:0 cnt_10hz;reg clk_10hz;reg lcd_e_con;always ( posedge clk or

49、negedge rst ) if( rst = 1b0 ) cnt_10hz = 23d0; else if( cnt_10hz = NUM_10HZ ) cnt_10hz = 23d0; else cnt_10hz = cnt_10hz + 1b1; always ( posedge clk or negedge rst ) if( rst = 1b0 ) clk_10hz = 1b0; else if( cnt_10hz = NUM_10HZ ) clk_10hz = 1b1; else clk_10hz = 1b0;assign lcd_e = lcd_e_con ? clk_10hz

50、: 1b0;assignlcd_rw = 1b0; always ( posedge clk or negedge rst ) if( rst = 1b0 ) begin state = IDLE; cnt = 5d0; lcd_rs = 1b0; lcd_e_con = 1b1; data = 8bZZZZZZZZ; end else if( clk_10hz = 1b1 ) begin case( state ) IDLE : state = CLEAR; CLEAR : begin state = XIAN_MOSHI; lcd_rs = 1b0;data = 8b0000_0001;

51、end XIAN_MOSHI: begin state = ZHENG_TI; lcd_rs = 1b0;data = 8b0011_1100; end ZHENG_TI : begin state = SHIFT; lcd_rs = 1b0;data = 8b0000_1111; end SHIFT : begin state = XIANSHI_DIZHI; lcd_rs = 1b0; data = 8b0000_0110; end XIANSHI_DIZHI : begin state = XIE_SHUJU; lcd_rs = 1b0;if( cnt = 5d0)data = 8b10

52、00_0000; else data = 8b1100_0000; end XIE_SHUJU : begin if( cnt = 5d6 ) begin state = XIE_SHUJU; cnt = cnt + 1b1; lcd_rs = 1b1; data = data_in; end else begin state = OVER; cnt = 5d0; lcd_rs = 1b0; lcd_e_con = 1b0; data = 8bZZZZ_ZZZZ; end end OVER : begin state = OVER; cnt = 5d0; cnt1 = 5d0; lcd_rs

53、= 1b0; lcd_e_con = 1b0; data = 8bZZZZ_ZZZZ; end default : begin state = OVER; lcd_rs = 1b0;data = 8bZZZZ_ZZZZ; end endcase endassign char_addr = ( state = XIE_SHUJU ) ? cnt : 5d0;char_ram insta_char(.addr ( char_addr ), .data ( data_in ) );endmodule5.4 系统集成与实现在软件Quartus II中,通过添加顶层文件与各模块之间连接上,形成完整系统。

54、RTL级仿真图如图5.2所示。图5.2 小数分频器完整的RTL级仿真在整个系统中,输入端有2个,分别为clk、rst,分别表示:一个50MHZ的基础时钟和一个复位信号。而输出有5个,分别是Lcd_e,Lcd_rs,Lcd_rw,clk_out和data7:0,分别是LCD显示屏的显示和小数分频的频率数,小数分频器的整体功能就是将一个较大的整数频率变成半整数或小数频率并且在LCD显示屏上显示出来。其内部结构的RTL级仿真如图5.3所示。图5.3 小数分频器的内部RTL仿真小数分频器top_xiaoshu中又分为两个模块,分别是控制模块和算法模块。其有两个输入端clk_in一个10MHZ的时钟和r

55、st复位信号,最后通过算法模块,得到小数分频。第6章系统测试基于FPGA的小数分频器是一款可以进行任意小数分频的分频器。本次设计主要针对如何将较大的整数频率分成更为精准的小数频率。这次测试主要是为了保证系统在运行过程中能达到高性能、可操作性等指标,能保证完成常规功能,在完成各模块的测试后,系统整体测试。此次测试基于ModelSim6.0。6.1 模块仿真测试 6.1.1小数分频模块测试小数分频器实现的功能为可以将一个较大的基础时钟通过一系列的计算得到一个小数分频,其测试结果如图6.1所示。图6.1 小数分频器仿真波形图在ModelSim6.0中进行计数器仿真,得出波形图。在整个测试过程中有三个

56、输入端:clk,reset,sel_in;三个输出端:clk_8,clk_9,clk_out。在软件ModelSim中菜单栏里similate选项中选择start simulate选项,同时选中testbench(.v文件)。以下为testbench的代码实现:timescale 1ns/1psmodule tb1( ); reg clk, rstn;always #10 clk = clk;initial begin rstn= 0; clk = 0;#25 rstn= 1; #50 ; #20000 $stop; endwire pulse; top_xiaoshu uu0( clk, r

57、stn, pulse); endmodule6.1.2时钟分频模块测试时钟分频模块实现的功能是将一个50MHZ的基础时钟分为10MHZ的时钟,根据如图下所示的波形可知,小数分频的时钟模块有两个输入端,分别为clk_50MHZ和rst,有一个输出端为clk_10MHZ。其测试结果如图6.2所示。图6.2 时钟分频模块仿真波形图6.2系统测试在ModelSim6.0中添加顶层模块,项目整体进行仿真波形图如图6.3所示。图6.3 整体仿真波形在这个测试中一共有输出端5个:Lcd_e,Lcd_rs,Lcd_rw,clk_out和data7:0;输入端3个:clk,reset,sel_in。创建测试文件

58、后输入信号,就可得出图6.3所示波形图。第7章结论当前,电子市场已经成为了一个激烈竞争的市场,各种电子商品更新换代的速度越来越快,人们日益追求各项功能精、简、易、全。只有不断提高产品水平才能让产品在更新换代中不被淘汰。小数分频器就是在结合大学生应有的当下技术水平及电子供应下设计制作的一款基于FPGA的小数分频技术。在设计阶段,调查发现现在社会上存在的小数分频器分为两种类型:电子版与非电子版。电子版又分为LED灯或LCD显示屏等,多数都是基于单片机设计,基于FPGA的小数分频器正在逐步受到人们的关注与喜爱。理论上而言,基于FPGA的小数分频器与基于单片机的小数分频器相比具有更可靠性以及可操作性,

59、所以此次设计是基于FPGA完成。在设计的初步阶段,我是迷茫的,到后来慢慢进入状态,再到对思路的逐渐清晰。预期规划该项目具有小数或半整数分频功能,能下载到板子上通过LCD液晶显示分频小数,目前已经达到预期要求,实现了基于FPGA的小数分频功能并能美观的呈现出来。这次项目设计历时两个月左右,也正是通过这段时间的学习才发现自己有很多知识不懂,存在很多知识漏洞,并且缺乏实践经验跟理论联系实际的能力,不过也拓展了视野学习了更多的知识,同时也更加熟练操作运行相关软件如Xilinx ISE,Visio等。与此同时更是复习了大学四年所学的知识,重新学习了一遍Verilog,使我印象更深刻,认知更深入。整个过程

60、中虽然在理论上比较熟练,但在实际操作过程中对FPGA技术有了基本简单的了解,但是真正的动手操作还是存在缺点,包括仿真波形时,总会粗心大意产生一些小错误,不断的修改更正。在对记分器进行逻辑仿真的过程中,因为不仔细总会忽略,不细心的对各个端口进行连接,因为也拖延了项目的进度。在对小数算法实例化的过程中提示无法仿真,然后被告知只能对2的幂数次倍进行运算,存在诸如此类的语法错误,后来通过咨询老师与同学探讨,通过二进制转换成十进制顺利攻克了这些困难。其实小数分频器的功能除去计时与计分之外另外可以拓展加入如:万年历、流水灯、动画效果等等,但是由于受限知识水平,无法在有限时间内完成。不过完成这个小数分频器也

温馨提示

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

评论

0/150

提交评论