CPLDFPGA课程设计基于VerilogHDL的彩灯控制器

上传人:痛*** 文档编号:41883481 上传时间:2021-11-23 格式:DOC 页数:33 大小:2.39MB
收藏 版权申诉 举报 下载
CPLDFPGA课程设计基于VerilogHDL的彩灯控制器_第1页
第1页 / 共33页
CPLDFPGA课程设计基于VerilogHDL的彩灯控制器_第2页
第2页 / 共33页
CPLDFPGA课程设计基于VerilogHDL的彩灯控制器_第3页
第3页 / 共33页
资源描述:

《CPLDFPGA课程设计基于VerilogHDL的彩灯控制器》由会员分享,可在线阅读,更多相关《CPLDFPGA课程设计基于VerilogHDL的彩灯控制器(33页珍藏版)》请在装配图网上搜索。

1、物联网工程112班,姓名 周浩杰(CPLD/FPGA课程设计)CPLD/FPGA课程设计项目名称 基于FPGA的彩灯控制 专业班级 物联网工程132班 学生学号 2013133043 学生姓名 指导教师 2016年 6 月15 日摘 要本课程设计提出基于FPGA的彩灯控制器的设计与分析,设计由分频器模块,数据选择器模块,彩灯控制模块组成,基本原理是通过分频器产生不同频率时钟信号,表示彩灯显示的快慢,然后通过数据选择器进行选择,进而通过彩灯花型控制器显示不同种类的彩灯花型。本设计运用运用Verilog HDL语言在Modelsim软件上进行了实验程序的编译和波形的仿真,具有代码简单易懂,功能易实

2、现的特点,通过不断地调试和代码的多次完善,最终实现完整的彩灯控制器,达到了自主设计逻辑电路的水平。关键词:彩灯控制; Verilog HDL语言;Modelsim软件 III物联网工程132班,许潇洒 彩灯控制器的设计(CPLD/FPGA课程设计)AbstractThe curriculum design is proposed based on FPGA octal lantern controller design and analysis, design by the frequency divider module, data selector module lantern contr

3、ol module, the basic principle is through a frequency divider generated clock signal with different frequency and express the lantern display of speed, then through the data selector, and then through the lantern flower type controller display lights in different kinds of flowers. This design by usi

4、ng Verilog HDL language in the Modelsim software of experimental program compiling and waveform simulation, with easy to understand code, function is easy to realize the characteristics by continuous debugging and code improved several times, and ultimately complete the lantern controller, up to the

5、 level of the independent design of logic circuit.摘要和目录统一编页码:为,Keywords: The lantern controller; Verilog HDL language ; The Modelsim softwareIV目 录摘 要IAbstractII第一章 绪论11.1 课题背景11.2 彩灯控制的实际研究意义3第二章 彩灯控制相关模块的设计以及原理42.1 总体设计42.1.1 方案比较42.1.2 方案论述52.1.3 方案选择52.2 相关模块52.2.1 时钟信号模块52.2.2 节拍快慢控制模块62.2.3 彩灯控

6、花型控制模块6第三章 彩灯控制的软件程序设计83.1 Modelsim软件介绍83.2 彩灯控制程序设计93.2.1 分频器程序93.2.2 数据选择器程序103.2.3 彩灯花样程序11第四章 仿真调试134.1 仿真过程134.2 仿真结果15结论19参考文献20附 录21致 谢28第一章 绪论1.1 课题背景 1. FPGAFPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部

7、分。FPGA的基本特点主要有:1) 采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。2) 3)FPGA内部有丰富的触发器和IO引脚。4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 2. EDA当今社会是数字化的社会,也是数字集成电路广泛应用的社会,数字本身在不断的进行更新换代。它由早起的电子管、晶体管、小中规模集成电路发展到超大规模集成电路

8、以及许多具有特定功能的专用集成电路。而EDA技术就是以微电子技术为物理层面,现代电子设计为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路ASIC为目的的一门新兴技术。 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。它以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编

