简化-EDA(VHDL)实验教程1_第1页
简化-EDA(VHDL)实验教程1_第2页
简化-EDA(VHDL)实验教程1_第3页
简化-EDA(VHDL)实验教程1_第4页
简化-EDA(VHDL)实验教程1_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA(VHDL & FPGA)实验指导教程EDA(VHDL & FPGA)实验指导教程编者 林海波长春工程学院电子信息教研室前 言本实验指导教程是EDA(VHDL & FPGA)上机实验指导教材,上机实验前,学生应依照教师指定的实验项目,认真预习实验内容,提前确定实验方案、初步设计实验项目的逻辑电路图或编写、设计VHDL程序,编制VHDL程序清单。上机实验是一个验证和调试过程,只有充分的预习才能最大的发挥学习效果。学生在实验教学中要认真依据要求完成每个实验项目,并按照要求详细撰写本书中指定实验项目的实验报告。教师批阅后,将报告发回。学生所获得的成绩将作为平时上机实验成

2、绩的一部分,记入期末的考核成绩。在期末必须上交全部实验报告,并装订存档,不及时交回者,实验成绩记为零分。本实验指导教程可以作为VHDL与数字系统设计课程的实验指导书使用,也可以作为EDA(VHDL)课程设计的参考书使用。VHDL与数字系统设计课程组2009年5月第一章 MAX+PLUS EDA软件操作第一节 逻辑设计的输入方法逻辑设计的输入方法有图形输入、文本输入等。输入方法不同,生成的文件格式也有所不同。我们分别以图形输入法和文本输入法介绍MAX+plus II软件的使用方法。1.1 图形设计输入法我们将用一简单的实例介绍该输入法。启动MAX+plus II,该管理器窗口被打开。1. 项目的

3、建立用户的每个独立设计都对应一个项目,每个项目可包含一个或多个设计文件,其中有一个是顶层文件,顶层文件的名字必须与项目名相同。编译器时对项目中的顶层文件进行编译,所以必须确定一个文件作为当前项目。对于每个新的项目应该建立一个单独的子目录,当指定项目名称时,也就同时指定了保存该设计项目的子目录名。建立项目名称的步骤如下:1在File菜单中选择Project 的Name 项(图1.1),将出现图1.2对画框。图1.1改变盘符,如:E:mydesigngraph键入项目名如:cntm12改变路径 图1.22在Project Name框内,键入设计项目名(注意:一定是英文名)和所选的路径,单击OK。这

4、时,MAX+plus II的标题条将显示新项目名字。2建立新的图形文件 在File 菜单下选择“NEW”,出现图1.3所示的对话窗:建立文本输入文件,如VHDL,Verilog HDL文件可编辑用户生成的符号文件选择该项可建立一个图形输入文件可建立波形输入模拟文件图1.3 新建文件类型对话框在图1.3中选择“Graphic Editor file”后,选择“OK”后出现图1.4即可开始建立图形输入文件,图中标明了每个按钮的功能。如果需要,通过单击图形编辑器标题条中的放大按钮可使图形编辑器窗口放置最大。选择工具文本编辑工具正交线工具图形编辑区画直线、对角线弧形工具打开橡皮筋连接功能与窗口适配,缩

5、小到最小,即窗口大小 放大、缩小圆形工具连接点断开关闭橡皮筋连接功能图1.4以四位计数器为例建立图形文件调入一个元件。调入74163元件。在图形编辑区双击鼠标左键可打开“Enter symbol”对话框,如图1.5。在对话框内你可选择需要输入的元件/逻辑符号。指定您将输入文件中的符号名称双击一个符号库,在Symbol Files对话框中将出现它的所有符号显示当前路径下的所有符号图1.5 单击“OK”,此时在图形编辑器窗口出现了74163元件,如图1.6所示。图1.6从“File”菜单下选择“Save”,出现文件保存对话框,选择“OK”,使用默认的文件名存盘。此处默认的文件名为“ygc.gdf”

