cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx

上传人:b****7 文档编号:16227337 上传时间:2023-07-11 格式:DOCX 页数:37 大小:2.26MB
下载 相关 举报
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第1页
第1页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第2页
第2页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第3页
第3页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第4页
第4页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第5页
第5页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第6页
第6页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第7页
第7页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第8页
第8页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第9页
第9页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第10页
第10页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第11页
第11页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第12页
第12页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第13页
第13页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第14页
第14页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第15页
第15页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第16页
第16页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第17页
第17页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第18页
第18页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第19页
第19页 / 共37页
cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx

《cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx》由会员分享,可在线阅读,更多相关《cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx(37页珍藏版)》请在冰点文库上搜索。

cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文.docx

cpldfpga课程基于veriloghdl的彩灯控制器本科学位论文

 

CPLD/FPGA课程设计

 

项目名称基于FPGA的彩灯控制

专业班级物联网工程132班

学生学号2013133043

学生姓名

指导教师

 

2016年6月15日

摘要

本课程设计提出基于FPGA的彩灯控制器的设计与分析,设计由分频器模块,数据选择器模块,彩灯控制模块组成,基本原理是通过分频器产生不同频率时钟信号,表示彩灯显示的快慢,然后通过数据选择器进行选择,进而通过彩灯花型控制器显示不同种类的彩灯花型。

本设计运用运用VerilogHDL语言在Modelsim软件上进行了实验程序的编译和波形的仿真,具有代码简单易懂,功能易实现的特点,通过不断地调试和代码的多次完善,最终实现完整的彩灯控制器,达到了自主设计逻辑电路的水平。

 

关键词:

彩灯控制;VerilogHDL语言;Modelsim软件

 

Abstract

ThecurriculumdesignisproposedbasedonFPGAoctallanterncontrollerdesignandanalysis,designbythefrequencydividermodule,dataselectormodulelanterncontrolmodule,thebasicprincipleisthroughafrequencydividergeneratedclocksignalwithdifferentfrequencyandexpressthelanterndisplayofspeed,thenthroughthedataselector,andthenthroughthelanternflowertypecontrollerdisplaylightsindifferentkindsofflowers.ThisdesignbyusingVerilogHDLlanguageintheModelsimsoftwareofexperimentalprogramcompilingandwaveformsimulation,witheasytounderstandcode,functioniseasytorealizethecharacteristicsbycontinuousdebuggingandcodeimprovedseveraltimes,andultimatelycompletethelanterncontroller,uptotheleveloftheindependentdesignoflogiccircuit.

Keywords:

Thelanterncontroller;VerilogHDLlanguage;TheModelsimsoftware

目录

摘要I

AbstractII

第一章绪论1

1.1课题背景1

1.2彩灯控制的实际研究意义3

第二章彩灯控制相关模块的设计以及原理4

2.1总体设计4

2.1.1方案比较4

2.1.2方案论述5

2.1.3方案选择5

2.2相关模块5

2.2.1时钟信号模块5

2.2.2节拍快慢控制模块6

2.2.3彩灯控花型控制模块6

第三章彩灯控制的软件程序设计8

3.1Modelsim软件介绍8

3.2彩灯控制程序设计9

3.2.1分频器程序9

3.2.2数据选择器程序10

3.2.3彩灯花样程序11

第四章仿真调试13

4.1仿真过程13

4.2仿真结果15

结论19

参考文献20

附录21

致谢28

第一章绪论

1.1课题背景

1.FPGA

  FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。

FPGA的基本特点主要有:

1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。

 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

   

2)3)FPGA内部有丰富的触发器和I/O引脚。

  4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

  5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

  可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

2.EDA

当今社会是数字化的社会,也是数字集成电路广泛应用的社会,数字本身在不断的进行更新换代。

它由早起的电子管、晶体管、小中规模集成电路发展到超大规模集成电路以及许多具有特定功能的专用集成电路。

而EDA技术就是以微电子技术为物理层面,现代电子设计为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路ASIC为目的的一门新兴技术。

EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

它以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

EDA技术(即ElectronicDesignAutomation技术)就是依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDescriptionLanguage)为系统逻辑描述手段完成的设计文件,自动的完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。

