计算机系统结构实验3.2硬布线版CPU赖晓铮_第1页
计算机系统结构实验3.2硬布线版CPU赖晓铮_第2页
计算机系统结构实验3.2硬布线版CPU赖晓铮_第3页
计算机系统结构实验3.2硬布线版CPU赖晓铮_第4页
计算机系统结构实验3.2硬布线版CPU赖晓铮_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、QQ: 68046508设计一个硬布线版本设计一个硬布线版本CPUCPU:在功能上完全兼容前述的微程序:在功能上完全兼容前述的微程序版本版本CPUCPU:数据通路相同,指令体系相同,不同之处在于改:数据通路相同,指令体系相同,不同之处在于改用硬布线逻辑电路产生各时序阶段的微操作信号,取代了微用硬布线逻辑电路产生各时序阶段的微操作信号,取代了微程序控制器。在硬布线程序控制器。在硬布线CPUCPU上验证微程序版本上验证微程序版本CPUCPU的的指令指令程序。程序。 掌握基于硬布线控制器的掌握基于硬布线控制器的CPUCPU设计原理。设计原理。理解机器指令的硬布线逻辑实现方法。理解机器指令的硬布线逻辑

2、实现方法。OP码码( I7 I6 I5 I4 )指令助记符指令助记符OP码码( I7 I6 I5 I4 )指令助记符指令助记符0111IRET1111OR/ORI0110MOV1110AND/ANDI0101OUT/OUTA1101ADD/ADDI0100IN1100SUB/SUBI0011SET1011XOR/XORI0010SOP (INC/DEC/NOT/THR)1010SHT (RLC/ LLC/ RRC/ LRC)0001JMP/JMPR/Jx/JxR1001STO/PUSH0000NOP/HLT1000LAD/POP一、系统指令:一、系统指令:汇汇编编语言语言功能功能I7 I6 I

3、5 I4 I3 I2I1 I0NOP;无操作(延时无操作(延时4个个T)00000/0 x/0HLT;停机(断点)停机(断点)00000/0 x/1IRET;中断返中断返回回BP_PCPC;BP_PSWPSW01110/0 x/x汇编语言汇编语言注释注释I7 I6 I5 I4 I3 I2I1 I0MOV RA, RB;(RB)RA0110RARBSET RA, IMM;IMMRA0011RAx/xIMM二、二、寄存器及寄存器及I/O操作操作指令:指令:汇编语言汇编语言功能功能I7 I6 I5 I4 I3 I2I1 I0IN RA, PORTx;(PORTx)RA0100RAPORTxOUT R

4、A, PORTx;(RA)PORTx0101RA0/PORTxOUTA RA, PORTx;(RA)PORTx0101RA1/PORTx汇编语言汇编语言功能功能I7 I6 I5 I4I3 I2I1 I0LAD RA, ADDR;ADDRRA1000RA0/0ADDRPOP RA, RB;RBRA1000RARBSTO RA, ADDR;(RA)ADDR1001RA0/0ADDRPUSH RA, RB;(RA)RB1001RARB三、三、存储器及堆栈操作指令存储器及堆栈操作指令:汇编语言汇编语言功能功能I7 I6 I5 I4I3 I2I1 I0JMP ADDR;ADDRPC00010/00/0A

5、DDRJMPR RB;(RB)PC00010/0RBJC ADDR;IF CF=1, ADDRPC00010/10/0ADDRJCR RB;IF CF=1, (RB)PC00010/1RBJZ ADDR;IF ZF=1, ADDRPC00011/00/0ADDRJZR RB;IF ZF=1, (RB)PC00011/0RBJS ADDR;IF SF=1, ADDRPC00011/10/0ADDRJSR RB;IF SF=1, (RB)PC00011/1RB四、四、跳转系列指跳转系列指令:令:五、五、算术逻辑运算指令算术逻辑运算指令:汇编语言汇编语言功能功能I7 I6 I5 I4I3 I2 I1

6、 I0RLC RA;(RA)右逻辑移位右逻辑移位1010RA0/0LLC RA;(RA)左逻辑移位左逻辑移位1010RA1/0RRC RA;(RA)右循环移位右循环移位1010RA0/1LRC RA;(RA)左循环移位左循环移位1010RA1/1汇编语言汇编语言功能功能I7 I6 I5 I4I3 I2I1 I0INC RA;(RA)1RA0010RA0/0DEC RA;(RA)1RA0010RA0/1NOT RA;#(RA)RA0010RA1/0THR RA;(RA)RA0010RA1/1五、五、算术逻辑运算指令算术逻辑运算指令:汇编语言格式汇编语言格式功能功能I7 I6 I5 I4I3 I2

7、I1 I0ADD RA, RB;(RA) (RB)RA1101RARBADDI RA, IMM; (RA) IMMRA 1101RA0/0IMMSUB RA, RB;(RA)(RB)RA1100RARBSUBI RA, IMM;(RA)IMMRA1100RA0/0IMMAND RA, RB;(RA)(RB)RA1110RARBANDI RA, IMM;(RA)IMMRA1110RA0/0IMMOR RA. RB;(RA)(RB)RA1111RARBORI RA, IMM;(RA)IMMRA1111RA0/0IMMXOR RA, RB;(RA) (RB)RA1011RARBXORI RA, IM

8、M;(RA) IMMRA1011RA0/0IMM注:跳出注:跳出“断点断点”后后,CPUCPU进入进入HLTHLT指令指令的的后续下一条指令的取指周期后续下一条指令的取指周期。1 1) 硬布线版硬布线版CPUCPU项目工程的子文件夹项目工程的子文件夹PROGRAMSPROGRAMS,与微程序版,与微程序版CPUCPU项目工程的子文件夹项目工程的子文件夹PROGRAMSPROGRAMS完全一致。请逐个编译、完全一致。请逐个编译、烧写、手动单步执行或自动运行所有机器指令烧写、手动单步执行或自动运行所有机器指令asmasm文件文件。 (编译和烧写(编译和烧写asmasm文件的方法参见文件的方法参见“

9、2.6“2.6存储器实验存储器实验”)2 2) 在手动单步执行过程中,对照相应的指令流程图,观察时在手动单步执行过程中,对照相应的指令流程图,观察时序电路的序电路的M M状态机以及状态机以及M M信号输出的变化,记录每个信号输出的变化,记录每个M M周期中周期中ARAR、IRIR、PCPC、通用寄存器、通用寄存器RxRx及总线及总线BUSBUS的数据。的数据。3 3) 在程序自动运行过程中,通过在程序自动运行过程中,通过HLTHLT指令在程序需要调试的位指令在程序需要调试的位置设置置设置“断点断点”。观察观察“断点断点”暂停时刻,观察和记录暂停时刻,观察和记录ARAR、IRIR、PCPC、通用

