为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

第二天

2013-07-08 24页 doc 2MB 35阅读

用户头像

is_809510

暂无简介

举报
第二天 第一天:熟悉微程序的设计和调试方法 一、设计目标 1、掌握微程序的设计方法 2、熟悉利用调试软件运行、调试微程序的方法 二、操作提示 1、连接实验设备 注意:请在断电状态下连接调试电缆。 2、下载FPGA配置数据 从课程网站下载CPU.sof 等文件,使用Quartus II Programmer 软件将CPU.sof 下载到 FPGA。 3、输入微程序 利用调试软件将微程序写入控存,微程序如下。 取指令微程序 取源操作数为立即数的微程序 取目的操作数为寄存器寻址的微程序 MOV指令的微程序(目的数寄存器寻址)...
第二天
第一天:熟悉微程序的设计和调试 一、设计目标 1、掌握微程序的设计方法 2、熟悉利用调试软件运行、调试微程序的方法 二、操作提示 1、连接实验设备 注意:请在断电状态下连接调试电缆。 2、下载FPGA配置数据 从课程网站下载CPU.sof 等文件,使用Quartus II Programmer 软件将CPU.sof 下载到 FPGA。 3、输入微程序 利用调试软件将微程序写入控存,微程序如下。 取指令微程序 取源操作数为立即数的微程序 取目的操作数为寄存器寻址的微程序 MOV指令的微程序(目的数寄存器寻址) 4、输入调机程序 今天的将调机程序就是一条指令:“ MOV #0001H, R1”。首先将指令翻译成机器码,根 据指令的编码规则,该指令的编码是:0761 0001。然后利用调试软件将指令码写入主存, 地址从主存的0030H开始。 5、调试微程序。 利用调试软件“Step”按钮控制微指令单步执行,执行结果如图 2.3所示 2.3 例2.1 MOV指令的单步运行跟踪数据 6、微程序的执行结果: 首先分析微程序执行流程是否正确,根据前面指令微流程的设计,理论上该指令微程序 的执行顺序应该是001→002→003→004→00B→00F→016→006→018→007→031→02D→ 02E→000,通过调试软件的执行结果图 2.3可以看出,该指令微程序的微指令次序是正确的。 三、设计中遇到的问及解决方法。 取完指令后,进行操作的步骤中,执行入口的编写,以及取目的操作数与取原操作数之间的代码的编写遇到了问题,然后自己翻一翻书,大家交流了一下,最后得以解决。 第二天:取操作数微程序设计与调试 一、设计目标 完成取原操作数和取目的操作数微程序的设计。 二、指令微程序设计 取原操作数微流程 取目的操作数 20080001 1 0 0 0 2 0 0 0 0 001 PCoe, ARce 00069002 0 0 0 0 1 2 1 1 0 002 ARoe′, RD, DRce′, Pcinc CC000003 6 3 0 0 0 0 0 0 0 003 DRoe, IRce 00000404 0 0 0 0 0 0 0 0 2 004 NOP 00000A08 0 0 0 0 0 0 0 0 5 008 NOP 取源操作数入口 00000A18 0 0 0 0 0 0 0 0 5 018 NOP 取目的操作数入口 00000831 0 0 0 0 0 0 0 0 4 031 NOP 执行指令入口 50000006 2 4 0 0 0 0 0 0 0 006 GRSoe,TRce 取源操作数 寄存器寻址 40080015 2 0 0 0 2 0 0 0 0 015 GRSoe,ARce 取源操作数 寄存器间接寻址 2008000C 1 0 0 0 2 0 0 0 0 00C PCoe, ARce 取源操作数 寄存器变址寻址 2008000F 1 0 0 0 2 0 0 0 0 00F PCoe, ARce 取源操作数 0006900D 0 0 0 0 1 2 1 1 0 00D ARoe′, RD, DRce′, Pcinc D400000E 6 5 0 0 0 0 0 0 0 00E DRoe, Ace 40700017 2 0 1 3 0 0 0 0 0 017 GRSoe,ADD,SV 00069C10 0 0 0 0 1 2 1 1 6 010 ARoe′, RD, DRce′, Pcinc D4000011 6 5 0 0 0 0 0 0 0 011 DRoe, Ace 取源操作数 相对寻址 20700017 1 0 1 3 0 0 0 0 0 017 PCoe,ADD,SV C0080013 6 0 0 0 2 0 0 0 0 013 DRoe, ARce 取源操作数 间接寻址 00061014 0 0 0 0 1 2 0 1 0 014 ARoe′, RD, DRce′ C0080015 6 0 0 0 2 0 0 0 0 015 DRoe, ARce 取源操作数 直接寻址 00061016 0 0 0 0 1 2 0 1 0 016 ARoe′, RD, DRce′ D0000006 6 4 0 0 0 0 0 0 0 006 DRoe, TRce 取源操作数 立即寻址 60080015 3 0 0 0 2 0 0 0 0 015 Soe, ARce 54000007 2 5 0 0 0 0 0 0 0 007 GRSoe,Ace 取目的操作数 寄存器寻址 40080025 2 0 0 0 2 0 0 0 0 025 GRSoe,ARce 取目的操作数 寄存器间接寻址 2008001C 1 0 0 0 2 0 0 0 0 01C PCoe, ARce 取目的操作数 寄存器变址寻址 2008001F 1 0 0 0 2 0 0 0 0 01F PCoe, Arce 取目的操作数 0006901D 0 0 0 0 1 2 1 1 0 01D ARoe′, RD, DRce′, Pcinc D400001E 6 5 0 0 0 0 0 0 0 01E DRoe, Ace 40700027 2 0 1 3 0 0 0 0 0 027 GRSoe,ADD,SV 00069C20 0 0 0 0 1 2 1 1 6 020 ARoe′, RD, DRce′, PCinc D4000021 6 5 0 0 0 0 0 0 0 021 DRoe, Ace 取目的操作数 相对寻址 20700027 1 0 1 3 0 0 0 0 0 027 PCoe,ADD,SV C0080023 6 0 0 0 2 0 0 0 0 023 DRoe, ARce 取目的操作数 间接寻址 00061024 0 0 0 0 1 2 0 1 0 024 ARoe′, RD, DRce′ C0080025 6 0 0 0 2 0 0 0 0 025 DRoe, ARce 取目的操作数 直接寻址 00061026 0 0 0 0 1 2 0 1 0 026 ARoe′, RD, DRce′ D4000007 6 5 0 0 0 0 0 0 0 007 DRoe, Ace 取目的操作数 立即寻址 60080025 3 0 0 0 2 0 0 0 0 025 Soe, ARce 三、测试程序、数据及运行结果 如下: 1、测试:直接寻址,寄存器寻址 测试指令:MOV 0001 R1 指令编码:0741 0001 控存: 主存: 运行结果: 2、测试内容:立即数寻址,寄存器寻址 测试指令(或程序):MOV #1010H,R1 指令编码:0761 1010 运行结果: 四、设计中遇到的问题及解决方法。 最开始使用取目的操作数的时候,对于mov指令,不敢使用直接寻址,然后找不到结果,只会使用寄存器寻址,之后对直接寻址进行进一步了解,发现直接寻址可以把目的操作数直接存入主存当中,只要对主存进行刷新操作,即会有结果。 第三天:双操作数指令的微程序设计与调试 一、设计目标 完成ADD、ADDC、SUB、SUBB、CMP、AND、OR、XOR、TEST 9 条指令微程序的设计。 二、指令微程序设计 由上向下的微程序依次为ADD、ADDC、SUB、SUBB、CMP、AND、OR、XOR、TEST 98700E2E 4 6 1 3 0 0 0 0 7 02E TRoe,ADD,SV,PSWce ADD 98B00E2E 4 6 2 3 0 0 0 0 7 02E TRoe,ADDC,SV,PSWce ADDC 98F00E2E 4 6 3 3 0 0 0 0 7 02E TRoe,SUB,SV,PSWce SUB 99300E2E 4 6 4 3 0 0 0 0 7 02E TRoe,SUBC,SV,PSWce SUBB 98C00000 4 6 3 0 0 0 0 0 7 000 TRoe,CMP,PSWce CMP 99700E2E 4 6 5 3 0 0 0 0 7 02E TRoe,AND,SV,PSWce AND 99B00E2E 4 6 6 3 0 0 0 0 7 02E TRoe,OR,SV,PSWce OR 9A300E2E 4 6 8 3 0 0 0 0 7 02E TRoe,XOR,SV,PSWce XOR 99400000 4 6 5 0 0 0 0 0 0 000 TRoe,AND,PSWce TEST 三、测试指令、数据以及结果分析 测试内容:AND 0040H R1 指令编码:1F41 0040H 运行结果: 测试内容: SUB #0101 (R1) 指令编码:1369 0101 运行结果: 测试指令:TEST 0048 R1 指令编码:2B41 0048 四、设计中遇到的问题及解决方法。 在执行test指令的编码时TRoe,AND,PSWce,是用AND,还是ADD,比较纠结,后来通过百度,同学间的讨论,以及进行测试比对,最后决定使用AND。通过这几天的上机,明显感觉到自己相比较前几天而言,更为熟练,遇到问题也不如之前多,自己也会想办法去解决。相信之后的几天会更加顺手。 第四天:单操作数运算和移位指令的微程序设计与调试 一、设计目标 完成单操作数运算指令INC、DEC、NOT和7条移位指令微程序的设计。 二、指令微程序设计 由上向下的微程序依次为INC、DEC、NOT和七条移位指令SAR、SHL、SHR、ROL、ROR、RCL、RCR 1A70 0E2E 0 6 9 3 0 0 0 0 7 02E INC,SV,PSWce INC指令 1AB0 0E2E 0 6 A 3 0 0 0 0 7 02E DEC ,SV,PSWce DEC指令 19F0 0E2E 0 6 7 3 0 0 0 0 7 02E NOT,SV,PSWce NOT指令 18100E2E 0 6 0 1 0 0 0 0 7 02E SR,PSWce SAR 18200E2E 0 6 0 2 0 0 0 0 7 02E SL,PSWce SHL 18100E2E 0 6 0 1 0 0 0 0 7 02E SR,PSWce SHR 18200E2E 0 6 0 2 0 0 0 0 7 02E SL,PSWce ROL 18100E2E 0 6 0 1 0 0 0 0 7 02E SR,PSWce ROR 18200E2E 0 6 0 2 0 0 0 0 7 02E SL,PSWce RCL 18100E2E 0 6 0 1 0 0 0 0 7 02E SR,PSWce RCR 三、测试指令、数据以及结果分析 1、测试指令:INC 0031H 指令编码 023A 0031 2、测试指令:Shl 0001 指令编码:005A 0040 执行前主存 刷新后的主存: 3、测试指令 INC 0035H 指令编码 023A 0035 0035→1010 运行结果: 4、测试内容:DEC +2 指令编码:0258 0002 运行结果: 5、测试指令 NOT 0035H 指令编码027A 0035 运行结果: 6、测试指令 ROL 0035H 指令编码 009A 0035 运行结果: 四、设计中遇到的问题及解决方法。 今天测试的量比较大,需要在前一天把指令准备好,进行测试的过程中出现了很多问题,比如说在执行入口的时候就没有反应了,有些编码的错误,导致后续不能执行,然后先把微地址给写在纸上,然后再与测试的指令进行比对,没有错误的话,再对指令的编码进行核对,刷新主存,控存,找出错误所在地。总之今天做的比前几天困难,量比较大,耗时较长,不如前几天的简单了。 第五天:子程序调用、堆栈和转移指令的微程序设计与调试 一、设计目标 完成CALL、RET、PUSH、POP和9条转移指令的微程序的设计 二、指令微程序设计 9条转移指令,由上向下依次为 JC、JNC、JO、JNO、JZ、JNZ、JS、JNS、JMP 微地址(H) 微指令(H) 微指令字段(H) 微命令 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 068 A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce 069 A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce 06A A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce 06B A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce 06C A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce 06D A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce 06E A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce 06F A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce 070 A4000200 5 1 0 0 0 0 0 0 1 000 ARoe,PCce CALL指令 微地址(H) 微指令(H) 微指令字段(H) 微命令 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 07A 000000D0 0 0 0 0 0 0 0 0 0 0D0 0D0 F40000D1 7 5 0 0 0 0 0 0 0 0D1 SPoe,Ace 0D1 B2B000D2 5 4 A 3 0 0 0 0 0 0D2 DEC,SV,ARoe,TRce 0D2 7C0800D3 3 7 0 0 2 0 0 0 0 0D3 Soe,ARce,SPce 0D3 200300D4 1 0 0 0 0 3 0 0 0 0D4 PCoe,DRce 0D4 84052200 4 1 0 0 1 1 0 2 1 000 ARoe’,DRoe’,WR,TRoe,PCce RET指令 微地址(H) 微指令(H) 微指令字段(H) 微命令 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 05A 0000003C 0 0 0 0 0 0 0 0 0 03C 03C F408003D 7 5 0 0 2 0 0 0 0 03D SPoe,Ace,ARce 03D 0276103E 0 0 9 3 1 2 0 1 0 03E INC,SV,ARoe',RD,DRce' 03E C400003F 6 1 0 0 0 0 0 0 0 03F DRoe,PCce 03F 7C000200 3 7 0 0 0 0 0 0 1 000 Soe,Spce PUSH指令 微地址(H) 微指令(H) 微指令字段(H) 微命令 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 078 0000000C0 0 0 0 0 0 0 0 0 0 0C0 0C0 F40000C1 7 5 0 0 0 0 0 0 0 0C1 SPoe,Ace 0C1 02B000C2 0 0 A 3 0 0 0 0 0 0C2 DEC,SV 0C2 7C0800C3 3 7 0 0 2 0 0 0 0 0C3 Soe,SPce,ARce 0C3 00052200 0 0 0 0 1 1 0 2 1 000 ARoe’,DRoe’,WR POP指令 微地址(H) 微指令(H) 微指令字段(H) 微命令 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 079 000000C8 0 0 0 0 0 0 0 0 0 0C8 0C8 B00000C9 5 4 0 0 0 0 0 0 0 0C9 ARoe,TRce 0C9 F40800CA 7 5 A 0 0 0 0 0 0 0CA SPoe,Ace,ARce 0CA 027610CB 0 0 9 0 1 2 0 1 0 0CB ARoe’,RD,DRce’,INC,SV 0CB 800800CC 4 0 0 0 2 0 0 0 0 0CC TRoe,ARce 0CC 7C052200 3 7 0 0 1 1 0 2 1 000 Soe,SPce,ARoe’DRoe’,WR 三、测试指令、数据以及结果分析 1、测试指令:PUSH 0031H 指令编码:0771 0031 2、测试指令:Call 0060H 指令编码:035A 0060 四、设计中遇到的问题及解决方法。 这是关于子程序调用以及返回的指令,期间用到了sp,堆栈指令,而且很多时候进行测试的时候发现,堆栈操作进行的时候,压栈压不进去,然后进行测试发现自己的执行操作停的太早了,没有执行到最后一步,还有很多命令的执行只是自己想当然,特别对于把数据存入主存,多了一步移入寄存器,再从寄存器移出来。后来进行修改,总算是对的了。 第七天
/
本文档为【第二天】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索