6、,及项目名“ygc”加上图形文件的扩展名“.gdf”。放入输入和输出引脚,方法与放置图元件相似,即图31“Symbol Nam框中键入INPUT或OUTPUT,然后选择OK, INPUT或OUTPUT符号就会显示在图形编辑窗中。如果要重复放置同一符号,可用复制符号的方法,这样可以提高图形输入的速度,具体方法是将鼠标放在要复制的符号上,按下Ctrl健和鼠标左健不放,同时拖拽鼠标,并把它放在指定位置,这样就可以复制符号了。此例中共放置3个INPUT和5个OUTPUT。输入引脚输出引脚在本例中,三个输入引脚分别被命名为en、clear和clk,分别作为计数使能、清零和时钟输入。五个输出引脚分别被命名

7、为s0、s1、s2、s3和cout,分别作为计数器计数输出和进位输出。用同样的方法,调用一个三输入与非门(nand3)、gnd、vcc等(位于库prim中)。这些元件也可在符号输入对话框直接输入名字(如nand3,gnd)获得,单击“OK”即可。xor代表异或门。MAX+plus II提供了大量的库文件,每个库对应一个目录。这些库根据其功能大小及特点可分为:库 名内 容用户库放有用户自建的元器件,即一些底层设计Prim(基本库)基本的逻辑快器件,如各种门、触发器等Mf(宏功能库)包括所有74系列逻辑元件,如74163,74161等Mega-lpm(可调用参数库)包括参数化模块,功能复杂的高级功

8、能模块,如可调模值的计数器,FIFO,RAM等。edif和mf库类似为引脚和引线命名(1) 为引脚命名的方法是:在引脚的PIN-NAME处双击鼠标左键,然后输入指定的名字即可。(2) 引线命名的方法是:选中需命名的引线,然后输入名字。对于n为宽的总线A命名,可以采用An-1.0形式,其中单个信号可用A0,A1,A2,An形式。连线 如果需要连接两个端口,则将鼠标移到其中一个端口上,这是鼠标指示符自动变为“+”形状,然后可按下属步骤操作:(1) 一直按住鼠标左键并将其拖至第二个端口;(2) 放开左键,则一条连线被画好了;(3) 如果需要删除一根连接线,可单击这根连接线使其呈高亮线(为红色),用手

9、按DEL键即可删除。在图形编辑框中的Option菜单中列出了编辑图形时的一些选项(如图1.7所示),包括文本的字型和大小控制、线型、显示任务、网络控制等,设计人员可以根据需要进行选择。图1.7 图形编辑选项将元件端口连接好,可得图1.8,并存盘。图1.8 模为12的计数器电路图保存文件,检查基本错误(1)在设计过程中,如需保存新文件或重新命名文件名,则选择File菜单中的Save As项,出现Save As对话框,如图1.9所示。在File Name对话框内输入设计文件名,然后选择OK即可保存文件。显示当前文件类型的缺省扩展名,您可从下拉列表中选择不同的扩展名指定具体的设计文件名图1.9 Sa

10、ve As对话框(2)若是为了保证输入逻辑的正确性,可将此逻辑对应的文件保存起来,并检查一些有关错误。其具体操作步骤如下:l 在File工具栏中选择save&Check命令,该文件即将保存起来,同时MAX+plus II编辑器窗口打开。编辑器网表提取器模块检查该文件的错误,更新层次结构的现实,同时给出错误和警告数目的信息。l 如果Save&Check命令执行成功,无错误和警告数目的信息,就选择OK。l 单击Document Control(文件控制)菜单框,关闭此编译器窗口并返回到图形编辑器。如果编辑器发出了错误或警告信息,而信息处理器没有自动予以显示,这是可以从MAX+plu

11、s II菜单中选择Message Processor来打开信息处理窗口。在信息处理器窗口中选择一条信息并定位以找到信息产生的地方,也可以选择Help on Message(信息帮助)功能得到有关的解释,这样就可以定位设计文件中的错误并加以改正。3.设计项目的编译MAX+plus II编译器可以加查项目中的错误并进行逻辑综合,将项目最终设计结果加载到器件中去,并为模拟和编程产生输出文件。MAX+plus II编译器既能接受多种输入文件格式,又能输出多种文件格式。首先,它能接受的设计文件包括MAX+plus II自己的图形文件(.gdf)、AHDL文件(.tdf)、VHDL文件(.vhd);它还能

