《基于Quartus II 的CPLD开发实训手册.doc》由会员分享,可在线阅读,更多相关《基于Quartus II 的CPLD开发实训手册.doc(22页珍藏版)》请在三一办公上搜索。
1、基于Quartus II 的CPLD开发实训手册(适用于电信系11级数电课程设计)编者:李楠2012-9Quartus II软件使用简介Quartus II是Altera公司提供的FPGACPLD开发集成环境,Altera是世界上最大可编程逻辑器件供应商之一。Quartus II界面友好、使用便捷,被誉为业界最易用易学的EDA软件。其主要功能为数字电子系统的设计输入、编辑、仿真、下载等。该软件支持原理图输入设计和VHDL语言(以及其它硬件描述语言)输入设计和原理图与HDL混合输入设计。步骤1:建立工作库文件夹步骤2:输入设计项目原理图或VHDL源程序步骤3:存盘,注意原理图或VHDL文件取名步
2、骤4:创建工程并将设计文件加入工程中步骤5:选择目标器件步骤6:启动编译步骤7:建立仿真波形文件步骤8:仿真测试和分析步骤9:选定工作模式、引脚锁定并编译步骤10:编程下载步骤11:硬件测试硬件描述语言(HDL-Hardware Description Language)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传 统的门级描述方式相比,它更适合大规模系统的设计。VHDL(Very High Speed IC Hardware Description Language)以下将详细介绍原理图输入设计方法,但读者应该更多地关注设计流程
3、,因为除了最初的图形编辑输入外,其它处理流程都与文本(如VHDL文件)输入设计完全一致。实验一 原理图方式设计二进制全加器一、设计目的1、通过设计一个二进制全加器,掌握组合逻辑电路设计的方法。2、初步了解QuartusII采用原理图方式进行设计的流程。3、初步掌握FPGA开发的流程以及基本的设计方法、基本的仿真分析方法。二、设计原理三、设计内容四、设计步骤1位全加器设计向导1 为本项设计建立文件夹 任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有文件的文件夹,此文件夹将被EDA软件默认为工作库(Work Library)。一般不同的设计项目最好放在不
4、同的文件夹中,注意,一个设计项目可以包含多个设计文件,如频率计。 打开Quartus ,选菜单FileNew,在弹出的New对话框中选择Device Design Files页的原理图文件编辑输入项Block Diagram/Schematic File, 单击OK按钮后打开原理图编辑窗口如图所示。图 原理图编辑窗口2 输入设计项目和存盘 在双击原理图的任一空白的处,或单击鼠标右键会弹出一个元件对话框。图 元件输入对话框单击按钮“”,找到基本元件的路径,选种需要的元件,单击“打开”按钮,该元件即显示在窗口中,然后单击Symbol窗口的OK按钮,即可将元件调入原理图编辑窗口中,按照此方法把所要的
5、元件全部调入原理图编辑窗口中并连接好,连接好的电路如图所示(图中有and2、not、xnor)。图 连接好的一位全加器电路 连接好电路以后然后分别在input和ouput的PIN NAME上双击,用键盘输入各引脚名(a、b、co、so),其窗口如图所示。图 改变引脚名选择菜单FileSave As 按刚才为自己工程建立好的目录F:adeera,将已设计好的原理图文件取名为b_adder.bdf,并存盘在此文件夹内。3 将设计项目设计成可调用的元件 为了构成全加器的顶成设计,必须将以上设计的半加器b_adder.bdf设置成可调用的元件,方法是选择菜单 FileCreate/Update Sym
6、bol Files for Current File项,即可将当前文件b_adder.bdf变成一个元件符号存盘,以待在高层设计中调用。使用相同的方法也可以将VHDL文本文件变成原理图中的一个元件符号,实现VHDL文本设计与原理图的混合输入设计方法。转换中需要注意以下几点: 转换好的文件必须存在当前工程文件夹中。 按这种方式FileCreate/Update Symbol Files for Current File转换,只能针对被打开的当前文件。4 设计全加器顶层文件 为了建立全加器的顶层文件,必须打开一个原理图编辑窗口,方法同前,即再次选择菜单FileNew,Block Diagram/S
7、chematic File。在弹出的图中Project下调出b_adder文件,同时按照图连接好全加器。以q_adder命名将此全加器设计存在同一路径F:addera文件夹中。图是已连接好了的全加器电路。图 半加器调用窗口连线将鼠标入到元件的引脚上,鼠标会变成“十”字形状。按下左键,拖动鼠标,就会有导线引出。根据我们要实现的逻辑,连好各元件的引脚若将一根细线变成以粗线显示的总线,可以先将其点击使其变成兰色,把它拖长,在拖长处变成了粗线,即总线,然后双击该线即可在此处加信号标号,标有相同标号的线段可视作连接线段,但可不必直接连接。图形编辑器图是已连接好了的全加器电路。图 已连接好的全加器电路5
8、创建工程1)选择File下拉菜单中的New Project Wizard,新建一个工程。如图所示。新建工程向导2)点击图中的next进入工作目录。新建工程对话框3)在 What is the working directory for this project 栏目中设定新项目所使用的路径;在 What is the name of this project 栏目中输入新项目的名字: q_adder,点击 Next 按钮。图 q_adder工程设计窗口4)设计中需要包含的其它设计文件,在此对话框中不做任何修改,直接点击next。图 工程文件加入窗口6、 对设计文件进行编译在 Processin
9、g 菜单下,点击 Start Compilation 命令,开始编译我们的项目。编译结束后,点击 确定 按钮。 7 仿真 接下来应该测试设计项目的正确性,即逻辑仿真。1)创建一个波形文件,在File下拉菜单中选择New,选取对话框的Other File标签下的VectorWaveform File,点击OK,打开一个空的波形编辑器窗口。建立一个仿真波形文件 2)加入输入、输出端口,在波形编辑器窗口的左边端口名列表区双击,在弹出的菜单中选择Node Finder按钮。3)出现Node Finder界面后,在Filer列表中选择Pins:all,点击List,在Node Finder窗口出现所有的
10、信号名称,点击中间的“”按钮则Selected Nodes窗口下方出现被选择的端口名称,点击OK。4)制定输入端口的逻辑电平变化,最后保存该仿真波形文件,文件名与工程名相同。波形编辑器工具栏5)点击EDITEND TIME,在弹出的窗口中的“time”窗口中将默认值1.0改为100.0单位为“us”,点击“OK”,完成设置。6)点击右上角的蓝色箭头开始波形仿真图 全加器的仿真结果实验二 原理图方式设计频率计频率计设计的基本步骤与上节介绍的完全一样,只是需要考虑从哪一个电路模块开始。这里首先设计测频用含使能控制的两位十进制计数器。1 计数器电路设计 (1)含有时钟使能的2位十进制计数器电路设计原
11、理如图2. 1所示,频率计的核心元件之一是含有时钟使能及进位扩展输出的十进制计数器。为此这里拟用一个双十进制计数74390和其它一些辅助元件来完成。图中74390连接成两个独立的十进制计数器,待测频率信号clk通过一个与门进入74390的第1个计数器的时钟输入端1CLKA,与门的另一端由计数使能信号enb控制:当enb = 1 时允许计数;enb = 0 时禁止计数。计数器1到4位输出q3、q2、q1和q0并成总线表达方式即q3.0,由图2.4.12左下角的OUTPUT输出端口向外输出计数值,同时由一个4输入与门和两个反相器构成进位信号进入第2个计数器的时钟输入端2CLKA。 第2个计数器的4
12、位计数输出是q7、q6、q5和q4,总线输出信号是q7.4。这两个计数器的总的进位信号,即可用于扩展输出的进位信号由一个6输入与门和两个反相器产生,由cout输出。clr是计数器的清零信号。(2)在原理图的绘制过程中应特别注意图形设计规划中信号标号和总线的表达方式(粗线条表示总线),对于以标号方式进行总线连接,可以如图2.1所示。例如一根8位的总线bus17.0欲于另三根分别为1、3、4个位宽的连线相接,它们的标号可分别为bus10, bus13.0,bus17.4。图2.1含有时钟使能的2位十进制计数器 (3)计数器电路实现,在此首先从实现图2. 1所示的电路的绘制和测试开始。于是可以在Li
13、brariesothersmaxplus2中可看到绝大多数74系列的元件。这些器件的详细功能及其它们的逻辑真值表可以通过查阅“Help”选项来获得。为了查阅74390的功能,在Help菜单中选Old-Style Macrofunctions项,然后选Counters项。在图中分别键入74390、AND4、AND2、NOT、INPUT、VCC和OUTPUT元件名,调出这些元件并按图2. 1连接好电路。注意电路中VCC在LibrariesprimitivesotherVCC中调出。若将一根细线变成以粗线显示的总线,可以先将其点击使其变成兰色,把它拖长,在拖长处变成了粗线,即总线,然后双击该线即可在
14、此处加信号标号,标有相同标号的线段可视作连接线段,但可不必直接连接。对于以标号方式进行总线连接可以如图2. 1那样。电路中所有参数设置完成后一定要存盘,其路径是F:plj,文件名字是erjsq.bdf。然后再进行全程编译。(4)波形仿真。波形仿真的方法除了按照实验一步骤介绍的流程相同外,但在波形窗口输出总线的设置上要注意:首先将输出总线节点按照图2.2顺序拖到波形窗口。然后按住鼠标左键图2.2 输出总线排列在图2.2最左端拖动鼠标选中q3 、q2 、q1 、q0,这时所选种的节点会变成兰色,接下来用鼠标右键在被选种节点的任一位置处单击,在弹出的菜单中选择GroupingGroup,即弹出如图2
15、.3所示窗口。在该窗口中可以给输出总线q3.0取任意的名字,但为了和图2.1的输出总线相对应,也为了便于分析波形窗口的仿真结果与原理图相对照,所以在图2.3中所取的名字与图2.1中输出总线的名字一致。按照此方法设置好q7 、q6 、q5 、q4的输出节点。全部设置好的波形窗口如图2.4所示。图2.3 总线命名窗口图2.4全部设置好的波形窗口最后用鼠标单击仿真按钮,得到图2.5仿真结果,从图中可知电路的功能完全符合原理图的设计要求:当clk输入时钟信号时,clr信号具有清0功能,当enb为高电平时允许计数,低电平时禁止计数;当低4位计数器计到9时向高4位计数器进位,另外由于图中没有显示高4位计数
16、器计到9,故看不到count的进位信号。 图2.5 两位十进制计数器工作波形如果本设计电路的存盘文件名为erjsq.gdf ,按照实验一的方法将此项设计包装成一个元件存入库中以备后用,该电路对应的元件名是erjsq。2 频率计主结构电路的设计 根据频率计的测品原理,其频率计主体结构的电路设计如图2.6所示。方法同实验一节中全加器顶层文件的设置方法一样,即首先关闭原来的工程,再建立一个新的原理图编辑窗口,然后在原理图编辑窗口中调入图2.6中的所有元件,连接好后存盘(文件名可取 pli.bdf),最后为此建立一个工程。图2.6 两位十进制频率计顶层设计原理图文件在图2.6所示电路中,74374是8
17、位锁存器,74248是7段BCD译码器,它的7位输出可以直接与7段共阴极数码管相连,该图上方的74248显示的的是个位频率计数值,下方的74248显示的是十位频率计数值,erjsq是电路图2.1含有时钟使能的2位十进制计数器构成的元件。连接好电路后进行全程编译,接下来建立波形设置文件,频率计波形测试文件窗口如图2.7所示。图2.7 频率计波形设置窗口 最后单击仿真图表,得到如图2.8的两位十进制频率计测频仿真波形。图2.8两位十进制频率计测频仿真波形 由波形图可以清楚的了解电路的工作原理。F_IN是待测频率,设周期为620ns;CNT_EN是对待测频率脉冲计数允许信号,设周期为2s;CNT_E
18、N高电平时允许计数,低电平时禁止计数。由仿真波形显示,当CNT_EN为高电平时允许erjsq对F_IN计数,低电平时erjsq停止计数有锁存信号LOCK发出的脉冲,将erjsq中的两个4位二进制数“26”锁存进74374中,并且74374分高低位通过总线H6.0和L6.0输出给74248译玛输出显示。这就是测得的频率值。十进制显示值“26”的7段译玛值分别是“1111101”和“1011011”。此后由清零信号CLR对计数器erjsq清零,以备下一周期计数之用。进位信号COUT是留待频率计扩展用的。在实际测频中,CNT_EN是待测控制信号,如果其频率选定为0.5Hz,则其允许的计数的脉宽为1s
19、,这样,数码管就能直接显示F_IN的值了。3 时序控制电路设计为实现频率计自动测频,还需增加一个测频时序控制电路,产生时序关系。输出三个控制信号:CNT_EN、LOCK和CLR,以便使频率计顺利的完成计数、锁存和清领三个重要功能,其电路设计如图2.9所示。图2.9时序控制电路原理图该电路由三个部分组成,4位二进制计数器7493、4-16译玛器74154和两个由双与非门构成的RS触发器。图2.90所示电路的设计和验证流程同上,电路取名为sxkz.bdf,包装入库的元件名为sxkz。 在Quartus平台上利用原理图输入设计方法将图2.9时序控制电路设计完成后一定要存盘,存盘的路径是在F:plj这
20、个文件夹中,以便调用 ,然后进行全程编译,最后进行仿真,其仿真结果如图2.10所示。图2.10 时序控制电路仿真结果4 频率计顶层电路设计频率计顶层电路设计如图2.11所示。在电路中含新调入的元件sxkz,电路中只有两个输入信号:待测频率输入信号F_IN和测频控制时钟CLK。图2.11 频率计顶层电路原理图 在Quartus平台上利用原理图输入设计方法将图2.11频率计顶层电路设计完成后一定要存盘,存盘的路径在F:plj这个文件夹中,然后进行全程编译,最后进行仿真,其仿真结果如图2.12所示。图2.12 频率计工作时序波形 在波形图中F_IN周期620ns,测频控制信号CLK的周期取2s。这个结果与图2.8的结果完全一样。由该结果可知,测频计数中的计数值q3.0、q7.0随着F_IN脉冲的输入而不断发生变化,但由于74374的锁存功能,两个74248的输出测频结果L6.0和H6.0始终分别稳定在“1111101”和“1011011”上,在7段译码显示管上分别译码显示2和6。