1、EDA 课程设计项目名称 基于 FPGA 的计数器的设计 专业班级 通信 102 班 学生姓名 青瓜 指导教师 2013 年 5 月 28 日通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计I摘 要本课程设计要完成一个 1 位十进制计数器的设计。计数器是大规模集成电路中运用最广泛的结构之一。在模拟及数字集成电路设计当中, 灵活地选择与使用计数器可以实现很多复杂的功能, 可以大量减少电路设计的复杂度和工作量。讨论了一种可预置加减计数器的设计, 运用 Ver ilog H DL 语言设计出了一种同步的可预置加减计数器 , 该计数器可以根据控制信号分别实现加法计数和减法计数, 从给定的预置
2、位开始计数, 并给出详细的 VerilogHDL 源代码。最后, 设计出了激励代码对其进行仿真验证 , 实验结果证明该设计符合功能要求, 可以实现预定的功能。关键词:计数器;VerilogHDL;Quartus;FPGA;通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计IIAbstractThis 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 digit
3、al IC designs, the flexibility to select the 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,
4、 the counter can be implemented according to 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
5、 the functional requirements, you can achieve the intended function.Key words: Decimal counter; VerilogHDL; Quartus ; FPGA;通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计III目 录摘 要 .IAbstract.II第 1 章 绪论 .11.1 计数器的种类 .11.2 计数器的发展 .1第 2 章 设计环境 .22.1 Quartus II .22.1.1 软件简介 .22.1.2 功能 .32.2 Verilog HDL 硬件描述语言 .42.2.1 语言简
6、介 .42.2.2 主要能力 .42.2.3 语言用途 .62.2.4 Verilog HDL 的发展历史 .62.2.5 主要应用 .72.3 Electronic Design Automation.8第 3 章 设计思路 .103.1 输入模块 .103.2 寄存器模块 .113.3 输出模块 .113.4 计数模块 .11第 4 章 程序设计 .134.1 主程序 .134.3 always 语句 .134.4 if-else 语句 .13第 5 章 波形仿真 .14结论 .15参考文献 .16附录 1.17致谢 .18通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计1第 1
7、 章 绪论1.1 计数器的种类1、如果按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。2、如果按照计数过程中数字增减分类,又可将计数器分为加法计数器、减法计数器和可逆计数器,随时钟信号不断增加的为加法计数器,不断减少的为减法计数器,可增可减的叫做可逆计数器。另外还有很多种分类不一一列举,但是最常用的是第一种分类,因为这种分类可以使人一目了然,知道这个计数器到底是什么触发方式,以便于设计者进行电路的设计。1.2 计数器的发展狭义的计数器是指一些常用计时器,例如体育比赛中测试时间的计时器等,但本词条所要介绍的并不是这种计时器,要介绍的是应用更为广泛的时序逻辑电路中的
8、计数器。计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有 RS 触发器、T 触发器、D 触发器及 JK 触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。
9、它主要的指标在于计数器的位数,常见的有 3 位和 4 位的。很显然,3 位数的计数器最大可以显示到 999,4 位数的最大可以显示到 9999。在数字电子技术中应用的最多的时序逻辑电路。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果,一般都是要通过外接 LCD 或 LED 屏才能显示。通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计2第 2 章 设计环境2.1 Quartus II2.1.1 软件简介Quartus II 支持 Altera 的 IP 核,包含了 LPM/MegaFunction 宏功能模块库,使
10、用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方 EDA 工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方 EDA 工具。Quartus II 是 Altera 公司的综合性 PLD/FPGA 开发软件,支持原理图、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD 设计流程。Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 脚本完成设计流程外,提供了完善
11、的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。此外,Quartus II 通过和 DSP Builder 工具与 Matlab/Simulink 相结合,可以方便地实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为 Altera 的上一代 PLD 设计软件,由于其出色的易用性而得到了广泛的应用。目前 Altera 已经停止了对 Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变
12、。Altera 在 Quartus II 中包含了许多诸如SignalTap II、Chip Editor 和 RTL Viewer 的设计辅助工具,集成了 SOPC 和 HardCopy设计流程,并且继承了 Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。图 2-1 Quartus II通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计32.1.2 功能Quartus II 提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特
13、性,包括:可利用原理图、结构框图、VerilogHDL、AHDL 和 VHDL 完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock 增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用 SignalTap II 逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的 EDIF 网表文件、V
14、HDL 网表文件和 Verilog 网表文件;能生成第三方 EDA 软件使用的 VHDL 网表文件和 Verilog 网表文件。Altera 的 Quartus II 可编程逻辑软件属于第四代 PLD 开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于 Internet 的协作设计。Quartus 平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys 和 Synplicity 等 EDA 供应商的开发工具相兼容。改进了软件的 LogicLock 模块设计功能,增添 了 FastFit 编译选项,推进了网络编辑性能,而且提升了调试能力。
15、支持 MAX7000/MAX3000 等乘积项器件Quartus II 设计套装的其他特性包括: 1DSP Builder 12.0 新的数字信号处理 (DSP)支持 通过系统控制台,与 MATLAB的 DDR 存储器进行通信,并具有新的浮点功能,提高了设计效能,以及 DSP 效率。经过改进的视频和图像处理(VIP)套装以及视频接口 IP通过具有边缘自适应算法的 Scaler II MegaCore 功能以及新的 Avalon-Streaming (Avalon-ST)视频监视和跟踪系通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计4统 IP 内核,简化了视频处理应用的开发。增强收发
16、器设计和验证更新了 Arria V FPGA 的收发器工具包支持,进一步提高收发器数据速率(对于 Stratix V FPGA,高达 14.1 Gbps)。2.2 Verilog HDL 硬件描述语言Verilog HDL 是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL 和 VHDL 是目前世界上最流行的两种硬件描述语言,都是在 20 世纪 80 年代中期开发出来的。前者由 Gateway Desi
17、gn Automation 公司(该公司于 1989 年被 Cadence 公司收购)开发。两种 HDL 均为 IEEE 标准。2.2.1 语言简介Verilog HDL 是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL 语言提供了编
18、程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Verilog HDL 语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用 Verilog 仿真器进行验证。语言从 C编程语言中继承了多种操作符和结构。Verilog HDL 提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL 语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。2.2.2 主要能力基本逻辑门,例如 and、 or 和 nand 等
19、都内置在语言中。用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。开关级基本结构模型,例如 pmos 和 nmos 等也被内置在语言中。提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计5可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语句描述建模。Verilog HDL 中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数
20、据存储元件。能够描述层次设计,可使用模块实例结构描述任何层次。设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。Verilog HDL 不再是某些公司的专有语言而是 IEEE 标准。人和机器都可阅读 Verilog 语言,因此它可作为 EDA 的工具和设计者之间的交互语言。Verilog HDL 语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。PLI 是允许外部函数访问 Verilog 模块内信息、允许设计者与模拟器交互的例程集合。设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。能够使用内置开关级原语在开关级对设计完
21、整建模。同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。在行为级描述中,Verilog HDL 不仅能够在 RTL 级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。能够使用门和模块实例化语句在结构级进行结构描述。Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。Verilog HDL 还具有内置逻辑函数,例如&(按位与)和(按位或)。高级编程语言结构,
22、例如条件语句、情况语句和循环语句,语言中都可以使用。可以显式地对并发和定时进行建模。提供强有力的文件读写能力。语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;通信 102 班,姓名 青瓜 基于 FPGA 的计数器设计6例如,事件队列上的事件顺序在标准中没有定义。2.2.3 语言用途Verilog HDL 就是在用途最广泛的 C 语言的基础上发展起来的一种硬件描述语言,它是由 GDA(Gateway Design Automation)公司的 PhilMoorby 在 1983 年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。19
23、85 年 Moorby 推出它的第三个商用仿真器 Verilog-XL,获得了巨大的成功,从而使得Verilog HDL 迅速得到推广应用。1989 年 CADENCE 公司收购了 GDA 公司,使得VerilogHDL 成为了该公司的独家专利。1990 年 CADENCE 公司公开发表了 Verilog HDL,并成立 LVI 组织以促进 Verilog HDL 成为 IEEE 标准,即 IEEE Standard 1364-1995.Verilog HDL 的最大特点就是易学易用,如果有 C 语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把 Verilog HDL 内容安
24、排在与 ASIC 设计等相关课程内部进行讲授,由于 HDL 语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。与之相比,VHDL 的学习要困难一些。但 Verilog HDL 较自由的语法,也容易造成初学者犯一些错误,这一点要注意。2.2.4 Verilog HDL 的发展历史1、1981 年 Gateway Automation(GDA)硬件描述语言公司成立。2、1983 年该公司的 Philip Moorby 首创了 Verilog HDL,Moorby 后来成为 Verrlog HDL-XL 的主要设计者和 Cadence 公司的第一合伙人。3、198
25、4-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 公司把 Verilong HDL 和 Verilong HDL-XL 分开,并公开发布了 Verilog HDL.随后成立的 OVI(Open Verilog HDL International)组织负责 Verilog HDL 的发展,OVI 由 Verilog HDL 的使用和 CAE 供应商组成,制定标准。9、1993 年,几乎所有 ASIC 厂商都开始支持 Verilog HDL,并且认为 Verilog