




免费预览已结束,剩余18页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河北大学2011届本科生毕业论文(设计)基于FPGA的定时器/计数器的设计与实现摘 要本课题旨在用EDA工具与硬件描述语言设计一个基于Altera公司的FPGA 16位计数器定时器,可对连续和非连续脉冲进行计数,并且计数器在具有计数定时功能基础上,实现简单脉宽调制功能和捕获比较功能。本设计采用QuartusII编译开发工具使用VerilogHDL设计语言进行设计,并采用了由上而下的设计方法对计数器进行设计,体现了VerilogHDL在系统级设计上自上而下设计风格的优点。本设计中采用了三总线的设计方案,使设计更加简洁与规范。本设计所有模块与功能均在Quartus II 7.0_1.4G_Liwz版本下通过编译与仿真,实现了定时器/计数器的设计功能。关键词:VerilogHDL硬件描述语言;QuartusII;FPGA;定时器/计数器FPGA-based timer / counter design and implementationThis topic aims to use EDA tools to design a 16 bit counter timer based on Alteras FPGA by hardware descripe language, which can count continuous and discontinuous pulset, and the counter with the function of capture and PWM. This design uses VerilogHDL language and top-down design method to design the counter on QuartusII compile tool, the design reflect the advantages of VerilogHDL top-down design in system-level design. The design uses a three-bus design, which make design much more specifications and concise. The design and function of all modules are compiled and simulationed on the Quartus II 7.0_1.4G_Liwz versions, and achieve the timer / counters features.Key words: VerilogHDL hardware description language; QuartusII; FPGA; timer / counter河北大学2011届本科生毕业论文(设计)目 录引 言11计数器设计方式选择与论证41.1计数器实现方案论证41.2设计方式选择认证41.2.1自下而上的设计方法41.2.2自上而下的设计方法41.2.3混合的设计方法52计数器整体设计方案63计数器/定时器各种工作方式的设计83.1计数模块83.1.1位加计数器模块83.1.2位减计数器93.2顶层模块设计114总结19谢 辞20参考文献21河北大学2011届本科生毕业论文(设计)引 言l 课题研究意义1近年来,随着FPGA规模越来越大、速度越来越快,并且成本也不断降低,在许多应用中FPGA已经开始取代ASIC,使FPGA的应用领域不断扩大。目前FPGA广泛应用于通信、信号处理、嵌入式处理器、图像处理和工业控制等领域。可编程逻辑器件从20世纪70年代发展至今,其结构、工艺、集成度、功能、速度、性能等方面都在不断的改进和提高;另外,电子设计自动化EDA(Electronic Design Automation)技术的发展又为可编程逻辑器件的广泛应用提供了有力的工具。因此掌握FPGA的开发和使用是一项很有实用性的技术。而计数器/定时器又是学习FPGA和FPGA硬件编程语言VerilogHDL语言和一个比较简单的入门级程序,同时计数器定时器也是现在数字电路中一个非常常用的器件,所以对定时器/计数器的研究,即能更好的学习FPGA和VerilogHDL语言,增加对FPGAR的掌握,又可以对计数/定时器这一常用数字电路器件进行一个更加详细的研究。l 国内外发展与应用1-2自1985年问世以来,FPGA(现场可编程门阵列)从集成电路与系统家族一个不起眼的小角色逐渐成为电子设计领域的重要器件。它极大地提高了设计灵活性并缩短了产品上市时间,在通信、工业控制、航空领域中广泛应用。现代电气传动技术的发展得益于电力电子技术、自动控制技术和微电子技术的发展,现代全 控开关型电力电子器件制造技术的进步和PWM技术的产生使处于调速系统中的电机电流谐波减小、转矩脉动降低、电机运行效率和调速性能提高;而现代控制理论的发展为进一步改善 电机调速性能提供了有利条件,出现了标志现代交流调速理论的矢量控制和直接转矩控制,使感应电机的调速性能可以和直流电机媲美;然而,10多年的研究经验告诉我们,优越的调速性能是需要强有力的微电子技术(以往主要是高速CPU)发展来保障的,先进的控制算法加上高速的计算处理能力才能使交流调速系统性能得到满足。近年来发展起来的超大规模可编程逻辑芯片(FPGA/CPLD),由于其灵活的可编程能力、快速的并行信号处理方式、足够多的内部资源、无复位问题和程序跑飞的困扰等,使其在电气传动领域中获得了广泛应用。l 本文主要工作及内容安排本设计主要采用Altera公司的FPGA芯片,通过QuartusII设计开发软件及Verilog HDL语言设计完成一个计数器/定时器的设计,在前言首先对课题来源及目的、意义进行了分析与介绍。第一章则对设计方案进行了比较与选择。第二章是对本次设计中用到的工具作一些简要介绍;第三章分模块对此次设计进行详细介绍;第四章是对本次设计的总结,并在本设计的基础上提出改进的方法,完善系统的功能以便更方便地应用于实践当中。l 所用工具简介1) Quarters II 简介3QuartusII可编程逻辑软件属于第四代PLD开发平台。它提供了PLD设计的综合开发环境,是PLD设计的基础。QuartusII集成环境支持PLD设计的设计输入、编译、综合、布局、布线、时序分析、仿真下载等EDA设计过程。QuartusII还提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,主要包括以下几点:能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;使用组合编译方式可一次完成整体设计流程;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;定时/时序分析与关键路径延时分析;自动定位编译错误;高效的期间编程与验证工具;可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;2) 实验平台简介5图1 GX-SOC/SOPC-CIDE实验平台本实验采用 GX-SOC/SOPC-CIDE实验平台实验,(如右图2-1),GX-SOC/SOPC-CIDE实验平台集众多功能于一体,采用全新的核心板+核心板+平台主板自由叠层结构。根据研发需求,可实现基于ALTERA、XILINX、ACTEL、Lattice、TI/ADI(DSP)、ARM等厂家的软核/硬核处理器相结合的嵌入式系统设计。灵活的CIDE综合创新开发实验平台功能强大、硬件接口丰富,平台嵌入式软件除支持C、C+语言开发之外,还支持uC/OS II、uClinux嵌入式操作系统。独特的核心板扩展接口可完美实现核心板与核心板、核心板与平台主板之间无缝连接,实现复杂的系统功能。用户可根据需求,选择SOPC和DSP组合、SOPC和ARM组合、ARM和DSP组合、单片机和SOPC的组合通过模式转换功能,不同的硬件模块间,可实现近20种独立的具有特色的综合模块组合。CIDE平台优异的综合性设计大大提高了开发平台的利用率,是SOPC、EDA、ARM、DSP、SOC、单片机相互结合的实验教学、电子系统设计创新实验室、嵌入式系统实验室、科研开发最理想的平台。3) Verilog HDL硬件描述语言简介6-8VerilogHDL是在应用最为广泛的C语言基础上发展起来的一种硬件描述语言,它是由GDA公司的PhilMoorby于1983年创建的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出了它的第三个商用仿真器Verilog-XL,获得了巨大成功,从而使Verilog HDL得到迅速的推一和应用。1989年CADENCE公司收购了GDA公司,使VerilogHDL成为该公司的独家专利。1990年CADENCE公司公开发表了VerilogHDL,并成立OVI(0penVerilogInternational)组织以促进VerilogHDL语言的发展。1995年VerilogHDL成为IEEE标准,即IEEEStandard13641995。 4) Verilog HDL的主要特点9-11Verilog HDL既是一种行为描述语言,也是一种结构描述语言。如果按照一定的规则和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互连的结构模块。这意味着利用Verilog语言所提供的功能,就可以构造一个模块间的清晰结构来描述复杂的大型设计,并对所需的逻辑电路进行严格的设计。下面列出的是Verilog语言的主要功能: 1、用延迟表示式或事件表达式来明确地控制过程的启动时间;2、通过命名的事件来触发其他过程里的激活行为或停止行为;3、 提供了条件和循环等程序结构;4、提供了可带参数且非零延续时间的任务程序结构;5、 提供了可定义新的操作符的函数结构;6、提供了用于建立表达式的算术运算符、逻辑运算符和位运算符; 7、提供了一套完整的表示组合逻辑基本元件的原语;8 、提供了双向通路和电阻器件的描述; 9、可建立MOS器件的电荷分享和衰减模型;10、可以通过构造性语句精确地建立信号模型;11、可描述顺序执行或并行执行的程序结构;此外,Verilog HDL语言还有一个重要特征就是:和C语言风格有很多的相似之处,学习起来比较容易。1 计数器设计方式选择与论证1.1 计数器实现方案论证1.1.1 软件定时利用通用微处理器(CPU)用汇编语言大进行定时/计数,定时计数准确,但这会造CPU资源的浪费或者无法满足实时处理的要求。1.1.2 不可编程硬件计数/定时器不易控制,计数范围及定时值不易改变,功能较单一。1.1.3 可编程硬件计数/定时器可编程定时器的计数定时值可以很容易的由软件来确定和改变,功能强,使用灵活。基于以上考虑,可编程硬件计数/定时器具有其它类型计数定时器不可具备的优点,本设计则选用第三种方案,设计一个基于FPGA芯片的可编程计数器/定时器。1.2 设计方式选择认证采用硬件设计描述语言设计一般由三种设计方法,自下而上、自上而上和混合设计方法,其优缺点主要如下所示:1.2.1 自下而上的设计方法 自下而上的设计是传统的设计方法,是从基本单元出发,对设计进行逐层划分的过程。这种设计方法与用电子元件在模拟实现板上建立一个系统的步骤有密切的关系。优、缺点分别如下: 优点: 设计人员对这种设计方法比较熟悉,实现各个子模块所需的时间较短。 缺点: 对系统的整体功能把握不足;由于必须先对多个子模块进行设计,因此实现整个系统的功能所需的时间长;另外,对设计人员之间相互协作也有较高的要求。 1.2.2 自上而下的设计方法 自上而下的设计是从系统级开始,把系统划分为基本单元,然后再把基本单元划分为下一层次的基本单元,直到可用EDA元件实现为止。这种方法的优、缺点如下。 优点: 在设计周期开始就做好了系统分析;由于设计的主要仿真和调试过程是在高层完成的,所以能够早期发现结构设计上的错误,避免了设计工作的浪费,方便了系统的划分和整个项目的管理,可减少设计人员劳动,避免了重复设计。 缺点: 得到的最小单元不标准,且制造成本高。 1.2.3 混合的设计方法复杂数字逻辑电路和系统设计过程,通常是以上两种设计方法的结合。设计时需要考虑多个目标的综合平衡。在高层系统用自上而下的设计方法实现,而使用自下而上的方法从库元件或以往设计库中调用已有的设计单元。混合设计方法兼有以上两种方法的优点,并且可使用先进的矢量测试方法。本次设计用VerilogHDL语言设计一个计数器系统,自上而下的设计方式本就是VerilogHDL的特点,并且由以上分析可以看出自上而下的设计方式在系统级结构设计的优点,因此本设计采用了自上而下的设计方式。2 计数器整体设计方案8位数据线3位地址线时钟信号控制信号(数据读取信号、捕获信号、捕获数据数据输出信号)16位输出数据线16位加减/计数器输出数据寄存器状态寄存器(地址000)捕获数据寄存器脉宽调制模块数据寄存器a(地址001-010)数据寄存器b(地址011-100)地址寄存器(000-100)图2-1 计数器整体设计框图该设计整体设计方案如图1-1,主要有地址寄存器、状态寄存器、数据寄存器、计数器、脉宽调制模块和捕获数据寄存器等模块组成。其中地址寄存器主要用于对发送数据的目的寄存器寻址,地址范围为000-100,各地址对应寄存器及作用为:000:状态寄存器,用于存放计数器工作模式选择数据;001:数据寄存器jia高8位,加计数器最大值高8位数据;010:数据寄存器jia低8位,加计数器最大值低8位数据;011:数据寄存器jian高8位,减计数器初值高8位数据;100:数据寄存器jian低8位,减计数器初值低8位数据;状态寄存器用于计数器工作模式选择,所设计计数器共有:加计数、减计数、捕获模式、脉宽调制模式四个状态,与状态寄存器所对应状态为:0000000:加计数;0000001:减计数;0000010:捕获模式;0000011:脉宽调模式。控制信号有数据读取信号、捕获信号、捕获数据输出信号。数据读取信号作用为:当数据线数据准备好、地址准备好时,读取信号生效时才能将数据线的数据读入各数据寄存器中,这样可以有效保证输入的数据的准确性。捕获信号作用为当计数器工作于捕获模式时,捕获信号有效时将计数器中的数据捕获进入捕获数据寄存器;捕获数据输出信号的作用为将捕获的数据由输出数据线输出,在捕获、输出捕获数据过程中,计数器保持计数。3 计数器/定时器各种工作方式的设计本设计分为加计数模块、减计数模块和顶层模块,捕获功能与脉宽调制功能设计在顶层模块中。本设计所有程序均通过Quartus II 7.0_1.4G编译平台编译仿真通过。3.1 计数工作模式计数模块分为加计数模块和减计数模块,计数进制数据可以设定。3.1.1 16位加计数器模块16位计数器只有对脉冲进行计数功能,有16位进制数据可以由设定端口(indate15-0),复位端口,和16位数据输出端口。图3-1 16位加计数器器件图程序流程图:开始检测到脉冲输入是否到设定进制值NY计数器清零,重新开始加计数图3-2 16位加计数流程图器流程图进制数值设定16位加计数器源程序:module jia(clk,q,in,reset);input clk,reset;output15:0q;input15:0in;/进制数据输入reg15:0indate;reg15:0q;always(posedge clk)beginif(reset)/清零信号q=0;elsebeginif(qin)q=q+1;elseq=0;endend endmodule波形图:设定为5进制计数复位信号有效,计数器清零图3-3 16位加计数器波形图3.1.2 16位减计数器16位减计数器(如图3-4)只有对脉冲进行减计数功能,计数初值可以由16位进制数据端口(indate15-0),计数器还具有复位端口,和16位数据输出端口。图3-4 16位减计数器件图减计数器工作流程图:开始检测到脉冲输入是否到0NY计数器为0,重新开始减计数图3-5 16位减计数器流程图计数初值设定源程序:module jian(clk,q,in,reset);input clk,reset;output15:0q;input15:0in;reg15:0indate;reg15:0q;always(posedge clk)beginif(reset)q0)q=q-1;elseq=in;endend endmodule波形图:初始值设定为10复位信号有效,计数器清零图3-6 16位减计数器波形图3.2 顶层模块设计1) 顶层模块器件图图3-7 顶层模块器件图2)计数器工作流程图开始地址输入地址读取信号有效寄存器寻址状态寄存器数据寄存器数据寄存器数据寄存器数据寄存器状态寄存器加计数模式减计数模式捕获模式脉宽调制模式结束Clk时钟图3-8 顶层模块流程图本次设计的脉冲发生功能模块、捕获模块都集成在顶层模块case语句中,这个模块运用了两个case语句分别选用于地址寄存器寻址和功能选择5个地址和四个功能模式状态,其地址状态有效状态为5个状态,所以采用了3位地址线来用于寄存器寻址。而模式选择寄存器由8八数据线输入,但只用到最低四个状态,其它状态全部为无效状态。源程序如下:include jia.vinclude jian.vmodule ding(clk,date,out,buhuo,add,shuchu,zs,dq);input clk;input buhuo,shuchu,dq; /各个控制信号input7:0 date; /数据线input2:0add;/地址线output15:0out; /输出数据线output zs; /捕获数据标志位reg15:0out; /输入出寄存器reg15:0p;reg15:0q;reg zs;reg7:0state; /状态寄存器reg 15:0bhuo; /捕获数据寄存器reg 15:0regjia; /加计数进制数据设定寄存器reg 15:0regjian; /减计数初值设定寄存器reg reset; /复位reg2:0regadd; /地址寄存器parameter shang=8d0,xia=8d1,bh=8d2,mm=8d3;/常数设定always(posedge clk)/数据输入模块beginregadd=add;/读取地址case(regadd)/寄存器寻址3d0:beginif(dq)/读取信号有效时才能读取数据state=date;elsestate=state;/读取信号无效时不能改变寄存器数据end3d1:beginif(dq)regjia15:8=date;elseregjia15:8=regjia15:8;end3d2:beginif(dq)regjia7:0=date;elseregjia7:0=regjia7:0;end3d3:beginif(dq)regjian15:8=date;elseregjian15:8=regjian15:8;end3d4:beginif(dq)regjian7:0=date;elseregjian7:0=regjian7:0;endendcaseendalways(posedge clk)/计数器主模块begincase(state)/状态选择shang:/加计数beginreset=0;out=p;endxia:/减计数beginreset=0;out=q;endbh:/捕获模式beginreset=0;if(buhuo)beginbhuo=p;zs=1;endelsebeginif(shuchu)beginout=bhuo;zs=1;endelsebeginzs=0;out=p;endendendmm:begin/脉宽调制模式resetregjian)out0=1;elseout0=0;endendcaseendjia jia(.clk(clk),.q(p),.in(regjia),.reset(reset);jian jian(.clk(clk),.q(q),.in(regjian),.reset(reset);endmodule最终程序各模式波形图:1)加计数时的波形图15进制State为0,加计数模式图3-9 add为0时,为加计数模式时波形从图中可以看出,out输出对clk计数,波形与设计目标相符。2) 设定为模式1(减计数模式)时波形减计数初始值为9读取信号生效时模式才改变时图3-10 add为1,减计数模式时波形从图中可以看出,当地址状态信号更改后开始并未生效,而是等到读取信号到来时才开始生效。加上读取信号后,可以有效防止地址线干扰或不稳定所带来的各种问题。3) 捕获模式时波形输出信号有效时输出捕获寄存器中数据捕获数据寄存器输出信号有效捕获信号有效 图3-11 add为2时,为捕获模式时波形从图中可以看到,当计数器处理捕获模式,当捕获信号有效时,计数器当时的数据被捕获到捕获寄存器中,但此时计数器并没有停止,输出也保持输出计数器数值,但当输出信号有效时,输出为捕获寄存器中的数据,当输出信号停止后,再改为输出计数器的数据,在此期间,计数器始终未停止计数。4) 脉宽调制模式波形图脉宽调制模式时out0输出输出脉冲 图3-13 add为3时,为可调脉宽脉冲发射波形脉宽调制模式中,周期由加计数寄存器数值设定,脉宽由减计数器数值设定。由out0位输出脉冲,从图3-13可以看出,输出脉冲和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生牛奶购销合同样本4篇
- 投标协议书简约版8篇
- 学校房屋租赁合同(开书店)6篇
- 煤炭合伙协议合同范本
- 面点师合同范本
- 安装压力罐合同范本
- 看孩子保姆合同范本
- 新成立公司合同范本
- 傣族民居出售合同范本
- 结婚别墅租房合同范本
- 黑龙江省大庆市铁人中学2024-2025学年高一数学上学期期中试题含解析
- 初一开学第一课主题班会课件
- 中等职业学校《单片机原理与应用》课程标准
- DL∕T 976-2017 带电作业工具、装置和设备预防性试验规程
- 学校食堂食品安全主体责任风险管控清单(日管控)
- 盐酸罂粟碱在腰背痛治疗中的应用
- 智能网联汽车:第6章 智能网联汽车先进驾驶辅助技术
- SYT5405-2019酸化用缓蚀剂性能试验方法及评价指标
- 非器质性失眠症的护理查房
- 《基础写作教程》 课件全套 第1-11章 基础写作概论- 理论文体
- 培养团队协调能力
评论
0/150
提交评论