基于FPGA的八路彩灯循环系统.docx
- 文档编号:9277970
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:28
- 大小:346.46KB
基于FPGA的八路彩灯循环系统.docx
《基于FPGA的八路彩灯循环系统.docx》由会员分享,可在线阅读,更多相关《基于FPGA的八路彩灯循环系统.docx(28页珍藏版)》请在冰豆网上搜索。
基于FPGA的八路彩灯循环系统
摘要
人类社会已进入到高度发达的信息化社会,信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步,电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异,实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时为24小时小时制,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。
总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和校时程序模块、数据选择器程序模块、显示程序模块。
并且使用QUARTUS II软件进行电路波形仿真。
关键词:
数字钟;EDA;VHDL语言
Abstract
Thehumansocietyhasenteredtheinformationsocietyishighlydeveloped,thedevelopmentoftheinformationsocietycannotdowithouttheelectronicinformationproductdevelopment,improvethequalityoftheproductsandtheprogress,theelectronicinformationproductswiththeprogressofscienceandtechnology,theelectronicdevicesandthedesignmethodoftheupdatespeedofdevelopmentchangerapidly,realizethemainreasonforthisimprovementistheelectronicdesigntechnologyandelectronicmanufacturingtechnology,thecoreofwhichistheelectronicdesignautomation(ElectronicsDesignAutomation)technology,EDAtechnologydevelopmentandapplicationhasgreatlypromotedthedevelopmentofelectronicinformationindustry.Inordertoensurethequalityandspeedofelectronicsystemdesign,"thefirsttimemeetdesignrequirementstolaunchproducts",EDAtechnologyhasbecomeanindispensableandimportanttoolforadvancedtechnology.Atpresent,thetechnologyofdomesticelectronictechnologyteachingandindustryhasformed"EDAhot",cansay,masterEDAtechnologyisnecessaryforelectronicinformationmajors,engineeringandtechnicalpersonnelofthebasicabilitiesandskills.
EDAtechnologyisbecomingmoreandmorepopularinthefieldofelectronicsystemdesign,thisdesignusingtheVHDLlanguagetodesignadigitalclockontheplatformofEDA,it'stimefor24hours,thefullscaleofthedisplayistwenty-threefifty-nine59seconds,alsohasaschoolfunctionandalarmclockfunction.Unitmodulesplicedtotalprogramconsistingofseveraldifferentfunctionalform,includingfrequencyprogrammodule,everyminutecountsandschoolprogrammodule,dataselectorprogrammodule,displaymodule.AndtheuseofQUARTUSIIsoftwareforcircuitsimulation.
Keywords:
digitalclock;EDA;VHDLlanguage
第1章绪论
1.1系统背景
在20世纪后半期,随着计算机和集成电路的迅速发展,专用集成电路设计难度不断提升,电子设计周期日益缩短,电子系统设计面临着严峻的考验。
为了解决这一问题,电子设计人员需要新的设计方法和高层次的设计工具,而EDA技术就在这一现实背景下产生了。
EDA技术作为现代电子技术的核心,它以大规模可编程逻辑器件为设计载体,以硬件描述语言HDL为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计开发工具,对设计文件自动完成逻辑化简、逻辑编译、逻辑分割、逻辑综合、布局布线,以及逻辑优化和仿真测试,直至实现既定的电子系统功能。
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成电路)的速度要慢,无法完成复杂的设计,但是功耗较低。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(ComplexProgrammableLogicDevice,复杂可编程逻辑器件)。
FPGA的开发相对于传统PC、单片机的开发有很大不同。
FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别,也造成了FPGA开发入门较难。
目前国内有专业的FPGA外协开发厂家,如[北京中科鼎桥ZKDQ-TECH]等。
FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输入输出模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。
FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
FPGA电源要求输出电压范围从1.2V到5V,输出电流范围从数十毫安到数安培。
可用三种电源:
低压差(LDO)线性稳压器、开关式DC-DC稳压器和开关式电源模块。
最终选择何种电源取决于系统、系统预算和上市时间要求。
如果电路板空间是首要考虑因素,低输出噪声十分重要,或者系统要求对输入电压变化和负载瞬变做出快速响应,则应使用LDO稳压器。
LDO功效比较低(因为是线性稳压器),只能提供中低输出电流。
输入电容通常可以降低LDO输入端的电感和噪声。
LDO输出端也需要电容,用来处理系统瞬变,并保持系统稳定性。
也可以使用双输出LDO,同时为VCCINT和VCCO供电。
如果在设计中效率至关重要,并且系统要求高输出电流,则开关式稳压器占优势。
开关电源的功效比高于LDO,但其开关电路会增加输出噪声。
与LDO不同,开关式稳压器需利用电感来实现DC-DC转换。
1.2课题基本内容
1、设计一个七段数码管动态扫描电路。
数码管个数为8个,共阴极接法。
2、设计一电路,控制上述电路实现“12345678”八个数字的显示,要求显示方式为:
(1)自左至右逐个点亮数码管,最后全亮;再重复以上动作。
(2)自左至右点亮数码管,每次只点亮一个,最后全息灭,再重复以上动作。
(3)先中间两个点亮,再依次向外点亮;全亮后,再依次向中间熄灭;重复上述步骤。
第2章软件简介
2.1QuartusII简介
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
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等乘积项器件
DSPBuilder12.0新的数字信号处理(DSP)支持——通过系统控制台,与MATLAB的DDR存储器进行通信,并具有新的浮点功能,提高了设计效能,以及DSP效率。
·经过改进的视频和图像处理(VIP)套装以及视频接口IP——通过具有边缘自适应算法的ScalerIIMegaCore功能以及新的Avalon-Streaming(Avalon-ST)视频监视和跟踪系统IP内核,简化了视频处理应用的开发。
·增强收发器设计和验证——更新了ArriaVFPGA的收发器工具包支持,进一步提高收发器数据速率(对于StratixVFPGA,高达14.1Gbps)。
2.2VerilogHDL简介
VerilogHDL是目前应用最为广泛的硬件描述语言.VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。
VerilogHDL适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述.
VerilogHDL是一种硬件描述语言(hardwaredescriptionlanguage),为了制作数字电路而用来描述ASICs和FPGA的设计之用。
Verilog的设计者想要以C编程语言为基础设计一种语言,可以使工程师比较容易学习。
Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。
这是因为C语言在Verilog设计之初,已经在许多领域得到广泛应用,C语言的许多语言要素已经被许多人习惯。
一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学习和接受。
不过,Verilog与C语言还是存在许多差别。
另外,作为一种与普通计算机编程语言不同的硬件描述语言,它还具有一些独特的语言要素,例如向量形式的线网和寄存器、过程中的非阻塞赋值等。
总的来说,具备C语言的设计人员将能够很快掌握Verilog硬件描述语言。
Verilog所用到的所有变量都属于两个基本的类型:
线网类型和寄存器类型。
线网与我们实际使用的电线类似,它的数值一般只能通过连续赋值,由赋值符右侧连接的驱动源决定。
线网在初始化之前的值为x(trireg类型的线网是一个例外,它相当于能够储存电荷的电容器)。
如果未连接驱动源,则该线网变量的当前数值为z,即高阻态。
寄存器与之不同,它可以保存当前的数值,直到另一个数值被赋值给它。
在保持当前数值的过程中,不需要驱动源对它进行作用。
如果未对寄存器变量赋值,它的初始值则为x。
Verilog中所说的寄存器类型变量与真实的硬件寄存器是不同的,它是指一个储存数值的变量。
如果要在一个过程(initial过程或always过程)里对变量赋值,这个变量必须是寄存器类型的。
寄存器类型的变量有以下几种:
reg(普通寄存器)、integer(整数)、time(时间)、real(实数),其中reg作为一般的寄存器使用最为普遍。
本次课程设计中将会用到reg寄存器。
使用Verilog描述硬件的基本设计单元是模块(module)。
构建复杂的电子电路,主要是通过模块的相互连接调用来实现的。
模块被包含在关键字module、endmodule之内。
实际的电路元件。
Verilog中的模块类似C语言中的函数,它能够提供输入、输出端口,可以实例调用其他模块,也可以被其他模块实例调用。
模块中可以包括组合逻辑部分、过程时序部分。
例如,四选一的多路选择器,就可以用模块进行描述。
它具有两个位选输入信号、四个数据输入,一个输出端。
空白符
空白符是指代码中的空格(对应的转义标识符为\b)、制表符(\t)和换行(\n)。
如果这些空白符出现在字符串里,那么它们不可忽略。
除此之外,代码中的其他空白符在编译的时候都将会被视为分隔标识符,即使用2个空格或者1个空格并无影响。
不过,在代码中使用合适的空格,可以让上下行代码的外观一致(例如使赋值运算符位于同一个竖直列),从而提高代码的可读性。
注释
为了方便代码的修改或其他人的阅读,设计人员通常会在代码中加入注释。
与C语言一样,有两种方式书写注释。
第一种为多行注释,即注释从/*开始,直到*/才结束;另一种为单行注释,注释从//开始,从这里到这一行末尾的内容会被系统识别为注释。
某些电子设计自动化工具,会识别出代码中以特殊格式书写、含有某些预先约定关键词的注释,并从这些注释所提取有用的信息。
这些注释不是供人阅读,而是向第三方工具提供有关设计项目的额外信息。
例如,某些逻辑综合工具可以从注释中读取综合的约束信息。
大小写敏感性
Verilog是一种大小写敏感的硬件描述语言。
其中,它的所有系统关键字都是小写的。
标识符及保留字
Verilog代码中用来定义语言结构名称的字符称为标识符,包括变量名、端口名、模块名等等。
标识符可以由字母、数字、下划线以及美元符($)来表示。
但是标识符的第一个字符只能是字母、数字或者下划线,不能为美元符,这是因为以美元符开始的标识符和系统任务的保留字冲突。
和其他许多编程语言类似,Verilog也有许多保留字(或称为关键字),用户定义的标识符不能够和保留字相同。
Verilog的保留字均为小写。
变量类型中的wire、reg、integer等、表示过程的initial、always等,以及所有其他的系统任务、编译指令,都是关键字。
可以查阅官方文献以完整的关键字的列表。
转义标识符
转义标识符(又称转义字符),是由\开始,以空白符结束的一种特殊编程语言结构。
这种结构可以用来表示那些容易与系统语言结构相同的内容(例如"在系统中被用来表示字符串,如果字符串本身的内容包含一个与之形式相同的双引号,那么就必须使用转义标识符)。
下面列出了常用的几种转义标识符。
除此之外,在反斜线之后也可以加上字符的ASCII,这种转义标识符相当于一个字符。
常用的转义标识符有\n(换行)、\t(制表位)、\b(空格)、\\(反斜杠)和\"(英文的双引号)等。
除了系统提供的26种逻辑门、晶体管原语,Verilog也提供用户自定义原语(UserDefinedPrimitive,UDP)。
原语与模块的层次结构类似,但是原语的输入输出关系是完全通过查表实现的。
组合逻辑的用户自定义原语的核心是真值表,时序逻辑的用户自定义原语的核心是激励表。
设计人员需要在状态表中罗列可能出现的输入和输出情况。
如果在实际使用过程中,遇到状态表中没有定义的情况,则输出不确定值x。
使用自定义原语很直观,但是如果输入变量较多,状态表就会变得很复杂。
在很多情况中,用户自定义原语并不能被逻辑综合工具转换。
编程语言接口(ProgramLanguageInterface,PLI)提供了通过C语言函数对Verilog数据结构进行存储、读取操作的途径。
Verilog编程语言接口的发展先后经过了三代,其中第一代为任务或函数子程序,它可以在C程序和Verilog设计之间传递数据;第二代为存取子程序,它可以在用户自定义C程序和Verilog的内部数据表示的接口上被使用;第三代为Verilog过程接口,它进一步扩展了前两代编程语言接口的功能。
通过使用编程语言接口,设计人员可以自定义接口的功能,然后通过类似调用系统任务的方式调用这些自定义功能。
这样,设计人员可以很大程度地扩展他们能使用的功能,例如监视、激励、调试功能,或者用它来提取设计信息、显示输出等。
第3章方案选择及总体设计
3.1设计目的
(1)掌握VHDL语言的基本运用;
(2)掌握QuartusII的简单操作;
(3)掌握一个基本EDA课程设计的操作
3.2功能设计
1、设计一个七段数码管动态扫描电路。
数码管个数为8个,共阴极接法。
2、设计一电路,控制上述电路实现“12345678”八个数字的显示,要求显示方式为:
(1)自左至右逐个点亮数码管,最后全亮;再重复以上动作。
(2)自左至右点亮数码管,每次只点亮一个,最后全息灭,再重复以上动作。
(3)先中间两个点亮,再依次向外点亮;全亮后,再依次向中间熄灭;重复上述步骤。
3.3设计方案
整个系统共有三个输入信号:
控制彩灯节奏快慢的基准时钟信号CLK,彩灯变化频率选择开关xuanping,彩灯花样选择开关xuanhuayang;共有8个输出信号out[7..0],分别用于控制八路彩灯。
系统整体框图如下:
图3-38整体框图
主要模块组成:
时序控制电路模块和显示电路模块。
时序控制电路模块由分频和选频两部分构成,可以控制彩灯变化的快慢。
以下为各模块框图:
图3-48路彩灯模块
图3-58分频模块
图3-68选频模块
图3-7彩灯运行方式选择模块
第4章系统调试
4.1工程建立及存盘
(1)打开QuartusⅡ,单击“File”菜单,选择File→NewProjectWizard,对话框如下:
分别输入项目的工作路径、项目名和实体名,单击Finish。
如图4-1所示:
图4-1建立NewProject
(2)单击“File”菜单,选择New,弹出小对话框,双击“VHDLFile",即选中了文本编辑方式。
在出现的“Vhdl1.vhd”文本编辑窗中键入VHDL程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 八路 彩灯 循环系统