12、接受第三方EDA工具输入文件,如EDIF文件(.Edf)、库映射文件(.lmf)OrCAD文件(.sch)及Xilinx文件(.xnf);最后,它还能接受赋值和配置文件(.acf)、第三方EDA工具所用的网表文件(.vo)和标准格式的SDF文件(.sdo),另外还可输出可编程文件,包括用于编程器的目标文件(.pof)、用于在先配置的SRAM目标文件(.sof)和JEDEC文件(.jed)。下面介绍编译过程:(1) 打开编译器窗口在MAX+plus II菜单中选择Compiler菜单项,则出现编译器窗口,如图1.10所示:完成情况状态条图1.10 编译器模块盒在编译项目中时,沙漏将不停地反动编译

13、器各部分名称与功能如下:Compiler Netlist Extractor:编译器网表提取器,该过程完成后生成设计的网表文件,如图形连接中有错误(如两个输出直接短接),该过程将指出此类错误。Database Builder:数据建库器Logic Synthesizer:逻辑综合器对设计进行逻辑综合,即选择合适的逻辑化简算法,去除冗余逻辑,确保对某种特定的器件结构尽可能有效的使用器件的逻辑资源,还可去除设计中无用的逻辑。用户可通过修改逻辑综合的一些选项,来指导逻辑综合。Fitter:适配器。它通过一定的算法进行布局布线将通过逻辑综合的设计最恰当地用一个或多个器件来实现。Timing SNF E

14、xtractor:时序模拟的模拟器网表文件生成器,它可生成用于时序模拟的标准试验文件。Assembler:适配器,生成用于器件下载/配置的文件。(2) 编译器的选项设置在对项目进行编译时,需要为项目指定一个器件系列,然后,设计人员可以自己选择某个具体器件,也可以让编译器在该器件系列内自动选择最合适该项目的器件。确定器件系列的步骤如下:1)Assign菜单中选择Device项,将出现Device对话框图1.11。4)按下OK按钮 图1.113)选择某一器件或选择AUTO让MAX+plus II为您选择一个器件,选择器件时,将对话框下面Show Only Fastest Speed Grades前

15、面的对号去掉。 2) 编译器对话框内,单击Start按钮,就开始对所要编译的项目进行编译了。在编译器编译期间,所有信息将会在自动打开的信息处理窗中显示出来。如果有错误发生,双击该错误信息,就会找到该错误在设计文件中的位置。 当编译器的Partition和Fiter模块处理此项目时,Stop/Show Status按钮,选择此按钮,parition/Fitler Status对话框就会显示出来。对话框中列出项目中的所有芯片以及当前它们进行适配的状态,如图1.12所示:按此按钮继续编译 图1.12 划分/适配状态对话框当编译结束后,那些有编译器产生的代表输出文件的图表将会出现在各模块框的下面,可以

16、通过双击适当的文件图表来打开这些输出文件。(3) 引脚锁定在前面的图形编辑窗口中,仅仅对输入输出引脚做了名称定义,但没有对输入/输出引脚规定具体的引脚号码,规定引脚号码称为引脚锁定。首先,从“MAX+plus II”菜单下选择“Flooplan Editor”,也可双击 ,则平面布置图编辑器被打开,如图1.13:显示没有被锁定管脚的输入输出信号及内部节电视图区:显示管脚锁定的情况图1.13 平面布置图编辑器窗口控制在显示区显示编译器编译结果你所打开的窗口可能与此不同,使下面的窗口,可通过在菜单“Layout”中选中“Device View”改变为显示管脚锁定情况图。将clk信号锁定在EPF10

17、K10LC844的引脚上,现将鼠标移到节点显示区clk左边的上,按下鼠标左键,可看到鼠标显示符有一个矩形框,拖动矩形框指示图区中1号管脚的空白矩形框处,松开左键即可完成信号clk的管脚锁定。见如下示意图: 未锁定前 锁定好clk信号后图1.14拖动clk矩形框至此处,松开左健按上述方法分别将其他信号按一下锁定管脚:信号名管脚号对应器件名称(DXT-B型试验板)clk1时钟信号Clear28开关K1En29开关K2S060发光二极管L2S161发光二极管L3S262发光二极管L4S364发光二极管L5Cout65发光二极管L6完成所有管脚锁定后,关闭平面布置图编辑器窗口(图1.14),按 保存文

