1、 计算机组成原理实验报告1评语: 课中检查完成的题号及题数:课后完成的题号与题数:成绩: 自评成绩:实验报告实验名称:微程序控制器实验日期:班级:学号: 姓名:一、实验目的:1.掌握微程序控制器的组成原理。2.掌握微程序的编制、写入,观察微程序的运行过程。二、实验内容:1.了解如何将微码加载到微控存中,了解指令并运行。2.通过微程序控制器实验能得简单运算结果。3.设计并修改电路,编写用微程序实现存储器中两个单字节十六进制数的加法运算,结果输出至OUT单元。三、项目要求及分析:要求:操作数由IN单元输入至MEM,在由MEM中读出操作数并在ALU中运算。四、具体实现: 1. 按图1-3-10 所示
2、连接实验线路,仔细查线无误后接通电源。如果有滴报计算机组成原理实验报告2警声,说明总线有竞争现象,应关闭电源,检查接线,直到错误排除。图1-3-10 实验接线图2. 对微控器进行读写操作,分两种情况:手动读写和联机读写。1) 手动读写进行手动读或是写,都需要手动给出地址,系统专门安排了一个ADDR 单元,做为地址输入。ADDR 单元原理如图1-3-11 所示,可以看出本单元实为一个加减计数器。当开关为加1档时,在T2 的下沿计数器进行加1 计数,当开关为减1档时,在T2 的下沿计数器进行减1计数,当开关置为置数档时,计数器置初值,其作用相当于直通,SA7SA0 的输出值就是二进制开关组的值。在
3、实验中选择什么档位,取决于写入数据的地址是否连续,如果是连续地址,选择加1或是减1档会方便一些。如果是离散地址,选择置数档会方便一些。计算机组成原理实验报告3图1-3-11 ADDR 单元原理图(1) 手动对微控器进行编程(写) 按图1-3-12 接好线(部分实验接线被改变,手动读写微控器完成后应予恢复)。图1-3-12 手动读写微控器接线图计算机组成原理实验报告4 将MC 单元编程开关置为编程档,时序单元状态开关置为单步档,ADDR 单元状态开关置为置数档。 使用ADDR 单元的低6 位SA5SA0 给出微地址MA5MA0,微地址可以通过MC 单元的MA5MA0 微地址灯显示。 CON 单元
4、SD27SD20、SD17SD10、SD07SD00 开关上置24 位微代码,待写入值由MC 单元的M23M0 二十四位LED 灯显示。 启动时序电路(按动一次TS 按钮),即将微代码写入到E PROM 2816 的相应地址对应的单元中。 重复、三步,将表1-3-2 的微代码写入2816 芯片中。(2) 手动对微控器进行校验(读) 接线方法和编程一样。 将MC 单元编程开关置为校验档,时序单元状态开关置为单步档,ADDR 单元状态开关置为置数档。 使用ADDR 单元的低6 位SA5SA0 给出微地址MA5MA0,微地址可以通过MC 单元的MA5MA0 微地址灯显示。相应地址单元的数据将会被读出
5、,并在MC 单元的M23M0二十四位LED 灯显示。重复本步,检查2816 芯片中相应地址单元的数据是否和表1-3-2 中的二进制数据相同,如果不同,则说明写入操作失败,应重新写入。2) 联机读写(1) 将微程序写入文件联机软件提供了微程序下载功能,以代替手动读写微控器,但微程序得以指定的格式写入到以TXT 为后缀的文件中,微程序的格式如下:注意,$M XX XXXXXX之间间隔必须为四个空格,不能用TAB键如$M 1F 112233,表示微指令的地址为1FH,微指令值为11H(高)、22H(中)、计算机组成原理实验报告533H(低),本次实验的微程序如下,其中分号;为注释符,分号后面的内容在
6、下载时将被忽略掉。;/* /;/ /;/ 微控器实验指令文件 /;/ /;/* /;/* Start Of MicroController Data */$M 00 000001 ; NOP$M 01 007070 ; CON(INS)-IR, P$M 04 002405 ; R0-B$M 05 04B201 ; A 加 B-R0$M 30 001404 ; R0-A$M 32 183001 ; IN-R0$M 33 280401 ; R0-OUT$M 35 000035 ; NOP;/* End Of MicroController Data * /(2) 写入微程序用联机软件的“【转储】【
7、装载】”功能将该格式(*.TXT)文件装载入实验系统。装入过程中,在软件的输出区的结果栏会显示装载信息,如当前正在装载的是机器指令还是微指令,还剩多少条指令等。(3) 校验微程序选择联机软件的“【转储】【刷新指令区】”可以读出下位机所有的机器指令和微指令,并在指令区显示。检查微控器相应地址单元的数据是否和表1-3-2 中的十六进制数据相同,如果不同,则说明写入操作失败,应重新写入,可以通过联机软件单独修改某个单元的微指令,先用鼠标左键单击指令区的微存TAB 按钮,然后再单击需修改单元的数据,此时该单元变为编辑框,输入6 位数据并回车,编辑框消失,计算机组成原理实验报告6并以红色显示写入的数据。
8、3. 运行微程序运行时也分两种情况:本机运行和联机运行。1) 本机运行 将MC 单元的编程开关置为运行档,MEM 单元的编程开关也置为运行档,按动CON 单元的CLR 按钮,将微地址寄存器(MAR)清零,同时也将指令寄存器(IR)、ALU单元的暂存器A 和暂存器B 清零。 将时序单元的状态开关置为单拍档,然后按动TS 按钮,体会系统在T1 和T2 节拍中各做的工作。T1 节拍微控器将后续微地址(下条执行的微指令的地址)打入微地址寄存器,当前微指令打入微指令寄存器,并产生执行部件相应的控制信号;T2 节拍根据T1 节拍产生的控制信号做出相应的执行动作,如果测试位有效,还要根据机器指令及当前微地址
9、寄存器中的内容进行译码,使微程序转入相应的微地址入口,实现微程序的分支。 按动CON 单元的CLR 按钮,清零微地址寄存器(MAR)等,并将时序单元的状态开关置为单步档。 置IN 单元数据为00100011,按动TS 按钮,当MC 单元后续微地址显示为000001 时,在CON 单元的SD27SD20 模拟给出IN 指令00100000 并继续单步执行,当MC 单元后续微地址显示为000001 时,说明当前指令已执行完;在CON 单元的SD27SD20 给出ADD 指令00000000,该指令将会在下个T2 被打入指令寄存器(IR),它将R0 中的数据和其自身相加后送R0;接下来在CON 单元
10、的SD27SD20 给出OUT 指令00110000 并继续单步执行,在MC 单元后续微地址显示为000001 时,观查OUT 单元的显示值是否为01000110。2) 联机运行联机运行时,进入软件界面,在菜单上选择【实验】【微控器实验】,打开本实验的数据通路图,也可以通过工具栏上的下拉框打开数据通路图,数据通路图如图1-3-8 所示。将MC 单元的编程开关置为运行档,MEM 单元的编程开关也置为运行档,按动CON 单元的总清开关后,按动软件中单节拍按钮,当后续微地址(通路图中的计算机组成原理实验报告7MAR)为000001时,置CON 单元SD27SD20,产生相应的机器指令,该指令将会在下
11、个T2 被打入指令寄存器(IR),在后面的节拍中将执行这条机器指令。仔细观察每条机器指令的执行过程,体会后续微地址被强置转换的过程,这是计算机识别和执行指令的根基。也可以打开微程序流程图,跟踪显示每条机器指令的执行过程。按本机运行的顺序给出数据和指令,观查最后的运算结果是否正确。思考题:1、画出指令系统修改后微程序流程图2. 编写微程序,指令如下:$M 00 000001; NOP$M 01 007070; CON(INS)-IR,P $M 30 186004; IN-AR $M 04 103005; MEM-R0 $M 05 001406; R0-A 计算机组成原理实验报告8$M 06 18
12、6007; IN-AR $M 07 103008; MEM-R0 $M 08 002409; RO-B $M 09 04B201; A+B-R0 $M 32 18600A; IN-AR $M 0A 18300B;IN-R0 $M 0B 200401; R0-MEM $M 35 000035; NOP $M 33 280401; RO-OUT3机器指令验证程序$P 00 00$P 01 10$P 02 20$P 03 FF$P 04 FF$P 05 DF$P 06 FF$P 07 FF$P 08 BF$P 09 FF$P 0A 5F$P 0B FF$P 0C FF$P 0D FF$P 0E FF
13、$P 0F FF计算机组成原理实验报告9$P 10 104.联机装入调试五、调试运行结果:我们所给MEM中数据为00100011,R0中数据为00100011,最终结果正确,为01000110。六、所遇问题及解决方法:1.连线中出现问题,通过请教老师、同学得以解决。2.实验中,实验箱接触不良,通过排查解决。3.对实验中所用软件不是十分熟悉,通过请教同学才得以解决。七、实验总结:1.通过本次实验我掌握了微程序控制器的功能、组成知识,掌握了指令格式和各字段功能,掌握了微程序的编制、写入、观察微程序的运行,学习了基本指令的执行流程。 2.通过实验,我对控制器有了更为深刻的认识,加深了其工作中数据流的去向认识。3.做实验前应该适当预习一下,这样子会知其所以然,顺利很多,同时,做实验需要持之以恒的恒心、信心与耐心,一定要认真、细心,特别微小的错误都有可能导致实验的失败,并且必须弄清楚每一步实验的原理和所需要的知识点。4.遇到问题,要寻找解决问题的方法,做事情一定要懂原理才行,这样才可以有速度完成实验。八、建议:1.实验之前尽可能带领我们熟悉本次试验的基本流程,不仅仅是理论知识的讲解;2.实验之前向大家讲解本次试验的注意事项,以免我们犯不必要的错误;3.如果可能,尽量带领我们熟悉实验操作,避免我们做实验时不知如何下手。