综合实验:8位CPU设计与实现详解.ppt
- 文档编号:1100513
- 上传时间:2022-10-17
- 格式:PPT
- 页数:63
- 大小:3.63MB
综合实验:8位CPU设计与实现详解.ppt
《综合实验:8位CPU设计与实现详解.ppt》由会员分享,可在线阅读,更多相关《综合实验:8位CPU设计与实现详解.ppt(63页珍藏版)》请在冰豆网上搜索。
综合实验:
8位CPU设计与实现,内容提要,回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准,2022/10/17,3,冯诺依曼型计算机,存储器,输出,输入,运算器,控制器,数据信号,控制信号,地址信号,主存和CPU的联系,5,CPU的功能,1.CPU的功能指令控制(程序的顺序控制)操作控制(一条指令有若干操作信号实现)时间控制(指令各个操作实施时间的定时)数据加工(算术运算和逻辑运算),6,例:
CPU的基本组成,ALU,数据缓冲寄存器,状态字寄存器,地址寄存器,程序计数器,时序发生器操作控制器,指令译码器,数存,cache,指存,cache,AR,数据,地址总线,指令,地址总线,控制信号,OC,PC,IR,指令寄存器,C1,C2,C1,C2,C3,Cn,内容提要,回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准,下面以16位的实验CPU为例进行回顾,说明设计实现过程的思路和方法设计指令系统确定CPU的结构图确定控制信号分析各个主要模块的功能及设计方法编程实现组装测试,16位实验CPU设计思路,设计指令前了解现实需求,并将其中必不可少、使用频率较大的需求设计为指令确定指令格式,如OP和地址码分别如何设计OP码常用固定长度,根据指令条数来确定确定地址码有几个,分别应该是多长指令分类及其对应的格式:
单字长、双字长指令功能分组及OP码分配,形成指令总表不同组指令的执行时长不等,为提高效率,进行时序分析与设计,以状态机形式反映,1.设计指令系统,
(1)单字单操作数指令包括:
DEC,INC,SHL,SHR,JR,JRC,JRNC,JRZ,JRNZ,JRS,JRNS,1.1设计指令系统,
(2)单字双操作数指令包括:
ADD,SUB,AND,CMP,XOR,TEST,OR,MVRR,ADC,SBB,LDRR,STRR(3)单字无操作数指令包括:
CLC,STC,1.1设计指令系统,(4)双字单操作数指令包括:
JMPA(5)双字双操作数指令包括:
MVRD,1.1设计指令系统,由于没有中断操作,本机指令的执行步骤可概括如下:
读取指令:
地址寄存器-指令地址,修改PC内容使其指向下一条将要执行的指令读内存,指令寄存器-读出的内容分析指令执行指令:
通用寄存器之间的运算或传送,可1步完成读写内存,通常要两步完成,1.2设计指令节拍,根据指令的执行步骤不同,可以把全部指令分为A、B两组A组指令完成的是通用寄存器之间的数据运算或传送,或其他一些特殊操作,在取指之后可一步完成B组指令完成的是一次内存读写操作,在取指之后可两步完成A和B组指令节拍控制,1.2设计指令节拍,以状态机方式实现,1.3指令汇总表,本综合实验,拟设计的是无cache无流水的CPU因此,采用常规的CPU结构,即主要包含运算器控制器设计思路在设计时,可以先考虑比较粗的结构然后再逐渐细化例子说明,2.确定CPU结构,控制器,运算器,内存,与ALU运算有关的:
ALU输入来源控制ALU_IN_SELALU运算类型控制AluFunc对初始进位信号的控制SCI对标志位C、Z、V、S的设置控制SST与寄存器有关的:
SR、DRReg_EN,3.确定控制信号,对AR和IR接收控制REC(00无操作,01时AR接收PC,10时AR接收ALU输出,11时IR接收)对内存读写的控制/wr(0时为写内存,1时为读内存)对PC的更新控制PC_EN,3.确定控制信号,综合上述的控制信号,可以得到该CPU的控制信号集合。
在设计控制器时,只要根据相关的指令给出这些控制信号的值即可即控制信号共有10个:
ALU_IN_SEL、AluFuncSCI、SSTSR、DR、Reg_ENREC/wrPC_EN,3.确定控制信号,表中的I7对应pc_en,I6对应reg_en,I5I4I3对应alu_in_sel,I2I1I0对应alu_func_sel,SR和DR由指令给出,3.确定控制信号,举例说明如何控制,以ADDR0,R1为例第1拍:
提供指令地址对应节拍000动作:
PC-AR,PC+1-PC控制信号:
令REC=01,实现PC-AR控制ALU实现PC+1,PC为其中ALU输入,另一个输入为0,初始进位Cin为1。
为此,令SCI=1,以实现Cin=1;令ALU_IN_SEL=100以选择A=0和B=PC;令ALU_FUNC_SEL=000,以实现A+B+Cin令PC_EN=1,以把增1后的结果置入PC中,3.确定控制信号,其它控制信号按缺省值设置即可如控制标志位的SST,令保持原来标志即可,此时SST=11控制寄存器写的REG_EN,不用写,保持REG_EN=0控制内存写的/wr,不用写,令/wr=1综合上述控制信号值,可得:
3.确定控制信号,第2拍:
从内存取出指令对应节拍:
001动作:
IR-Mem控制信号:
为了控制内存读,/wr应该设置为/wr=1为了将从Mem读出的指令打入IR,控制IR的REC应设成REC=10其它保持缺省值因此,此时的控制信号集合为:
3.确定控制信号,第3拍:
执行加法运算节拍:
011动作:
R0-R0+R1控制信号:
ALU运算的数据源自于寄存器,因此ALU_IN_SEL=000执行加法运算,因此ALU_FUNC_SEL=000初始进位Cin必须为0,因此SCI=00完成运算后,结果会影响标志位,因此SST=00运算结果要保存到寄存器中,因此REG_EN=1其它控制信号按缺省值设置,即/wr=1和REC=00因此,控制信号集合为:
3.确定控制信号,运算器部分包括了如下的模块:
寄存器组、ALU输入复用模块、ALU运算器、标志寄存器控制部分包含了如下的模块:
PC、IR、时序发生器(即TIMER)、控制单元内存部分AR在分析这些模块时,先分析它的功能,然后分析输入输出信号,最后分析其实现逻辑在完成这些分析后,结合数据通路,分析各条指令的执行流程,以加深对CPU原理的理解,4.分析各个主要模块的功能及设计方法,运算器ALU功能:
对两个16位的输入及低位进位输入cin,根据运算功能进行运算,产生相应的结果,并更改标志位输入输出信号:
输入信号为:
A、B、cin、alu_func输出信号为:
Y、C、Z、V、S逻辑框图,4.分析各个主要模块的功能及设计方法,功能实现思路根据alu_func进行相应的运算,如alu_func为000时进行加法运算,001时进行减法运算,如此类推根据运算结果,对标志符号C、Z、V、S进行相应的更新参考基础实验2的方案2文档,4.分析各个主要模块的功能及设计方法,寄存器组功能:
实现寄存器的读和写,写时在时钟上升沿根据DR和REG_EN写入一个数据,读时根据SR和DR同时读出两个数据。
此外,为方便测试,尚需根据寄存器选择编号读出对应寄存器的数值输入输出信号:
输入信号:
reset,clk,dest_reg,src_reg,en,alu_out,reg_sel输出信号:
sr,dr,reg_out逻辑框图,4.分析各个主要模块的功能及设计方法,功能实现思路设计两个功能模块:
一为reg,一为reg_mux调用16个reg和1个reg_mux连接起来,即形成寄存器组参考基础实验4的方案2文档,4.分析各个主要模块的功能及设计方法,ALU输入复用模块功能:
根据控制信号ALU_IN_SEL,确定ALU的两个输入的来源。
功能如下表所示:
4.分析各个主要模块的功能及设计方法,I5I4I3(即ALU_IN_SEL)表格,输入输出信号输入信号:
来自于寄存器的输出信号sr和dr,来自于指令的OFFSET,来自于PC的值PC,来自于内存的数据DATA,以及控制信号ALU_IN_SEL输出信号:
ALU_SR和ALU_DR逻辑框图功能实现思路根据ALU复用功能控制表即可进行实现,4.分析各个主要模块的功能及设计方法,标志位寄存器功能:
根据控制信号SST,设置相应的标志位C、Z、S、V。
其控制方式如下:
输入输出信号:
输入信号:
C,Z,S,V,SST,clk,reset输出信号:
FLAG_C,FLAG_Z,FLAG_S,FLAG_V逻辑框图功能实现思路:
根据上表进行控制即可,4.分析各个主要模块的功能及设计方法,控制器功能:
在时序发生器的驱动下,根据各指令的节拍控制各指令的取指及执行输入输出信号输入信号:
来自于时序发生器的节拍timer,来自于IR的指令instruction,来自于标志寄存器的flag_c、flag_z、flag_v、flag_s输出信号:
前面所分析的控制信号集合用于寄存器的dest_reg、source_reg、en_reg用于alu相关的alu_in_sel、alu_func_sel、sci、sst用于控制PC写的en_pc,4.分析各个主要模块的功能及设计方法,用于内存读写的/wr用于控制PC和IR接收信号源的rec逻辑框图功能实现思路:
根据指令节拍表在不同节拍进行逐一发出控制信号即可节拍表参考开放式教学CPU设计与测试系统P28-29,4.分析各个主要模块的功能及设计方法,节拍发生器功能:
根据外部提供的时钟脉冲以及指令功能,产生不同的节拍脉冲序列输入输出信号:
输入信号:
reset、clk、ins输出信号:
timer逻辑框图,4.分析各个主要模块的功能及设计方法,功能实现思路利用状态机及指令功能来实现状态转移参考下图,4.分析各个主要模块的功能及设计方法,地址寄存器AR和指令寄存器IR功能:
在控制信号REC的控制,缓存相应的数据或指令。
控制方式如下:
输入输出信号直接参考逻辑框图逻辑框图功能实现思路:
按上表控制,4.分析各个主要模块的功能及设计方法,程序计数器功能:
保存当前或下一跳指令的值,若是顺序执行则其值自增1,若是跳转则接受来自于ALU的跳转目标值输入输出信号:
输入信号:
reset,clk,en,alu_out输出信号:
pc逻辑框图功能实现思路:
顺序执行时PC-PC+1跳转执行时PC-alu_out,4.分析各个主要模块的功能及设计方法,器件T1功能:
在控制信号Sci的控制之下,根据c标志位设置初始进位值Cin。
控制方式如下:
输入输出信号:
输入信号:
flag_c、sci输出信号:
alu_cin逻辑框图功能实现思路:
按上表进行控制即可,4.分析各个主要模块的功能及设计方法,器件T2功能:
将8位的有符号offset扩充到16位输入输出信号直接参考如下的逻辑框图逻辑框图功能实现思路:
利用补码规则正数前面补8个0负数前面补8个1,4.分析各个主要模块的功能及设计方法,器件T3功能:
在/wr=1时,才将来自于ALU的待写数据送到数据总线,否则为高阻态输入输出信号直接参考下面的逻辑框图逻辑框图功能实现思路:
/wr=1,输出高阻态/wr=0,输出alu_out,4.分析各个主要模块的功能及设计方法,测试部件REG_OUT功能:
根据功能选择信号及寄存器选择编号,输出相应的寄存器内容或控制信号输入输出信号:
输入信号:
功能选择信号sel、寄存器选择编号reg_sel、ir、pc、寄存器输出reg_in、offset、alu_a、alu_b、alu_out、reg_testa输出信号:
reg_data逻辑框图:
4.分析各个主要模块的功能及设计方法,逻辑框图功能实现思路:
根据功能选择信号sel确定功能再根据reg_sel,确定输出数据具体见下表,4.分析各个主要模块的功能及设计方法,4.分析各个主要模块的功能及设计方法,根据上述第4点的分析,用VHDL语言编程实现具体参考给出的VHDL参考代码,5.编程实现,将各个部件通过BDF方法或端口映射(portmap)方式连接起来,形成一个整体的实验CPU分配管脚,并下载到实验平台上进行测试所设计的CPU整体框图为,6.组装测试,CPU的内部结构,CPU的测试方法根据所设计的指令系统汇编语言编写测试用汇编代码写好编译规则后,利用DebugController进行编译利用DebugController将编译后的二进制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 实验 CPU 设计 实现 详解