18、件,然后重新编译使之生效,此时,原来设计的项目文件(ygc.gdf)上的输入输出信号旁都标有其对应的管脚号。如图1.15所示:文件名和对应锁定的管脚号图1.15 锁定管脚编译后的设计文件简要介绍一下另一种管脚锁定方法:在下拉菜单中,选择AssignPin/location/Chip项,出现如下对话框,如图1.16所示:1)输入管脚名3)选择引脚的信号方式4)单击此按钮2)选中pin,键入要写入的引脚号码 图1.16 引脚锁定至此,已成功完成了管脚锁定工作。4.设计项目的模拟仿真一个项目设计输入、编译完成后不一定完全符合设计要求,因为设计输入和编译仅仅是整个设计过程的一部分。成功的编译只能保证为

19、项目创建一个编程文件,而不能保证该项目将按照所期望的那样运行。设计人员可以通过模拟一个项目来证明它的功能是否正确。模拟允许把项目在编程到器件之前全面检测,以确保它在各种可能的条件下能有正确的响应。在模拟过程中,需要给MAX+plus II模拟器提供输入变量,模拟器将利用这些输入信号来产生输出信号。通过分析这些输出信号,可以判断项目设计的正确性。根据所需的信息种类,设计人员可用MAX+plus II进行功能或时序模拟。功能模拟仅是测试项目的逻辑功能,而时序模拟不仅此时逻辑功能,还测试目标器件最差情况下的时间关系。创建模拟文件和功能模拟的方法如下:1)File菜单中选择New,然后选择Wavefo

20、rm Editor File,从下拉列表框中选中.scf扩展名,并可建立一个新的无标题文件,如图1.17和图1.18所示:图1.17图1.18 波形编辑器窗口2)从File菜单中选择End Time.,键入1us,按OK键,则设置了模拟结束和时间,如图1.19。图1.19 设计结束时间3)在Option菜单中选择Grid Size,键入40ns,按OK,则网格间距变成了40ns。如图1.20所示。图1.20 设置Grid Size对话框4)在波形编辑器窗口的name下单击鼠标右键,出现浮动菜单,如下图:单击此处,可打开“从SNF文件输入观测点对话框”可输入待测信号。选择 Enter Nodes

21、 from SNF ,可打开图1.21对话框,图1.21 从SNF文件输入观测节点对话框在图1.21中的Type区选择“Input”和“Output”,默认情况下已选中。单击List按钮,可在“Available Nodes&Groups”区看到我们设计中的输入/输出信号,如图1.22,这些信号为蓝色高亮,表明被选中。图1.22单击此处,可将这些信号选择到右边区域中,表示可对这些信号进行观测。图1.23输入被观测点后的对话框单击图1.23中的OK,关闭此对话框。可看到图1.18波形编辑器窗口变为图1.24所示。图1.24从菜单File中选择save,出现图1.25对话框,单击OK,将此

22、波形文件保存为默认名:“ygc.scf”,扩展名scf表示模拟通道文件。模拟通道文件图1.255)在开始时序模拟之前,先介绍一下波形图绘制用工具条说明,如图1.26所示。输入或编辑文字选中某段波形,并直接赋值。对某段已选中的波形,赋值0低电平赋值1高电平赋值X,不定值赋值Z,高阻赋相反值图5.1为时钟信号赋值为有规律的单个信号或总线赋值为某段总线赋值为状态机赋值图1.26以给信号clk赋周期为80ns的时钟信号为例说明给信号赋值的方法,如下:用鼠标选中clk信号,此信号条变黑,表明选中。用鼠标左键单击工具条中 ,出现下面对话框:此值若为2,则时钟周期为80ns×2若选择“网格对齐”,

23、则此值不变单击OK关闭此框即可生成所需时钟。为观察清零的作用,我们在200ns至400ns之间赋0(因为该信号低电平有效),方法是:将鼠标移到clear信号的200ns除按下鼠标左键并向右拖鼠标至400ns处,松开鼠标左键。可看到这段区域城黑色,表明被选中。然后单击 即可。最后别忘了存盘。到此完成了波形输入,可得图1.27。 图1.27 建好的输入波形图6)运行模拟器,进行时序仿真。在MAX+plus II菜单中,选择Simulator,出现图1.28所示的开始框。改变模拟的起止时间进行两次结果对比图1.28 模拟器运行环境单击Start即可开始模拟,模拟完毕后,单击Open Scf可打开刚才