他在硬件实现方面融合了大规模集成电路制造技术、IC版图设计、ASIC测试和封装、FPGA(FieldProgrammeGateArray)CPLD(ComplexProgrammeLogicDevice)编程下载和自动测试等技术:

在计算机辅助工程方面融合了计算机辅助设计(CAD),计算机辅助制造(CAM),计算机辅助测试(CAT),计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等。

硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL主要有VHDL、VerilogHDL、ABEL、AHDL、SystemVerilog和SystemC。

其中VHDL、VerilogHDL和现在的EDA设计中使用最多,并且我们学习的是Verilog的编程方法及实用技术。

3.VerilogHDL

VerilogHDL是一种硬件描述语言(HDL:

HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言。

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较自由的语法,也容易造成初学者犯一些错误,这一点要注意。

下面列出的是Verilog硬件描述语言的主要能力:

(1)基本逻辑门,例如and、or和nand等都内置在语言中。

(2)用户定义原语(UDP)创建的灵活性。

用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。

(3)开关级基本结构模型,例如pmos和nmos等也被内置在语言中。

(4)提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。

(5)可采用三种不同方式或混合方式对设计建模。

这些方式包括:

行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。

VerilogHDL中有两类数据类型:

线网数据类型和寄存器数据类型。

线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。

能够描述层次设计,可使用模块实例结构描述任何层次。

设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。

VerilogHDL不再是某些公司的专有语言而是IEEE标准。

人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言。

VerilogHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。

PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合。

设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。

能够使用内置开关级原语在开关级对设计完整建模。

同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。

VerilogHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。

这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。

在行为级描述中,VerilogHDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。

能够使用门和模块实例化语句在结构级进行结构描述。

VerilogHDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。

VerilogHDL还具有内置逻辑函数,例如&(按位与)和|(按位或)。

对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。

可以显式地对并发和定时进行建模。

提供强有力的文件读写能力。

语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。

1.2项目的实际研究意义

在经济和商业高度发达的今天,彩灯已经成为人民日常生活不可或缺的一部分,已经逐渐为越来越多的人们所关注,在家庭中的普及率不断提高,大大的丰富和点缀了人民的生活。

彩灯由不同的颜色的LED灯组成,通过控制不同颜色的灯的亮与灭,呈现给人们不同的花塑和图案,极大的点缀了单调的都市夜景,让城市成为了多姿多彩的不夜城。

因此八路彩灯控制器的设计具有现实意义。

VerilogHDL是一种应用较为广泛的HDL语言,能对范围广泛的各种复杂的网络在不同的抽象级加以描述,而且在整个设计过程中可使用同一种语言。

采用VerilogHDL作为HDL综合设计的优点有:

标准语言,即设计者可在不同环境下进行设计;仿真和综合均可采用同一种语言进行;VerilogHDL中提供的大量的资源模块,简化了设计者的开发工作;由VerilogHDL描述的源文件既是程序文件又可作为设计的文档。

第2章彩灯控制的相关模块以及原理

2.1总体方案设计

彩灯控制器的核心设计部分是彩灯花型的控制模块,显示部分相对比较容易。

分频器的设计方法多种多样,本设计的是比较常见的一种。

外接clk为始终输入基准信号,彩灯节奏的快慢用选择开关select[1:

0]。

如图2.1所示总体框图。

图2.1彩灯总体框图

2.1.1方案比较

该设计主要是以FPGA为基础,通过硬件描述语言VerilogHDL灵活多变的改变彩灯显示的花型以及宽快慢,对此这几了以下两个方案。

方案一:

总体电路共分三大块。

第一块实现时钟信号的产生;第二块实现花型的控制及节拍控制;第三块实现花型的演示。

主题框图如图2.2所示。

图2.2彩灯设计框图

方案二:

在方案一的基础上将整体电路分为四个模块。

第一块实现花型的演示;第二块实现花型的控制;第三块实现节拍快慢控制;第四块实现时钟信号的产生。

并在部分电路的设计上与方案一采用了完全不同的方法,如花型的控制。

如图2.3所示。

图2.3彩灯模块化框图

2.1.2方案论述

方案一与方案二最大的不同就在,前者将花型控制与节拍控制两种功能融合在一起,是考虑到只要计数器就可以实现其全部功能的原因,且原理相对简单。

这样设计,其优点在于:

设计思想比较简单。

元件种类使用少,且都较熟悉易于组装电路。

缺点则是:

中间单元电路连线过于繁多,容易出错。

且可能出现线与关系。

要避免这些,则势必造成门电路使用过多。

导致电路不稳定,抗干扰能力下降。

而后者则将以上两种功能分开设计,各单元电路只实现一种功能。

其优点在于:

电路设计模块化,易于检查电路,对后面的电路组装及电路调试带来方便。

缺点则是:

节拍控制电路采用可编辑逻辑电路,原理相对复杂,不易理解。

花型控制电路简单,花型也比较简单。

2.1.2方案选择

方案一主要设计过程简单明了,而且花型控制和快慢结合在一起,用一个计数器就能而过轻松地实现功能,但是细节太多容易出错。

方案二虽然多了一个步骤,但是每个模块只完成一个功能,相对更容易上手。

所以基于以上原因,加上为了确保短时间内完成课程设计,我选择了连线少,易于调试的方案二。

2.2相关模块

本实验模块主要有时钟信号模块,节拍快慢控制模块,彩灯花型控制模块。

2.2.1时钟信号模块

时钟信号控制模块的主要功能是将输出的标准时钟进行分频,以此控制八路彩灯的快慢节奏变化。

时钟信号控制在本设计中起着至关重要的作用,它以彩灯闪动快慢节奏的变化实现了八路彩灯绚丽多彩的花型节奏变化。

时钟控制是整个设计中的一个分模块,它的设计对八路彩灯控制器的顺利完成起着决定性作用。

对时钟控制程序封装如图3.1所示。

图2.4分频器模块

2.2.2节拍快慢控制模块

节拍快慢控制模块即一个4选1数据选择器,它的功能是将分频器分出来的四个时钟信号通过我们外部输入而选择其中一个输出到下一个模块中,这样就可以控制彩灯显示的快慢。

它的真值表如表3.1所示。

表2.54选1数据选择器真值表

select[1:

0]

输出

0

0

Out1

0

1

Out2

1

0

Out3

1

1

Out4

 

4选1数据选择器和封装模型分别如下:

图2.6数据选择模块

2.2.3彩灯花样控制模块

彩灯控制模块是整个设计的核心,彩灯控制模块能够进行彩灯图案的控制,它负责整个设计的输出效果即各种彩灯图案的样式变化。

在仿真时序中高电平代表灯亮,低电平代表灯灭,由高低电平按不同规律组合就代表不同的花型,同时选择不同的频率,从而实现多种图案多种频率的花样功能显示。

此时VerilgHDL硬件描述语言的优势就展现出来,使用者可以按自己的需求改变源程序从而改变显示的花型,而不用更换显示设备,这样不但经济而且环保。

程序封装图如图所示。

图2.7彩灯控制系统程序封装图

 

 

第三章彩灯控制的软件程序设计

学习分频器,数据选择器的工作原理,熟悉ModelSim软件应用环境,了解实验流程,并会用ModelSim功能进行仿真。

通过编写简单的Verilog代码,并在ModelSim中进行调试和验证,并以此来学习彩灯控制的设计。

3.1ModelSim软件介绍

Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。

它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。

ModelSim是工业界最优秀的语言仿真器,它提供最友好的调试环境,是作FPGA、ASIC设计的RTL级和门级电路仿真的首选。

它支持PC和UNIX、LINUX平台,是单一内核支持VHDL和Verilog混合仿真的仿真器。

它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真,编译仿真速度业界最快,编译的代码与平台无关,便于保护IP核,具有个性化的图形界面和用户接口,为用户加快调试提供强有力的手段。

全面支持VHDL和Verilog语言的IEEE 标准,以及IEEE VITAL 1076.4-95 标准,支持C语言功能调用, C的模型,基于SWIFT的SmartModel逻辑模型和硬件模型。

主要特点:

·RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;

·单内核VHDL和Verilog混合仿真;

·源代码模版和助手,项目管理;

·集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;

·C和Tcl/Tk接口,C调试;

·对SystemC的直接支持,和HDL任意混合;

·支持SystemVerilog的设计功能;

·对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;

·ASICSignoff。

·可以单独或同时进行行为(behavioral)、RTL级、和门级(gate-level)的代码。

仿真简介:

仿真分为三种类型,即功能仿真、综合后功能仿真和时序仿真,分别对应于设计输入后、综合完成后、布局布线完成后等步骤,这些步骤也是仿真的切入点。

(1).功能仿真:

也称前仿真,主旨在于验证电路功能是否符合设计要求,其特点是不考虑电路门延时与路径延时,考察重点为电路在理想环境下的行为和设计构想是否一致。

可综合FPGA仿真代码是用RTL门级代码语言藐视的,功能仿真的输入是设计的RTL代码,也就是HDL源文件与Testbench。

(2).结果。

综合后仿真的输入是从综合得到的一般性逻辑网表抽象出的仿真模型和综合产生的延时文件,综合时的延时文件仅仅能估算门延时,而不包含布线延时信息,所以延时信息不十分准确。

(3).时序仿真:

也称为布局布线后仿真或者后仿真,是指电路已经映射到特定的工艺环境后,综合考虑电路的路径延时与门延时的影响,验证电路的行为是否能够在一定时序条件下满足设计构想的功能。

时序仿真的主要目的在于验证电路是否存在时序违规,其输入为从布局布线抽象出的门级网表、Testbench以及扩展名为SDO的标准延时文件。

 

3.2彩灯控制程序设计

彩灯控制程序包括分频器程序,数据选择器程序,彩灯花样程序。

3.2.1分频器程序

(1)分频器部分源程序注解

modulef(reset,clkin,clkout,clkout1,clkout2,clkout3);

此分频器模块名为“f”,端口分别为reset,clkin,clkout,clkout1,clkout2,

clkout3,其中,reset为复位端,clkin为输入的时钟信号clkout,clkout1,clkout2,clkout3,为输出端。

此模块的功能是将时钟信号的频率进行分频,分别为4分频,8分频,16分频,32分频。

always@(posedgeresetorposedgeclkin)

if(reset)

begin

cnt<=0;

clkout<=0;

end//当reset,clkin上升沿来临时进行复位

 

always@(posedgeresetorposedgeclkin)

clkout<=~clkout;//将clkin二分,即clkout为四分频

always@(posedgeresetorposedgeclkout)

clkout1<=~clkout1;//将clkout二分,即clkout为8分频

always@(posedgeresetorposedgeclkout1)

clkout2<=~clkout2;//将clkout1二分,即clkout2为16分频

always@(posedgeresetorposedgeclkout2)

clkout3<=~clkout3;//将clkout2二分,即clkout3为32分频

由在Verilog语言中,always块为过程快,多个过程快同时进行,则相当于同时产生了4种波形,clkout是对基准时钟的4分频,clkout1是对基准时钟的8分频,clkout2是对基准时钟的16分频,clkout3是对基准时钟的32分频。

(2)分频器部分测试程序注解

`defineclk_cycle50

always#`clk_cycle

clkin=~clkin;//定义的基准时钟为每50ns翻转一次,周期为100ns.

初始化

initial

begin

RESET=1;//复位

clkin=0;

#100RESET=0;//100ns之后开始执行程序

#10000$stop;

end

ffd(RESET,clkin,clkout,clkout1,clkout2,clkout3);//分频器模块函数的调用

3.2.1数据选择器程序

modulemux4_1(out,in0,in1,in2,in3,sel);

此程序为四选一数据选择器,选择端为sel,输入端为in0,in1,in2,in3,输出端为out.

input[1:

0]sel;//选择端有两位

case(sel)

2'b00:

out=in0;

2'b01:

out=in1;

2'b10:

out=in2;

2'b11:

out=in3;//sel的两位有四种组合,对应这四种输出结果

3.2.1彩灯花样程序

modulecaideng(clk,reset,z);

outputreg[7:

0]z;//输出为8位八路对应着8路流水灯

parameter

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2