1、硬件环境:PC机with Windows XPDE2开发板(DE2 Development and Education Board User Manual)参考书:Computer.Organization.and.Design关于QuartusII的使用教程先来以一个与门电路的实验,来看一下基本的操作,在Logisim中一个与门电路生成过程如下:1.按与门的选择按钮,添加一个与门到电路中。2.使用按钮添加一个输入引脚,用于设置输入电平。3.添加一个引脚,通过属性中设置Pin的属性为输出:这样得到一个输出引脚。4.移动以上添加的元素,得到原理图:注意选中按钮,此时可以拖拽连线,那么我们把电路各
2、部分连接如下:5. 接下来通过选中按钮就可以鼠标点击设定输入管脚上的电平为1或0了,输出引脚也会相应改变,输出结果。当然通过左下方的属性设定,还可以设定当前选择元件的朝向,数据位数,输入端口数等参数。6.另外推荐大家后面设计的时候使用一下tunnel这个工具,代替复杂的连线,在后面复杂设计的地方,让你从蜘蛛网一样的连线中解脱出来,例如上面的电路可以这样表示:图中输入,与门模块,输出三部分结构分的很清晰,tunnel的使用使我们的电路设计更加规范,类似logisim中的tunnel工具在其他原理图工具中类似的工具是经常见到的,虽然名字会有不同,用途是一样的。7.最后是子电路添加方法,选择Proj
3、ect-Add Circuit,如下图“:子电路的绘制与上面基本相同,注意的是输入输出引脚要连接Pin引脚,并设定好输入输出属性。右击子电路选择Edit Circuit Appearance可以调整子电路的外观,通过拖拽将外观调整好,后面加到上层电路设计中的时候就不会显得布线拥挤了。显然上面的要比下面的元件效果好一些。以上描述的这些技巧与绘制规范整齐的原理图是关系密切的,后面实际应用中设计复杂电路时会突出显现出来。几个关键的地方:1,请尽量使用标准模块,如果需要建立自己的模块,请学习标准模块的设计风格。2,请合理划分层次,清楚定义输入输出端口,尽量使定义的风格和规范保持一致。3,请使用网络标识
4、代替直接连线,会使你的原理图更加清晰易读。4,为每个模块设计测试用例,用于测试和说明其使用方法。5,这里用的软件比罗老板课上用的版本高一点,操作有细微差别。打开QuartusII软件,程序主界面如下:1, 新建一个工程点击FileNew Project Wizard,打开创建新工程向导,这里你将完成工程的基本设定选项。1, Project name and directory工程的名称与目录2, Name of the top-level design entity顶层设计实体的名称3, Project files and libraries项目文件与库4, Target device fam
5、ily and device目标设备的族类5, EDA tool settingsEDA工具设定这里一般设定好工程名称和目录,顶层设计实体名称以及目标设备族类就可以了,其他的暂时直接使用默认项就可以了。2, 新建一个设计文件通过点击FileNew打开新建文件选择框,由于我们这里使用原理图描述实现的,则文件类型选择Design FilesBlock Diagram/Schematic File,就新建了一个原理图文件,将其保存起来,注意命名要跟前面设置的顶层设计实体名称相同。3, 编写设计文件接下来开始在文件中绘制原理图,这里首先完成与门的添加,点击左侧工具栏中的Symbol Tool按钮,打开
6、Symbol选择框,选择primitiveslogicand2,点击OK后即可在原理图中添加一个2输入的与门了。在同样通过Symbol Tool中的加入和primitivespinoutput加入输入和输出引脚,然后在原理图中把他们用Orthogonal Node Tool即导线连接起来,双击输入输出引脚,为他们设定好名字,pinA,pinB,pinC,就完成了原理图中的设计。4, 编译(分析综合)点击ProcessingStartStart Analysis & Synthesis,进行分析综合,就好像是对程序进行编译,等待片刻,如果没有错误,编译报告会输出出来。5, 配置管脚接下来配置管脚
7、,就是设定刚才加入的输入输出管脚与实验板上FPGA芯片外部引脚之间的对应关系,设定好这个,我们设计的与门电路才能通过FPGA外部引脚与实验板上的其他设备连接起来,我们才好观察到电路的设计效果。点击AssignmentPins,打开Pin Planner设定框,这里查看实验板的说明文件,我们使用两个拨动开关来连接输入引脚,用一个led灯来连接输出引脚,对照说明中的表格,为pinA,pinB,pinC分配PIN_N25,PIN_N26和PIN_AE23,设定好后点击AssignmentDevice进入设定框,点击Device and Pin Options按钮,在Device and Pin Op
8、tion框中的Unused Pins标签下将Reserve all unused pins设定为As output drivingground。因为我们的设计最终会以电路的表达形式工作,错误的设计极其容易导致实验板的损坏。6, 下载程序当然我们实际设计中可能会用到波形仿真工具进行验证,进行时间分析验证,甚至要设定布局布线等工作,反复迭代修正,才能完成一个复杂电路的设计,不过这里这个与门的demo很简单,完成以上设计工作后,可以开始编译了,点击ProcessingStart Compilation开始吧。如果没有错误,输出编译报告,就可以准备下载到实验板上去了。点击ToolProgrammer,
9、打开下载工具。这里我们选择使用JTAG的下载方式,注意先给实验板上电,点击Start开始,等待片刻,走完下载进度条,下载完成。7, 完成现在你可以在实验板上通过SW0和SW1来设定与门的输入了,实验板上的LEDR0相应的亮或者灭。我们实现的与门在哪呢?就在你面前实验板的芯片中,实际上实验板的芯片中有很多电路单元,通过我们的编程选择我们需要的电路单元用连线连接起来,在通过配置引脚连接到FPGA芯片的外部引脚上,FPGA是焊接在PCB板上的,PCB板上的铜线把FPGA引脚与外部设备比如开关,发光二极管等连接起来,我们的电路就真正的连接到了这个系统当中了。他们之间的连接关系在图中表示出来。8,总结经
10、过了这么多繁杂的步骤,我们仅仅完成的是一个简单的与门电路,好在通过这个过程我们只是了解一下FPGA设计的基本过程与简单操作,熟悉了这个流程,以上步骤还是很清楚的,而且实现一个复杂的设计也基本是沿这个过程走的。后面我们用FPGA实现一个CPU也可以这样下载到FPGA芯片当中,这可是一个真正的电路,真正工作的CPU,麻雀虽小五脏俱全,不再是仅仅在电脑上仿真了,你必然会满心欢喜。而且实际中,这样的设计(当然还有一些其他的工作要做),是能够送到工厂中去生产真正的ASIC专用电路,也就是真正的,我们能摸到能使用的CPU,会有这样的一天。1, 使用MegaWizard添加一个RAM模块。RAM模块属于原理
11、图设计中一个较为复杂的模块,并非如一个简单的二输入与门那样直接添加就可以了,还有一些参数需要配置和设定。在QuartusII中添加一个类似RAM的复杂模块需要用到MegaWizard,通过使用MegaWizard添加一个RAM模块,可以了解如何用MegaWizard为库提供的模块配置参数。依然是使用Symbol tool打开添加模块对话框,MagaWizard的模块多数在megafunctions目录下,我们使用的是megafunctionsstoragelpm_ram_dq,勾选上Launch MegaWizard Plug-In,OK,打开MegaWizard Plug-In Manage
12、r,选择为库文件生成的文件类型,有AHDL语言,VHDL语言和Verilog HDL语言三种选择,根据需要和自己对他们的熟悉程度选择,设定为其生成的目录文件,建议生成到工程所在目录下,并在其名称基础上加上些有意义的后缀。接下来是关于模块具体参数的设定,不同的模块会有所不同,这里请先按照图中的配置方式选择,使用8位容量32个字的RAM,不带有输出口寄存功能。为了让RAM有一个初始值,我们要为其写个初始化数据文件,下面选中Yes, use this file for the memory content data,并设定好文件路径名称。下一步是生成文件的清单,最后Finish将生成模块添加到设计文
13、件中。2,添加总线与提取总线上一位数据的方法。以上是通过MegaWizard添加模块的方法,用相同的方法,我们可以添加lpm_add_sub模块。本例中涉及到的就是以上两种模块,通过联系和实践,可以测试试验一下其他的模块。接下来添加输入输出引脚,这个前面介绍过,这里有点不同的是,输出引脚是8位的,这个在命名的时候后面加上7.0就表示是个8位的输出,例如fib_res7.0,如果要用到其中一位就是名字加上下方括号跟标号,例如fib_res5。3,用手动按钮作为时钟信号测试。实验板上的时钟太快了,不利于我们观察,那就用仿真时学的办法,加一个输入按钮,模拟时钟,按一下,时钟跳一下,于是加了一个输入引
14、脚,用于连接实验板上的按钮开关。输入引脚后面要加一个非门,因为实验板上松开按钮时候输入是高电平,所以用一个非门也就是反相器来取反向。需要指出的是,用手动按钮做时钟信号来测试是一个权宜的方法,实际的设计中是不推荐的,包括组合电路的输出用做时钟信号都是不好的设计习惯,因为时序电路工作的时钟要求波形稳定,组合逻辑电路中产生波形的毛刺对其工作影响较大,造成错误的数据或不可预测的结果。4,常量的加入。由于加入的ram模块至少含有32个字的存储,只需用到其中一个,地址线置零就可以了,每次时钟来临都进行写入操作,那么写入使能始终设为Enable。那么这些常量该怎么设定呢?在原理图设计中,有GND和VCC两个常量,分别代表逻辑1和逻辑0,将他们引入到电路中就可以了,多位数据合并到一条总线上是将各位数据用逗号隔开,添加到总线命名中。5,让你的电路更加清晰。前面介绍到,当电路规模愈加复杂时,将各模块直接连接到一起会严重影响其清晰美观,那么推荐的方式是采用网络标识的形式,也可以为GND,VCC添加一个网络标识,把他们改名为b1和b0如图,那么内存地址我们可以写为b0 ,b0, b0, b0,b0。再把上图整理一下,看看效果是否好一点了。6,初始化R
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1