24、编辑的波形文件,如图1.29。图1.29 模拟结果为观看方便,可将计数输出s0、s1、s2、s3作为一组来观测。将鼠标移到Name区的s3上,按下鼠标左键并往下拖动鼠标至s0处,松开鼠标左键,可选中信号s3、s2、s1、s0;在选区中(黑色)上单击鼠标右键,打开一个浮动菜单,如图1.30,单击此处,出现图5.6所示的对话框图1.30组名输入区是否以格雷码显示进制选择图1.31选择OK关闭此对话框,可得下面波形文件,如图1.32所示。图1.32 模拟结果(以组方式显示)5.定时分析 1)定时分析器,可用来分析设计项目的性能。定时分析器提供了三种分析模式,如下表所示:分析模式说 明延时矩阵分析多个

25、源节点和目标节点之间的传播延时路径时序逻辑电路性能分析时序逻辑电路的性能,包括限制性能的延时,最下的时钟周期和最高的电路工作频率建立/保持矩阵计算从输入引脚到触发器、锁存器和异步RAM的信号输入所需的最少的建立和保持时间在MAX+PLUS菜单中选择Timing Analyzer项,即可打开定时分析器窗口。 2)传播延时分析 。单击,立即打开Delay Matrix项,然后选择start,则定使分析器开始对项目进行分析并计算项目中每对连接的节点之间的最大和最小传播延时,如图1.33所示。从clk上升沿到q0的延时为9.4ns图1.33 传播延时分析3)时序逻辑电路性能分析 从工具条中单击,即打开

26、时序逻辑电路性能分析窗口,如图1.34所示。显示被分析的时钟信号名称显示制约性能的目标节点的名称显示在给定时钟下,时序逻辑电路要求的最小时钟周期显示给定的时钟信号的最高频率开始进行时序逻辑性能分析打开信息处理窗口并显示延时路径图1.34 时序逻辑电路性能分析4)建立和保持时间分析在Analysis菜单中选择Set/Hold Matrix项,然后选择Start即可进行建立和保持时间分析,如图1.35所示。 图1.356.器件编程/配置(通过JTAG实现在系统编程) 项目通过模拟仿真,确定无误后,通过项目编译后生成文件.sof用于下载。首先确认编程器硬件已装好,然后在MAX+PLUS菜单中选择Pr

27、ogrammer项,编程器窗口被打开,如图1.36将一个编程文件中的数据编程到一个MAX或EPROM器件中为当前编程文件打开保密位选项显示项目的编程文件检查器件中的内容是否与当前编程内容相同显示项目中所有Altera器件的名称检查确认器件是否为空将配置数据下载到一个FLEX器件中图1.36 编辑器窗口 将ByteBlaster电缆的一端与微机的并口相连,另一端10针印记与下载板上的阳极头插座相连,单击按钮Configure即可完成配置。到目前为止,我们已完成了一个完整的设计。注意: ByteBlaster编程器驱动设置MAX+plusII的编程器的功能是将电路设计文件转换后的输出文件,例如*.

