基于FPGA的计数器.docx
- 文档编号:5122122
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:14
- 大小:129.99KB
基于FPGA的计数器.docx
《基于FPGA的计数器.docx》由会员分享,可在线阅读,更多相关《基于FPGA的计数器.docx(14页珍藏版)》请在冰豆网上搜索。
基于FPGA的计数器
EDA课程设计
项目名称基于FPGA的计数器的设计
专业班级通信102班
学生姓名青瓜
指导教师
2013年5月28日
摘要
本课程设计要完成一个1位十进制计数器的设计。
计数器是大规模集成电路中运用最广泛的结构之一。
在模拟及数字集成电路设计当中,灵活地选择与使用计数器可以实现很多复杂的功能,可以大量减少电路设计的复杂度和工作量。
讨论了一种可预置加减计数器的设计,运用VerilogHDL语言设计出了一种同步的可预置加减计数器,该计数器可以根据控制信号分别实现加法计数和减法计数,从给定的预置位开始计数,并给出详细的VerilogHDL源代码。
最后,设计出了激励代码对其进行仿真验证,实验结果证明该设计符合功能要求,可以实现预定的功能。
关键词:
计数器;VerilogHDL;QuartusⅡ;FPGA;
Abstract
Thiscourseisdesignedtocompleteaonedecimalcounterdesign.ThecounterisLSIstructureinoneofthemostwidelyused.IntheanaloganddigitalICdesigns,theflexibilitytoselectthecountercanachievealotwiththeuseofcomplexfunctions,cansignificantlyreducethecomplexityofcircuitdesignandworkload.Discussesapresettabledowncounterdesign,usingVerilogHDLlanguagedesignedasynchronouspresettabledowncounter,thecountercanbeimplementedaccordingtothecontrolsignalsarecountedAdditionandsubtractioncountingfromagiventhepresetstartscounting,andgivesdetailedVerilogHDLsourcecode.Finally,thedesignoftheincentivecodeitssimulation,experimentalresultsshowthatthedesignmeetsthefunctionalrequirements,youcanachievetheintendedfunction.
Keywords:
Decimalcounter;VerilogHDL;QuartusⅡ;FPGA;
第1章绪论
1.1计数器的种类
1、如果按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。
2、如果按照计数过程中数字增减分类,又可将计数器分为加法计数器、减法计数器和可逆计数器,随时钟信号不断增加的为加法计数器,不断减少的为减法计数器,可增可减的叫做可逆计数器。
另外还有很多种分类不一一列举,但是最常用的是第一种分类,因为这种分类可以使人一目了然,知道这个计数器到底是什么触发方式,以便于设计者进行电路的设计。
1.2计数器的发展
狭义的计数器是指一些常用计时器,例如体育比赛中测试时间的计时器等,但本词条所要介绍的并不是这种计时器,要介绍的是应用更为广泛的时序逻辑电路中的计数器。
计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。
计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。
计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。
它主要的指标在于计数器的位数,常见的有3位和4位的。
很显然,3位数的计数器最大可以显示到999,4位数的最大可以显示到9999。
在数字电子技术中应用的最多的时序逻辑电路。
计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。
但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。
第2章设计环境
2.1QuartusII
2.1.1软件简介
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
图2-1QuartusII
2.1.2功能
QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
芯片(电路)平面布局连线编辑;
LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;
功能强大的逻辑综合工具;
完备的电路功能仿真与时序逻辑仿真工具;
定时/时序分析与关键路径延时分析;
可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;
支持软件源文件的添加和创建,并将它们链接起来生成编程文件;
使用组合编译方式可一次完成整体设计流程;
自动定位编译错误;
高效的期间编程与验证工具;
可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;
能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
支持MAX7000/MAX3000等乘积项器件
QuartusII设计套装的其他特性包括:
[1]
DSPBuilder12.0新的数字信号处理(DSP)支持——通过系统控制台,与MATLAB的DDR存储器进行通信,并具有新的浮点功能,提高了设计效能,以及DSP效率。
经过改进的视频和图像处理(VIP)套装以及视频接口IP——通过具有边缘自适应算法的ScalerIIMegaCore功能以及新的Avalon-Streaming(Avalon-ST)视频监视和跟踪系统IP内核,简化了视频处理应用的开发。
增强收发器设计和验证——更新了ArriaVFPGA的收发器工具包支持,进一步提高收发器数据速率(对于StratixVFPGA,高达14.1Gbps)。
2.2VerilogHDL硬件描述语言
VerilogHDL是一种硬件描述语言(HDL:
HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
VerilogHDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。
前者由GatewayDesignAutomation公司(该公司于1989年被Cadence公司收购)开发。
两种HDL均为IEEE标准。
2.2.1语言简介
VerilogHDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。
被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
VerilogHDL语言具有下述描述能力:
设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
所有这些都使用同一种建模语言。
此外,VerilogHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
VerilogHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。
因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。
语言从C编程语言中继承了多种操作符和结构。
VerilogHDL提供了扩展的建模能力,其中许多扩展最初很难理解。
但是,VerilogHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。
当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
2.2.2主要能力
基本逻辑门,例如and、or和nand等都内置在语言中。
用户定义原语(UDP)创建的灵活性。
用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
开关级基本结构模型,例如pmos和nmos等也被内置在语言中。
提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
可采用三种不同方式或混合方式对设计建模。
这些方式包括:
行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。
VerilogHDL中有两类数据类型:
线网数据类型和寄存器数据类型。
线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
能够描述层次设计,可使用模块实例结构描述任何层次。
设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。
VerilogHDL不再是某些公司的专有语言而是IEEE标准。
人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言。
VerilogHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。
PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合。
设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
能够使用内置开关级原语在开关级对设计完整建模。
同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
VerilogHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。
这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。
在行为级描述中,VerilogHDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
能够使用门和模块实例化语句在结构级进行结构描述。
VerilogHDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
VerilogHDL还具有内置逻辑函数,例如&(按位与)和(按位或)。
高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。
可以显式地对并发和定时进行建模。
提供强有力的文件读写能力。
语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。
2.2.3语言用途
VerilogHDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,它是由GDA(GatewayDesignAutomation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。
1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得VerilogHDL迅速得到推广应用。
1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。
1990年CADENCE公司公开发表了VerilogHDL,并成立LVI组织以促进VerilogHDL成为IEEE标准,即IEEEStandard1364-1995.
VerilogHDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把VerilogHDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。
与之相比,VHDL的学习要困难一些。
但VerilogHDL较自由的语法,也容易造成初学者犯一些错误,这一点要注意。
2.2.4VerilogHDL的发展历史
1、1981年GatewayAutomation(GDA)硬件描述语言公司成立。
2、1983年该公司的PhilipMoorby首创了VerilogHDL,Moorby后来成为VerrlogHDL-XL的主要设计者和Cadence公司的第一合伙人。
3、1984-1985年Moorby设计出第一个关于VerilogHDL的仿真器。
4、1986年Moorby对VerilogHDL的发展又做出另一个巨大的贡献,提出了用于快速门级仿真的XL算法。
5、随着VerilogHDL-XL的成功,VerilogHDL语言得到迅速发展。
6、1987年Synonsys公司开始使用VerilogHDL行为语言作为综合工具的输入。
7、1989年Cadence公司收购了Gateway公司,VerilogHDL成为Cadence公司的私有财产。
8、1990年初Cadence公司把VerilongHDL和VerilongHDL-XL分开,并公开发布了VerilogHDL.随后成立的OVI(OpenVerilogHDLInternational)组织负责VerilogHDL的发展,OVI由VerilogHDL的使用和CAE供应商组成,制定标准。
9、1993年,几乎所有ASIC厂商都开始支持VerilogHDL,并且认为VerilogHDL-XL是最好的仿真器。
同时,OVI推出2.0版本的VerilongHDL规范,IEEE接收将OVI的VerilongHDL2.0作为IEEE标准的提案。
10、1995年12月,IEEE制定了VerilongHDL的标准IEEE1364-1995.
任何新生事物的产生都有它的历史沿革,早期的硬件描述语言是以一种高级语言为基础,加上一些特殊的约定而产生的,目的是为了实现RTL级仿真,用以验证设计的正确性,而不必像在传统的手工设计过程中那样,必须等到完成样机后才能进行实测和调试。
2.2.5主要应用
下面列出的是Verilog硬件描述语言的主要能力:
·基本逻辑门,例如and、or和nand等都内置在语言中。
·用户定义原语(UDP)创建的灵活性。
用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
·开关级基本结构模型,例如pmos和nmos等也被内置在语言中。
·提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
·可采用三种不同方式或混合方式对设计建模。
这些方式包括:
行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。
·VerilogHDL中有两类数据类型:
线网数据类型和寄存器数据类型。
线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
·能够描述层次设计,可使用模块实例结构描述任何层次。
·设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。
·VerilogHDL不再是某些公司的专有语言而是IEEE标准。
·人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言。
·VerilogHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。
PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合。
·设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
·能够使用内置开关级原语在开关级对设计完整建模。
·同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
·VerilogHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。
这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。
·在行为级描述中,VerilogHDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
·能够使用门和模块实例化语句在结构级进行结构描述。
·在VerilogHDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
·VerilogHDL还具有内置逻辑函数,例如&(按位与)和|(按位或)。
·对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。
·可以显式地对并发和定时进行建模。
·提供强有力的文件读写能力。
·语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。
2.3ElectronicDesignAutomation
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
20世纪90年代,国际上电子和计算机技术较为先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
概念
EDA技术的概念
EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
应用
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。
EDA设计可分为系统级、电路级和物理实现级。
第3章设计思路
模块是Verilog的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。
一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述;设计的数据流行为使用连续赋值语句进行描述;时序行为使用过程结构描述。
一个模块可以在另一个模块中调用。
图3-1总设计图
3.1输入模块
输入端由输入时钟信号和清零控制输入构成,用来接收输入信号,实现对信号的控制计数。
图3-2输入
3.2寄存器模块
图3-2输出寄存器
寄存器是中央处理器内的组成部分。
寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。
在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。
在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
3.3输出模块
图3-6输出
输出端用来输出计数后的结果
3.4计数模块
图3-7计数器
计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。
计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。
计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。
它主要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 计数器