CN102866982A - 基于fpga的8位复杂指令集中央处理器 - Google Patents

基于fpga的8位复杂指令集中央处理器 Download PDF

Info

Publication number
CN102866982A
CN102866982A CN2012103400149A CN201210340014A CN102866982A CN 102866982 A CN102866982 A CN 102866982A CN 2012103400149 A CN2012103400149 A CN 2012103400149A CN 201210340014 A CN201210340014 A CN 201210340014A CN 102866982 A CN102866982 A CN 102866982A
Authority
CN
China
Prior art keywords
instruction
state
register
data
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2012103400149A
Other languages
English (en)
Inventor
任俊彦
黄佳森
叶凡
李宁
许俊
李巍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fudan University
Original Assignee
Fudan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fudan University filed Critical Fudan University
Priority to CN2012103400149A priority Critical patent/CN102866982A/zh
Publication of CN102866982A publication Critical patent/CN102866982A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

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

Description

基于FPGA的8位复杂指令集中央处理器
技术领域
本发明属FPGA嵌入式系统技术领域,具体涉及一种基于FPGA实现8位CISC CPU(复杂指令集中央处理器)。
背景技术
伴随着集成电路,特别是超大规模集成电路(VLSI)技术工艺的飞速进步,FPGA/CPLD芯片得到了迅猛发展,并使电子技术的设计迈进了SOPC时代,而各种IP核的设计、应用则是SOPC设计的重要特征。Altera公司推出了基于FPGA的通用CPU核NIOS,许多第二方的IC设计公司将现在广泛应用的各种CPU(如8031)的IP核推向市场。然而,利用硬件描述语言Verilog为基础的EDA设计方法,用户也可以自行设计面向应用的专用CPU核、构建适用的嵌入式系统,这对于降低成本、提高性价比、拥有独立知识产权的独创性设计意义重大。
许笛于2011年5月在《计算机与数字工程》上发表的“16位CISC CPU的FPGA设计”虽然也基于FPGA实现了CISC CPU的设计,但是其未采用状态机的设计思想,整个指令系统的设计过程中数据流走向不明确。并且通篇未给出详细的仿真结果,对于各功能模块的时序及功能验证均不明确,没有很好地体现自顶向下的设计思想。
发明内容
本发明的目的在于提供一种基于FPGA实现的CISC CPU,旨在使IP资源复用理念得到更普通的应用,为基于FPGA的嵌入式系统设计提供广阔的思路。
本发明采用自顶向下的设计方法,系统原理图如图1所示,整个CPU核由以下基本部件组成:寄存器组(RAM 和ROM)、时序控制模块、数据通路模块。系统主时钟由片外晶振统一提供,后续模块所需的同步时钟同样由该时钟经过分频、相移给出;时序控制模块负责对IP核的各子模块进行时序控制,确保读写数据不发生冲突;寄存器组(ROM&RAM)对读、写数据进行暂存;数据通路模块负责硬件模块间数据流的走向控制及基本的运算操作,该模块包含①算术逻辑单元(Arithmetic Logic Unit(ALU))、②指令寄存器(IR)、③程序计数器(PC)、④堆栈寄存器(SP)、⑤工作寄存器(OP)、12位数据总线data_bus[11:0]、12位地址总线addr_bus[11:0]。其中,算术逻辑单元(ALU)是CPU核的核心部件之一,它执行加减法等算术运算,也能执行“与”、“或”、“非”等逻辑运算;指令寄存器(IR)用来保存当前CPU正在执行的那条指令;程序计数器(PC)用以对下一条指令进行跟踪以便确定下一条指令在主存中的位置;堆栈寄存器(SP)用于确定堆栈中的操作数的地址;工作寄存器(OP)用以存储控制信息和数据信息,以减小RAM和ROM的消耗。
数据通路模块的原理图如图2所示,假设在内存中的数据是最简单的原始数据。首先,指令指针(Instruction Pointer)通知CPU将要执行的指令放置在内存中的存储位置,之后指令译码器从指令寄存器IR中拿来指令,翻译成CPU可以执行的形式,然后决定完成该指令需要哪些必要的操作,它将告诉算术逻辑单元(ALU)什么时候计算、告诉指令读取器什么时候获取数值、告诉指令译码器什么时候翻译指令等等。 假如数据被送往算术逻辑单元,数据将会执行指令中规定的算术运算和其他各种运算。当数据处理完毕后,将回到寄存器组中,通过不同的指令将数据继续运行或者通过数据总线(data_bus[11:0])送到数据缓存器中。
本发明结合所设计的指令集,设计了简单的编译器,该编译器的主要任务是把汇编指令转换成计算机能够识别的二进制代码,从而完成简单的汇编程序的编译,这一举措的意义在于为用户提供便捷,用户只需输入汇编指令而无需关心底层繁琐的二进制数操作。因此,该编译器的设计不体现在最终CPU核的硬件结构中,但却扮演了前期指令转换的重要角色。程序流程图如图3所示。其中,(1)C语言编译器的编译过程是:首先程序开辟出内存空间,用于存放编译后的二进制机器码。读入汇编源文件,确定汇编代码的行数。然后开始读取每一行代码,进行编译。(2)汇编代码编译的过程是,对源代码进行分解,如果第一个取出的是操作码,则去指令编译对照文件中,找出对应操作码的机器码;同时根据指令的格式选择相应的译码模式。如果取出的第一个不是操作码,而是标签的话,开辟专门的内存空间,则记录下每次出现的标签的位置信息。有两种情况可能会出现标签,一种是出现在操作码之前,一种则是操作码之后,作为跳转地址。两种情况都需要分别记录地址信息,便于集中编译时插入到机器码中。
本发明采用了状态机对指令系统进行统一的描述,图4给出了CISC指令的状态图,该图包含了所设计的全部31条指令的执行情况:
(1)首先是进行系统的复位,消除不确定状态,使系统变得可控。
(2)S0状态执行从ROM中取指令的操作。
(3)S1状态执行寄存器操作,如ADDACC,SHLACC,LDACC等,通过SEQUENCER模块对指令译码,发出相应的控制信号,主要由POPCORN模块来执行;PUSH指令也是在S1状态完成,将指定寄存器中的内容进行压栈,该指令需访问RAM存储器。
(4)S2状态执行立即数操作,如LDI,ADDACCI,CMPACCI等,参加运算的操作数由代码中得到,即从ROM中读取;POP指令也是在S2状态完成,将栈顶的内容出栈,送到指定的寄存器,该指令在S1状态执行将SP指针减1操作。
(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)寄存器堆的modelsim功能仿真
(2)数据总线(data_bus)模块的modelsim功能仿真
(3)addx_bus地址总线模块的功能仿真
(4)ALU算术逻辑单元的功能仿真
(5)顶层模块的RTL仿真验证
最后将示例程序下载到FPGA芯片中,对示例程序逐条语句进行调试,完成对CPU的硬件测试。
本发明采用状态机对指令系统进行统一的描述,令数据流的走向明确、清晰;同时,本发明涵盖了一款编译器,逐条汇编指令通过仿真验证,为硬件系统准确接收二进制码流提供了保证。
附图说明
图1系统顶层模块。
图2 数据通路示意图。
图3 程序流程图。
图4 指令状态图。
图5 操作时序图。
图6 编译器目录。
图7 寄存器堆的modelsim功能仿真图。
图8 数据通路模块的modelsim功能仿真图。
图9 addx_bus地址总线模块的功能仿真图(1)。
图10 addx_bus地址总线模块的功能仿真图(2)。
图11 addx_bus地址总线模块全局仿真图(3)。
图12 操作数B控制模块b_bus[7:0]的功能仿真图。
图13 ALU算术逻辑单元的功能仿真图。
图14 flag标志位功能仿真图。
图15顶层模块的RTL仿真图。
图16 LDI指令时序图。
图17 实例分析。
具体实施方式
以下结合附图进一步描述本发明。
CPU执行指令的过程可以分为取指令、分析指令、执行指令3个步骤,每个步骤又由许多微操作组成,这些微操作必须在一个统一的时钟脉冲的控制下才能按照正确的时序执行。本发明的时钟脉冲由外围晶振产生,如图1所示,该时钟名为sys_clk,PC模块对sys_clk进行分频和相移,得到slow_clk,syn_clk,op_clk三个时钟:
(1)slow_clk为整个IP的系统时钟;
(2)syn_clk作为RAM和ROM的时钟,控制存储器的读写操作;
(3)op_clk时钟控制POPCORN模块中操作码的读入。
系统的复位信号为sys_rst。系统的复位操作可以描述为:POPCORN模块中堆栈指针寄存器reg_sp置全“1”,即指针指向栈顶,其它所有寄存器清零,所有寄存器的控制开关关断,选择PC的值作为寻址地址。
指令的执行时序可以描述为:当需要读入代码时,SEQUENCER模块在slow_clk的上升沿给ROM一个读信号,ROM在syn_clk的上升沿将代码送到总线,POPCORN在op_clk上升沿读入代码,SEQUENCER对指令进行译码,对各模块发出相应的控制信号。本发明利用Modelsim仿真工具对所设计的指令分别进行时序验证,以检验代码功能是否正确,此处以LDI指令的时序为例来进行详细描述,执行过程如下:
指令:LDI ACC #FFH
功能:将#FFH立即数存入ACC寄存器中,操作码和操作数都从ROM中读取。
时序分析:完成该指令需要三个机器周期,如图16所示。
1)复位:PC置为0,表示程序从地址0开始执行;
2)S0状态:取指令
①在slow_clk上升沿,rom_cs和mem_rd置“1”,ROM读信号和使能信号有效;
②在syn_clk上升沿,ROM将操作码输出到总线上;
③w_pc有效,在下一个slow_clk上升沿将PC加1;
④w_opl有效,在op_clk上升沿将操作码存入寄存器reg_opl;
⑤进入下一个状态S1。
3)S1状态:分析指令
①rom_cs和mem_rd置“0”,开始对S0状态中读到的操作码进行译码;
②PC加1,指示下一条将要执行的指令地址;
③进入下一个状态S2。
4)S2状态:执行指令
①rom_cs和mem_rd置“1”,从ROM中将操作数FFH读到总线上;
②w_pc有效,在下一个slow_clk上升沿将PC加1;
③w_oplo有效,在op_clk上升沿将FFH存入寄存器reg_oplo;
④w_acc有效,并在下一个slow_clk上升沿将FF写入ACC寄存器;
⑤重新回到下一个状态S0,开始提取下一条指令,依此过程循环。
本发明的编译器的输入文件有两个:aa.asm和opcode.dat。aa.asm是用户编写的需要CPU完成的某个具体功能的汇编源程序。opcode.dat文件是用于解析指令时的参照表,每行代表了一条汇编指令,第一列是汇编操作码,第二列是机器操作码,第三列是汇编指令对应的十六进制机器码,第四列对应于操作码的寻址模式,主要存在七种模式:U代表单一寻址,无操作数;I代表立即加法寻址;R代表寄存器直接寻址;D代表直接寻址;A代表寄存器立即寻址;B代表分支操作;x代表不确定模式。
编译器的输出文件有两个:aa.bin和aa.lst。aa.lst是进行汇编编译转换时的每一步翻译的具体情况分析,相当于一个report,方便用户查看编译过程中出现的错误,而且aa.lst能统计出编译过程中出现的错误以及已经不能识别的指令个数。aa.bin中存放的是编译后的机器码文件,将aa.bin文件加载到FPGA中,可以检验CPU是不是运行正确。
本发明设计了三种寻址方式、字长为1~3的指令集,如附录B所示,对每种指令集的操作和执行方式进行了详细的描述以及该指令集对flag的影响情况。可以看出所设计的指令集的操作方式分为:立即数操作、寄存器操作、存储器操作三种,分别指明了指令中的操作数是一个常数、一个寄存器、或者是一个存储器操作数,由于所设计的CPU是8位的,所以有些多字节的指令要分几个周期进行选取,以下结合附图给出数据通路及各功能模块的硬件仿真测试结果:
1. CPU data_path模块的RTL级仿真验证
1.1 寄存器堆的modelsim功能仿真
如图7所示,在清零信号无效时,时钟上升沿时,当w_ax,w_bx,w_acc,w_p均为低电平有效时,其寄存器输出均为c_bus。
1.2  data_bus数据通路模块的modelsim功能仿真
赋值操作:
reg_opl=data[7:0],reg_oplo=data[7:0],reg_ophi=data[3:0],
D_bus[11:0]={reg_ophi[3:0],reg_oplo[7:0]}
仿真结果如图8所示。
1.3  addx_bus地址总线模块的功能仿真
赋值操作:
在时钟信号上升沿时,
(1)当w_pc=0且pc_mux=0时,reg_pc=d_bus; 
(2)当w_pc=0且pc_mux=1时,reg_pc自增1;
仿真结果如图9所示;
(3)当w_sp=0且sp_mux=1时,reg_sp自减1;
(4)当w_sp=0且sp_mux=0时,reg_sp自增1。
仿真结果如图10所示。图11给出了addx_bus的全局仿真结果。
1.4  ALU算术逻辑单元的功能仿真
(1)操作数B控制模块b_bus[7:0]的验证:
bbus_mux=3’b001时,b_bus=reg_ax;
bbus_mux=3’b010时,b_bus=reg_bx;
bbus_mux=3’b011时,b_bus=reg_pc[7:0];
bbus_mux=3’b100时,b_bus={reg_flag,0,reg_pc[11:8]};
bbus_mux=3’b101时,b_bus=input_port;
bbus_mux=3’b110时,b_bus=d_bus[7:0];
bbus_mux=3’b111或者000时,b_bus=d_bus[7:0]。
仿真结果如图12 所示。
(2)ALU算术逻辑单元的验证:
//算术运算
alu_func=4’b0000时,{cout,c_bus}=reg_acc+b_bus
alu_func=4’b0001时,{cout,c_bus}=reg_acc-b_bus
//逻辑运算
alu_func=4’b0010时,c_bus=reg_acc&b_bus,cout=0
alu_func=4’b0011时,c_bus=reg_acc|b_bus,cout=0
alu_func=4’b0100时,c_bus=reg_acc^b_bus,cout=0
alu_func=4’b0101时,c_bus=~reg_acc,cout=0
//移位操作
alu_func=4’b0110时,c_bus={0,reg_acc[7:1]},cout=reg_acc[0] 右移,高位补零
alu_func=4’b0111时,c_bus={reg_acc[6:0],0},cout=reg_acc[7] 左移,低位补零
alu_func=4’b1000时,c_bus=b_bus,cout=0  
alu_func=其他时,c_bus=reg_acc,cout=0  
仿真结果如图13所示。
(3)flag标志位的功能仿真:
sys_rst=0低电平有效时,标志位pos,zero,carry全部清零;
在清零信号无效且在时钟上升沿时:
当w_flag=0且flag_mux=1时:
若c_bus全部为零,即c_bus[7:0]=8’h00时,zero=1;
若c_bus[7]=0,即msb=0时,pos=1,carry=cout。
当w_flag=0且flag_mux=0时,进行如下赋值操作:
Figure 802650DEST_PATH_IMAGE001
仿真结果如图14所示。
1.5  顶层模块的RTL仿真验证
在之前所有模块的基础上加入一组8bit的三态门,使得在bbus_mux[2:0]=3’b101时,port=reg_c的双向输入输出端口能将数值传到alu控制模块,其他情况下,port端口的输出情况为高阻态,如图15所示。
最后,利用设计好的语言编写了一个LED灯交替闪烁程序,烧入FPGA器件中,此时的FPGA 器件就相当于是一个CPU了,读取指令并按照指令的要求完成相应的操作,通过观测LED的反应进行最终的物理验证(源代码见附录C)。
该仿真程序实现的功能是:首先将00H的值赋给ACC,然后将累加器的内容通过输出端口输出,因为为8位的低电平,所以熄灭所有的LED,接着存入累加器AAH的值,即10101010,然后将其与FFH相异或,即每一位分别取反,接着进行一段时间的延时,将ACC的数值通过输出端口输出,循环以上过程,所以我们可以看到奇数位置和偶数位置的LED以一定的时间交替闪烁。
通过编译器将上述程序转化为CPU可识别的机器语言,将其存到ROM中,通过modelsim仿真得到该程序的时序图,为节省版面,我们截去了延时模块的时序,如图17所示。从图中可以看到:
(1) 执行完ldi acc , #ffh以后,ACC的值为FF;
(2)执行完stacc port后,p_out的值为FF;
(3)执行完ldi acc , #aah以后,ACC的值为AA;
(4)执行完xoracci #ffh后,ACC的值为55,FLAG的值为010;
(5)执行完call dly_500ms后,PC的值即将下一条将要执行的地址00a和标志寄存器的值010压栈,PC的值变为00E,跳转到延迟模块;
(6)执行完RET后,将CALL指令中压栈的值出栈分别送到相应的寄存器PC和FLAG;
(7)执行完STACC后,p_out的值为55;
(8)执行完JMP指令后,PC的值变为005,表示从xoracci #ffh语句重新开始执行,从而实现了LED灯交替闪烁的功能。
附录A:
指令集、助记符及操作执行时序
Figure 51229DEST_PATH_IMAGE003
附录B:
指令集的操作和执行方式描述
 
