首页 > 范文大全 > 正文

基于FPGA的开放式CPU实验平台的软件设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于FPGA的开放式CPU实验平台的软件设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:cpu作为计算机的灵魂,在计算机系统中起着无可替代的作用。软核CPU设计自然也是相关开放式实验平台的重要环节,本文深入研究室FPGA逻辑设计的原理和方法,通过自顶向下和模块化的设计思想,对实验平台CPU进行了合理地划分,用verilog hdl 语言设计描述出各个逻辑功能模块。通过sopc仿真与硬件测试,最终实现了完整的CPU功能,达到了预期的设计目标。

关键词:开放式实验平台 FPGA 软核CPU

中图分类号:TP332 文献标识码:A 文章编号:1007-9416(2015)04-0167-01

CPU是一个计算机的灵魂,自1971年世界上第一款单芯片微处理器4004诞生已经超过40年,使用“日新月异”来形容这几十年时间里处理器的发展进化亦不为过,无论是速度、集成度、还是架构等许多方面都有了前人难以想象的变化。这样一个高科技工业,是大多数人无法轻易涉足的领域,所以大家对处理器的印象也就停留在――一块小芯片,很多管脚上,至于里面是如何工作的,就不甚了解了。而现实中这些“灵魂”一色都是外国设计的,假如某人说某个CPU是中国设计的,你也未必相信,回答恐怕也是“山寨”或者仿造。

试想,在基础上都无法与他人做到并驾齐驱,是无法去谈如何超越别人!我们连计算机基本的运行过程都说不清楚,根本就无法奢谈去写出多么好的软件,制作出多么完善的系统,发明出多么激动人心的电子产品。在此,我可以负责任地说――不亲自设计CPU的人,很难领会到计算机的真谛。这个实验平台可以说是一个具备“可拓展性”和“开放性”的设计。

1 总体设计

本项目设计的CPU命名为OpenMIPS(该命名既体现了MIPS架构开源的特点,又体现了本开放性学生实验平台的开放性特征) 。具有哈佛结构的32位标量处理器,兼容MIPS32 Release1指令集架构,使用现有MIPS的编译环境。具体设计设想如下:

(1)五级整数流水线,分别为取指、译码、执行、访存、回写;(2)哈佛结构,程序指令存储和数据存储分开的存储器结构;(3)32个32位整数寄存器;(4)大端模式;(5)采取向量化的异常处理,预计支持精确的异常处理;(6)6个外部中断;(7)能够实现单周期乘法;(8)支持延迟转移;(9)兼容MIPS32架构,预计兼容所有整数指令;(10)大多数指令在一个周期内完成。

2 模块设计

在数字系统中,用来描述流水线最佳的方式就是状态机,所谓状态机,可以认为是一系列的D触发器外加各种连接而成的模型。

(1)PC模块:该模块的主要作用是给出指令的地址。(2)IF/ID模块:这个模块只有一个时钟,简单地在上升沿的时候将取址阶段的结果传递到译码阶段。(3)Regfile模块:该模块实现32个32为通用整数寄存器,同时进行2个寄存器的读操作和一个寄存器的写操作。注意,读寄存器是组合电路,如果读取的地址发生了变化,那么需要立即给予新的寄存器地址,二写寄存器是时序逻辑电路,必须发生在一个时钟上升沿。(4)ID模块:这里是译码阶段,得到应有的类型、子类型,源操作数1、源操作数2、写入寄存器信息等等。该阶段也是比较重要的一个阶段,需要做一点说明:所谓译码,具体实现起来分三个步骤:首先,判断26-31bit是否为对应的宏定义(6’b001101),如果是,表明进行的是ori运算;接下来要进行逻辑上的细化,判断上一模块两个寄存器两个读端口来使用情况。(5)ID/EX模块:该模块的作用是将上一个模块得到的类型、子类型,源操作数1、源操作数2、写入寄存器信息传递到下一个EX模块去执行。这里只是一个简单的时序电路,在每个时钟信号的上升沿将译码阶段的信息传递到执行阶段。(6)EX模块:本模块为执行阶段。(7)EX/MEM模块:该模块将运算结果输出到访存阶段,同样也仅仅是一个时序电路。(8)MEM模块:该模块就是一个组合逻辑电路,将输入执行结果直接输出。(9)MEM/WB模块:该模块与MEM模块的代码很相似,但是该模块是一个时序电路,需要在时钟的上升沿时触发。

3 SOPC设计

3.1 顶层模块

构建顶层模块的作用是将上述模块全部进行例化和连接。我们发现,这个SOPC系统和我们的最终的形态相比,是有很大的差距的,至少在接口上就少了许多,这些接口会随着指令集的增加而逐步增加。

3.2 指令存储器ROM

为了开始验证工作,我们还的为顶层模块配置一个只读的ROM,使得我们的OpenMIPS处理器能够从中读取指令。

4 测试程序与系统仿真

这几句代码其实是差不多的意思,我们观察流水线的时候可以观察其中一条也可以放在一起观察,这里为了直观,我们采取观察其中一条指令的执行流程(注:$S0在几乎所有的处理器当中,一般用来表示常量0,这里也不例外)。当然,这些指令是不能够直接运行的代码,我们还没有经过编译,但是这里我们还没有编译环境,我们先对照前面提到的指令格式来手动编译一下:

5 结语

基于EDA技术的开放式CPU实验平台的软件设计,充分采用EDA技术进行开发所使用的自顶向下和模块化的开发思想。对设计平台的所使用的开放式CPU进行了合理的功能划分,并利用现成的MIPS32架构,缩短了开发周期并取得了良好的效果。

参考文献

[1](美)Arnold S.Berger,吴为民,喻文健,邓澍军,伍绍贺 译.计算机硬件及组成原理[M].机械工业出版社,2007.

[2]李明刚.64位MPIS微处理器的模块设计和fpga验证[D].合肥:合肥工业大学电子系,2005.

[3]张晨曦,王志英,张春元,戴葵,肖晓强.计算机体系结构(第二版)[M].北京:高等教育出版社,2005.