计算机组成原理报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成原理实验
学号:
姓名:
班级:
实验1 实验日志
1.实验题目:Hamming码
2.实验数据记录:
输入输出规则对应如下:
1.输入的8位操作数对应开关SD15~SD8,编码后的hamming 码在灯A0~A12上体现。
2.开关SA0是控制位,待校验的13位数据对应SD7~SD0与SA5~SA1。
3.比较的结果在灯R4~R0上体现。
如对8位数据10101100进行hamming编码和校验。
1、先手工计算校验位P5~P1=00111 ,编码后的hamming 码为1101001101011 。
2、拨动开关SD15~SD8输入10101100,观察灯A12~A0=1101001101011 ,看是否与自己手工计算的hamming码相符。
3、输入待校验的13位数据,假设输入1111001101011。
拨动开关SA0为1开始校验,拨动SD7~SD0设置为11110011(13位数据中的高八位),SA5~SA1设置为01011(13位中的低5位)。
观察灯R4~R0=11011 ,也就是校验结果的值。
4、比较编码后的hamming码和校验的hamming码,发现第11位数据错误,手工计算S=11011 ,和3中观察到的R4~R0是否相符。
5、可以输入其他位错误的校验数据观察结果值S是否正确。
6、1~5做完后,重新输入新的8位数据做实验,并填写表1.1.4。
表1.1.4
第1组数据第2组数据第3组数据8位数据
1010 1100 1001 1101 0110 1011 编码后(手工计算)11010011010110100101101111 1011001010100
A12~A0(实验现象) 11010011010110100101101111 1011001010100
输入待校验13位数据11110011010110000101101111 1011001010000
R4~R0(实验现象) 1101111100 10011
输入待校验13位数据1100001101011 0110101101111 1011001000100
R4~R0(实验现象) 11010 11011 10101
3.遇到的问题及解决方法
关于海明码的编码规则:
1.每个校验位Ri被分配在海明码的第2的i次的位置上,
2.海明玛的每一位(Hi)是由多个/1个校验值进行校验的,被校验玛的位置玛是所有校验这位的校验位位置玛之和。
4.实验心得
由于可以用机器得到答案,可以对比手算结果。
有了海明码可以对数据进行校验和纠错,大大提高了数据的可靠性,这对数据的传输有很大的帮助。
了解到了计算机对处理数据的过程及流程。
实验2 实验日志
1.实验题目:乘法器
2.实验数据记录:
重复步骤被乘数(md)积(p)
被乘数是(-7)时乘数是(6)时
0 初始值1001 0000 0110 0
1 1 :00不操作1001 0000 0110 0
2 :积右移一位1001 0000 0011 0
2 1 :10->积=积-被乘数1001 0111 0011 0
2 :积右移一位1001 0011 1001 1
3 1 :11不操作1001 0011 1001 1
2 :积右移一位1001 0001 1100 1
4 1 :10->积=积+被乘数1001 1010 1100 1
2 :积右移一位1001 0101 0110 0
重复步骤被乘数(md)积(p)
被乘数是(-4)时乘数是(-5)时
0 初始值1100 0000 1011 0
1 1 :10->积=积-被乘数1100 0100 1011 0
2 :积右移一位1100 0010 0101 1
2 1 :11不操作1100 0010 0101 1
2 :积右移一位1100 0001 0010 1
3 1 :10->积=积+被乘数1100 1101 0010 1
2 :积右移一位1100 1110 1001 0
4 1 :10->积=积-被乘数1100 0010 1001 0
2 :积右移一位1100 0001 0100 1
3.遇到的问题及解决方法
首先是对-7的换算不是特别清楚,导致开始做错误,应该加强负数换算成补码的形式。
其次是00时,要进行逻辑右移。
4.实验心得
通过对booth算法的计算,知道了计算机处理乘法的原理。
尤其对有符号数进行运算的过程及方法
实验3 实验日志
1.实验题目:时序部件实验
2.实验数据记录:
信号I/O 开关/指示灯CLR复位现象结果值(按
cpu复位键)启动信号输入后现象结果值(SD8
执行负脉冲1-0-1)
停止信号输入后的现象结
果值(SD9执行负脉冲
1-0-1)
CLR复位I CPU复位按钮
不填不填不填启动信号I SD8 不填不填不填停止信号I SD9 不填不填不填 主频O A15 闪烁闪烁闪烁
D触发器O A14
不亮
亮不亮
R-S触发器O A13
不亮
亮不亮
T4~T1 O A7~A4
不亮
从右往左循环亮不亮
T4’~T1’O A3~A0
从右往左循环亮
从右往左循环亮从右往左循环亮
3.遇到的问题及解决方法
计算机在工作过程中是一个指令周期接一个指令周期,在一个指令周期内部是一个机器周期接一个机器周期,在一个机器周期内部是一个节拍接一个节拍的工作。
实验中应该注意脉冲源、节拍电位发生器和启停逻辑三部分。
控制并正确操作启停逻辑电路和节拍电位发生器。
4.实验心得
时序部件主要由主时钟源、节拍发生器和启停控制逻辑组成。
其中的关键部件是节拍发生器。
节拍发生器可以是一个环形计数器,也可以是一个计数译码电路。
时钟电路包括一个晶体控制的振荡电路。
晶体振荡器产生一个连续的正弦输出,正弦波转换为数字电路所需的方波。
方波提供快速上升和下降的边界以触发事件。
时钟频率越快,数据处理越快,处理频率来源于时钟频率。
时钟是产生周期信号的基本方法,这些周期信号用于实现包括计算机在内的电子设备的同步。
实验4 实验日志
1.实验题目:CPU__算术逻辑单元实验
2.实验数据记录:
表4.2 算术逻辑单元实验
运算数据运算类型操作码OP 运算结果result
标志位C 标志位Z
运算前运算后运算前运算后
第1组数据A=0xAAAA B=0x5555 result←A+B000 0xFFFF 0 0 0 0 result←A+1001 0x AAAB 0 0 0 0 result←A-B010 0x 5555 0 0 0 0 result←A-1011 0x AAA9 0 0 0 0 result←A and B100 0x 0000 0 0 0 0 result←A or B101 0x FFFF 0 0 0 0 result←not B110 0x AAAA 0 0 0 0 result← B111 0x 5555 0 0 0 0
第2组数据A=0xFFFF B=0x0000 result←A+B000 0x FFFF 0 0 0 0 result←A+1001 0x 0000 0 1 0 1 result←A-B010 0x FFFF 0 0 0 0 result←A-1011 0x FFFE 0 0 0 0 result←A and B100 0x 0000 0 0 1 1
result←A or B101 0x FFFF 0 0 0 0 result←not B110 0x FFFF 0 0 0 1 result← B111 0x 0000 0 0 0 1
第3组数据A=0x0000 B=0xFFFF result←A+B000 0x FFFF 0 1 0 0 result←A+1001 0x 0001 0 1 0 0 result←A-B010 0x 0001 0 1 1 0 result←A-1011 0x FFFF 0 1 1 0 result←A and B100 0x 0000 0 0 1 1 result←A or B101 0x FFFF 0 0 0 0 result←not B110 0x 0000 0 0 1 1 result← B111 0x FFFF 0 0 0 0
第4组数据A=0x8950 B=0x9863 result←A+B000 0x 21B3 0 1 0 0 result←A+1001 0x 8951 0 0 0 0 result←A-B010 0x F0ED 0 1 0 0 result←A-1011 0x 894F 1 0 0 0 result←A and B100 0x 8840 0 0 0 0 result←A or B101 0x 9973 0 0 0 0 result←not B110 0x 679C 0 0 0 0 result← B111 0x 9863 0 0 0 0
3.遇到的问题及解决方法
由于该实验比较简单,但是我们实验过程中有些步骤不够细心,在做实验的期间还是出现了一些细节性的小错误,没有将STEP_CLK短路子短接,短路子RUN_CLK断开,经过再次看实验原理将问题解决。
4.实验心得
本次试验,我们基础的掌握了简单运算器传送通路,并验证了运算器的组合功能。
算术逻辑部件的主要功能是对二进制数据进行定点算术运算,逻辑运算,和各种移位操作,算术运算包括,定点加减乘除运算,逻辑运算主要有逻辑与,逻辑或,逻辑异或,逻辑非操作,我们还通过对74181的电路图的分析,更深的认识了算术逻辑部件,有了之前的实验经验,我们很快完成了这个实验,可是对于进位和借位的知识点不是很懂,有待于课后看看书。
实验5 实验日志
1.实验题目:CPU指令译码器实验
2.实验数据记录:
表6-1 指令译码器实验(C=0且Z=0)--(SD4=0且SD5=0)遇到的问题及解决方法
指令IR[15..12]
(SD3~SD0) OP[2..0]
(R2~R0)
c_z_j_flag
R3
lj_instruct
R4
DRWr
R5
Mem_Write
R6
DW_instruc
t R7
Change_z
R8
Change_c
R9
sel_memdat
a R10
ADD DR,SR 0000 000 0 0 1 0 0 1 1 0
INC DR 0001 001 0 0 1 0 0 1 1 0 SUB DR,SR 0010 010 0 0 1 0 0 1 1 0 DEC DR 0011 011 0 0 1 0 0 1 1 0 AND DR,SR 0100 100 0 0 1 0 0 1 0 0 OR DR,SR 0101 101 0 0 1 0 0 1 0 0 NOT DR 0110 110 0 0 1 0 0 1 0 0 MOV DR,SR 0111 111 0 0 1 0 0 0 0 0 JMP ADR 1000 111 0 1 0 0 1 0 0 0 JNC ADR 1001 111 1 0 0 0 0 0 0 0 JNZ ADR 1010 111 1 0 0 0 0 0 0 0
MVRD
DR,DATA
1100 111 0 0 1 0 1 0 0 1 LDR DR,SR 1101 111 0 0 1 0 0 0 0 1 STR SR,DR 1110 111 0 0 0 1 0 0 0 0
表6-2 指令译码器实验(C=1且Z=1)--(SD4=1且SD5=1)
指令IR[15..12]
(SD3~SD0) OP[2..0]
(R2~R0)
c_z_j_flag
R3
lj_instruct
R4
DRWr
R5
Mem_Write
R6
DW_instruc
t R7
Change_z
R8
Change_c
R9
sel_memdat
a R10
ADD DR,SR 0000 000 0 0 1 0 0 1 1 0
INC DR 0001 001 0 0 1 0 0 1 1 0 SUB DR,SR 0010 010 0 0 1 0 0 1 1 0 DEC DR 0011 011 0 0 1 0 0 1 1 0 AND DR,SR 0100 100 0 0 1 0 0 1 0 0 OR DR,SR 0101 101 0 0 1 0 0 1 0 0 NOT DR 0110 110 0 0 1 0 0 1 0 0 MOV DR,SR 0111 111 0 0 1 0 0 0 0 0 JMP ADR 1000 111 0 1 0 0 1 0 0 0 JNC ADR 1001 111 0 0 0 0 0 0 0 0 JNZ ADR 1010 111 0 0 0 0 0 0 0 0
MVRD
DR,DATA
1100 111 0 0 1 0 1 0 0 1 LDR DR,SR 1101 111 0 0 1 0 0 0 0 1 STR SR,DR 1110 111 0 0 0 1 0 0 0 0
3.遇到的问题及解决方法
由于该实验比较简单,所以基本没什么问题,主要就是细致,读数的时候会小心点就行了。
4.实验心得
这次的实验看上去还是挺简单的,单纯从实验步骤上看的话。
但是要理解为什么要这么设计,表中的每个参数代表什么,还是得从原理下手,相对而言还有有些难度的。
在这次的实验中,我们学到了组合逻辑控制器是如何设计的,首先我们要绘制指令流程图,然后安排指令操作时间表,接着安排微命令表,再进行微操作逻辑综合,最后实现电路。
我们还看了各种微操作控制信号所代表的含义,对其有了初步的认识。
实验6 实验日志
1.实验题目:CPU__微程序控制器实验
2.实验数据记录:
表6-1当C=0;Z=0时候各个指令执行的过程及各微指令的执行情况
指令IR[15.
.12]
t2
t1
uAddr
[4..0]
D
W
_
i
n
s
t
r
u
c
t
t
M
e
m
_
W
r
i
t
e
S
e
l
_
m
e
m
d
a
t
a
D
R
W
r
C
h
a
n
g
e
_
c
C
h
a
n
g
e
_
z
o
p
_
c
o
d
e
2
o
p
_
c
o
d
e
1
o
p
_
c
o
d
e
l
d
_
I
R
c
_
z
_
j
_
f
l
a
g
l
j
_
i
n
s
t
r
u
c
t
P
C
_
i
n
c
P
2
P
1
P
N
_
µ
A
4
N
_
µ
A
3
N
_
µ
A
2
N
_
µ
A
1
N
_
µ
A
微指令
的十六
进制(6
位)
开关或指示灯SD3~
SD0 A15
A14
A12~A8A4 A3 A2 A1 A0 R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0
复位
ADD DR,SR 0000 01 10000 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x0380
00
0000 10 10000 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x0380
00
0000 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
0000 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 INC DR 0001 01 10001 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0x0390
00
0001 10 10001 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0x00039
0 0001 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
0001 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 SUB DR,SR 0010 01 10010 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0x03A00
0010 10 10010 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0x03A00
0 0010 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
0010 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
DEC DR 0011 01 10011 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0x03B00
0 0011 10 10011 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0x03B00
0 0011 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
0011 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 AND DR,SR 0100 01 10100 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x02C00
0 0100 10 10100 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x02C00
0 0100 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
0100 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
OR DR,SR 0101 01 10101 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0x02D00
0101 10 10101 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0x02D00
0 0101 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
0101 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 NOT DR 0110 01 10110 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 02E000
0110 10 10110 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 02E000
0110 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
0110 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 MOV DR,SR 0111 01 10111 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 027000
0111 10 10111 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 027000
0111 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
0111 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 JMP ADR 1000 01 11000 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 107200
1000 10 11000 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 107200
1000 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
1000 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 JNC ADR 1001 01 11001 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 007040
1001 10 11001 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 007040
1001 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
1001 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 JNZ ADR 1010 01 11010 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 007080
1010 10 11010 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 007080
1010 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
1010 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
1100 01 11100 1 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 167100 MVRD
DR,DATA
1100 10 11100 1 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 167100
1100 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
1100 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 LDR DR,SR 1101 01 11101 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 067000
1101 10 11101 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 067000
1101 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
1101 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30 STR SR,DR 1110 01 11110 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 087000
1110 10 11110 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 087000
1110 01 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
1110 10 00000 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0x0009
30
3.遇到的问题及解决方法
做了一部分后发现每条指令的执行长短不同,并且各组数据没有什么可遵循的规律,因而我们询问了周围的同学,意识到了CPU复位的重要性;此外,在记录完所有数据以后,我们整体查看找是否有规律,发现其中绝大多数最后一条微指令结果都相同,有两组数据例外,因而初步判断这两组数据是错误的,继而又重新复位再测试了一次,才清楚读数记数时出了差错,从而改正了错误。
4.实验心得
经过这次实验,我们认识了微程序控制器,并且理解了微程序控制器其中的控制原理,同时了解掌握了微程序控制器的设计思路和方法,也进一步的掌握了指令流程,此外,对CPU中组合逻辑控制器和微程序控制器的特点有了更清晰的了解。
在实验过程中,从遇到问题到解决问题,我们意识到了细心认真在完成一件事中的重要性,并且晓得了有良好的团队合作精神作为基础才能高效完满的完成任务,以及我们一边记录一边观察在实验中所得到的数据中也会为实验高效顺利的完成起着一定性的作用。
实验7 实验日志
1.实验题目:CPU实验_无流水无cache
2.实验步骤及数据记录:
(1)Test1(EX1.TXT):8位×8位乘法运算
(2)实验步骤:
第一个测试程序,R0=25,R1=6,结果(150)存放在R3中。
源代码见EX1.txt。
1、将实验台模式开关置为101,为单片机控制FPGA-CPU模式。
2、在Quartus下将实验7.1里面的cpu0.sof下载到FPGA中。
3、打开debugcontroller,执行File─>Rule Open命令,打开规则文件cpu.txt。
4、在debugcontroller中,执行file—>Code Open命令,打开伪汇编文件EX1.txt。
5、在debugcontroller中,执行build—>Comple Code命令,将EX1.txt 编译得到目标二进制文件,显示在机器代码窗口中。
6、在debugcontroller中,执行Build—>Upload BIN命令,将目标二进制代码写入实验台上底存储器中。
为了检查是否正确写入,执行Build—>Download RAM命令,将存储器中的代码读回,(从0开始,本例中写入18个words,所以从0到17),以做比较。
7、在debugcontroller中,利用Debug菜单中的命令调试程序。
8、观察并记录每执行完一字机器指令后DataBus、AddrBus、Rx各寄存器的数据,并注意观察执行一字机器指令和一条机器指令的周期长短。
9、最后结果如图7.5所示。
图7.5测试结果
注意:CPU下载一次后不必再下载,除非重启实验台。
但是每次执行新程序前要按实验台上的CPU复位按钮,使FPGA-CPU复位,然后执行Debug—>Reset命令,使DebugController处于开始调试状态。
实验数据:
(2) Test2(EX2.TXT):内存读写测试
实验步骤:
第二个测试程序:将32~0存到0x11F~0x100,将16~0取出,存到0x020F~0x0200,源代码见EX2.txt。
按照第一个测试程序的实验步骤,对程序进行调试,不过要注意:①需要对cpu0.sof重新下载。
②不需要重新打开规则文件cpu.txt。
③在将测试文件EX2.txt编译并下载到实验台上的存储器中后,要首先按实验台上的CPU复位按钮,使FPGA-CPU复位,然后执行DebugController中的Debug—>Reset命令,使DebugController处于开始调试状态。
数据记录:
(3) Test3(EX3.TXT):冒泡排序
实验步骤:
第三个测试程序:0x00FF~0x0104存储5 3 2 1 6 4,排序后存储在0x01FF~0x0204。
参照第二个测试程序的实验步骤,对程序进行调试。
观察内存地址的内容。
0x00FF~0x0104是5 3 2 1 6 4,0x01FF~0x0204存储是1 2 3 4 5 6。
数据记录:
3.遇到的问题及解决方法
CPU的调试时DebugController程序出了问题,跑不起来,后来将sw22的状态由URAT变为USB,问题才得以解决。
在将程序打开调试执行时出现问题,后来才发现是cpu规则文件未导入进去。
当观察实验现象时,我们想要重新观察指令从第一条开始运行时,由于不小心按到了重定位,结果一直往下运行,不能返回到第一条,后来才了解到要复位后才能从第一条指令重新执行。
4.实验心得
该实验整体来讲是比较复杂的,从看懂整个流程来讲就需要花较长时间,不能像以前那样跳着看,只能按着实验指导书上的理论和步骤一步一步去学习,去操作。
第一次接触DebugController软件后,大致掌握了FPGA-CPU芯片在TEC-CA开放式CPU教学系统上的调试方法,分析各部件源代码后,大概理清了个部件的联系,搞清楚了
Cpu的整体结构。