如何使用logisim文档格式.doc

上传人:b****9 文档编号:13022895 上传时间:2022-10-02 格式:DOC 页数:35 大小:1.19MB
下载 相关 举报
如何使用logisim文档格式.doc_第1页
第1页 / 共35页
如何使用logisim文档格式.doc_第2页
第2页 / 共35页
如何使用logisim文档格式.doc_第3页
第3页 / 共35页
如何使用logisim文档格式.doc_第4页
第4页 / 共35页
如何使用logisim文档格式.doc_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

如何使用logisim文档格式.doc

《如何使用logisim文档格式.doc》由会员分享,可在线阅读,更多相关《如何使用logisim文档格式.doc(35页珍藏版)》请在冰豆网上搜索。

如何使用logisim文档格式.doc

硬件环境:

PC机withWindowsXP

DE2开发板(DE2DevelopmentandEducationBoardUserManual)

参考书:

Computer.Organization.and.Design

关于QuartusII的使用教程

先来以一个与门电路的实验,来看一下基本的操作,在Logisim中一个与门电路生成过程如下:

1.按与门的选择按钮,添加一个与门到电路中。

2.使用按钮添加一个输入引脚,用于设置输入电平。

3.添加一个引脚,通过属性中设置Pin的属性为输出:

这样得到一个输出引脚。

4.移动以上添加的元素,得到原理图:

注意选中按钮,此时可以拖拽连线,那么我们把电路各部分连接如下:

5.接下来通过选中按钮就可以鼠标点击设定输入管脚上的电平为1或0了,输出引脚也会相应改变,输出结果。

当然通过左下方的属性设定,还可以设定当前选择元件的朝向,数据位数,输入端口数等参数。

6.另外推荐大家后面设计的时候使用一下tunnel这个工具,代替复杂的连线,在后面复杂设计的地方,让你从蜘蛛网一样的连线中解脱出来,例如上面的电路可以这样表示:

图中输入,与门模块,输出三部分结构分的很清晰,tunnel的使用使我们的电路设计更加规范,类似logisim中的tunnel工具在其他原理图工具中类似的工具是经常见到的,虽然名字会有不同,用途是一样的。

7.最后是子电路添加方法,选择Project--->

AddCircuit…,如下图“:

子电路的绘制与上面基本相同,注意的是输入输出引脚要连接Pin引脚,并设定好输入输出属性。

右击子电路选择EditCircuitAppearance可以调整子电路的外观,通过拖拽将外观调整好,后面加到上层电路设计中的时候就不会显得布线拥挤了。

显然上面的要比下面的元件效果好一些。

以上描述的这些技巧与绘制规范整齐的原理图是关系密切的,后面实际应用中设计复杂电路时会突出显现出来。

 

几个关键的地方:

1,请尽量使用标准模块,如果需要建立自己的模块,请学习标准模块的设计风格。

2,请合理划分层次,清楚定义输入输出端口,尽量使定义的风格和规范保持一致。

3,请使用网络标识代替直接连线,会使你的原理图更加清晰易读。

4,为每个模块设计测试用例,用于测试和说明其使用方法。

5,这里用的软件比罗老板课上用的版本高一点,操作有细微差别。

打开QuartusII软件,程序主界面如下:

1,新建一个工程

点击File——>

NewProjectWizard,打开创建新工程向导,这里你将完成工程的基本设定选项。

1,Projectnameanddirectory——工程的名称与目录

2,Nameofthetop-leveldesignentity——顶层设计实体的名称

3,Projectfilesandlibraries——项目文件与库

4,Targetdevicefamilyanddevice——目标设备的族类

5,EDAtoolsettings——EDA工具设定

这里一般设定好工程名称和目录,顶层设计实体名称以及目标设备族类就可以了,其他的暂时直接使用默认项就可以了。

2,新建一个设计文件

通过点击File——>

New打开新建文件选择框,由于我们这里使用原理图描述实现的,则文件类型选择DesignFiles——>

BlockDiagram/SchematicFile,就新建了一个原理图文件,将其保存起来,注意命名要跟前面设置的顶层设计实体名称相同。

3,编写设计文件

接下来开始在文件中绘制原理图,这里首先完成与门的添加,点击左侧工具栏中的SymbolTool按钮,打开Symbol选择框,选择primitives——>

logic——>

and2,点击OK后即可在原理图中添加一个2输入的与门了。

在同样通过SymbolTool中的加入和primitives——>

pin——>

output加入输入和输出引脚,然后在原理图中把他们用OrthogonalNodeTool即导线连接起来,双击输入输出引脚,为他们设定好名字,pinA,pinB,pinC,就完成了原理图中的设计。

4,编译(分析综合)

点击Processing——>

Start——>

StartAnalysis&

Synthesis,进行分析综合,就好像是对程序进行编译,等待片刻,如果没有错误,编译报告会输出出来。

5,配置管脚

接下来配置管脚,就是设定刚才加入的输入输出管脚与实验板上FPGA芯片外部引脚之间的对应关系,设定好这个,我们设计的与门电路才能通过FPGA外部引脚与实验板上的其他设备连接起来,我们才好观察到电路的设计效果。

点击Assignment——>

