
CS
Easy
这个作者很懒,什么都没留下…
展开
-
一步一步学做一个CPU——1,准备工作
一,准备工作 参考: 罗老板的计算机结构与组成课程 http://xgxy.cug.edu.cn/rjgcx/lzw/COD/ Machine Structures. Spring 2010, UC Berkeley http://www-inst.eecs.berkeley.edu/~cs61c/sp10/ 软件环境: Logisim仿真软件(需要JAVA虚拟机) http://ozark.hendrix.edu/~burch/logisim/ QuartusII 8.1 http:/原创 2011-04-10 01:26:00 · 4506 阅读 · 2 评论 -
一步一步学做一个CPU——11,用FPGA完成Proj3之遗留问题的说明
前面我们以尽量快的速度完成了Proj3的任务,但是还有一些问题遗留下来,这里我们就来讨论下这些问题。 1, Logisim与QuartusII的比较 前面已经提到,使用QuartusII进行数字电路设计,更多情况下使用的是硬件描述语言,硬件描述语言功能更加强大,标准更加规范,应用十分广泛。这里选择使用原理图的设计描述方式是为了让我们容易的从Logisim过渡过来。 从前面的内容来看,我们实验课上使用到的Logisim软件实现Proj3中CPU的设计所涉及到的操作,在QuartusII中对应的实现方式都原创 2011-04-13 23:57:00 · 3515 阅读 · 1 评论 -
一步一步学做一个CPU——9,用FPGA完成Proj3之数据存储器与程序存储实现
数据存储在RAM里,程序存储在ROM里,这是大家经常听到的,那么怎么设计一个存储数据的RAM和一个存储程序的ROM呢?这里我们就来亲手试验一下。 有一点要说明的QuartusII中提供的ROM和Logisim中提供的ROM模块有一点点不同,他们相差一根时钟线,虽然只有这一点不同,但却是很重要的一点,这就涉及到了一个组合逻辑实现的ROM与时序逻辑实现的ROM的区别。 这里给出了QuartusII中的两种实现方式,一种是用库中提供的模块,另一种是组合逻辑的实现方式,关于两者的不同究竟会产生怎样的影响,后面我原创 2011-04-13 01:05:00 · 3115 阅读 · 0 评论 -
一步一步学做一个CPU——7,用FPGA完成Proj3之寄存器文件实现
书接上回…… 第四步:制作一个寄存器组(也称寄存器文件)模块(组件)。 1,输入与输出 根据前面设计总揽中得到的模块间的关系,设计出输入输出端口,包括rs,rt,rw,另外是rsBus,rtBus,当然还有使能控制,时钟,reset等。 2,寄存器 作为第一小步你可以先放四个寄存器,然后做出一个输出,即可选择四个寄存器中的任意一个的值输出。 注意:用MegaWizard生成模块文件的时候,别忘了加一个后缀,因为这里都是子模块设计,后面要应用到顶层设计中去,为避免各个子模块设计中引入的标准模块原创 2011-04-11 19:13:00 · 3057 阅读 · 0 评论 -
一步一步学做一个CPU——10,用FPGA完成Proj3之控制逻辑实现
1,再次推荐使用库 在设计中,推荐大家使用库中的模块,因为库中的模块都是经过精心设计验证好的电路,并在长期的设计实践中反复验证的成熟方案,另外还有可能经过了专门的优化。 比如下面我们将用到一个比较典型的模块——选择器,选择器的一个比较典型的应用是根据已知逻辑关系,通过选择通路数据得出电路,就是说如果知道真值表的话,选择的通路设定为常量,选择开关为输入的逻辑值,通过这种类似解码的电路结构很容易的实现组合逻辑的功能,并且在程序、电路结构上有很好的可读性,结构也很清晰。 在下面控制逻辑开关表中,我们就使用了原创 2011-04-13 04:04:00 · 2889 阅读 · 0 评论 -
一步一步学做一个CPU——6,用FPGA完成Proj3之设计总揽
至此,我们要真正开始CPU设计了,前面的内容是给不熟悉QuartusII的同学热身用的。这里都是假定同学们已经熟悉了QuartusII基本操作,会使用原理图设计方法设计电路,并且会使用MegaWizard添加标准模块,会分层设计电路。 需要说明的是,我们选择使用原理图的设计方法,是考虑与罗老板的课件相结合,能够对照Logisim的操作,使同学们在学会使用Logisim软件仿真设计出一个CPU后,平滑的过度过来。另外原理图的设计更加直观一点,更容易入门。当然由于实际设计中主流的方式还是使用硬件设计语言,推荐原创 2011-04-11 18:20:00 · 3839 阅读 · 0 评论 -
一步一步学做一个CPU——4,使用库中模块设计费波拉斯数计算器
1, 使用MegaWizard添加一个RAM模块。 RAM模块属于原理图设计中一个较为复杂的模块,并非如一个简单的二输入与门那样直接添加就可以了,还有一些参数需要配置和设定。在QuartusII中添加一个类似RAM的复杂模块需要用到MegaWizard,通过使用MegaWizard添加一个RAM模块,可以了解如何用MegaWizard为库提供的模块配置参数。 依然是使用Symbol tool打开添加模块对话框,MagaWizard的模块多数在megafunctions目录下,我们使用的是megafunc原创 2011-04-10 21:23:00 · 4824 阅读 · 1 评论 -
一步一步学做一个CPU——3,用QuartusII通过原理图完成与门电路设计
打开QuartusII软件,程序主界面如下: 1, 新建一个工程 点击File——>New Project Wizard,打开创建新工程向导,这里你将完成工程的基本设定选项。 1, Project name and directory——工程的名称与目录 2, Name of the top-level design entity——顶层设计实体的名称 3, Project files and libraries——项目文件与库 4, Target device family and原创 2011-04-10 21:19:00 · 12483 阅读 · 1 评论 -
一步一步学做一个CPU——2,Logisim的简单入门
Logisim的简单入门 先来以一个与门电路的实验,来看一下基本的操作,在Logisim中一个与门电路生成过程如下: 1.按与门的选择按钮,添加一个与门到电路中。 2.使用按钮添加一个输入引脚,用于设置输入电平。 3.添加一个引脚,通过属性中设置Pin的属性为输出: 这样得到一个输出引脚。 4.移动以上添加的元素,得到原理图: 注意选中按钮,此时可以拖拽连线,那么我们把电路各部分连接如下: 5. 接下来通过选中按钮就可以鼠标点击设定输入管脚上的电平为1或0了,输出引脚也会相应改变原创 2011-04-10 01:33:00 · 16149 阅读 · 3 评论 -
一步一步学做一个CPU——8,用FPGA完成Proj3之ALU与PC寄存器实现
书接上回…… 第四步:制作一个ALU 输入输出端口 ALU的输入输出相对简单,输入是两个操作数和一个操作符,输出是计算结果。 各运算单元 为了节省片上资源,加减法器使用一个,用一根选择线控制加或减,逻辑左右移位也是用一根选择线控制左右移。 数据通路选择 上面的各运算单元是并行工作的,对于输入的两个操作数,几个运算单元都会计算结果,至于输出哪一个,要通过后面的数据选择器来控制了。选择器的选择开关接的是操作符,这样输出结果就是操作数对应的操作运算得到的的结果了。 第五步:制作原创 2011-04-12 23:29:00 · 2967 阅读 · 0 评论