9、译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。EDA技术(即Electronic Design Automation技术)就是依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动的完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。他在硬件实现方面融合了大规模集成电路制造技术、IC版图设计、ASIC测试和封装、FPGA(Field Programme Gate Array)CP

10、LD(Complex Programme Logic Device)编程下载和自动测试等技术:在计算机辅助工程方面融合了计算机辅助设计(CAD),计算机辅助制造(CAM),计算机辅助测试(CAT),计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等。 硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL主要有VHDL、Verilog HDL、ABEL、AHDL、System Verilog和System C。其中VHDL、Verilog HDL和现在的EDA设计中使用

11、最多,并且我们学习的是Verilog的编程方法及实用技术。 3.Verilog HDLVerilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言。Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨

12、大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995。用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HD

13、L语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。与之相比,VHDL的学习要困难一些。但Verilog HDL较自由的语法,也容易造成初学者犯一些错误,这一点要注意。 下面列出的是 Verilog 硬件描述语言的主要能力: (1)基本逻辑门,例如 and 、 or 和 nand 等都内置在语言中。 (2)用户定义原语( UDP )创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。 (3)开关级基本结构模型,例如 pmos 和 nmos 等也被内置在语言中。 (4)提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。

14、 (5)可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式 使用过程化结构建模;数据流方式 使用连续赋值语句方式建模;结构化方式 使用门和模块实例语句描述建模。 Verilog HDL 中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。能够描述层次设计,可使用模块实例结构描述任何层次。设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。 Verilog HDL 不再是某些公司的专有语言而是 IEEE 标准。 人和机器都可阅读 Verilog 语言,因此它可作为 EDA 的工具和设计者之间的交互语言。 V

15、erilog HDL 语言的描述能力能够通过使用编程语言接口( PLI )机制进一步扩展。 PLI 是允许外部函数访问 Verilog 模块内信息、允许设计者与模拟器交互的例程集合。 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级( RTL )到算法级,包括进程和队列级。能够使用内置开关级原语在开关级对设计完整建模。 同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。 Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。 在行为级描述中, Verilog HD

16、L 不仅能够在 RTL 级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。能够使用门和模块实例化语句在结构级进行结构描述。Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。 Verilog HDL 还具有内置逻辑函数,例如 & (按位与)和 | (按位或)。对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。 可以显式地对并发和定时进行建模。提供强有力的文件读写能力。语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。1.2 项目的实际研究意义在

17、经济和商业高度发达的今天,彩灯已经成为人民日常生活不可或缺的一部分,已经逐渐为越来越多的人们所关注,在家庭中的普及率不断提高,大大的丰富和点缀了人民的生活。彩灯由不同的颜色的LED灯组成,通过控制不同颜色的灯的亮与灭,呈现给人们不同的花塑和图案,极大的点缀了单调的都市夜景,让城市成为了多姿多彩的不夜城。因此八路彩灯控制器的设计具有现实意义。Verilog HDL是一种应用较为广泛的HDL语言,能对范围广泛的各种复杂的网络在不同的抽象级加以描述,而且在整个设计过程中可使用同一种语言。采用Verilog HDL作为HDL综合设计的优点有:标准语言,即设计者可在不同环境下进行设计;仿真和综合均可采用

18、同一种语言进行;Verilog HDL中提供的大量的资源模块,简化了设计者的开发工作;由Verilog HDL描述的源文件既是程序文件又可作为设计的文档。第2章 彩灯控制的相关模块以及原理2.1 总体方案设计彩灯控制器的核心设计部分是彩灯花型的控制模块,显示部分相对比较容易。分频器的设计方法多种多样,本设计的是比较常见的一种。外接clk为始终输入基准信号,彩灯节奏的快慢用选择开关select1:0。如图2.1所示总体框图。 图2.1彩灯总体框图2.1.1 方案比较该设计主要是以FPGA为基础,通过硬件描述语言Verilog HDL灵活多变的改变彩灯显示的花型以及宽快慢,对此这几了以下两个方案。

