一步一步学做一个CPU——6,用FPGA完成Proj3之设计总揽

至此,我们要真正开始CPU设计了,前面的内容是给不熟悉QuartusII的同学热身用的。这里都是假定同学们已经熟悉了QuartusII基本操作,会使用原理图设计方法设计电路,并且会使用MegaWizard添加标准模块,会分层设计电路。

需要说明的是,我们选择使用原理图的设计方法,是考虑与罗老板的课件相结合,能够对照Logisim的操作,使同学们在学会使用Logisim软件仿真设计出一个CPU后,平滑的过度过来。另外原理图的设计更加直观一点,更容易入门。当然由于实际设计中主流的方式还是使用硬件设计语言,推荐大家了解一下Verilog HDL,VHDL或System C等语言。

1,设计总揽

我们这里设计的是一个简单的16位处理器(即每个指令字长为16位,寄存器也是16位),该处理器有四个寄存器($r0到$r3)。具有独立的数据和指令内存(即有两个内存,一个指令内存,一个数据内存)。

需要注意的是由于器件的限制,也为了让事情更简单一些,我们以半字(16位)为单位对内存编址。这和MIPS 不同,MIPS指令是字长是32位,而内存是以字节(8位)为单位编址。

2,准备步骤

第一步:熟悉一下QuartusII的操作,这个在前面我们已经完成了,对应于Logisim中操作都介绍到了,后面完成Proj3所需要的技术也都具备了(当然,想深入的了解数字电路设计,可能需要更多),也就是说如果能够用Logisim完成Proj3,用QuartusII实现也不再话下。

第二步:做一下相关的实验,了解QuartusII下的一些模块和组件,如何建立简单模块,如何将简单模块构建到一起,成为复杂的模块,直至成为一个系统。MegaWizard中提供的是数字电路中常见的标准模块,我们的设计中要用到其中一些模块,所以熟悉他们,熟练应用是完成设计的前提。

3, 阅读ISA

第三步:阅读ISA

ISA(Instruction Set Architecture)是硬件设计师跟软件设计师之间的协议,他规定了硬件设计师设计的CPU所需要具备的功能,以及软件设计师所能够使用的CPU指令。

设计一个CPU首先要设计一个ISA,之后才是软硬件设计:软件设计师设计汇编器,编译器;硬件设计师设计CPU。我们需要的ISA在Proj3这里已经给出了,如下表:

clip_image002

clip_image004

通过查询 opcode字段(高四位,即15-12位)的值,可知半字编码所对应的指令。注意,表中的opcode不到16个,而funct也不到8个。原因是指令少一些,使同学们更容易实现(呵呵,好象比老师上课讲的CPU指令数还是多了很多)。

(如果需要更加细致的了解原理,请认真学习罗老板课件中关于单指令周期CPU设计的这几节课的内容。)

我们可以了解到需要实现的几个基本模块:

1, 指令指针寄存器PC

2, 指令存储器ROM

3, 寄存器文件

4, ALU

5, 内存单元

6, 控制逻辑单元

一个大体的CPU的结构图:

clip_image006

4,总结

从分析结果来看,我们需要的实现的几个模块都在图中表现出来了,他们之间的关系也基本如上图所示,更详细的说明请参考罗老板的课件吧。

我们要设计中可能用到的库中的模块有以下几种,寄存器模块,RAM,ROM,算术以及逻辑运算单元比如加法器,移位,与或门等。

当然还有前面我们讲到的数据选择器,这个会在Controller中用到,另外在每个单元模块前做数据选择也会用到。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值