EDA流水灯设计_第1页
EDA流水灯设计_第2页
EDA流水灯设计_第3页
EDA流水灯设计_第4页
EDA流水灯设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告课程设计题目: EDA流水灯设计 姓 名:简讯学 号: 专 业: 电子信息工程班 级: 093252 指导教师: 黄 河 2012年 11月9日目 录一 设计任务与要求2二 设计的基本内容2三 EDA和verilog简介33. 1 EDA简介33. 2 verilog简介43. 3 verilog硬件描述语言的主要能力4四设计过程64.1程序设计64.2程序分析74.3设计电路图84. 4仿真结果与分析9五 心得体会10六 参考文献11一设计任务与要求随着大规模集成电路技术和EDA技术的迅速发展,使得数字系统的硬件设计如同软件设计那样方便快捷,而Verilog HDL 是当前应用最

2、广泛的并成为IEEE标准的一种硬件描述语言。Verilog HDL是在C语言的基础上演化而来,具有结构清晰、文法简明、功能强大、高速模拟和多库支持等优点。此次课程设计通过使用Verilog HDL硬件描述语言设计了一个程序,使得流水灯可以根据自己所期望的方式点亮,并能在、Quartus II进行仿真测试,得出出仿真结果。通过课程设计深入理解VHDL语言的精髓,加深对数字电路和VHDL基本单元的理解,理论联系实际,提高设计能力,提高分析、解决计算机技术实际问题的独立工作能力。二设计的基本内容此次课程设计是对流水灯的设计,通过在verilog 中书写程序,实现八盏流水灯点亮,点亮方式首先八盏灯从左

3、到右循环点亮,再奇数个点亮,偶数个点亮,再1,2灯;3,4灯;5,6灯,7,8灯依次点亮,再1,2,3,4灯,5,6,7,8灯依次点亮,总共十六个不同状态,转换为二进制表示为:l0=1;l1=0;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0;l0=0;l1=1;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0; l0=0;l1=0;l2=1;l3=0;l4=0;l5=0;l6=0;l7=0; l0=0;l1=0;l2=0;l3=1;l4=0;l5=0;l6=0;l7=0; l0=0;l1=0;l2=0;l3=0;l4=1;l5=0;l6=0;l7=0;l0=0;l1=0

4、;l2=0;l3=0;l4=0;l5=1;l6=0;l7=0;l0=0;l1=0;l2=0;l3=0;l4=0;l5=0;l6=1;l7=0;l0=0;l1=0;l2=0;l3=0;l4=0;l5=0;l6=0;l7=1;l0=1;l1=0;l2=1;l3=0;l4=1;l5=0;l6=1;l7=0;l0=0;l1=1;l2=0;l3=1;l4=0;l5=1;l6=0;l7=1; l0=1;l1=1;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0; l0=0;l1=0;l2=1;l3=1;l4=0;l5=0;l6=0;l7=0; l0=0;l1=0;l2=0;l3=0;l4=1;l

5、5=1;l6=0;l7=0;l0=0;l1=0;l2=0;l3=0;l4=0;l5=0;l6=1;l7=1;l0=1;l1=1;l2=1;l3=1;l4=0;l5=0;l6=0;l7=0;l0=0;l1=0;l2=0;l3=0;l4=1;l5=1;l6=1;l7=1;其中1017表示的是八盏流水灯的代号。三EDA和verilog简介3.1 EDA简介EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具

6、,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座

7、桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。基于EDA工具的FPGA/CPLD开发流程:开发步骤: 1、 文本/原理图编辑与修改。首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本(ABEL-HDL程序)或图形方式(原理图或状态图)表达出来。 2、 编译。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。 3、 综合。这是将软件设计与硬件的可实现性挂钩,是将软件转化为硬件电路的关键步骤。综合后HDL综合器可生成ENIF、XNF或VHDL等格式的网表文件,他们从门级开始描述了最基本的门电路结构。4、

8、 行为仿真和功能仿真。利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。(该步骤可以略去)5、适配。利用FPGA/CPLD布局布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。该操作完成后,EDA软件将产生针对此项设计的适配报告和JED下载文件等多项结果。适配报告指明了芯片内资源的分配与利用、引脚锁定、设计的布尔方程描述情况。6、 功能仿真和时序仿真。该不妨真实接近真实器件运行的方针,仿真过程已将器件的硬件特性考虑进去了,因此仿真精度要高的多。(该步骤也可略去)7、 下载。如果以上的所有过程都没有发现问题,

9、就可以将适配器产生的下载文件通过FPGA/CPLD下载电缆载入目标芯片FPGA或CPLD中。8、 硬件仿真与测试。3.2 verilog简介Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得V