10、寄存器、通用寄存器RxRx及总线及总线BUSBUS的数据(的数据(注意:增加注意:增加HLTHLT指令指令“断点断点”会出现会出现跳转指令的目标地址偏移跳转指令的目标地址偏移问题问题) 。4 4) 修改中断程序修改中断程序INT_IRETINT_IRET,在主程序不同位置设置,在主程序不同位置设置HLT“HLT“断点断点”模拟中断。在模拟中断。在“断点断点”暂停时刻,信号暂停时刻,信号CLKCLK改用手动单步执改用手动单步执行,触发行,触发INTERRUPTINTERRUPT按钮(模拟外部中断),观察和记录进按钮(模拟外部中断),观察和记录进入中断时,入中断时,PC/BP_PCPC/BP_PC

11、、PSW/BP_PSWPSW/BP_PSW以及总线以及总线BUSBUS的数据变化。的数据变化。1 1)在实际应用中,经常需要多次用到某一段程序。为了避免重在实际应用中,经常需要多次用到某一段程序。为了避免重复编写,节约内存空间,可以把该程序独立出来,供主程序复编写,节约内存空间,可以把该程序独立出来,供主程序在需要的时候反复调用,这种程序称为在需要的时候反复调用,这种程序称为“子程序子程序”。在本书。在本书的的CPUCPU指令集中缺少专门的子程序调用及返回指令。但是,指令集中缺少专门的子程序调用及返回指令。但是,因为子程序调用的位置是固定和可以预见的(与中断的随机因为子程序调用的位置是固定和可

12、以预见的(与中断的随机出现不同);所以出现不同);所以,可以采用跳转系列指令来实现跳转到子可以采用跳转系列指令来实现跳转到子程序和从子程序返回的功能程序和从子程序返回的功能。2 2)在硬布线版在硬布线版CPUCPU项目工程的子文件夹项目工程的子文件夹testtest里,存放着子程序里,存放着子程序示例示例SUB_PROGSUB_PROG。其功能类似于汇编语言的。其功能类似于汇编语言的“CALL”“CALL”和和“RET”“RET”语句,实现的功能是统计存储器中一个数组包含了多少个正语句,实现的功能是统计存储器中一个数组包含了多少个正数、零和负数(所有数都用补码形式表示),并把统计结果数、零和负