28、pof文件与*.sof文件,烧写至FLEX系列器件或下载至MAX系列器件,亦可用来检验与测试器件或转换烧写文件格式。此功能必须配合硬件实验设备才能进行。在器件编程时,首先应该安装软件狗和下载线,这时需要进行硬件设置。(备注:MAX+PLUSII在WIN2000/XP上的安装设置:在Windows98 上,MAX+PLUSII一旦安装完毕,经过设置即可使用下载功能。在Windows2000上的安装,除了安装软件外,为使用ByteBlasterMV下载功能,还必须安装硬件驱动(dirver),以支持MAX+PLUSII对PC机并口的操作。具体操作步骤如下:(1) 首先安装MAX+PLUSII(2)

29、 选择(“开始”-“设置”-“控制面版”)(3) 双击“游戏选项”然后选择“添加”-“添加其它”-“从磁盘安装”命令,再单击“浏览”浏览驱动所在的目录:MAX+PLUSII的安装目录dirverswin2000;(4) 选择“WIN2000.inf”,单击“确定”;(5) 在“数字签名未找到”对话框中,选择“是”;(6) 在“选择一个设备驱动程序”窗口中,选择“Altera Bytblaster”,并单击“下一步”;(7) 在接下去的“数字签名未找到”对话框中,仍选择“是”;(8) 安装完成,依提示,重新启动计算机。 在WINXP/WINNT操作环境下,若要使用下载(DOWNLOAD)功能,同

30、样要安装驱动,安装方法可参考在WINDOWS2000上的安装方法进行,在此不再赘述。)1.2 工具条和常用菜单选项说明 1.3 文本设计输入法文本设计输入方法主要实现以AHDL语言形式或以VHDL语言形式书写的文件,AHDL是Altera Hardware Description Language的缩写,它是一种高级的硬件行为描述语言,该语言可以使用布尔方程、算术运算、针织表、条件语句等方式进行行为描述。VHDL是VHSIC Hardware Description Language的缩写,特使一种符合IEEE表针的高级硬件行为描述语言,特别适合于大型或复杂的设计。这两种语言都是用文本进行设计

31、的。1)在File中选择Project Name,并输入项目名称。本例中输入cntm60v,单击OK。2)在File中选择new,然后选择Text Editor File,在选择OK,即打开无标题的Text Editor窗口。3)在File 中选择Save as,然后在File Name框内键入jk,按OK,这是文本编辑就变成了以cntm60v为文件名的编辑窗。至此就可以键入VHDL语言程序了。4)建立一默认的逻辑符号。选择File中的Create Default Symbol即可产生该jk触发器文件的模块符号。对文本文件进行模拟仿真方法与原理图输入法过程一样。1.4 VHDL语言描述输入法第

32、二章 VHDL与数字系统设计实验实验一 四位全加器一、实验目的用组合电路设计4位全加器。了解VHDL语言的行为描述的优点。初步掌握系统内部STD_LOGIC_UNSIGNED包的调用。B3 S3A3 3 C3CI2B2 S2A2 2 C2CI2B0 S0A0 3 C0CI0B1 S1A2 1 C1CI1B3A3B2A2B1A1B0A0CIS3COS2S1S0二、实验原理4位全加器可看作4个1位全加器串行构成,具体连接方法如下图所示:图2-1 由1位全加器构成4位全加器连接示意图采用VHDL语言设计时调用其附带的程序包,其系统内部会自行生成此结构。三 、实验内容1. 用VHDL语言设计4位全加器

33、。2. 锁定引脚,并下载验证之。3. 不调用包,用户自行按示意图进行设计,体会调用系统包的便利性。四、设计提示1调用STD_LOGIC_UNSIGNED包,可以使用户在更高层次上进行设计。五、实验报告要求1. 叙述所设计的4位全加器工作原理。2. 写出1位全加器的VHDL语言源程序。3. 写出心得体会。 实验二 用原理图输入法设计模12计数器一 、实验目的1、掌握计数器的设计原理和逻辑功能。2、学习用原理图输入法设计数字电路的方法和过程。3、掌握MAXPLUS开发系统编译、仿真和下载的过程。二、 实验原理计数分同步计数器和异步计数器,本设计可以采用同步计数方式。在时钟脉冲的作用下,计数器进行加

34、1计数操作,12个脉冲后计数器清零并循环计数。三、 实验内容1. 利用图形输入法设计模12计数器的逻辑电路图并进行调试。2. 通过仿真观察波形图验证设计的正确性。3. 进行目标器件选择,管脚锁定并编译下载验证实验结果。四、 设计提示1、注意MAXPLUS用户库、基本库(prim)、宏功能库(mf)、可调参数库(mega_lpm)的逻辑功能以及各种元器件的位置。2、连线时实际连线不能和元器件的虚线框重合或穿越元器件。五、 实验报告要求1. 绘制出模12计数器的逻辑电路原理图。2. 叙述模12计数器的工作原理。3. 仿真出计数器工作波形图。实验三 用VHDL语言设计模60计数器一、实验目的1、进一