10、erilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995.3.3 verilog硬件描述语言的主要能力: 1. 基本逻辑门,例如and、or和nand等都内置在语言中。 2. 用户定义原语( UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。 3.开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。 4.提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。 5.可采用三种不同方

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

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

13、g HDL不仅能够在RT L级上进行设计描述,而且能够在体系结构级描述及其算 法级行为上进行设计描述。 17.能够使用门和模块实例化语句在结构级进行结构描述。 18.在Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。 19.Verilog HDL 还具有内置逻辑函数,例如&(按位与)和|(按位或)。 四设计过程4.1 程序设计module light(clk,l0,l1,l2,l3,l4,l5,l6,l7);input clk;output reg l0,l1,l2,l3,l4,l5,l6,l7;reg3:0 shu;always (pos

14、edge clk)begin if(shu=15) shu<=0; else shu<=shu+1; case(shu) 4'b0000:begin l0=1;l1=0;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0;end 4'b0001:begin l0=0;l1=1;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0;end 4'b0010:begin l0=0;l1=0;l2=1;l3=0;l4=0;l5=0;l6=0;l7=0;end 4'b0011:begin l0=0;l1=0;l2=0;l3=1;l4=0;l5=0

15、;l6=0;l7=0;end 4'b0100:begin l0=0;l1=0;l2=0;l3=0;l4=1;l5=0;l6=0;l7=0;end 4'b0101:begin l0=0;l1=0;l2=0;l3=0;l4=0;l5=1;l6=0;l7=0;end 4'b0110:begin l0=0;l1=0;l2=0;l3=0;l4=0;l5=0;l6=1;l7=0;end 4'b0111:begin l0=0;l1=0;l2=0;l3=0;l4=0;l5=0;l6=0;l7=1;end 4'b1000:begin l0=1;l1=0;l2=1;l3=0

16、;l4=1;l5=0;l6=1;l7=0;end 4'b1001:begin l0=0;l1=1;l2=0;l3=1;l4=0;l5=1;l6=0;l7=1;end 4'b1010:begin l0=1;l1=1;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0;end 4'b1011:begin l0=0;l1=0;l2=1;l3=1;l4=0;l5=0;l6=0;l7=0;end 4'b1100:begin l0=0;l1=0;l2=0;l3=0;l4=1;l5=1;l6=0;l7=0;end 4'b1101:begin l0=0;l1=0

17、;l2=0;l3=0;l4=0;l5=0;l6=1;l7=1;end 4'b1110:begin l0=1;l1=1;l2=1;l3=1;l4=0;l5=0;l6=0;l7=0;end 4'b1111:begin l0=0;l1=0;l2=0;l3=0;l4=1;l5=1;l6=1;l7=1;end endcase end endmodule4.2 程序分析从程序input clk;中可看出由时钟CLK输入,从output reg l0,l1,l2,l3,l4,l5,l6,l7; 中可看出1017代表的是八盏灯即为输出,然后定义一个16位的二进制数,每一个数用来表示八盏灯的一种

18、状态,从程序中可看出流水灯点亮的状态是:首先八盏灯从左到右循环点亮,再奇数个点亮,偶数个点亮,再1,2灯;3,4灯;5,6灯;7,8灯依次点亮,再1,2,3,4灯;5,6,7,8灯依次点亮,总共十六个不同状态,和设计时所想的相同。从程序中可看出是灯点亮就写“1”,所以可以通过修改二进制状态来使灯以任何方式显示,也可以通过增加输出的量模拟增加灯的数量,还可以改变状态的个数,例将程序reg3:0 shu;改为reg4:0 shu;便有32种亮灯状态,但程序中的begin if(shu=15) shu<=0改为 begin if(shu=31) shu<=0和4'b0000改为5

19、'b00000等。4.3 设计电路图在菜单中点击toolnetlistviewersRTL便可得到电路图4.4 仿真结果与分析仿真包括时序仿真和功能仿真从图中可分别看出。不考虑信号时延等因素的仿真称为功能仿真。时序仿真是在选择具体器件并完成布局布线后进行的包含延时的仿真。从波形图中我们可以清楚的看到效果,即首先八盏灯从左到右循环点亮,再奇数个点亮,偶数个点亮,再1,2灯;3,4灯;5,6灯;7,8灯依次点亮,再1,2,3,4灯;5,6,7,8灯依次点亮,总共十六个不同状态,且灯亮时显示为高电平。五心得体会通过本次课程设计,我基本对FPGA的设计流程有了入门的了解和认识,在课堂之外进一步

20、加深了对EDA课程各知识点的学习和以及quartusII软件开发平台的操作。也深深地感受到,工科的学习是来不得半点虚伪的,一定要自己动手操作,不懂就是不懂。对于程序的编写过程其实就是一个改错的过程,通过改错就会发现自己只是的不足。做课程设计的过程也是一个升华自我耐心的机会,不能因为一时找不到方法就放弃。课程设计与此同时也让我加深强了对课题的专业知识的认识和对专业文件检索能力。在短短的一周左右的时间里,我们经过自己的努力编写了VHDL流失灯系统。因为是初学VHDL硬件描述语言,因此我们在做的过程中,尽量以简单的思维方法去实现。过去我们主要学习的C等顺序执行的语言,但是面对硬件描述语言,一方面,我

21、们希望借助过去学习过的c语言的一些思想对我们VHDL程序设计进行帮助,另一方面,我们又希望能够掌握并行控制的状态机的编写。在程序编写的过程中,我们遇到很多困难,但是我们没有放弃,经过多次改进,本设计实现了流失灯的基本功能,流失灯的运行情况完全符合设想,灯变化合情合理。本次流失灯的设计采用VHDL语言,源程序经Quartus软件仿真。本设计代码具有良好的可读性和可移植性,运用了有限状态机的设计方法,使得它灵活、简单、运算速度快、可靠性高,并且此设计具有良好的扩展性。我们总结,首先要学会使用图书馆等网络资源,当我们编写程序遇到一些无法理解得错误时,我们最终都可以从网络上找到前人的经验和教训。因此不能闭门造车,要多学习别人的经验和教训。其次是在编写程序之前要

温馨提示

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

评论

0/150

提交评论