13、数(所有数都用补码形式表示),并把统计结果分别存放在寄存器分别存放在寄存器R1R1(正数)、(正数)、R2R2(零)和(零)和R3R3(负数)中。(负数)中。具体代码如具体代码如后页后页所示所示。3 3)编译、烧写、自动运行编译、烧写、自动运行SUB_PROGSUB_PROG源程序,观察自动运行过程源程序,观察自动运行过程中的中的“断点断点”暂停时刻,寄存器暂停时刻,寄存器R0R0、R1R1、R2R2和和R3R3的数据变化的数据变化。 4 4)修改修改SUB_PROGSUB_PROG源程序中的数组(存储器地址源程序中的数组(存储器地址02-07H02-07H存放的存放的数据),改变正数、零和负

14、数的比例,记录程序末尾,寄存数据),改变正数、零和负数的比例,记录程序末尾,寄存器器R1R1、R2R2和和R3R3最终结果的变化最终结果的变化5 5)与与“3.1.“3.1.微程序版微程序版CPUCPU实验实验”的的“实验实验3 3 循环结构程序循环结构程序”相相比较,请问本程序可否从数组开始顺序读出数据,再调用子比较,请问本程序可否从数组开始顺序读出数据,再调用子程序做统计?如果通用寄存器不够用,有什么解决办法?程序做统计?如果通用寄存器不够用,有什么解决办法?6 6)修改修改SUB_PROGSUB_PROG源程序,例如把源程序,例如把POPPOP指令放入子程序中,或是指令放入子程序中,或是

15、把把OUTOUT指令放在在主程序的循环中。如果仅仅添加或删除某指令放在在主程序的循环中。如果仅仅添加或删除某些指令,子程序调用会出现什么问题?(提示:跳转地址出些指令,子程序调用会出现什么问题?(提示:跳转地址出问题)采用跳转系列指令来模拟子程序调用有什么缺点?问题)采用跳转系列指令来模拟子程序调用有什么缺点?7 7)与与“3.1.“3.1.微程序版微程序版CPUCPU实验实验”的的“实验实验4 4 中断程序中断程序”相比较,相比较,请问子程序是否要保护主程序使用的所有通用寄存器?子程请问子程序是否要保护主程序使用的所有通用寄存器?子程序调用和中断发生的区别是什么?序调用和中断发生的区别是什么

16、? 汇编助记符汇编助记符(M地址:机器指令地址:机器指令)JMP 16H00H:0001000001H:0001011055H02H:01010101AAH03H:10101010FFH04H:1111111180H05H:100000000H06H:000000000FH07H:00001111OUT R0, PORT0; sub_p08H:01010000THR R009H:00100011JZ 10H0AH:000110000BH:00010000汇编助记符汇编助记符(M地址:机器指令地址:机器指令)JS 13H0CH:000111000DH:00010011JMP 14H0EH:000

17、100000FH:00010100INC R210H:00101000JMP 14H11H:0001000012H:00010100INC R313H:00101100JMP 21H; ret14H:0001000015H:00100001SET R3,0; main16H:0011110017H:00000000汇编助记符汇编助记符(M地址:机器指令地址:机器指令)SET R2,018H:0011100019H:00000000SET R1,06H1AH:001101001BH:00000110HLT1CH:00000001INC R1;loop1DH:00100100POP R0, R11

18、EH:10000001JMP 08H; call sub_p1FH:0001000020H:00001000SUBI R1, 02H21H:1100010022H:00000010汇编助记符汇编助记符(M地址:机器指令地址:机器指令)JZ 27H23H:0001100024H:00100111JMP 1DH;goto loop25H:0001000026H:00011101SET R1, 06H27H:0011010028H:00000110SUB R1, R229H:11000110SUB R1, R32AH:11000111HLT2BH:00000001在硬布线版本在硬布线版本CPUCPU