35、步掌握计数器的设计原理和逻辑功能。2、学习用VHDL语言设计计数器的方法和调试过程,进一步掌握VHDL语言的应用。3、进一步掌握MAXPLUS开发系统编译、仿真和下载的过程。二、实验原理计数分同步计数器和异步计数器,本设计可以采用同步计数方式。在时钟脉冲的作用下,计数器进行加1计数操作,60个脉冲后计数器清零并循环计数。三、实验内容1. 设计模60计数器的VHDL源程序并进行调试。2. 通过仿真观察波形图验证设计的正确性。3. 进行目标器件选择,管脚锁定并编译下载验证实验结果。四、设计提示1、注意IF语句的嵌套和PROCESS语句内部的运行状态。2、注意计数状态的变化,计数值由9变0(加法)各

36、位的变化。五、实验报告要求1、编写出模60计数器的VHDL源程序。2、叙述模60计数器的工作原理。3、仿真出计数器工作波形图。综合设计实验实验四 多功能数字钟一、实验任务及要求1. 能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟、60秒钟的计数器显示。2. 能利用实验系统上的按键实现“校时”“校分”功能:(1) 按下“SA”键时,计时器迅速递增,并按24小时循环,计满23小时后在回00;(2) 按下“SB”键时,计分器迅速递增,并按59分钟循环,计满59分钟后在回00;但不向“时”进位;(3) 按下“SC”键时,秒清零;(4) 要求按下“SA”、“SB”或“SC”均不产

37、生数字跳变(“SA”、“SB”、“SC”按键是有抖动的,必须对其消抖动处理)。3. (选作)能利用扬声器做整点报时:(1) 当计时到达5950时开始报时,在5950、52、54、56、58鸣叫,鸣叫声频可为500Hz;(2) 到达5960时为最后一声整点报时,整点报时是频率可定为1KHz。 4. 用层次化设计方法设计该电路,用VHDL语言编写各个功能模块。5. (选作)报时功能、闹时功能用功能仿真的方法验证,可通过观察有关波形确认电路设计是否正确。6. 完成电路设计后,用实验系统下载验证。 计数控制 模块 调时 调分 时间显示输出报时控制 秒清零 蜂鸣器输出 reset clk 二、设计说明与

38、提示 系统顶层框图,多功能数字钟框图如图2-2、2-3所示。图2-2 多功能数字钟框图 时显示器 分显示器 秒显示器SD闹时设置HADJHAOJSCLRSASBSC校时校分清零 时十位 时个位 分十位 分个位 秒十位 秒个位译码器译码器译码器译码器译码器译码器时计数器分计数器秒计数器MUXMUX基准频率 分频器 1Hz4Hz64Hz闹时电路报时电路扬声器500Hz 图2-3 多功能数字钟框图 模块电路功能如下:1. 秒计数器、分计数器、时计数器组成了最基本的数字钟计时电路,其计数输出送7段译码电路由数码管显示。2. 基准频率分频器可分频出标准的1Hz频率信号,用于秒计数的时钟信号;分频出4Hz

39、频率信号,用于校时、校分的快速递增信号;分频出64Hz频率信号,用于对于按动“校时”、“校分”按键的消除抖动。3. MUX模块是二选一数据选择器,用于校时、校分与正常计时的选择。4. HADJ、HAOJ、SCLR模块实际上是一个能完成消抖的D触发器。64Hz作为该触发器时钟,SA,SB,SC是包含抖动的输入信号,而模块的输出则是一个边沿整齐的输出信号。5. (选做) 报时电路模块需要500Hz通过一个组合电路完成功能,前五声讯响功能报时电路还需用一个触发器来保证整点报时时间为1秒。6. (选做) 闹时电路模块也需要500Hz或1KHz音频信号以及来自秒计数器、分计数器和时计数器的输出信号作本电

40、路的输入信号。7. (选做) 闹时电路模块的工作原理如下:按下闹时设置按键SD后,将一个闹时数据存入D触发器内。时钟正常运行,D触发器内存的闹时时间与正在运行的时间进行比较,当比较的结果相同时,输出一个启动信号触发一分钟闹时电路工作,输出音频信号。闹时电路方案较多,以上只是方案之一。三、实验报告要求1. 画出顶层原理图。2. 对照数字钟电路框图分析电路工作原理。3. 写出各功能模块的VHDL语言源文件。4. 叙述各模块的工作原理。5. 说明按键消抖电路的工作原理,画出有关波形图。实验五 多路彩灯控制器一、实验任务及要求设计一个十六路彩灯控制器,6种花型循环变化,有清零开关,并且可以选择快慢两种

