当前位置: 首页 > 专利查询>复旦大学专利>正文

基于FPGA的8位复杂指令集中央处理器制造技术

技术编号:8190944 阅读:290 留言:0更新日期:2013-01-10 01:51
本发明专利技术属FPGA嵌入式系统技术领域,具体为一种基于FPGA的8位复杂指令集中央处理器。系统整个CPU核由以下基本部件组成:寄存器组、时序控制模块、数据通路模块;系统主时钟由片外晶振统一提供,后续模块所需的同步时钟也由该时钟经过分频、相移给出;时序控制模块负责对IP核的各子模块进行时序控制,确保读写数据不发生冲突;寄存器组对读、写数据进行暂存;数据通路模块负责硬件模块间数据流的走向控制及基本的运算操作。本发明专利技术采用状态机对指令系统进行统一的描述,令数据流的走向明确、清晰;同时,本发明专利技术涵盖了一款编译器,逐条汇编指令通过仿真验证,为硬件系统准确接收二进制码流提供了保证。

【技术实现步骤摘要】

本专利技术属FPGA嵌入式系统
,具体涉及一种基于FPGA实现8位CISC CPU(复杂指令集中央处理器)。
技术介绍
伴随着集成电路,特别是超大规模集成电路(VLSI)技术工艺的飞速进步,FPGA/CPLD芯片得到了迅猛发展,并使电子技术的设计迈进了 SOPC时代,而各种IP核的设计、应用则是SOPC设计的重要特征。Altera公司推出了基于FPGA的通用CPU核NI0S,许多第二方的IC设计公司将现在广泛应用的各种CPU (如8031)的IP核推向市场。然而,利用硬件描述语言Verilog为基础的EDA设计方法,用户也可以自行设计面向应用的专用CPU核、构建适用的嵌入式系统,这对于降低成本、提高性价比、拥有独立知识产权的独创性设计意义重大。 许笛于2011年5月在《计算机与数字工程》上发表的“ 16位CISC CPU的FPGA设计”虽然也基于FPGA实现了 CISC CPU的设计,但是其未采用状态机的设计思想,整个指令系统的设计过程中数据流走向不明确。并且通篇未给出详细的仿真结果,对于各功能模块的时序及功能验证均不明确,没有很好地体现自顶向下的设计思想。
技术实现思路
本专利技术的目的在于提供一种基于FPGA实现的CISC CPU,旨在使IP资源复用理念得到更普通的应用,为基于FPGA的嵌入式系统设计提供广阔的思路。本专利技术采用自顶向下的设计方法,系统原理图如图I所示,整个CPU核由以下基本部件组成寄存器组(RAM和ROM)、时序控制模块、数据通路模块。系统主时钟由片外晶振统一提供,后续模块所需的同步时钟同样由该时钟经过分频、相移给出;时序控制模块负责对IP核的各子模块进行时序控制,确保读写数据不发生冲突;寄存器组(R0M&RAM)对读、写数据进行暂存;数据通路模块负责硬件模块间数据流的走向控制及基本的运算操作,该模块包含①算术逻辑单元(Arithmetic Logic Unit (ALU))、②指令寄存器(IR)、③程序计数器(PC)、④堆栈寄存器(SP)、⑤工作寄存器(0P)、12位数据总线data_bus、12位地址总线addr_bus。其中,算术逻辑单元(ALU)是CPU核的核心部件之一,它执行加减法等算术运算,也能执行“与”、“或”、“非”等逻辑运算;指令寄存器(IR)用来保存当前CPU正在执行的那条指令;程序计数器(PC)用以对下一条指令进行跟踪以便确定下一条指令在主存中的位置;堆栈寄存器(SP)用于确定堆栈中的操作数的地址;工作寄存器(OP)用以存储控制信息和数据信息,以减小RAM和ROM的消耗。数据通路模块的原理图如图2所示,假设在内存中的数据是最简单的原始数据。首先,指令指针(Instruction Pointer)通知CPU将要执行的指令放置在内存中的存储位置,之后指令译码器从指令寄存器IR中拿来指令,翻译成CPU可以执行的形式,然后决定完成该指令需要哪些必要的操作,它将告诉算术逻辑单元(ALU)什么时候计算、告诉指令读取器什么时候获取数值、告诉指令译码器什么时候翻译指令等等。假如数据被送往算术逻辑单元,数据将会执行指令中规定的算术运算和其他各种运算。当数据处理完毕后,将回到寄存器组中,通过不同的指令将数据继续运行或者通过数据总线(data_bus )送到数据缓存器中。本专利技术结合所设计的指令集,设计了简单的编译器,该编译器的主要任务是把汇编指令转换成计算机能够识别的二进制代码,从而完成简单的汇编程序的编译,这一举措的意义在于为用户提供便捷,用户只需输入汇编指令而无需关心底层繁琐的二进制数操作。因此,该编译器的设计不体现在最终CPU核的硬件结构中,但却扮演了前期指令转换的重要角色。程序流程图如图3所示。其中,(I)C语言编译器的编译过程是首先程序开辟出内存空间,用于存放编译后的二进制机器码。读入汇编源文件,确定汇编代码的行数。然后开始读取每一行代码,进行编译。(2)汇编代码编译的过程是,对源代码进行分解,如果第一个取出的是操作码,则去指令编译对照文件中,找出对应操作码的机器码;同时根据指令的格式选择相应的译码模式。如果取出的第一个不是操作码,而是标签的话,开辟专门的内存空间,则记录下每次出现的标签的位置信息。有两种情况可能会出现标签,一种是出现在操作码之前,一种则是操作码之后,作为跳转地址。两种情况都需要分别记录地址信息,便 于集中编译时插入到机器码中。本专利技术采用了状态机对指令系统进行统一的描述,图4给出了 CISC指令的状态图,该图包含了所设计的全部31条指令的执行情况 (I)首先是进行系统的复位,消除不确定状态,使系统变得可控。(2) SO状态执行从ROM中取指令的操作。(3)S1状态执行寄存器操作,如ADDACC,SHLACC, LDACC等,通过SEQUENCER模块对指令译码,发出相应的控制信号,主要由POPCORN模块来执行JUSH指令也是在SI状态完成,将指定寄存器中的内容进行压栈,该指令需访问RAM存储器。(4)S2状态执行立即数操作,如LDI,ADDACCI,CMPACCI等,参加运算的操作数由代码中得到,即从ROM中读取;Ρ0Ρ指令也是在S2状态完成,将栈顶的内容出栈,送到指定的寄存器,该指令在SI状态执行将SP指针减I操作。(5)S3状态执行分支指令操作,如JMP,JE, JNC等,跳转地址从ROM中得到,低8位地址在S2状态读入,高4位地址在S3状态读入,将跳转地址送到地址总线,CPU在下一个时钟周期跳到指定地址执行程序;RET指令也在S3状态完成,该指令在S2状态将已压栈的地址的高4位和标志寄存器出栈,送到相应寄存器,在S3状态将低8位地址出栈并锁存,将两次出栈得到的12位地址送到地址总线,CPU在下一个时钟周期返回到指定地址继续执行程序。(6) S4状态执行存储器操作,如LDM,STM,将指定寄存器的内容写到RAM中,或将RAM中的内容读到指定寄存器中。S2,S3状态得到将要访问的RAM地址,S4状态将地址送到地址总线,访问RAM,执行相应操作。(7) S5状态执行CALL指令,该指令在S2,S3状态读入跳转地址并锁存,S4状态访问RAM,将PC指针的低8位压栈,S5状态将高4位和标志寄存器的内容压栈,将跳转地址送到地址总线,执行跳转程序。本专利技术采用Mentor Graphics公司的Modelsim仿真工具对整个IP核数据通路(data_path)和以下各个功能模块进行了仿真 (1)寄存器堆的modeI sim功能仿真 (2)数据总线(data_bus)模块的modeI sim功能仿真 (3)addx_bus地址总线模块的功能仿真 (4)ALU算术逻辑单元的功能仿真 (5)顶层模块的RTL仿真验证 最后将示例程序下载到FPGA芯片中,对示例程序逐条语句进行调试,完成对CPU的硬件测试。本专利技术采用状态机对指令系统进行统一的描述,令数据流的走向明确、清晰;同时,本专利技术涵盖了一款编译器,逐条汇编指令通过仿真验证,为硬件系统准确接收二进制码流提供了保证。附图说明图I系统顶层模块。图2数据通 路示意图。图3程序流程图。图4指令状态图。图5操作时序图。图6编译器目录。图7寄存器堆的modelsim功能仿真图。图8数据通路模块的m本文档来自技高网...

【技术保护点】
基于FPGA的8位复杂指令集中央处理器,其特征在于:系统整个CPU核由以下基本部件组成:寄存器组、时序控制模块、数据通路模块;系统主时钟由片外晶振统一提供,后续模块所需的同步时钟也由该时钟经过分频、相移给出;所述时序控制模块负责对IP核的各子模块进行时序控制,确保读写数据不发生冲突;所述寄存器组对读、写数据进行暂存;所述数据通路模块负责硬件模块间数据流的走向控制及基本的运算操作,该数据通路模块包含①算术逻辑单元、②指令寄存器(IR)、③程序计数器、④堆栈寄存器、⑤工作寄存器、12位数据总线data_bus[11:0]、12位地址总线addr_bus[11:0];其中,算术逻辑单元执行加算术运算以及逻辑运算;指令寄存器用于保存当前CPU正在执行的那条指令;程序计数器用以对下一条指令进行跟踪以便确定下一条指令在主存中的位置;堆栈寄存器用于确定堆栈中的操作数的地址;工作寄存器用以存储控制信息和数据信息,以减小寄存器组的消耗。

【技术特征摘要】

【专利技术属性】
技术研发人员:任俊彦黄佳森叶凡李宁许俊李巍
申请(专利权)人:复旦大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1