19、中,可以采用软件方法,通过跳转指令中,可以采用软件方法,通过跳转指令JMPJMP来实现子程序的调用及返回,也可以通过硬件电路实现来实现子程序的调用及返回,也可以通过硬件电路实现类似功能。保持指令长度和类似功能。保持指令长度和OPOP码位数不变,请设计硬件电路码位数不变,请设计硬件电路,实现从立即数实现从立即数/ /寄存器获得跳转地址的寄存器获得跳转地址的CALLCALL和和RETRET指令。指令。 (提示: CALL指令与JMP指令可以共用OP码0001,规定JMPR/JxR指令的地址来源只能是寄存器R1。修改跳转系列指令格式,如下表所示:规定若指令I1I0=00,表示是双字节JMP/Jx指令

20、;若指令I1I0=01,表示是单字节JMPR/JxR指令;若指令I1I0=10,表示是双字节的子程序调用指令CALL,子程序跳转处“断点”的保存地址是第二字节ADDR;若指令I1I0=11,表示是单字节的子程序调用指令CALLR,子程序跳转处“断点”的保存地址是寄存器R3。同样的,在中断子程序中,中断返回指令IRET的I1I0=00;而在主程序中,可以规定子程序返回指令RET的I1I0=01。)汇编语言格式汇编语言格式功能功能I7 I6 I5 I4 I3 I2I1 I0JMP ADDR;ADDRPC00010/00/0ADDRJMPR R0;(R1)PC00010/00/1Jx ADDR;IF

21、 CF/ZF/SF =1, ADDRPC000101/10/110/0ADDRJxR R0;IF CF/ZF/SF=1, (R1)PC000101/10/110/1CALL ADDR; PCBP_SUB且且 ADDRPC00010/01/0ADDRCALLR R0;PC BP_SUB 且且 (R3)PC00010/01/1IRET;中断返回:中断返回:BP_PCPC; BP_PSWPSW01110/00/0RET;子程序返回子程序返回:BP_SUBPC01110/00/1跳转、中断返回及子程序调用系列指令跳转、中断返回及子程序调用系列指令注:注:子程序调用也需要设置一套与中断电路类似的子程序调

22、用也需要设置一套与中断电路类似的“断点断点”寄存器寄存器BP_SUBBP_SUB,不能与中断共用不能与中断共用“断点断点”,否则中断的时候不允许调用子程序,子程,否则中断的时候不允许调用子程序,子程序调用的时候不允许中断。序调用的时候不允许中断。在在CPUCPU指令集中,有条件跳转指令指令集中,有条件跳转指令JxJx/ /JxRJxR的跳转条件是标志的跳转条件是标志位位CF/ZF/SF=1CF/ZF/SF=1。但是,有时候需要标志位。但是,有时候需要标志位CF/ZF/SF=0CF/ZF/SF=0时跳转,时跳转,否则不跳转,即否则不跳转,即JNxJNx/ /JNxRJNxR指令。可以采用软件的方

23、法,通过指令。可以采用软件的方法,通过JxJx/ /JxRJxR和和JMP/JMPRJMP/JMPR指令的组合跳转来实现上述功能,但是指令的组合跳转来实现上述功能,但是CPUCPU效率不高。请通过硬件电路效率不高。请通过硬件电路直接直接实现实现JNxJNx/ /JNxRJNxR指令指令功能:功能:汇编语言格式汇编语言格式功能功能I7 I6 I5 I4 I3 I2I1 I0JNx ADDR;IF CF/ZF/SF=0, ADDRPC000101/10/111/0ADDRJNxR R0;IF CF/ZF/SF =0, (R3)PC000101/10/111/1取指周期、中断处理周期及系统指令取指周期、中断处理周期及系统指令 寄存器及寄存器及I/OI/O操作指令操作指令存储器及堆栈操作指令存储器及堆栈操作指令中断返回及跳转系列指令中断返回及跳转系列指令算术逻辑运算系列指令算术逻辑运算系列指令【T1】源部件】源部件总线总线BUS【T2】总线】总线BUS目标部件目标部件【M1】【M2】多周期硬布线控制器多周期硬布线控制器“状态机状态机”【M3】【M4】【M5】【M6】M1M2 :NOP/HLT指令指令M1M3 :IN、OUT、MOV、IRET、JMPR (JMPR/JxR) 指令指令M1M4 :PUSH、POP、SET、SOP、JMPI (JMP/Jx) 指令指令M1M5 :LAD、S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论