19、方案一:总体电路共分三大块。第一块实现时钟信号的产生;第二块实现花型的控制及节拍控制;第三块实现花型的演示。主题框图如图2.2所示。图2.2彩灯设计框图 方案二:在方案一的基础上将整体电路分为四个模块。第一块实现花型的演示;第二块实现花型的控制;第三块实现节拍快慢控制;第四块实现时钟信号的产生。并在部分电路的设计上与方案一采用了完全不同的方法,如花型的控制。如图2.3所示。 图2.3彩灯模块化框图2.1.2 方案论述方案一与方案二最大的不同就在,前者将花型控制与节拍控制两种功能融合在一起,是考虑到只要计数器就可以实现其全部功能的原因,且原理相对简单。这样设计,其优点在于:设计思想比较简单。元件

20、种类使用少,且都较熟悉易于组装电路。缺点则是:中间单元电路连线过于繁多,容易出错。且可能出现线与关系。要避免这些,则势必造成门电路使用过多。导致电路不稳定,抗干扰能力下降。而后者则将以上两种功能分开设计,各单元电路只实现一种功能。其优点在于:电路设计模块化,易于检查电路,对后面的电路组装及电路调试带来方便。缺点则是:节拍控制电路采用可编辑逻辑电路,原理相对复杂,不易理解。花型控制电路简单,花型也比较简单。2.1.2 方案选择方案一主要设计过程简单明了,而且花型控制和快慢结合在一起,用一个计数器就能而过轻松地实现功能,但是细节太多容易出错。方案二虽然多了一个步骤,但是每个模块只完成一个功能,相对

21、更容易上手。所以基于以上原因,加上为了确保短时间内完成课程设计,我选择了连线少,易于调试的方案二。2.2 相关模块本实验模块主要有时钟信号模块,节拍快慢控制模块,彩灯花型控制模块。2.2.1 时钟信号模块时钟信号控制模块的主要功能是将输出的标准时钟进行分频,以此控制八路彩灯的快慢节奏变化。时钟信号控制在本设计中起着至关重要的作用,它以彩灯闪动快慢节奏的变化实现了八路彩灯绚丽多彩的花型节奏变化。时钟控制是整个设计中的一个分模块,它的设计对八路彩灯控制器的顺利完成起着决定性作用。对时钟控制程序封装如图3.1所示。 图2.4分频器模块2.2.2 节拍快慢控制模块节拍快慢控制模块即一个4选1数据选择器

22、,它的功能是将分频器分出来的四个时钟信号通过我们外部输入而选择其中一个输出到下一个模块中,这样就可以控制彩灯显示的快慢。它的真值表如表3.1所示。 表2.5 4选1数据选择器真值表select1:0输出00Out101Out210Out311Out44选1数据选择器和封装模型分别如下:图2.6数据选择模块2.2.3 彩灯花样控制模块彩灯控制模块是整个设计的核心,彩灯控制模块能够进行彩灯图案的控制,它负责整个设计的输出效果即各种彩灯图案的样式变化。在仿真时序中高电平代表灯亮,低电平代表灯灭,由高低电平按不同规律组合就代表不同的花型,同时选择不同的频率,从而实现多种图案多种频率的花样功能显示。此时

23、Verilg HDL硬件描述语言的优势就展现出来,使用者可以按自己的需求改变源程序从而改变显示的花型,而不用更换显示设备,这样不但经济而且环保。程序封装图如图所示。 图2.7彩灯控制系统程序封装图第三章 彩灯控制的软件程序设计学习分频器,数据选择器的工作原理,熟悉ModelSim软件应用环境,了解实验流程,并会用ModelSim功能进行仿真。通过编写简单的Verilog 代码,并在ModelSim中进行调试和验证,并以此来学习彩灯控制的设计。3.1 ModelSim软件介绍Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL

24、和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。ModelSim是工业界最优秀的语言仿真器,它提供最友好的调试环境,是作FPGA、ASIC设计的RTL级和门级电路仿真的首选。它支持PC和UNIX、LINUX平台,是单一内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真,编译仿真速度业界最快,编译的代码与平台无关,便于保护IP核,具有个性

