当前位置: 首页 > 党团工作 >

测试细节

发布时间:2021-10-24 10:39:28 | 来源:网友投稿

 硬件实验前的准备工作

 硬件实验的目的是:(1)直观地了解计算机的工作过程。(2)检验设计是否正确,即检验计算机的工作过程是否与预期相符。

 实验前的准备工作是将测试程序预先加载于存储器中,即编制好 .mif 文件。与表P.3相对应的 .mif 文件为:

 为了提高实验效率,预先分析指令执行过程中各寄存器内容的变化,填入表格之中,供实验时观察。为了缩小表格所占空间,表中数据以 16 进制形式表示。

  --------------------------------------------------------------------------------------------------------------- 有余力的学生可以在实验中发挥自己的主观能动性,增加若干自创的项目,例如 1. 改写调试程序; 2. 改变时钟频率,测出此计算机的最高工作频率; 3. 改写 VHDL 代码,争取获得更高的性能价格比; 4. 改进实验方法,争取得到更好的显示效果。

 测试程序执行过程分析 状态 PC IR 指令助记符 指令效果 寄存器操作 R0 R1 R2 R3 内存单元01E 解

 释 0 000 0000

 00 00 00 00 00 Reset低电平使计算机进入初始状态, 启动测试程序后的情况如下:

 0 → 001 0000 idle 空操作 PC ← PC + 1 00 00 00 00 00 取指令到IR的高8位,程序计数器加1 1

 00 00 00 00 00 向内存发出读命令,读下一条指令 0 → 002 → 1500 load

 5 R0 ← 立即数 PC ← PC + 1 00 00 00 00 00 取指令到IR的高8位,程序计数器加1 1

  R0 ← IR(11..8) 05 00 00 00 00 将IR(11..8)中的立即数(5)加载于R0 0 →003 → 2400 move R1, R0 R1 ←

 R0 PC ← PC + 1 A ←

 R0 05 00 00 00 00 取指令到IR的高8位,程序计数器加1 将R0的内容存入临时寄存器A 1

  R1 ←

 A 05 05 00 00 00 将A的内容放入R1 0 → 004 → D000 read

 01F R0 ←

 内存单元 01F PC ← PC + 1 05 05 00 00 00 取指令到IR的高8位,程序计数器加1 1

 05 05 00 00 00 内存读双字节指令的第2字节 2

 → 005 →D01F

 PC ← PC + 1 MAR ← 01F 05 05 00 00 00 取双字节指令的第2字节,放到IR的低8位, 程序计数器加1 将访问内存的地址01F放入MAR 3

 05 05 00 00 00 向内存发出读命令 4

  R0 ←

 39 39 05 00 00 00 将从内存单元01F中读出的数据放入R0 0 → 006 → 9400 shl

 R1 R1 ← R1左移1位

 PC ← PC + 1

 39 05 00 00 00 取指令到IR的高8位,程序计数器加1

 1

  R1 ← R1左移1位 39 0A 00 00 00 将R1的内容左移1位 0 → 007 → 3100 add R0, R1 R0 ←

 R0 + R1 PC ← PC + 1 A ←

 R1 39 0A 00 00 00 取指令到IR的高8位,程序计数器加1 将R1的内容存入临时寄存器A 1

 R0 ←

 R0 + A 43 0A 00 00 00 将R0和A的内容相加并将结果放入R0

 状态 PC IR 指令助记符 指令效果 寄存器操作 R0 R1 R2 R3 内存单元01E 解 释 0 → 008 → E000 write 01E 内存单元 01E ←R0 PC ← PC + 1 43 0A 00 00 00 取指令到IR的高8位,程序计数器加1 1

 43 0A 00 00 00 内存读双字节指令的第2字节 2

 → 009 → E01E

 PC ← PC + 1 MDR ← R0 MAR ← 01E 43 0A 00 00 00 取双字节指令的第2字节,放到IR的低8位, 程序计数器加1, 将R0的内容放入数据寄存器MDR 将写指令的目的地址01E放入MAR 3

 43 0A 00 00 00 向内存发出写命令 4

 43 0A 00 00 43 将MDR的内容写入内存单元01E 0 → 00A → 4100 sub R0, R1 R0 ←

 R0﹣R1 PC ← PC + 1 A ← R1 43 0A 00 00 43 取指令到IR的高8位,程序计数器加1 将R1的内容存入临时寄存器A 1

  R0 ←

 R0﹣A 39 0A 00 00 43 将R0和A的内容相减并将结果放入R0 0 → 00B → A100 swap R0, R1

 PC ← PC + 1 A ← R1 39 0A 00 00 43 取指令到IR的高8位,程序计数器加1 将R1的内容存入临时寄存器A 1

  R1 ← R0 39 39 00 00 43 将R0的内容放入R1 2

  R0 ← A 0A 39 00 00 43 将A的内容放入R0 0 → 00C → 6100 or R0, R1 R0 ← R0 or R1 PC ← PC + 1 A ← R1 0A 39 00 00 43 取指令到IR的高8位,程序计数器加1 将R1的内容存入临时寄存器A 1

  R0 ←

 R0 or A 3B 39 00 00 43 将R0和A的内容按位或运算,并将结果放入R0 0 → 00D → 8400 Shr

 R1 R1 ← R1右移1位 PC ← PC + 1

 3B 39 00 00 43 取指令到IR的高8位,程序计数器加1

 1

  R1 ← R1右移1位 3B 1C 00 00 43 将R1的内容右移1位

 状态 PC IR 指令助记符 指令效果 寄存器操作 R0 R1 R2 R3 内存单元01E 解 释 0 → 00E → 5100 and R0, R1 R0 ← R0 and R1 PC ← PC + 1 A ←

 R1 3B 1C 00 00 43 取指令到IR的高8位,程序计数器加1 将R1的内容存入临时寄存器A 1

  R0 ← R0 and A 18 1C 00 00 43 R0和A按位与运算,将结果放入R0 0 → 00F → 2800 move R2, R0 R2 ←

 R0 PC ← PC + 1 A ← R0 18 1C 00 00 43 取指令到IR的高8位,程序计数器加1 将R0的内容存入临时寄存器A 1

  R2 ←

 A 18 1C 18 00 43 将A的内容放入R2 0 → 010 → 2D00 move R3, R1 R3 ←

 R1 PC ← PC + 1 A ← R1 18 1C 18 00 43 取指令到IR的高8位,程序计数器加1 将R1的内容存入临时寄存器A 1

  R3 ← A 18 1C 18 1C 43 将A的内容放入R3 0 →011 → 7B00 xor R2, R3 R2 ← R2 xor R3 PC ← PC + 1 A ← R3 18 1C 18 1C 43 取指令到IR的高8位,程序计数器加1 将R3的内容存入临时寄存器A 1

  R2 ← R2 xor A 18 1C 04 1C 43 R2和A按位异或运算,将结果放入R2 0 → 012 → D000 read

 01E R0 ←

 内存单元

 01E PC ← PC + 1 18 1C 04 1C 43 取指令到IR的高8位,程序计数器加1 1

 18 1C 04 1C 43 内存读双字节指令的第2字节 2

 → 013 →D01E

 PC ← PC + 1 MAR ← 01E 18 1C 04 1C 43 取双字节指令的第2字节,放到IR的低8位, 程序计数器加1 将访问内存的地址01E放入MAR 3

 18 1C 04 1C 43 向内存发出读命令 4

  R0 ←

 43 43 1C 04 1C 43 将从内存单元01E中读出的数据放入R0

 状态 PC IR 指令助记符 指令效果 寄存器操作 R0 R1 R2 R3 内存单元01E 解 释 0 → 014 → C000 jz

 019 若(R0)= 0转移至019,否则执行下一条 PC ← PC + 1 43 1C 04 1C 43 取指令到IR的高8位,程序计数器加1 1

 43 1C 04 1C 43 内存读双字节指令的第2字节 2

 → 015 → C019

 PC ← PC + 1 MAR ← 015 43 1C 04 1C 43 取双字节指令的第2字节,放到IR的低8位,程序计数器加1 因(R0)≠ 0,顺序执行下一条指令 3

 43 1C 04 1C 43 向内存发出读下一条指令的命令 0 → 016 → D000 read

  01D R0 ←

 内存单元

 01D PC ← PC + 1 43 1C 04 1C 43 取指令到IR的高8位,程序计数器加1 1

 43 1C 04 1C 43 内存读双字节指令的第2字节 2

 → 017 →D01D

 PC ← PC + 1 MAR ← 01D 43 1C 04 1C 43 取双字节指令的第2字节,放到IR的低8位 程序计数器加1 将地址寄存器的内容置为

 01D 3

 43 1C 04 1C 43 向内存发出读命令 4

  R0 ← 00 00 1C 04 1C 43 将内存单元

 01D中的内容放入R0 0 → 018 → B000 Jmp

  013 无条件转移至013 PC ← PC + 1 00 1C 04 1C 43 取指令到IR的高8位,程序计数器加1 1

 00 1C 04 1C 43 内存读双字节指令的第2字节 2

 → 019 → B013

 PC ← PC + 1 MAR ← 013 00 1C 04 1C 43 取双字节指令的第2字节,放到IR的低8位,程序计数器加1 将地址寄存器的内容置为

 013 3 → 013

 PC ← 013 00 1C 04 1C 43 向内存发出读下一条指令的命令

 状态 PC IR 指令助记符 指令效果 寄存器操作 R0 R1 R2 R3 内存单元01E 解 释 0 → 014 → C000 Jz

  019 若(R0)= 0转移至019,否则执行下一条 PC ← PC + 1 00 1C 04 1C 43 取指令到IR的高8位,程序计数器加1 1

 00 1C 04 1C 43 内存读双字节指令的第2字节 2

 → 015 → C019

 PC ← PC + 1 MAR

 ← 019 00 1C 04 1C 43 取双字节指令的第2字节,放到IR的低8位,程序计数器加1 因(R0)= 0,下一条指令转移至019 3 → 019

 PC ← 019 00 1C 04 1C 43 向内存发出读下一条指令的命令 0 → 01A → F000 stop 停机

 00 1C 04 1C 43 取指令到IR的高8位,程序计数器加1 1

 00 1C 04 1C 43 停止在状态1,进入死循环

推荐访问:细节 测试

本文标题:测试细节
链接地址:http://www.ylwt22.com/dangtuangongzuo/2021/1024/36848.html

版权声明:
1.十号范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《测试细节》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

十号范文网 |
Copyright © 2018-2024 十号范文网 Inc. All Rights Reserved.十号范文网 版权所有
本站部分资源和信息来源于互联网,如有侵犯您的权益,请尽快联系我们进行处理,谢谢!备案号:粤ICP备18086540号