08 09 0A 14 16 3F 3B0AF009 5D0AF00A 7E4AF800 7F49C000 7D09A000 7F0AF03F 3B 5D 7E 7F 7D 7F 00 00 01 01 00 00 11101101 0 0 10101111 0 0 10101111 0 0 10101111 0 0 10011100 0 0 10011010 0 0 10101111 二进制微代码表 0000 0000 1000 0000 0000 0000 09 0A 00 00 00 3F
三. 实验过程和图片
uM单元:S0、S1、S2、S3(JP1) uM单元:wA、wB、rALU、CN_I(JP4) uM单元:rRi、wRi uM单元:rRdi uM单元:wIR(JP10) uM单元:M_nIO、nRD、nWR、nINTA(JP2) ALU单元:IN0..7(JP22) ALU单元:ALU_D0..ALU_D7(JP25) ALU单元:iD0..iD7(JP24) IR单元:D0..D7(JP35) IR单元:IR_A0..IR_A7(JP30) IN单元:IN0..IN7(JP101) IN单元:nCS、nRD(JP100) OUT单元:nCS、nWR(JP68) OUT单元:JP69 OUT单元:JP70 DBus单元:D0..D7(JP53) —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— ALU单元:S0、S1、S2、S3(JP18) ALU单元:wA、wB、rALU、CN_I(JP19) ALU单元:rR0、wR0 ALU单元:rRd0 IR单元:wIR(JP32) CBus单元:M_nIO、nRD、nWR、nINTA(JP42) iDBus单元:iD0..7(JP38) iDBus单元:iD0..7(JP37) iDBus单元:iD0..7(JP36) 开关区单元:K0..K7(JP97) uPC单元:IR_A0..IR_A7(JP12) DBus单元:D0..D7(JP52) CBus单元:IO_nCE0、nIO_RD(JP49) CBus单元:IO_nCE0、nIO_WR(JP48) DBus单元:D0..D7(JP54) 扩展区单元:JP65 扩展区单元:JP63 1、连线说明: 2、打开实验仪电源,按CON单元的nRST按键,复位
对实验程序的写入、校验、运行,分手动、联机两种方式。 (一) 手动方式
(1) 手动对uM进行编程(写)
①如果EXEC键上方指示灯熄灭,表示实验仪在uM、MEM编辑状态,转②;否则,按一次EXEC键,使EXEC键上方指示灯熄灭
②如果uM/M键上方指示灯亮,表示处于uM编辑状态,直接转③;否则,按uM/M键一次,使uM/M键上方指示灯点亮
③IN单元开关给出uM的首地址,按一次ADDR键,地址写入uPC
④IN单元开关给出该控存单元数据的低八位,按一次nWR键,将IN单元的数据写到该单元的低8位;按一次+1键,IN单元给出中八位数据,按一次nWR键,将IN单元的数据写到该单元的中8位;按一次+1键,IN单元给出高八位数据,按一次nWR键,将IN单元的数据写到该单元的高8位;按一次+1键,IN单元给出最高八位数据,按一次nWR键,将IN单元的数据写到该单元的最高8位;按一次+1键,uPC+1,准备写下一单元
⑤重复③、④四步,将微代码表的数据写入6116/2816芯片中。
(2) 手动对uM进行校验(读)
①确认EXEC键上方指示灯熄灭;uM/M键上方指示灯点亮
②IN单元开关给出uM的首地址,按一次ADDR键,地址写入uPC
③按一次nRD键,uM单元的指示灯uM7-uM0显示该单元的低八位数据;按一次+1键,按一次nRD键,uM单元的指示灯uM15-uM8显示该单元的中八位数据;按一次+1键,按一次nRD键,uM单元的指示灯uM23-uM16显示该单元的高八位数据;按一次+1键,按一次nRD键,uM单元的指示灯uM31-uM24显示该单元的最高八位数据;按一次+1键,uPC+1,准备读下一单元
④重复②、③步,完成对微代码的校验。如校验的微指令出错,则返回输入操作,修改该单元的数据后再进行校验,直至确认输入的微代码全部准确无误为止,完成对微指令的输入。
(3) 本机运行
(1)按CON单元的nRST键一次,复位实验仪;如果EXEC键上方指示灯不亮,请按一次EXEC键,点亮指示灯,表示实验仪在运行状态。
(2)在下边的各步操作中,按CON单元的uSTEP按键时,体会系统在T1、T2、T3节拍中各做的工作;如果按一次STEP键,即可单步运行一条微指令;对照微程序流程图,观察微地址uPC指示灯是否与流程一致。
(3)按CON单元的STEP按键,uM单元后续微地址uPC显示为00000001时,置开关区的K7..K0数据为10101000(A8H, IN指令),按uSTEP按键二次,在T2的下降沿,A8H写入IR中,按uSTEP按键一次,在T3时IR单元解析,uPC显示新的地址00010100,置IN单元数据为01010100(54H),连续按uSTEP按键三次,在T3下降沿,将数据54H写入R0;uPC显示01H,说明当前指令已执行完,转回取指操作;开关区的K7..K0给出00000000(00H,ADD指令),该指令将会在下个T2 下降沿,写入IR,下一步,在T1下降沿将R0中数据写入A中,再下一步,在T2下降沿将R0中数据写入B中,再下一步,在T3时刻执行加法,在T3下降沿将结果写入R0中;uPC显示01H,开关区的K7..K0给出10101100(ACH,OUT指令),并继续STEP执行,在uPC显示为01时,观查 OUT单元的显示值是否为 10101000。
(二) 联机方式 (1) 文件格式
星研集成环境软件要求微程序文件的扩展名为PuM,微程序的格式如下:
分号“;”是注释符,从分号开始到该行结束,不影响微程序、机器程序的生成。 如:$uM 5F 7F0AF05F,表示微指令的地址为5FH,微指令值为7FH(最高8位)、0AH(高8位)、F0H(中8位)、5FH(低8位)。
(2) 星研软件的使用
1、运行星研集成环境软件 启动画面如下图:
2、新建源文件
)打开窗口
下面我们建立源文件,执行 [主菜单 ? 文件 ? 新建],(或者点击图标如下:
首先选择存放源文件的目录,输入文件名,注意:文件名后缀必须是“PuM”。本实例文件名为uM.PuM。窗口如下:
按“确定”即可。然后即出现文件编辑窗口:
输入源程序,本实例的源程序如下: $uM 00 6F0ED001 ;取指(MEM->IR)、PC+1 $uM 08 3B0AF009 ;R0->A, uPC=09 $uM 09 5D0AF00A ;R0->B, uPC=0A $uM 0A 7E4AF800 ;A+B->R0, uPC=0 $uM 14 7F49C000 ;IN->R0, uPC=0 $uM 16 7D09A000 ;R0->OUT, uPC=0 $uM 3F 7F0AF03F HALT 输入源程序,如下图:
这样一个源文件就建立好了。 3.编译文件
首先选择一个PuM源文件,然后可以编译文件了。对文件编译,如果没有错误,生成代码文件: 微程序代码文件扩展名为“uDob”。编译、连接文件的方法有如下二种:(1)使用[ 主菜单 ? 项目 ? 编译、连接 ]或[主菜单 ? 项目 ? 重新编译、连接 ]”。(2)点击图标或来“编译、连接”或“重新编译连接”。 “编译连接”与“重新编译、连接”区别:“重新编译、连接”不管源文件是否修改,对源文件编译,如果没有错误,生成代码文件(uDob文件)。编译、连接过程中产生的信息显示在信息窗的“建立”视中。编译没有错误的信息如下:
若有错误则出现如下信息框:
有错误、警告信息,用鼠标左键双击错误、警告信息或将光标移到错误、警告信息上,回车,系统自动打开对应的出错文件,并定位于出错行上。