25、化的图形界面和用户接口,为用户加快调试提供强有力的手段。全面支持VHDL和Verilog语言的IEEE标准,以及IEEEVITAL1076.495标准,支持C语言功能调用,C的模型,基于SWIFT的SmartModel逻辑模型和硬件模型。主要特点: RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真; 单内核VHDL和Verilog混合仿真; 源代码模版和助手,项目管理; 集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象Virtual Object、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能; C

26、和Tcl/Tk接口,C调试; 对SystemC的直接支持,和HDL任意混合; 支持SystemVerilog的设计功能; 对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL; ASIC Sign off。 可以单独或同时进行行为(behavioral)、RTL级、和门级(gate-level)的代码。 仿真简介:仿真分为三种类型,即功能仿真、综合后功能仿真和时序仿真,分别对应于设计输入后、综合完成后、布局布线完成后等步骤,这些步骤也是仿真的切入点。(1). 功能仿真:也称前仿真,主旨在于验证电路功能是否符合设计要求,其特点是不考虑电路门延时与路径延时,考察重点为电

27、路在理想环境下的行为和设计构想是否一致。可综合FPGA仿真代码是用RTL门级代码语言藐视的,功能仿真的输入是设计的RTL代码,也就是HDL源文件与Testbench。(2). 结果。综合后仿真的输入是从综合得到的一般性逻辑网表抽象出的仿真模型和综合产生的延时文件,综合时的延时文件仅仅能估算门延时,而不包含布线延时信息,所以延时信息不十分准确。(3). 时序仿真:也称为布局布线后仿真或者后仿真,是指电路已经映射到特定的工艺环境后,综合考虑电路的路径延时与门延时的影响,验证电路的行为是否能够在一定时序条件下满足设计构想的功能。时序仿真的主要目的在于验证电路是否存在时序违规,其输入为从布局布线抽象出

28、的门级网表、Testbench以及扩展名为SDO的标准延时文件。3.2 彩灯控制程序设计彩灯控制程序包括分频器程序,数据选择器程序,彩灯花样程序。3.2.1 分频器程序(1) 分频器部分源程序注解 module f(reset,clkin,clkout,clkout1,clkout2,clkout3); 此分频器模块名为“f”,端口分别为reset,clkin,clkout,clkout1,clkout2,clkout3,其中,reset为复位端,clkin为输入的时钟信号clkout,clkout1, clkout2,clkout3,为输出端。此模块的功能是将时钟信号的频率进行分频,分别为4

29、分频,8分频,16分频,32分频。 always(posedge reset or posedge clkin) if(reset) begin cnt=0; clkout=0; end /当reset,clkin上升沿来临时进行复位 always(posedge reset or posedge clkin) clkout=clkout;/将clkin二分,即clkout为四分频 always(posedge reset or posedge clkout) clkout1=clkout1;/将clkout二分,即clkout为8分频 always(posedge reset or pose

30、dge clkout1) clkout2=clkout2;/将clkout1二分,即clkout2为16分频 always(posedge reset or posedge clkout2)clkout3=clkout3;/将clkout2二分,即clkout3为32分频由在Verilog语言中,always块为过程快, 多个过程快同时进行, 则相当于同时产生了4种波形, clkout是对基准时钟的4分频,clkout1是对基准时钟的8分频,clkout2是对基准时钟的16分频,clkout3是对基准时钟的32分频。 (2)分频器部分测试程序注解define clk_cycle 50 alwa

31、ys #clk_cycle clkin=clkin;/定义的基准时钟为每50ns翻转一次,周期为100ns. 初始化 initial begin RESET=1;/复位 clkin=0; #100 RESET=0;/100ns之后开始执行程序 #10000 $stop; end f fd(RESET,clkin,clkout,clkout1,clkout2,clkout3);/分频器模块函数的调用3.2.1 数据选择器程序 module mux4_1(out,in0,in1,in2,in3,sel); 此程序为四选一数据选择器,选择端为sel,输入端为in0,in1,in2,in3,输出端为o