41、节拍。二、设计说明与提示1、设计说明根据系统设计要求可知,整个系统共有三个输入信号:控制彩灯节奏快慢的基准时钟信号CLK_IN,系统清零信号CLR,彩灯节奏快慢选择开关CHOSE_KEY;共有16个输出信号LED15.0,分别用于控制十六路彩灯。据此,我们可将整个彩灯控制器CDKZQ分为两大部分:时序控制电路SXKZ和显示控制电路XSKZ,整个系统的组成原理图如图2-4所示。2、提示(1) 在时序控制电路SXKZ的设计中,利用计数器计数达到分频值时,对计数器进行清零,同时将输出信号反向,这就非常简洁地实现了对输入基准时钟信号的分频,并且分频信号的占空比为0.5。(2) 在显示控制电路XSKZ的

42、设计中,利用状态机可以非常简洁地实现了六种花型的循环变化,同时利用六个十六位常数的设计,可非常方便地设置和修改六种花型。(3) 对于顶层程序的设计,因本系统模块较少,既可使用文本的程序设计方式,也可使用原理图的设计方式。但对于模块较多的系统,最好使用文本的程序设计方式。图2-4彩灯控制器组成原理图三、实验报告要求1.画出顶层原理图。2.系统通过仿真后,根据EDA实验开发系统进行编程下载和硬件验证。3.写出各功能模块的VHDL语言源文件。 4.书写实验报告时应结构合理,层次分明,注意语言的流畅。四、主要VHDL源程序 1、时序控制电路的VHDL源程序-SXKZ.VHDLIBRARY IEEE;U

43、SE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SXKZ IS PORT(CHOSE_KEY:IN STD_LOGIC;CLK_IN:IN STD_LOGIC;CLR:IN STD_LOGIC;CLK:OUT STD_LOGIC);END ENTITY SXKZ;ARCHITECTURE ART OF SXKZ IS SIGNAL CLLK:STD_LOGIC; BEGIN PROCESS(CLK_IN,CLR,CHOSE_KEY) IS VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOW

44、NTO 0); BEGINIF CLR='1' THEN -当CLR='1'时清零,否则正常工作CLLK<='0'TEMP:="000" ELSIF RISING_EDGE(CLK_IN) THEN IF CHOSE_KEY='1' THEN IF TEMP="011" THEN TEMP:="000" CLLK<=NOT CLLK ; ELSE TEMP:=TEMP+'1' END IF;- 当CHOSE_KEY='1'时产生

45、基准时钟频率的1/4的时钟信号,否则产生基准时钟 -频率的1/8的时钟信号 ELSE IF TEMP="111" THEN TEMP:="000" CLLK<=NOT CLLK ; ELSETEMP:=TEMP+1' END IF; END IF; END IF; END PROCESS; CLK<=CLLK;END ARCHITECTURE ART;2、显示控制电路的VHDL源程序-XSKZ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XSKZ IS PORT(CLK:IN

46、STD_LOGIC; CLR:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY XSKZ;ARCHITECTURE ART OF XSKZ ISTYPE STATE IS(S0,S1,S2,S3,S4,S5,S6); SIGNAL CURRENT_STATE:STATE; SIGNAL FLOWER:STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN PROCESS(CLR,CLK) ISCONSTANT F1:STD_LOGIC_VECTOR(15 DOWNTO 0):="000100

47、0100010001" CONSTANT F2:STD_LOGIC_VECTOR(15 DOWNTO 0):="1010101010101010" CONSTANT F2:STD_LOGIC_VECTOR(15 DOWNTO 0):="0011001100110011" CONSTANT F4:STD_LOGIC_VECTOR(15 DOWNTO 0):="0100100100100100" CONSTANT F5:STD_LOGIC_VECTOR(15 DOWNTO 0):="1001010010100101" CONSTANT F6:STD_LOGIC_VECTOR(15 DOWNTO 0):="1101101101100110"-六种花型的定义 BEGIN IF CLR='1' THEN CURRENT_STATE<=S0; ELSIF RISING_EDGE(CLK) THEN

温馨提示

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

评论

0/150

提交评论