

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.第一章 绪论1.1引 言随着科学技术的迅猛发展,电子工业界经历了巨大的飞跃。集成电路的设计正朝着速度快、性能高、容量大、体积小和微功耗的方向发展。基于这种情况,可编程逻辑器件的出现和发展大大改变了传统的系统设计方法。可编程逻辑器件和相应的设计技术体现在三个主要方面:一是可编程逻辑器件的芯片技术;二是适用于可逻辑编程器件的硬件编程技术,三是可编程逻辑器件设计的EDA开发工具,它主要用来进行可编程逻辑器件应用的具体实现。在本实验中采用了集成度较高的FPGA 可编程逻辑器件, 选用了Verilog HDL硬件描述语言和Quartus开发软件。VHDL硬件描述语言在电子设计自动化( EDA)中扮演着
2、重要的角色。由于采用了具有多层次描述系统硬件功能的能力的“自顶向下”( Top - Down)和基于库(L ibrary - Based)的全新设计方法,它使设计师们摆脱了大量的辅助设计工作,而把精力集中于创造性的方案与概念构思上,用新的思路来发掘硬件设备的潜力,从而极大地提高了设计效率,缩短了产品的研制周期。Quartus是集成了编辑器、仿真工具、检查/分析工具和优化/综合工具的这些所有开发工具的一种集成的开发环境,通过该开发环境能够很方便的检验设计的仿真结果以及建立起与可编程逻辑器件的管脚之间对应的关系。第二章 技术概述2.1 EDA技术简介2.1.1 EDA技术的发展概况EDA(Elec
3、tronic Design Automation),即电子设计自动化,是指利用计算机完成电子系统的设计。EDA技术是以计算机和微电子技术为先导的,汇集了计算机图形学、拓扑学、逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术。EDA技术以计算机为工具,代替人完成数字系统的逻辑综合、布局布线和设计仿真等工作。设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果,而且修改设计如同修改软件一样方便,可以极大地提高设计效率。从20世纪60年代中期开始,人们就不断开发出各种计算机辅助设计工具来帮助设计人员进行电子系统的设计。电路理论和半导体工艺水平的提高,
4、对EDA技术的发展起到了巨大的作用,使EDA作用范围从PCB板设计延伸到电子线路和集成电路设计,直至整个系统的设计,也使IC芯片系统应用、电路制作和整个电子生产过程都集成在一个环境之中。根据电子设计技术的发展特征,EDA技术发展大致分为三个阶段。1. CAD阶段第一阶段的特点是一些单独的工具软件,主要有PCB布线设计、电路模拟、逻辑模拟、以及版图的绘制等,通过计算机的使用,从而将设计人员从大量繁重重复的计算和绘图工作中解脱出来。20世纪80年代,随着集成电路规模的增大,EDA技术有了较快的发展。许多软件公司等进入市场,开始供应带电路图编辑工具和逻辑模拟工具的EDA软件。这个时期的软件产品主要针
5、对产品开发,按照设计、分析、生产和测试等多个阶段,不同阶段分别使用不同的软件包,每个软件只能完成其中一项工作,通过顺序循环使用这些软件,可完成设计的全过程。2. CAE阶段这个阶段在集成电路与电子设计方法学以及设计工具集成化方面取得了许多成果。各种设计工具,如原理图输入、编译与连接、逻辑模拟、测试码生成、版图自动布局已齐全。由于采用了统一数据管理技术,因而能够将各个工具集成为一个CAE系统。按照设计方法学制定的设计流程,可以实现从设计输入到版图输出的全程设计自动化。这个阶段主要采用基于单元库的半定制设计方法,采用门阵列与标准单元设计的各种ASIC得到了极大的发展,将集成电路工业推入了ASIC时
6、代。3. EDA阶段20世纪90年代以来,微电子技术以惊人的速度发展,其工艺水平达到了深亚微米级,此阶段主要出现了以高级语言描述、系统仿真和综合技术为特征的第三代EDA技术,不仅极大地提高了系统的设计效率,而且使设计人员摆脱了大量的辅助性及基础性工作,将精力集中于创造性的方案与概念的构思上。它的特征为:第一,高层综合的理论与方法取得较大进展,将EDA设计层次由RT级提高到了系统级(又称行为级),并划分为逻辑综合和测试综合。第二,采用硬件描述语言HDL来描述10万门以上的设计,并形成了VHDL和VerilogHDL两种标准硬件描述语言。第三,采用平面规划技术对逻辑综合和物理版图设计进行联合管理,
7、作到在逻辑综合早期设计阶段就考虑到物理设计信息的影响。第四,可测性设计。第五,为带有嵌入IP模块ASIC设计提供软硬件协同系统设计工具。2.1.2 EDA技术的基本特征EDA技术代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。这样的设计方法被称为高层次的电子设计方法。下面介绍与EDA基本特征有关的几个概念。1. “自顶向下”的设计方法10年前,电子设计的基本思路还是选择标准
8、集成电路“自底向上”(Bottom-Up)地构 造出一个新的系统,这样的设计方法就如同一砖一瓦地建造金字塔,不仅效率低、成本高而且还容易出错。2. 高层次设计高层次设计提供了一种“自顶向下”(Top-Down)的全新的设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻
9、辑功能仿真的工作量,提高了设计的一次成功率。2.2Verilog硬件描述语言Verilog HDL是目前应用最为广泛的硬件描述语言。Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。 Verilog HDL适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述 Verilog HDL进行设计最大的优点是其工艺无关性这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路 Veri
10、log HDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASICs和FPGA的设计之用。Verilog 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。 Verilog 是由en:Gateway Design Automation公司于大约1984年开始发展。Gateway Design Automation公司后来被 Cadence Design Sys
11、tems于1990年所购并。现在 Cadence 对于 Gateway 公司的 Verilog 和 Verilog-XL 模拟器拥有全部的财产权。 2.3 QuartusII软件介绍QuartusII软件是开发AlteraPLD的软件工具,可开发FPGA、CPLD和结构化的ASIC,是MAX+plusII的升级版本。QuartusII提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。能够支持逻辑门数在百万门以上的逻辑器件的开发,并且为第三方工具提供了无缝接口。QuartusII提供了全面的逻辑设计
12、能力,包括电路图、文本和波形的设计输入以及编译、逻辑综合、仿真和定时分析以及器件编程等诸多功能。特别是在原理图输入等方面,QuartusII被公认为是最容易使用、人机界面最友好的PLD开发软件。2.3.1QuartusII软件的特点1. 开放式的多平台设计环境QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,也是可编程片上系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Alrera DSP开发包进行系统的模型设计提供了集成综合环境。QuartusII设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。Quar
13、tusII也可以利用第三方综合工具。同样,QuartusII具备仿真功能,同时也支持第三方的仿真工具。2. 设计与结构无关QuartusII支持Cyclone、Stratix、APEX20KE、FLEX10KA、FLEX6000、MAX7000B、MAX7000AE和MAX7000S等系列可编程逻辑器件,门数为6000250000门,提供了业界正真与结构无关的可编程逻辑设计环境。QuartusII的编译器还提供了强大的逻辑综合与优化功能以减轻用户的设计负担。3. 可在多种平台运行QuartusII软件可基于PC的WindowsNT4.0、Windows98、Windows2000等操作系统下运
14、行,也可在Sun SPARCstasions,HP9000 Series700/800等工作站上运行。4. 层次化设计QuartusII支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块进行调试,从而解决了原理图与HDL混合输入设计的问题。5. 模块化工具设计者可以从各种设计输入、编辑、校验及器件编程工具中做出选择,形成用户风格的开发环境,必要时还可以在保留原始功能的基础上添加新的功能。6. 支持硬件描述语言QuartusII软件支持多种硬件描述语言的设计输入,包括标准的VHDL、VerilogHDL及AHDL。7. 丰富的LPM模块QuartusII含大量有用的LP
15、M模块,它们是复杂或高级形同构建的重要组成部分,在SOPC设计中被大量使用,也可以在QuartusII普通设计文件一起使用。Altera提供的LPM函数均基于Altera期间的结构做了优化设计。在许多实用情况中,必须使用宏功能模块才可以使用一些Altera特定器件的硬件功能。2.3.2 QuartusII软件设计流程作为第一款从FPGA至掩模器件的完整设计工具,Altera公司推出的四代可编程逻辑器件集成开发环境QuartusII提供了从设计输入到器件变成的全部功能。QuartusII分为综合工具、仿真工具、实现工具、辅助设计工具和其他工具等,强大,界面友好,易于掌握。利用QuartusII开
16、发工具进行数字系统设计,可以概括为以下几个步骤:设计输入、综合、布局布线、时序分析、仿真、编程和配置等,如图1所示图1 QuartusII设计流程Fig. 1 QuartusII design processQuartusII利用Verilog HDL完成电路设计,必须借助EDA工具的综合器、适配器、时序仿真器和编译器等工具进行相应的处理,才能最终在硬件上得以实现和测试。第三章 可编程多彩霓虹灯系统设计方案3.1 设计分析利用开发系统板,设计一个简易的霓虹灯控制芯片。利用开发板上的8个发光二极管来模拟霓虹灯的灯泡,用按键来控制霓虹灯的显示模式。设计一个可编程的多彩霓虹灯,实现霓虹灯的可编程多种
17、图案的交替显示。系统的输入信号包括8个拨码开关、一个按键开关和时钟信号,输出信号有8个LED。可编程多彩霓虹灯的外部时钟由晶振产生,该开发板系统示例中采用的晶振频率为50MHz。可编程多彩霓虹灯共有8个灯泡,定义这8个灯泡的亮暗组合为一帧图案,每次显示的图案需要8bits数据。在本设计中,预定了8帧图案,在正常情况下,可编程多彩霓虹灯以1帧/秒的速度变换显示数据。同时,在按键的控制下,8个拨码开关用来输入8个霓虹灯的图案显示数据。方法如下:首先拨好8个数码开关,表示一帧具体的图案显示数据,其中,“开”代表响应的霓虹灯点亮,“关”代表相应的霓虹灯熄灭;然后按下按键,数据就存入了控制器电路的内部存
18、储器中;继续用拨码开关输入下一帧的色彩数据,再按下按键,数据就存入控制器电路内部的下一组存储器中;按照这种方法,可以预先存储好8帧显示图案。当8帧显示图案数据存满了以后,可以继续输入数据,心输入的数据会覆盖第一次输入的数据。3.2 系统分析可编程多彩霓虹灯分为五个模块,包括两个分频器模、RAM存储器模块、显示模块和按键控制模块。 两个分频器模块的作用是对系统时钟进行分频。由于显示部分需要每秒显示一帧图像,所以需要由系统高频时钟分频得到一个1s的时钟用于控制显示模块。另外一个分频器输出0.1s的时钟,主要用于按键去抖动,并且能够得到合理速度的按键控制信号,同时这个时钟也用于构建RAM的工作时钟。
19、 显示模块的主要作用是从RAM中读出显示数据,并把这个数据显示到LED上。显示控制模块需要每秒从RAM中读数一次,每次读出数据位8bits。 键盘、拨码控制模块的主要作用是检测外部的按键信号,如果按键信号失效,就把拨码开关的数据输入到当前地址指针所指的RAM地址中。 数据存储RAM模块是最复杂的核心模块,负责数据的存入和读出,该RAM需要处理来自键盘、拨码开关的数据写入信号,也要处理LED显示控制模块的数据请求信号,以及二者的冲突仲裁处理。3.3 模块设计3.3.1.分频器1模块设计(1)模块原理分析。分频器是采用计数器实现的,其基本原理是计数n个原始时钟脉冲后,把分频产生的时钟信号进行一次翻
20、转,周而复始,产生不断翻转的分频时钟。 (2)模块接口定义。分频器1模块接口定义如表1所示。表1 分频器1模块接口信号定义信 号 名I/O位宽含义 clkI 1bit系统50MHz时钟输入Clk_01sO 1bit分频后周期为0.1s的时钟输出 (3)模块Verilog代码设计,代码如下:beginif(counter=22'b00000) /如果等于2500000 begin counter<=22'b0; /把counter恢复成0 clk_01s<=clk_01s; /把clk_01s翻转 endelse counter<=counter+1'b
21、1; /counter 继续计数end3.3.2分频器2模块设计分频器2模块接口定义如表2所示。表2 分频器2模块接口定义信 号 名I/O位宽含义 clkI 1bit系统50MHz时钟输入Clk_01sO 1bit分频后周期为1s的时钟输出模块Verilog代码设计,代码如下:beginif(counter=25'h17d7840) /如果等于25000000 begin counter<=25'b0; /把counter恢复成0 clk_1s<=clk_1s; /把clk_1s翻转 endelse /如果不等于25000000 counter<=counte
22、r+1'b1; /counter继续计数end3.3.3显示控制模块设计 (1)模块原理分析。显示控制模块的功能是从RAM中读取数据,并把这个数据显示到LED上。LED数据是8bits,所以需要8位数据总线从RAM读出数据,同时还需要8条数据总线来传输数据到LED灯上。此外,由于RAM数据有8组,所以还需要给RAM相应的地址信号。 基于上述考虑,先显示控制模块里需要设计一个地址寄存器,由于只有8个存储单元,所以可以只需要3bits的地址寄存器,地址寄存器需要自动循环累加才能连续不断地输出地址给RAM。为了本设计模块的简洁化,减少使用其他接口控制信号,定义RAM和控制模块的读出接口时序为
23、:只要控制模块发送地址,RAM就自动输出相应地址的数据。 (2)模块接口定义。显示控制模块接口定义如表3所示。表3 显示模块接口定义信 号 名I/O位 宽含 义clk_1sI1bit分频后周期为1s的时钟输出 ledO8bits输出给LED灯的显示数据disp_addO3bits输出给RAM的地址disp_dataI8bits从RAM读出的数据 (3)模块Verilog代码设计,代码如下:input clk_1s;output7:0 led;input7:0 disp_data; /显示数据output2:0 disp_add; /地址信号reg2:0 disp_add; /地址寄存器/自动产
24、生地址always(posedge clk_1s) disp_add<=disp_add+1'b1;/输出data给led灯assign led=disp_data;3.3.4按键控制模块设计 (1)模块原理分析。按键控制模块的功能是把外部拨码开关的数据通过按键输入给RAM,按键开关是控制信号,每按下一次,可以把拨码开关的状态作为显示数据输入到RAM中,同时RAM地址指针增加1。按键控制模块首先要处理的问题旧手机按键信号的去抖动,由于人在按下按键的时候一定会有抖动,所以需要用0.1s的时钟对按键进行去抖动处理,然后对去抖了的按键信号做上升沿检测,这样每次按下按键之后就会生成一个与
25、时钟等宽的高电平信号,可用于控制RAM的写入。RAM收到这个控制信号后,就会把数据总线上的数据写入地址总线对应位置的RAM空间;同时,地址寄存器收到这个信号以后,也会把地址指针加1,准备好下一次写入的地址。(2)模块接口定义。按键控制模块接口定义如表4所示。表4 按键控制模块接口定义信 号 名I/O位 宽含 义clk_01sI1bit分频后周期为0.1s的输出keyI8bits外部的拨码开关信号pressI1bit外部的按键信号 wdataO8bits写入RAM的数据总线key_addO3bits从按键控制模块输出给RAM的地址信号wrO1bit写控制信号,按键信号通过上升沿检测电路后,生成一
26、个时钟宽度的写信号 (3)模块Verilog代码设计,代码如下:input clk_01s; /输入的0.1s时钟input7:0 key; /外部的拨码开关input press; /按键开关output7:0 wdata; /写入RAM的数据output2:0 key_add; /写入SRAM的地址output wr; /写控制信号reg press1,press2,press3;always(posedge clk_01s) /去抖动电路beginpress1<=press;press2<=press1;press3<=press2;end/上升沿产生电路assign
27、wr=press2&&(press3);3.3.5 RAM模块设计 (1)模块原理分析。RAM本身是一个存取数据的元件。在本设计中采用64个D触发器作为存储单元,分为8组,每组有8bits。除了存储单元以外,RAM还需要译码器和读/写控制器。这里,RAM不需要读控制信号,给地址信号就可以直接读出;而写入时一定需要控制信号;由于采用了D触发器作为存储单元,所以不必担心同时读/写的问题,D触发器可以同时进行读/写操作。而如果采用了SRAM结构,就需要专门的仲裁电路来处理同时读/写的矛盾。 RAM模块包括三部分:写入不分、D触发器阵列和读出部分。读出部分包括一个译码器电路,可以把地址
28、译码器选中的D触发器输出端通过多路选择器选通到最终的数据总线上;写入部分,也通过一个地址译码器和一个多路选择器最终把地址中的D触发器写入数据。 在本设计中,当wr有效的时候,就写入D触发器。由于D触发器的时钟同步电路,所以需要外部的写入信号也必须是同步于D触发器时钟的。这里写入信号wr和D触发器都同步时钟clk_01s,所以符合设计的要求。 (2)模块接口定义。RAM模块接口定义如表5所示。表5 RAM模块接口定义信 号 名I/O位宽含 义clk_01sI1bit分频后周期为0.1s的时钟输出wdataI8bits写入RAM的数据总线key_addI3bits从按键控制模块输入给RAM的地址信
29、号wrI1bit写控制信号,按键信号通过上升沿检测电路后,生成的一个时钟宽度的写信号disp_addI3bits显示控制模块输入给RAM的地址信号disp_dataO8bits显示控制模块从RAM读出的数据 (3)模块Verilog代码设计,代码如下:/读出的地址译码和多路选择器assign disp_data=disp_add=3'b000 " ram0: disp_add=3'b001 " ram1: disp_add=3'b010 " ram2: disp_add=3'b011 " ram3: disp_add=3&
30、#39;b100 " ram4: disp_add=3'b101 " ram5: disp_add=3'b110 " ram6: disp_add=3'b111 " ram7:8'bz;/写入的译码和多路选择器always(posedge clk_01s)begin if(wr=1'b1) /如果写使能信号wr有效才写入 begin if(key_add=3'b000) /如果写入的地址为“000” ram0<=wdata; /把数据写入ram0这个单元 else if(key_add=3'b
31、001) ram1<=wdata; else if(key_add=3'b010) ram2<=wdata; else if(key_add=3'b011) ram3<=wdata; else if(key_add=3'b100) ram4<=wdata; else if(key_add=3'b101) ram5<=wdata; else if(key_add=3'b110) ram6<=wdata; else if(key_add=3'b111) ram7<=wdata; endend3.3.6顶层连接
32、模块设计前面设计了五个电路模块,包括:两个分频器(clk_div1和clk_div2)、显示控制模块(disp_ctl)、按键控制模块(key_ctl)和RAM模块(ram)。在顶层链接模块中,按照控制关系把这五个模块链接起来。代码如下:/实体化clk_div1模块wire clk_01s;clk_div1 clk_div1_inst(.clk(clk),.clk_01s(clk_01s);/实体化clk_div2模块wire clk_1s;clk_div2 clk_div2_inst(.clk(clk), /输入时钟.clk_1s(clk_1s) /输出时钟);/实体化disp_ctl模块w
33、ire7:0 disp_data;wire2:0 disp_add;disp_ctl disp_ctl_inst(.clk_1s(clk_1s), /输入时钟.led(led),.disp_add(disp_add),.disp_data(disp_data);wire7:0 wdata;wire2:0 key_add;wire wr;key_ctl key_ctl_inst(.clk_01s(clk_01s), /输入时钟.key(key),.press(press),.wdata(wdata),.key_add(key_add),.wr(wr);/实体化ram模块ram ram_inst(
34、.clk_01s(clk_01s), /输入时钟.wdata(wdata),.key_add(key_add),.wr(wr),.disp_add(disp_add),.disp_data(disp_data);3.4系统仿真3.4.1仿真需求分析 可编程多彩霓虹灯的仿真平台结构,仿真平台主要提供测试模块需要的所有输入信号,以及对输出信号的检查比对功能。由于本设计比较简单,输出比对主要采用观察波形的方法。 可编程多彩霓虹灯设计输入有两部分:一是50MHz的时钟输入,另外一个是外部按键和拨码开关输入;输出的是8个LED灯的数据。所以整个仿真平台需要设计一个50MHz的时钟,并且设计一组或者多组按
35、键、拨码开关的输入,作为测试向量,观察最终输出的LED显示数据是否正确。3.4.2仿真代码设计代码如下:/实体化DUT模块ledled led(.clk(clk),.led(led),.key(key),.press(press);/建立一个仿真的时钟initialclk=1'b0; /首先初始化时钟的数值always*10 clk=clk; /每隔10ns翻转一次,为50MHz时钟/下面仿真输入8个数据作为一组显示色彩/为了保证仿真正确性,应该多仿真几组这样的色彩数据initialbeginpress=1'b0;led. disp_ctl. disp_add=3'b0
36、;led. key_ctl.key_add=3'b0;/输入第一组显示色彩数据8'b00000001;*150 key=8'b00000001;*150 press=1'b1;*150 press=1'b0;/输入第二种数据*150 key=8'b01001001;*150 press=1'b1;*150 press=1'b0;/输入第三组数据*150 key=8'b11000111;*150 press=1'b1;*150 press=1'b0;/输入第四组数据*150 key=8'b101001
37、01;*150 press=1'b1;*150 press=1'b0;/输入第五组数据*150 key=8'b10100101;*150 press=1'b1;*150 press=1'b0;/输入第六组数据*150 key=8'b01000110;*150 press=1'b1;*150 press=1'b0;/输入第七组数据*150 key=8'b01100101;*150 press=1'b1;*150 press=1'b0;/输入第八组数据*150 key=8'b10010001;*150
38、press=1'b1;*150 press=1'b0;end3.4.3 仿真结果分频器1仿真结果,图2图2 分频器1仿真结果分频器2仿真结果,图3图3 分频器2仿真结果显示控制模块仿真结果,图4图4 显示控制模块仿真结果结 语毕业论文的撰写过程是对所学的电子技术基本理论知识的综合运用,对三年专业知识的一次综合应用、扩充和深化,也是对我们理论运用于实际设计的一次锻炼。通过毕业论文的撰写过程,我不仅温习了以前在课堂上学习的专业知识,同时我也得到了老师和同学的帮助,学习和体会到了电子与单片机技术的基本技能和思想。从开始接到论文题目到论文文章的完成,每走一步对我来说都是新的尝试与挑战。
39、在这段时间里,我学到了很多知识也有很多感受。当然在做的过程中也遇到过很多的麻烦,需要自己去书籍、网上搜索,会有一些错误,自己很难改正,只得求助老师,最后得以解决。这次毕业设计使我开始了自主的学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获,每一次的成功都会让我兴奋好一段时间。此次设计过程中,我都是随着设计的不断深入而不断熟悉并学会应用的。和老师的沟通交流更使我对设计有了新的认识也对自己提出了新的要求。课题设计过程中我不怕失败,在失败中总结经验,为成功积累素材;学着自我超越,敢于尝试,在尝试中进步,这对我能力的提高大有
40、好处。设计中有太多的不懂和陌生,但是我会多看、多想、多问、多学,认真的对待每一次老师交代的任务,每一个任务都是一个锻炼的机会和成长的过程,我在规定的时间尽善尽美的完成,把自己的能力发挥到最大限度。这些本是我工作后才会意识到的问题,通过这次毕业设计让我提前了解了这些知识,这是很珍贵的。这个课题设计的过程让我学习、工作的思路有了更为明朗的认识:它是站在一定高度上去工作的,眼界要放宽,思路要开阔,内容要饱满。我曾经也做过不少课程设计,但都是局限在课本中,而这次实验设计,能够让我走出来,仿佛推开门看见外面的世界是如此之大,如同井底之蛙跳上井沿过程中要有很好的团结合作意识和责任感,积极的参与到实验设计的
41、讨论中去,学习和听取别人的意见,我也主动的发表意见,用一个积极上进、激情乐观的态度面对每一天的实验设计生活,让我的学习生活丰富多彩。致 非常感谢学院能给我们提供这样的一个可以自己动脑、动手进行设计的机会,同时也大大加强了同学之间的沟通,以及学生与老师之间的交流,这是一个放飞自我的平台,也是我们理想与实际结合的升华,我想学院给我们提供的这些,教会我们的这些不仅仅在现在有用,对于我们今后步入社会也是同样有用的。目前我已经在一家公司实习了,我明显感到在社会上更加需要团体合作,以及自身的严谨作风。我在工作中不怕失败,在失败中总结经验,为成功积累素材;学着自我超越,敢于尝试,在尝试中进步,这对我能力的提
42、高大有好处。这次做论文的经历也会使我终身受益,我感受到做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。希望这次的经历能让我在以后工作中激励我继续进步。离开学校完成论文,是一个终点,又是另外一个起点!喝水不忘挖井人,我将铭记大家对我的帮助,以后更好的为人民为社会服务!在这个竞争激烈、物欲浮躁的社会,怀着一颗认真、平和的心,踏实的走好每一步,我相信我的未来就一定不是梦,也坚信这次课程设计将成为我一辈子的财富,其所折射出的光芒将照亮我的前程,成为我人生中的一道亮丽风景。毕业设计,也许是我大学生涯
43、交上的最后一个作业了。想借次机会感谢三年以来给我帮助的所有老师、同学,你们的友谊是我人生的财富,是我生命中不可或缺的一部分。感谢熊力维老师对我的教育培养,细心指导我们学习,在此,我要向老师深深地鞠上一躬。参考文献1.FPGA/CPLD应用技术(Verilog语言版)王静霞 主编第六章数字系统设计实践任务20可编程多彩霓虹灯设计 电子工业出版社2.姜雪松,吴钰淳,王鹰1VHDL 设计实例与仿真M 1北京:机械工业出版社3.潘松,黄继业. EDA技术实用教程M. 科学出版社4.张霞. VHDL在现代EDA中的应用J. 现代电子技术附 录1. 分频器1模块设计代码如下:module clk_div1
44、(clk, /输出时钟clk_01s /输入时钟);input clk;output clk_01s;reg21:0 counter; /定义计数器来计数时钟,计数2500000,需要用 /22位计数器reg clk_01s;always(posedge clk)beginif(counter=22'b00000) /如果等于2500000 begin counter<=22'b0; /把counter恢复成0 clk_01s<=clk_01s; /把clk_01s翻转 endelse counter<=counter+1'b1; /counter 继
45、续计数endendmodule2. 分频器2模块设计代码如下:module clk_div2(clk, /输入时钟clk_1s /输出时钟);input clk;output clk_1s;reg24:0 counter; /定义计数器来计数时钟,计数25000000,需要用 25 /位计数器reg clk_1s;always(posedge clk)beginif(counter=25'h17d7840) /如果等于25000000 begin counter<=25'b0; /把counter恢复成0 clk_1s<=clk_1s; /把clk_1s翻转 end
46、else /如果不等于25000000 counter<=counter+1'b1; /counter继续计数endendmodule3.显示控制模块设计代码如下module disp_ctl(clk_1s, /输入时钟led,disp_add,disp_data);input clk_1s;output7:0 led;input7:0 disp_data; /显示数据output2:0 disp_add; /地址信号reg2:0 disp_add; /地址寄存器/自动产生地址always(posedge clk_1s) disp_add<=disp_add+1'b
47、1;/输出data给led灯 assign led=disp_data;endmodule4.按键控制模块设计代码如下:module key_ctl(clk_01s, /输入时钟key,press,wdata,key_add,wr);input clk_01s; /输入的0.1s时钟input7:0 key; /外部的拨码开关input press; /按键开关output7:0 wdata; /写入RAM的数据output2:0 key_add; /写入SRAM的地址output wr; /写控制信号reg press1,press2,press3;always(posedge clk_01
48、s) /去抖动电路beginpress1<=press;press2<=press1;press3<=press2;end/上升沿产生电路assign wr=press2&&(press3);endmodule5.RAM模块设计代码如下:module ram(clk_01s, /输入时钟wdata,key_add,wr,disp_add,disp_data);input clk_01s; /0.1s的系统时钟input7:0 wdata; /从拨码开关写入数据input2:0 key_add; /写入的地址input wr; /写入使能信号input2:0di
49、sp_add; /读出地址output7:0 disp_data; /读出数据/定义D触发器阵列reg7:0 ram0,ram1,ram2,ram3,ram4,ram5,ram6,ram7;/读出的地址译码和多路选择器assign disp_data=disp_add=3'b000 " ram0: disp_add=3'b001 " ram1: disp_add=3'b010 " ram2: disp_add=3'b011 " ram3: disp_add=3'b100 " ram4: disp_add=
50、3'b101 " ram5: disp_add=3'b110 " ram6: disp_add=3'b111 " ram7:8'bz;/写入的译码和多路选择器 always(posedge clk_01s)begin if(wr=1'b1) /如果写使能信号wr有效才写入 begin if(key_add=3'b000) /如果写入的地址为“000” ram0<=wdata; /把数据写入ram0这个单元 else if(key_add=3'b001) ram1<=wdata; else if(key_add=3'b010) ram2<=wdata; else if(key_add=3'b011) ram3<=wdata; else if(key_add=3'b100) ram4<=wdata; else if(key_add=3'b101) ram5<=wdata; else if(key_add=3'b110) ram6<=wdata;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏海晟控股集团有限公司下属子公司招聘第一批任务型合同制员工人员考前自测高频考点模拟试题及一套参考答案详解
- 2025甘肃金昌市第二批引进高层次和急需紧缺人才70人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025北京师范大学一带一路学院教学助理招聘模拟试卷及一套答案详解
- 2025年甘肃省兰州市肺科医院招聘工作人员14人考前自测高频考点模拟试题参考答案详解
- 2025年河北地质大学选聘工作人员85人模拟试卷附答案详解(模拟题)
- 2025贵州岑巩县医共体总医院招聘乡村医生考前自测高频考点模拟试题及答案详解(必刷)
- 2025年上海新上铁实业发展集团有限公司合肥分公司招聘1人模拟试卷及参考答案详解
- 2025广东中山市横栏镇纪检监察办公室招聘1人考前自测高频考点模拟试题附答案详解(完整版)
- 2025年东营市东营区高层次及急需紧缺招聘教师(40人)模拟试卷及答案详解(典优)
- 2025年河北承德县公开招聘社区工作者14名考前自测高频考点模拟试题附答案详解(完整版)
- 高中考试中的数学解题技巧
- 学校保洁服务投标方案(技术标)
- 《商务大数据分析导论》全套教学课件
- 《淞沪会战》课件
- 国庆节课件下载
- 画家徐悲鸿简介
- 幼儿园中班彩虹泡泡龙课件
- 大量输血课件教学课件
- 妈妈课堂系列医生讲课文档
- 全国小学生英语竞赛(NECPS)四年级组测试题
- 孕期三病筛查
评论
0/150
提交评论