32、ut. input1:0sel;/选择端有两位 case(sel) 2b00:out=in0; 2b01:out=in1; 2b10:out=in2; 2b11:out=in3;/sel的两位有四种组合,对应这四种输出结果3.2.1 彩灯花样程序 module caideng(clk,reset,z); output reg7:0z;/输出为8位八路对应着8路流水灯 parameter s0=d0,s1=d1,s2=d2,s3=d3,s4=d4,s5=d5,s6=d6,s7=d7,s8=d8,s9=d9,s10=d10,s11=d11,s12=d12,s13=d13,s14=d14,s15=d

33、15,s16=d16,s17=d17,s18=d18,s19=d19,s20=d20,s21=d21,s22=d22,s23=d23,s24=d24,s25=d25,s26=d26,s27=d27,s28=d28,s29=d29,s30=d30,s31=d31,s32=d32,s33=d33,s34=d34,s35=d35,s36=d36,s37=d37,s38=d38,s39=d39,s40=d40,s41=d41,s42=d42,s43=d43,s44=d44,s45=d45,s46=d46,s47=d47,s48=d48,s49=d49,s50=d50,s51=d51,s52=d52;/

34、自定义参数, case(state)s0:state=s1;s1:state=s2;s2:state=s3;s3:state=s4;s4:state=s5;s5:state=s6;s6:state=s7; s7:state=s8; s8:state=s9;s9:state=s10; s10:state=s11;s11:state=s12;s12:state=s13;s13:state=s14;s14:state=s15;s15:state=s16;s16:state=s17;s17:state=s18;s18:state=s19;s19:state=s20; s20:state=s21;s21

35、:state=s22;s22:state=s23;s23:state=s24;s24:state=s25;s25:state=s26;s26:state=s27; s27:state=s28; s28:state=s29;s29:state=s30; s30:state=s31; s31:state=s32;s32:state=s33;s33:state=s34;s34:state=s35;s35:state=s36; s36:state=s37;s37:state=s38; s38:state=s39;s39:state=s40;s40:state=s41;s41:state=s42;s42

36、:state=s43;s43:state=s44;s44:state=s45;s45:state=s46;s46:state=s47; s47:state=s48; s48:state=s49;s49:state=s50;s50:state=s51;s51:state=s52;s52:state=s0;default:state=s0; endcase /定义彩灯不同的状态,使彩灯状态发生改变, always(state)/彩灯状态发生改变时, begin case(state) /彩灯依次会显示:八路彩灯共亮灭闪烁,右循环亮灭,左循环亮灭,相间闪烁 第四章 仿真调试4.1 仿真过程(1) .

37、在Modelsim种建立工程文件。(2) .分别新建文件:分频器“f.v”,测试“testf.v”;四选一数据选择器“mux4_1”,测试“testmux4_1.v”;花样彩灯“csideng.v”测试“testcaideng.v”(3) .编译(4) .添加波形(5) 输入激励4.1 仿真结果(1) 分频器仿真波形图(2) 四选一数据选择器仿真波形图(3) 彩灯花样显示仿真波形图结 论通过这次设计我们了解并掌握Verilog HDL硬件描述语言的设计方法和思想,使自己能将已学过的数字电子系统设计、Verilog HDL 程序设计等知识综合运用于电子系统的设计中,基本掌握了运用Verilog

38、HDL 设计电子系统的流程和方法,加强和培养了自己对电子系统的设计能力。我们也了解了VHDL的一些知识,Verilog HDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,Verilog HDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。Verilog HDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内

39、外部分的概念是Verilog HDL系统设计的基本点。Verilog HDL语言作为一种国际标准化的硬件描述语言,自1987年获得IEEE批准以来,经过了1993年和2001年两次修改,至今已被众多的国际知名电子设计自动化(EDA)工具研发商所采用,并随同EDA设计工具一起广泛地进入了数字系统设计与研发领域,目前已成为电子业界普遍接受的一种硬件设计技术。 Verilog HDL语言的运用提高了我们设计电子系统的效率,简单实用,也在此次设计中提升了我们自身运用所学知识的能力,也更加体会出作为团队中的一员要以团队思想为主题发展自己的思维。参考文献1 陶佰睿,李静辉,苗凤娟,马丽数字集成电路与EDA

