《基于fpga的计数器设计-学位论文.doc》由会员分享,可在线阅读,更多相关《基于fpga的计数器设计-学位论文.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通信102班,姓名 青瓜 基于FPGA的计数器设计EDA课程设计项目名称 基于FPGA的计数器的设计 专业班级 通信102班 学生姓名 青瓜 指导教师 2013年 5 月 28 日18摘 要本课程设计要完成一个1 位十进制计数器的设计。计数器是大规模集成电路中运用最广泛的结构之一。在模拟及数字集成电路设计当中, 灵活地选择与使用计数器可以实现很多复杂的功能, 可以大量减少电路设计的复杂度和工作量。讨论了一种可预置加减计数器的设计, 运用Ver ilog H DL 语言设计出了一种同步的可预置加减计数器, 该计数器可以根据控制信号分别实现加法计数和减法计数, 从给定的预置位开始计数, 并给出详细
2、的 VerilogHDL 源代码。最后, 设计出了激励代码对其进行仿真验证, 实验结果证明该设计符合功能要求, 可以实现预定的功能。关键词:计数器;VerilogHDL;Quartus;FPGA;AbstractThis course is designed to complete a one decimal counter design. The counter is LSI structure in one of the most widely used. In the analog and digital IC designs, the flexibility to select the
3、 counter can achieve a lot with the use of complex functions, can significantly reduce the complexity of circuit design and workload. Discusses a presettable down counter design, using Ver ilog H DL language designed a synchronous presettable down counter, the counter can be implemented according to
4、 the control signals are counted Addition and subtraction counting from a given the preset starts counting, and gives detailed VerilogHDL source code. Finally, the design of the incentive code its simulation, experimental results show that the design meets the functional requirements, you can achiev
5、e the intended function.Key words: Decimal counter; VerilogHDL; Quartus ; FPGA;目 录摘 要IAbstractII第1章 绪论11.1计数器的种类11.2计数器的发展1第2章 设计环境22.1 Quartus II22.1.1 软件简介22.1.2 功能32.2 Verilog HDL硬件描述语言42.2.1 语言简介42.2.2 主要能力42.2.3 语言用途62.2.4 Verilog HDL的发展历史62.2.5 主要应用72.3 Electronic Design Automation8第3章 设计思路103
6、.1输入模块103.2 寄存器模块113.3 输出模块113.4 计数模块11第4章 程序设计134.1 主程序134.3 always语句134.4 if-else语句13第5章 波形仿真14结论15参考文献16附录117致谢18第1章 绪论1.1计数器的种类1、如果按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。2、如果按照计数过程中数字增减分类,又可将计数器分为加法计数器、减法计数器和可逆计数器,随时钟信号不断增加的为加法计数器,不断减少的为减法计数器,可增可减的叫做可逆计数器。另外还有很多种分类不一一列举,但是最常用的是第一种分类,因为这种分类可以使人一
7、目了然,知道这个计数器到底是什么触发方式,以便于设计者进行电路的设计。1.2计数器的发展狭义的计数器是指一些常用计时器,例如体育比赛中测试时间的计时器等,但本词条所要介绍的并不是这种计时器,要介绍的是应用更为广泛的时序逻辑电路中的计数器。计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中
8、对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数,常见的有3位和4位的。很显然,3位数的计数器最大可以显示到999,4位数的最大可以显示到9999。在数字电子技术中应用的最多的时序逻辑电路。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。第2章 设计环境2.1 Quartus II2.
9、1.1 软件简介Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP
10、、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II
11、与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。图2-1 Quartus II2.1.2 功能Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图
12、、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第
13、三方EDA软件使用的VHDL网表文件和Verilog网表文件。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持MAX7000/MAX3000等乘积项器件Quartus II设计套装的其他特性包括:1DSP
14、Builder 12.0新的数字信号处理(DSP)支持通过系统控制台,与MATLAB的DDR存储器进行通信,并具有新的浮点功能,提高了设计效能,以及DSP效率。经过改进的视频和图像处理(VIP)套装以及视频接口IP通过具有边缘自适应算法的Scaler II MegaCore功能以及新的Avalon-Streaming (Avalon-ST)视频监视和跟踪系统IP内核,简化了视频处理应用的开发。增强收发器设计和验证更新了Arria V FPGA的收发器工具包支持,进一步提高收发器数据速率(对于Stratix V FPGA,高达14.1 Gbps)。2.2 Verilog HDL硬件描述语言Ver
15、ilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。2.2.1 语言简介Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系
16、统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言
17、从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。2.2.2 主要能力基本逻辑门,例如and、or和nand等都内置在语言中。用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。可采用三种不同方式或混
18、合方式对设计建模。这些方式包括:行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语句描述建模。Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。能够描述层次设计,可使用模块实例结构描述任何层次。设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。Verilog HDL不再是某些公司的专有语言而是IEEE标准。人和机器都可阅读Verilog 语言,因此它可作为EDA的工具和设计者之间的交互语言。Verilog HDL语言的描述能力能够通过使用编程语言接口
19、(PLI)机制进一步扩展。PLI是允许外部函数访问Verilog 模块内信息、允许设计者与模拟器交互的例程集合。设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。能够使用内置开关级原语在开关级对设计完整建模。同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。在行为级描述中,Verilog HDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计
20、描述。能够使用门和模块实例化语句在结构级进行结构描述。Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。Verilog HDL 还具有内置逻辑函数,例如&(按位与)和(按位或)。高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。可以显式地对并发和定时进行建模。提供强有力的文件读写能力。语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。2.2.3 语言用途Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,它是由GDA(Gateway D
21、esign Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995.Verilog HDL的最大特点就是易
22、学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。与之相比,VHDL的学习要困难一些。但Verilog HDL较自由的语法,也容易造成初学者犯一些错误,这一点要注意。2.2.4 Verilog HDL的发展历史1、1981年Gateway Automation(GDA)硬件描述语言公司成立。2、1983年该公司的Philip Moorby首创了Verilog HDL,Moorby后来成为Verrlo
23、g HDL-XL的主要设计者和Cadence公司的第一合伙人。3、1984-1985年Moorby设计出第一个关于Verilog HDL的仿真器。4、1986年Moorby对Verilog HDL的发展又做出另一个巨大的贡献,提出了用于快速门级仿真的XL算法。5、随着Verilog HDL-XL的成功,Verilog HDL语言得到迅速发展。6、1987年Synonsys公司开始使用Verilog HDL行为语言作为综合工具的输入。7、1989年Cadence公司收购了Gateway公司,Verilog HDL成为Cadence公司的私有财产。8、1990年初Cadence公司把Verilon
24、g HDL和Verilong HDL-XL分开,并公开发布了Verilog HDL.随后成立的OVI(Open Verilog HDL International)组织负责Verilog HDL的发展,OVI由Verilog HDL的使用和CAE供应商组成,制定标准。9、1993年,几乎所有ASIC厂商都开始支持Verilog HDL,并且认为Verilog HDL-XL是最好的仿真器。同时,OVI推出2.0版本的Verilong HDL规范,IEEE接收将OVI的Verilong HDL2.0作为IEEE标准的提案。10、1995年12月,IEEE制定了Verilong HDL的标准IEEE
25、1364-1995.任何新生事物的产生都有它的历史沿革,早期的硬件描述语言是以一种高级语言为基础,加上一些特殊的约定而产生的,目的是为了实现RTL级仿真,用以验证设计的正确性,而不必像在传统的手工设计过程中那样,必须等到完成样机后才能进行实测和调试。2.2.5 主要应用下面列出的是Verilog硬件描述语言的主要能力: 基本逻辑门,例如and、or和nand等都内置在语言中。 用户定义原语( UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。 开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。 提供显式语言结构指定设计中的端口到端口的时延及路径时延和
26、设计的时序检查。 可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语句描述建模。 Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。 能够描述层次设计,可使用模块实例结构描述任何层次。 设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。 Verilog HDL不再是某些公司的专有语言而是I E E E标准。 人和机器都可阅读Verilog 语言,因此它可作为E D A的工具和设计者之间的交互语言。
27、 Verilog HDL语言的描述能力能够通过使用编程语言接口( P L I)机制进一步扩展。P L I是允许外部函数访问Verilog 模块内信息、允许设计者与模拟器交互的例程集合。 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级( RT L)到算法级,包括进程和队列级。 能够使用内置开关级原语在开关级对设计完整建模。 同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。 Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。 在行为级描述中, Verilog
28、HDL不仅能够在RT L级上进行设计描述,而且能够在体系结构级描述及其算 法级行为上进行设计描述。 能够使用门和模块实例化语句在结构级进行结构描述。 在Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。 Verilog HDL 还具有内置逻辑函数,例如&(按位与)和|(按位或)。 对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。 可以显式地对并发和定时进行建模。 提供强有力的文件读写能力。 语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。2.3 Electro
29、nic Design AutomationEDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。20世纪90年代,国际上电子和计算机技术较为先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方
30、式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。概念EDA技术的概念EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用
31、EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。应用现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA设计可分为系统级、电路级和物理实现级。第3章 设计思路模块是
32、Verilog 的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述; 设计的数据流行为使用连续赋值语句进行描述; 时序行为使用过程结构描述。一个模块可以在另一个模块中调用。图3-1 总设计图3.1 输入模块输入端由输入时钟信号和清零控制输入构成,用来接收输入信号,实现对信号的控制计数。图3-2 输入3.2 寄存器模块图3-2 输出寄存器寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(P
33、C)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。3.3 输出模块图3-6 输出输出端用来输出计数后的结果3.4 计数模块图3-7 计数器计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法
34、、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数,常见的有3位和4位的。第4章 程序设计4.1 主程序使用Verilog HDL语言编程。module jishuqi(iclk,rst_n,q,overflow);input iclk;input rst_n;output reg 3:0q;output overflow;always (posedge iclk or negedge rst_n)beginif(rst_n) q = 4h0;elsebeginif(4h9 =
35、q) q = 4h0;else q = q + 4h1;endendassign overflow = 4h9 = q; endmodule4.3 always语句always (posedge iclk or negedge rst_n)always语句用来实现程序的循环。4.4 if-else语句if(4h9 = q) q = 4h0;else q = q + 4h1;ifelse语句用来判断是否达到条件,达到择执行,否则不执行语句第5章 波形仿真由波形仿真可知,当复位没有按下时,计数器累计加数,复位按下是,输出数据清零。结论在课程设计中采用 Verilog HDL 语言设计的计数器, 借
36、助其功能强大的语言结构, 简明的代码描述复杂控制逻辑设计, 与工艺无关特性, 在提高工作效率的同时达到求解目的, 并可以通过 Verilog HDL 语言的综合工具进行相应硬件电路的生成,具有传统逻辑设计方法所无法比拟的优越性。为了检验所设计的电路的正确性,用仿真工具进行仿真验证, 得出了正确的实验数据。计数器作为FPGA实际应用的一个例子,在日常生活中发挥着非常重要的作用。要实现意见具体的事件判断和做出反应,实现自动化。参考文献1 夏宇闻Verilog数字系统设计教程北京航空航天大学出版社2 李景华, 杜玉远Verilog HDL语言及数字系统设计国防工业出版社3 刘睿强, 童贞理, 尹洪剑
37、Verilog HDL数字系统设计及实践电子工业出版社4 刘振来, 张志荣, 顾建雄, 等. 异步二进制可逆计数器的设计附录1实验程序module jishuqi(iclk,rst_n,q,overflow);input iclk;input rst_n;output reg 3:0q;output overflow;always (posedge iclk or negedge rst_n)beginif(rst_n) q = 4h0;elsebeginif(4h9 = q) q = 4h0;else q = q + 4h1;endendassign overflow = 4h9 = q; endmodule致谢在这次的课程设计中,特别要感谢我的指导教师董亮老师,以及在同学的帮助下我才能顺利完成了这次eda课程设计。