Pins,打开PinPlanner设定框,这里查看实验板的说明文件,我们使用两个拨动开关来连接输入引脚,用一个led灯来连接输出引脚,对照说明中的表格,为pinA,pinB,pinC分配PIN_N25,PIN_N26和PIN_AE23,设定好后点击Assignment——>

Device进入设定框,点击DeviceandPinOptions按钮,在DeviceandPinOption框中的UnusedPins标签下将Reserveallunusedpins设定为Asoutputdrivingground。

因为我们的设计最终会以电路的表达形式工作,错误的设计极其容易导致实验板的损坏。

6,下载程序

当然我们实际设计中可能会用到波形仿真工具进行验证,进行时间分析验证,甚至要设定布局布线等工作,反复迭代修正,才能完成一个复杂电路的设计,不过这里这个与门的demo很简单,完成以上设计工作后,可以开始编译了,点击Processing——>

StartCompilation开始吧。

如果没有错误,输出编译报告,就可以准备下载到实验板上去了。

点击Tool——>

Programmer,打开下载工具。

这里我们选择使用JTAG的下载方式,注意先给实验板上电,点击Start开始,等待片刻,走完下载进度条,下载完成。

7,完成

现在你可以在实验板上通过SW0和SW1来设定与门的输入了,实验板上的LEDR0相应的亮或者灭。

我们实现的与门在哪呢?

就在你面前实验板的芯片中,实际上实验板的芯片中有很多电路单元,通过我们的编程选择我们需要的电路单元用连线连接起来,在通过配置引脚连接到FPGA芯片的外部引脚上,FPGA是焊接在PCB板上的,PCB板上的铜线把FPGA引脚与外部设备比如开关,发光二极管等连接起来,我们的电路就真正的连接到了这个系统当中了。

他们之间的连接关系在图中表示出来。

8,总结

经过了这么多繁杂的步骤,我们仅仅完成的是一个简单的与门电路,好在通过这个过程我们只是了解一下FPGA设计的基本过程与简单操作,熟悉了这个流程,以上步骤还是很清楚的,而且实现一个复杂的设计也基本是沿这个过程走的。

后面我们用FPGA实现一个CPU也可以这样下载到FPGA芯片当中,这可是一个真正的电路,真正工作的CPU,麻雀虽小五脏俱全,不再是仅仅在电脑上仿真了,你必然会满心欢喜。

而且实际中,这样的设计(当然还有一些其他的工作要做),是能够送到工厂中去生产真正的ASIC专用电路,也就是真正的,我们能摸到能使用的CPU,会有这样的一天。

1,使用MegaWizard添加一个RAM模块。

RAM模块属于原理图设计中一个较为复杂的模块,并非如一个简单的二输入与门那样直接添加就可以了,还有一些参数需要配置和设定。

在QuartusII中添加一个类似RAM的复杂模块需要用到MegaWizard,通过使用MegaWizard添加一个RAM模块,可以了解如何用MegaWizard为库提供的模块配置参数。

依然是使用Symboltool打开添加模块对话框,MagaWizard的模块多数在megafunctions目录下,我们使用的是megafunctions——>

storage——>

lpm_ram_dq,勾选上LaunchMegaWizardPlug-In,OK,打开MegaWizardPlug-InManager,选择为库文件生成的文件类型,有AHDL语言,VHDL语言和VerilogHDL语言三种选择,根据需要和自己对他们的熟悉程度选择,设定为其生成的目录文件,建议生成到工程所在目录下,并在其名称基础上加上些有意义的后缀。

接下来是关于模块具体参数的设定,不同的模块会有所不同,这里请先按照图中的配置方式选择,使用8位容量32个字的RAM,不带有输出口寄存功能。

为了让RAM有一个初始值,我们要为其写个初始化数据文件,下面选中Yes,usethisfileforthememorycontentdata,并设定好文件路径名称。

下一步是生成文件的清单,最后Finish将生成模块添加到设计文件中。

2,添加总线与提取总线上一位数据的方法。

以上是通过MegaWizard添加模块的方法,用相同的方法,我们可以添加lpm_add_sub模块。

本例中涉及到的就是以上两种模块,通过联系和实践,可以测试试验一下其他的模块。

接下来添加输入输出引脚,这个前面介绍过,这里有点不同的是,输出引脚是8位的,这个在命名的时候后面加上[7..0]就表示是个8位的输出,例如fib_res[7..0],如果要用到其中一位就是名字加上下方括号跟标号,例如fib_res[5]。

3,用手动按钮作为时钟信号测试。

实验板上的时钟太快了,不利于我们观察,那就用仿真时学的办法,加一个输入按钮,模拟时钟,按一下,时钟跳一下,于是加了一个输入引脚,用于连接实验板上的按钮开关。

输入引脚后面要加一个非门,因为实验板上松开按钮时候输入是高电平,所以用一个非门也就是反相器来取反向。

需要指出的是,用手动按钮做时钟信号来测试是一个权宜的方法,实际的设计中是不推荐的,包括组合电路的输出用做时钟信号都是不好的设计习惯,因为时序电路工作的时钟要求波形稳定,组合逻辑电路中产生波形的毛刺对其工作影响较大,造成错误的数据或不可预测的结果。

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