40、设计基础教程,2011,092 曹昕燕 周凤臣 聂春燕EDA技术实验与课程设计 ,20063 常晓明.Verilog HDL实践与应用系统设计. 北京: 航空航天大学出版社,2003.4 王金明,杨吉斌.数字系统设计与Verilog HDL.北京:电子工业出版社.2002.29附 录分频器源程序:module f(reset,clkin,clkout,clkout1,clkout2,clkout3); input reset,clkin; output clkout,clkout1,clkout2,clkout3; reg clkout,clkout1,clkout2,clkout3; reg

41、1:0cnt,cnt1,cnt2,cnt3; always(posedge reset or posedge clkin) if(reset) begin cnt=0; clkout=0; end else begin cnt=cnt+1b1; if(cnt=1) begin cnt=0; clkout=clkout; end end always(posedge reset or posedge clkout) if(reset) begin cnt1=0; clkout1=0; end else begin cnt1=cnt1+1b1; if(cnt1=1) begin cnt1=0; c

42、lkout1=clkout1; end end always(posedge reset or posedge clkout1) if(reset) begin cnt2=0; clkout2=0; end else begin cnt2=cnt2+1b1; if(cnt2=1) begin cnt2=0; clkout2=clkout2; end end always(posedge reset or posedge clkout2) if(reset) begin cnt3=0; clkout3=0; end else begin cnt3=cnt3+1b1; if(cnt3=1) beg

43、in cnt3=0; clkout3=clkout3; end end endmodule 分频器测试程序:timescale 1ns/1nsdefine clk_cycle 50includef.vmodule t2; reg clkin,RESET; wire clkout,clkout1,clkout2,clkout3; always #clk_cycle clkin=clkin; initial begin RESET=1; clkin=0; #100 RESET=0; #10000 $stop; end f fd(RESET,clkin,clkout,clkout1,clkout2,

44、clkout3); endmodule四选一数据选择器源程序:module mux4_1(out,in0,in1,in2,in3,sel); output out; input in0,in1,in2,in3; input1:0sel; reg out; always(in0 or in1 or in2 or in3 or sel) case(sel) 2b00:out=in0; 2b01:out=in1; 2b10:out=in2; 2b11:out=in3; default:out=2bx; endcaseendmodule四选一数据选择器测试程序:timescale 1ns/1nsinc

45、ludemux4_1.vmodule t1; reg in0,in1,in2,in3; reg1:0sel; reg clock; wire out1; initial begin in0=0; in1=0; in2=0; in3=0; clock=0; sel=0; end always #50 clock=clock; always (posedge clock) begin #1 in0=$random%2; #3 in1=$random%2; #1 in2=$random%2; #3 in3=$random%2; end always #1000 sel=sel+2b01; mux4_

46、1 m(out1,in0,in1,in2,in3,sel); endmodule 彩灯花样源程序:module caideng(clk,reset,z); input reset,clk; output reg7:0z; reg5:0state; parameter s0=d0,s1=d1,s2=d2,s3=d3,s4=d4,s5=d5,s6=d6,s7=d7,s8=d8,s9=d9,s10=d10,s11=d11,s12=d12,s13=d13,s14=d14,s15=d15,s16=d16,s17=d17,s18=d18,s19=d19,s20=d20,s21=d21,s22=d22,s2

47、3=d23,s24=d24,s25=d25,s26=d26,s27=d27,s28=d28,s29=d29,s30=d30,s31=d31,s32=d32,s33=d33,s34=d34,s35=d35,s36=d36,s37=d37,s38=d38,s39=d39,s40=d40,s41=d41,s42=d42,s43=d43,s44=d44,s45=d45,s46=d46,s47=d47,s48=d48,s49=d49,s50=d50,s51=d51,s52=d52; always(posedge clk) begin if(reset) state=s0; else case(state

48、) s0:state=s1; s1:state=s2; s2:state=s3; s3:state=s4; s4:state=s5; s5:state=s6; s6:state=s7; s7:state=s8; s8:state=s9; s9:state=s10; s10:state=s11; s11:state=s12; s12:state=s13; s13:state=s14; s14:state=s15; s15:state=s16; s16:state=s17; s17:state=s18; s18:state=s19; s19:state=s20; s20:state=s21; s2