Figure 774334DEST_PATH_IMAGE005
 附录C:
LED交替闪烁汇编源代码
                      ldi acc,#ffh
                      stacc port         ;shut down all LEDs
                      ldi acc,#aah
start:          xoracci #ffh
                      call dly_500ms
                      stacc port
                      jmp start
dly_500ms:  push acc
                      ldi acc,#32h
  dly_500ms_0:   call dly_10ms
                      subacci #01h
                      jne dly_500ms_0
                      pop acc
                      ret
                                    ;cycle = 10 * acc + 17             
dly_10ms:     push acc           ;2cyc
                      ldi acc,#c8h ;3cyc
dly_10ms_0: push acc
                      ldi acc, #29h
dly_50us:      subacci #01h      ;3cyc
                      cmpacci #00h     ;3cyc
                      jne dly_50us       ;4cyc
                      pop acc
                      subacci #01h
                      jne dly_10ms_0
                      pop acc              ;3cyc
                      ret            ;3cyc
                      END

Claims (4)

1. 基于FPGA的8位复杂指令集中央处理器,其特征在于:系统整个CPU核由以下基本部件组成:寄存器组、时序控制模块、数据通路模块;系统主时钟由片外晶振统一提供,后续模块所需的同步时钟也由该时钟经过分频、相移给出;所述时序控制模块负责对IP核的各子模块进行时序控制,确保读写数据不发生冲突;所述寄存器组对读、写数据进行暂存;所述数据通路模块负责硬件模块间数据流的走向控制及基本的运算操作,该数据通路模块包含①算术逻辑单元、②指令寄存器(IR)、③程序计数器、④堆栈寄存器、⑤工作寄存器、12位数据总线data_bus[11:0]、12位地址总线addr_bus[11:0];其中,算术逻辑单元执行加算术运算以及逻辑运算;指令寄存器用于保存当前CPU正在执行的那条指令;程序计数器用以对下一条指令进行跟踪以便确定下一条指令在主存中的位置;堆栈寄存器用于确定堆栈中的操作数的地址;工作寄存器用以存储控制信息和数据信息,以减小寄存器组的消耗。
2. 根据权利要求1所述的基于FPGA的8位复杂指令集中央处理器,其特征在于:数据通路模块的工作顺序为:首先,指令指针通知CPU将要执行的指令放置在内存中的存储位置,之后指令译码器从指令寄存器中拿来指令,翻译成CPU可以执行的形式,然后决定完成该指令需要哪些必要的操作,它告诉算术逻辑单元什么时候计算、告诉指令读取器什么时候获取数值、告诉指令译码器什么时候翻译指令;假如数据被送往算术逻辑单元,执行指令中规定的算术运算和其他各种运算,当数据处理完毕后,回到寄存器组中,通过不同的指令将数据继续运行或者通过数据总线data_bus[11:0]送到数据缓存器中。
3. 根据权利要求2所述的基于FPGA的8位复杂指令集中央处理器,其特征在于:还设计有编译器,该编译器的任务是把汇编指令转换成计算机能够识别的二进制代码,完成汇编程序的编译,其流程为:(1)C语言编译器的编译过程是:首先程序开辟出内存空间,用于存放编译后的二进制机器码,读入汇编源文件,确定汇编代码的行数;然后开始读取每一行代码,进行编译;(2)汇编代码编译的过程是,对源代码进行分解,如果第一个取出的是操作码,则去指令编译对照文件中,找出对应操作码的机器码;同时根据指令的格式选择相应的译码模式;如果取出的第一个不是操作码,而是标签的话,开辟专门的内存空间,则记录下每次出现的标签的位置信息。
4. 根据权利要求2所述的基于FPGA的8位复杂指令集中央处理器,其特征在于:采用状态机对指令系统进行统一的描述,包括全部31条指令,其执行情况为:
(1)首先,进行系统的复位,消除不确定状态,使系统变得可控;
(2)S0状态执行从ROM中取指令的操作;
(3)S1状态执行寄存器操作,包括ADDACC、SHLACC、LDACC,通过SEQUENCER模块对指令译码,发出相应的控制信号,由POPCORN模块来执行;PUSH指令也是在S1状态完成,将指定寄存器中的内容进行压栈,该指令需访问RAM存储器;
(4)S2状态执行立即数操作,包括LDI、ADDACCI、CMPACCI,参加运算的操作数由代码中得到,即从ROM中读取;POP指令也是在S2状态完成,将栈顶的内容出栈,送到指定的寄存器,该指令在S1状态执行将SP指针减1操作;
(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位和标志寄存器的内容压栈,将跳转地址送到地址总线,执行跳转程序。
CN2012103400149A 2012-09-14 2012-09-14 基于fpga的8位复杂指令集中央处理器 Pending CN102866982A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012103400149A CN102866982A (zh) 2012-09-14 2012-09-14 基于fpga的8位复杂指令集中央处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012103400149A CN102866982A (zh) 2012-09-14 2012-09-14 基于fpga的8位复杂指令集中央处理器

Publications (1)

Publication Number Publication Date
CN102866982A true CN102866982A (zh) 2013-01-09

Family

ID=47445860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012103400149A Pending CN102866982A (zh) 2012-09-14 2012-09-14 基于fpga的8位复杂指令集中央处理器

Country Status (1)

Country Link
CN (1) CN102866982A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104242906A (zh) * 2014-09-30 2014-12-24 成都市晶林科技有限公司 非制冷红外探测器接口时序控制电路
CN107423027A (zh) * 2017-07-24 2017-12-01 杭州迪普科技股份有限公司 一种光模块的信息读取方法、装置和系统
CN107480057A (zh) * 2017-07-31 2017-12-15 芯海科技(深圳)股份有限公司 一种在ICE中实现Call Stack功能的方法
CN107710151A (zh) * 2015-06-24 2018-02-16 英特尔公司 用于二进制文件转换系统的影子堆栈操纵的技术
CN109242094B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN112130899A (zh) * 2019-06-25 2020-12-25 海宁先进半导体与智能技术研究院 一种堆栈计算机
WO2021057141A1 (zh) * 2019-09-25 2021-04-01 支付宝(杭州)信息技术有限公司 基于fpga的流水线式指令读取方法及装置
CN112859377A (zh) * 2019-11-28 2021-05-28 京东方科技集团股份有限公司 一种复用寄存器、三维显示装置及其控制方法
WO2021208683A1 (zh) * 2020-04-16 2021-10-21 华为技术有限公司 控制信号的发送方法、接收方法及相关设备
CN113961251A (zh) * 2021-12-20 2022-01-21 中科南京智能技术研究院 一种用于传感器的处理器
CN116185891A (zh) * 2023-04-27 2023-05-30 珠海妙存科技有限公司 描述符管理方法
CN117193861A (zh) * 2023-11-07 2023-12-08 芯来智融半导体科技(上海)有限公司 指令处理方法、装置、计算机设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张红娜: "基于FPGA的8位RISC MCU研究与设计", 《中国优秀硕士学位论文全文数据库》 *
徐伟业: "基于FPGA的CPU核及其虚拟平台的设计与实现", 《中国优秀硕士学位论文全文数据库》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104242906A (zh) * 2014-09-30 2014-12-24 成都市晶林科技有限公司 非制冷红外探测器接口时序控制电路
CN107710151A (zh) * 2015-06-24 2018-02-16 英特尔公司 用于二进制文件转换系统的影子堆栈操纵的技术
CN109242094B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN107423027A (zh) * 2017-07-24 2017-12-01 杭州迪普科技股份有限公司 一种光模块的信息读取方法、装置和系统
CN107480057A (zh) * 2017-07-31 2017-12-15 芯海科技(深圳)股份有限公司 一种在ICE中实现Call Stack功能的方法
CN112130899A (zh) * 2019-06-25 2020-12-25 海宁先进半导体与智能技术研究院 一种堆栈计算机
WO2021057141A1 (zh) * 2019-09-25 2021-04-01 支付宝(杭州)信息技术有限公司 基于fpga的流水线式指令读取方法及装置
CN112859377A (zh) * 2019-11-28 2021-05-28 京东方科技集团股份有限公司 一种复用寄存器、三维显示装置及其控制方法
CN112859377B (zh) * 2019-11-28 2023-03-14 京东方科技集团股份有限公司 一种复用寄存器、三维显示装置及其控制方法
WO2021208683A1 (zh) * 2020-04-16 2021-10-21 华为技术有限公司 控制信号的发送方法、接收方法及相关设备
CN113961251A (zh) * 2021-12-20 2022-01-21 中科南京智能技术研究院 一种用于传感器的处理器
CN116185891A (zh) * 2023-04-27 2023-05-30 珠海妙存科技有限公司 描述符管理方法
CN117193861A (zh) * 2023-11-07 2023-12-08 芯来智融半导体科技(上海)有限公司 指令处理方法、装置、计算机设备和存储介质
CN117193861B (zh) * 2023-11-07 2024-03-15 芯来智融半导体科技(上海)有限公司 指令处理方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN102866982A (zh) 基于fpga的8位复杂指令集中央处理器
US8612726B2 (en) Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type
WO2001061576A2 (en) Automated processor generation system for designing a configurable processor and method for the same
US9015026B2 (en) System and method incorporating an arithmetic logic unit for emulation
JP2015069453A (ja) コンピュータ及びコンパイリング方法
Bhagat et al. Design and Analysis of 16-bit RISC Processor
CN116974633A (zh) 一种用于risc-v处理器的三级流水线微架构
US20090228686A1 (en) Energy efficient processing device
JPH04233040A (ja) コンピュータプログラム実行シミュレーションシステム
Reaz et al. A single clock cycle MIPS RISC processor design using VHDL
Katke et al. Design and implementation of 5 stages pipelined architecture in 32 bit RISC processor
Rykunov Design of asynchronous microprocessor for power proportionality
CN102033733B (zh) 新型mcu结构
Yi et al. 32-bit RISC CPU based on MIPS instruction fetch module design
Tiejun et al. 16-bit teaching microprocessor design and application
Kostadinov et al. An Approach for Teaching Processor Design
Carmona et al. Implementation of a fully pipelined ARM compatible microprocessor core
Lu et al. CPU design for computer integrated experiment
Andorno Design of the frontend for LEN5, a RISC-V Out-of-Order processor
Wunderlich Focusing on the blurry distinction between microprocessors and microcontrollers
De Sutter et al. Hardware and a tool chain for ADRES
Qiao et al. Implementing RISC-V processor with three-stage pipeline on FPGA
Emmons Designing a Microprocessor on an FPGA
Mansour Threading model optimization of the AEMB Microprocessor
Zhang et al. High-performance instruction-set simulator for TMS320C62x DSP

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130109