49、1:state=s22; s22:state=s23; s23:state=s24; s24:state=s25; s25:state=s26; s26:state=s27; s27:state=s28; s28:state=s29; s29:state=s30; s30:state=s31; s31:state=s32; s32:state=s33; s33:state=s34; s34:state=s35; s35:state=s36; s36:state=s37; s37:state=s38; s38:state=s39; s39:state=s40; s40:state=s41; s4

50、1:state=s42; s42:state=s43; s43:state=s44; s44:state=s45; s45:state=s46; s46:state=s47; s47:state=s48; s48:state=s49; s49:state=s50; s50:state=s51; s51:state=s52; s52:state=s0; default:state=s0; endcase end always(state) begin case(state) s0:z=8b00000000; s1:z=8b11111111; s3:z=8b00000000; s4:z=8b111

51、11111; s5:z=8b00000000; s6:z=8b11111111; s7:z=8b00000000; s8:z=8b11111111; s9:z=8b00000000; s10:z=8b10000000; s11:z=8b01000000; s12:z=8b00100000; s13:z=8b00010000; s14:z=8b00001000; s15:z=8b00000100; s16:z=8b00000010; s17:z=8b00000001; s18:z=8b10000000; s19:z=8b01000000; s20:z=8b00100000; s21:z=8b00

52、010000; s22:z=8b00001000; s23:z=8b00000100; s24:z=8b00000010; s25:z=8b00000001; s26:z=8b00000010; s27:z=8b00000100; s28:z=8b00001000; s29:z=8b00010000; s30:z=8b00100000; s31:z=8b01000000; s32:z=8b10000000; s33:z=8b00000001; s34:z=8b00000010; s35:z=8b00000100; s36:z=8b00001000; s37:z=8b00010000; s38:

53、z=8b00100000; s39:z=8b01000000; s40:z=8b10000000; s41:z=8b11111111; s42:z=8b00000000; s43:z=8b01010101; s44:z=8b10101010; s45:z=8b01010101; s46:z=8b10101010; s47:z=8b01010101; s48:z=8b10101010; s49:z=8b01010101; s50:z=8b10101010; s51:z=8b01010101; s52:z=8b10101010; default:z=8b00000000; endcase ende

54、ndmodule 彩灯花样测试程序:timescale 1ns/1nsdefine clk_cycle 50includecaideng.vmodule t3; reg clk,reset; wire 7:0z; always #clk_cycle clk=clk; initial begin reset=0; clk=0; end caideng fd(clk,reset,z); endmodule致 谢 本次CPLD/FPGA课程设计是对我大三这一学年所学的总结,是对我知识运用能力的一次全面考察,是对我进行科学研究的基本能力的训练,将我所学知识很好的结合起来,不仅巩固了所学的知识,而且也培

55、养了我独立分析和解决问题的能力,为我以后打下了坚实的基础,是我人生中的重要财富。本次的设计过程中得到惠鹏飞导师的悉心指导,设计过程中惠老师多次帮我分析思路,开拓视角,在我遇到困难想要放弃的时候给予我最大的支持和鼓励。惠老师在科研中渊博的专业知识、深刻的洞察力、严谨的科学精神、平易近人的作风以及对学生的谆谆教导令我深深敬佩,从他身上,我学习到了许多书本上学不到的知识。每次设计过程中遇到一些不是很懂的地方,惠老师都会耐心的讲解,使得该项课程设计能够顺利的进行下去。从设计开始到最后的整个过程中,都花费了惠老师的许多精力。通过这次课程设计,使我在学习和能力上更进一步,对我今后的的工作和学习会有很深的影响。另外同学和朋友的热心帮助也使我学到了不少的知识。再多华丽的语言也显得苍白,在此,谨向惠老师和同学们致以诚挚的谢意和崇高的敬意!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!