组成原理课程设计 - 扩展指令(4条)

更新时间:2023-09-20 03:58:01 阅读量: 小学教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.课程设计目的

通过计算机组成原理课程设计,进一步熟练掌握计算机各功能部件的内部构造和相互之间的联系(部件配置、相互连接和作用)、各功能部件的性能参数的相互匹配、机器指令级的各种功能和特性。学生能够将所学知识融会贯通、进一步系统化,进一步提高硬件系统设计的能力,为以后的更高一级的硬件设计打下坚实基础。

2.课程设计任务

在现有的TEC-XP+教学机系统上扩展4条指令。 要求:(1)4条指令至少要用到4种寻址方式;

(2)4条指令分别由1步、2步、3步、4步完成; (3)监控命令A、U必须能够支持这4条指令。

3.系统组成原理及实现

(1)运算器

运算器的基本组成与实现

TEC-XP系统机上的运算器,可选 8 或 16 位字长,分别由 2 或 4 片 4 位的位片结构的器件组成,作为讲解运算器的实例和教学实验的对象,有很强的典型性。它可脱离TEC-XP主机,单独地进行运算器部件实验,也可在主机控制下完成运算器部件实验、其它功能部件实验或整机实验。

位片结构是说,每个器件本身就是一个完整的运算器,只是位数较少,要组成更多位数的实用运算器要用多片共同实现,这里选用的是美国AMD公司的 Am2901芯片。

Am2901芯片是一个 4位的位片结构的运算器器件,其内部组成如下图所示。

?I3

?I4

?I5 ?I6 ?I7 ?I0 ?I8 ?I1 ?I2

第一个组成部分是算逻运算部件ALU,完成 3 种算术运算 和 5 种逻辑运算, 共计 8 种功能。 其输出为 F,两路输入为 S、R,最低位进位Cn,四个状态输出信号如图所示。

第二个组成部分是通用寄存器组,由16个寄存器构成,并通过B口与A口地址选择被读的寄存器,B口地址还用于指定写入寄存器。通过B口地址、A口地址读出的数据将送到B、A锁存器,要写入寄存器的数据由一个多路选择器送来。

第三个组成部分是乘商寄存器Q,它能对自己的内容完成左右移位功能,其输出可以送往ALU,并可接收ALU的输出结果。一组三选一门和另一组二选一门用来选择送向ALU的 R、S输入端的数据来源,包括Q寄存器、A口、 B口、外部输入D数据的8 种不同组合。

第四个组成部分是 5 组多路选通门,包括一组三选一门完成把ALU的输出、或左移一位、或右移一位的值送往通用寄存器组,最高、最低位移位信号有双向入/出问题。一组三选一门完成Q寄存器的左移一位、或右移一位、或接收ALU输出值的功能,最高、最低位移位信号有双向入/出问题。一组二选一门,选择把A口数据或ALU结果送出芯片,以给出输出Y的数据,Y输出的有无还受输出使能 /OE信号的控制,仅当 /OE为低时才有Y输出 ,/OE为高,Y输出为高阻态。

ALU的数据来源由I2-0三位选择码控制,8种功能由I5-3三位选择码实现,运算结果处理方式由I8-6三位选择码控制,具体规定如下表所示。

Am2901的9位控制码

状态寄存器、最低进位输入、移位输入控制信号

运算器是计算机硬件系统传统的5大功能部件之一,承担着执行运算和暂存运算数据的功能,通常由执行算术逻辑运算功能的ALU线路、暂存参加ALU运算的数据和中间运算结果的通用寄存器组、支持乘除法运算的专用寄存器3部分组成,3个部分之间通过多路选择器线路实现连接,从而构成一个完整的运算器部件。

TEC-XP计原l 6系统的运算器部件主体部分由4片长度为4位的位片结构运算器芯片Am2901组成。4 片Am2901之间的连接如下图所示。

(2)微程序控制器

微程序控制器的基本组成与实现

TEC-XP+教学计算机系统同时实现了微程序方案和组合逻辑方案的两种控制器,其总体组成如图2-5所示。从两种控制器的组成来看,都包括有程序计数器PC、指令寄存器IR、程序定序器Am2910以及MACH芯片四部分。PC是选用在运算器的通用寄存器组中的R5实现的,图中用虚线表示。IR是选用两片8位的寄

存器电路实现的,还用到一片传送IR低位字节内容到内部总线IB的开关门电路。Am2910芯片用来确定微指令的执行次序。MACH芯片是一片有130多个输入输出管脚、由一万个门电路组成的CPLD器件,其内部的线路组成和实现的功能都比较复杂。

图2-5 教学机计算机控制器的总体组成

1)程序计数器PC可以在运算器内部完成加1运算功能,产生下一条相邻指令的地址;或者完成加一个相对转移的偏移量,产生相对转移指令的转移地址;或者直接接收一个16位的指令地址,用在程序调用或者跳转指令中。

2)指令寄存器IR接收从内存储器读出并传送到内部总线IB的指令内容,其全部16位输出送MACH芯片的输入引脚,其低8位内容还可以经一个有三态功能的开关门送到内部总线IB。

3)微程序定序器Am2910芯片用在微程序控制器中,用于以多种方式向控制存储器提供下一条微指令的地址,控制微指令的执行次序,解决的是指令执行步骤的衔接问题。

4)两种控制器的主要功能线路都集中到一片高集成度CPLD器件(MACH芯片)中实现,在完成扩展指令的教学实验中,可以不对MACH芯片之外的电路作任何变动,全部操作都集中到修改描述MACH芯片功能的ABEL或VHDL语言的源程序代码、执行编译和下载操作以及运行调试这样几步工作。这是本教学计算机系统的一大显著特色,对降低学生的学习难度、简化修改和扩展控制器功能的操作、改善教学实验效果具有重要的作用。

4.扩展4条指令

(1)4条指令的格式及功能 指令格式 NTAD DR,SR 功能 SR的值取非和DR的值相与 SR的值和SR的值相与,取反 寻址方式 SR,DR均为直接寻址 SR,DR均为直接寻址 编码 25H 操作步数 一步 入口 90H ADNT DR,SR 27H 两步 91H ADRL DR,[SR] 求出DR,[SR]中值的DR直接寻址 和,然后除以二 求DR,[SR]的差 SR间接寻址 DR直接寻址 SR间接寻址 E9 四步 93H SURM DR,[SR]

E8 三步 97H (2)指令所对应的微程序 1)指令NTAD DR,SR

? 入口地址为90H,意思是指令的存储地址为90H。 ? 指令下址为30H,意思是下一条指令地址为30H结束程序。

? CI3-0,SCC3-0为30H,及CI3-0为011B表示SCC编码有效,SCC3-0为0000H

表示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为4,1,意思是对应的源寄存器和目标寄存器为通用寄存器的两

个AB.

? I8-I6,I5-I3为3,5,意思是I8-I6为011B表示将结果送入B寄存器,I5-I3

为101B表示该条命令执行的是非与指令。

? B口,A口为8,8,意思是AB两个寄存其的地址为1000 0000B。

? SST,SSHSCI为0,0,意思是SST为001B表示进行状态寄存器符号位的判断,

SSHSCI为000B表示Cin=0。

? DC2,DC1为0,0,意思是DC2为000B表示不操作,DC1为000B表示将开关

内容送到内部总线 2)ADNT DR,SR

①第一条微程序

? 入口地址为91H,意思是指令的存储地址为91H。

? 指令下址为00H,意思是没有指定跳转地址,顺序执行下一条微程序。 ? CI3-0,SCC3-0为E0H,及CI3-0为1110B表示顺序执行,SCC3-0为0000H表

示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为4,1,意思是对应通用寄存器A,B。

? I8-I6,I5-I3为1,0,意思是I8-I6为001B表示将结果输出,I5-I3为000B

表示该条命令执行的是加法命令。

? B口,A口为8,8,意思是用到了A,B两个口从内存外得到数据。 ? SST,SSHSCI为1,0,意思是做相应的状态判断,同时Cin=0。

? DC2,DC1为0,0,意思是DC2为000B表示专用寄存器不进行操作,DC1为

000B表示将开关内容送到内部总线

②第二条微程序

? 入口地址为92H,意思是指令的存储地址为92H。

? 指令下址为30H,意思是跳转到结束语句,该句结束后该条指令结束。 ? CI3-0,SCC3-0为30H,及CI3-0为011B表示SCC编码有效,SCC3-0为0000H

表示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为4,3,意思是对应的只有一个寄存器B。

? I8-I6,I5-I3为3,7,意思是I8-I6为011B表示将结果输出并送给B寄存

器,I5-I3为111B表示该条命令执行的是取非命令。

? B口,A口为8,0,意思是B口的地址为1000 0000B可以看出该条微程序只

用到了B寄存器。

? SST,SSHSCI为1,0,意思是做相应的状态判断,同时Cin=0。

? DC2,DC1为0,0,意思是DC2为011B表示不对专用寄存器进行操作,DC1为

000B表示将开关内容送到内部总线。 3)SURM DR,[SR]

①第一条微程序

? 入口地址为97H,意思是指令的存储地址为97H。

? 指令下址为00H,意思是没有指定跳转地址,顺序执行下一条微程序。 ? CI3-0,SCC3-0为E0H,及CI3-0为1110B表示顺序执行,SCC3-0为0000H表

示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。

? MVR,I2-0为4,4,意思是对应的只有一个寄存器A。

? I8-I6,I5-I3为1,0,意思是I8-I6为001B表示将结果输出,I5-I3为000B

表示该条命令执行的是加法命令。

? B口,A口为0,8,意思是A口的地址为1000 0000B可以看出该条微程序只

用到了A寄存器。

? DC2,DC1为3,0,意思是DC2为011B表示地址寄存器接受,DC1为000B表

示将开关内容送到内部总线

②第二条微程序

? 入口地址为98H,意思是指令的存储地址为98H。

? 指令下址为00H,意思是没有指定跳转地址,顺序执行下一条微程序。 ? CI3-0,SCC3-0为E0H,及CI3-0为1110B表示顺序执行,SCC3-0为0000H表

示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为4,3,意思是对应的只有一个寄存器B。

? I8-I6,I5-I3为0,0,意思是I8-I6为000B表示将结果输出并送给Q寄存

器,I5-I3为000B表示该条命令执行的是加法命令。

? B口,A口为8,0,意思是B口的地址为1000 0000B可以看出该条微程序只

用到了B寄存器。

? DC2,DC1为0,0,意思是DC2为011B表示不操作,DC1为000B表示将开关

内容送到内部总线

③第三条微程序

? 入口地址为99H,意思是指令的存储地址为99H。 ? 指令下址为30H,意思是结束程序。

? CI3-0,SCC3-0为30H,及CI3-0为0011B表示SCC编码有效,SCC3-0为0000H

表示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为1,6,意思是对应的寄存器要用到D,Q两个。

? I8-I6,I5-I3为3,1,意思是I8-I6为011B表示将结果输出并送给B寄存

器,I5-I3为001B表示该条命令执行的是减法命令。

? B口,A口为8,0,意思是B口的地址为1000 0000B可以看出该条微程序只

用到了B寄存器。

? SST,SSHSCI为0,1,意思是SST为000B进行状态位的判断,SSHSCI为001B

及Cin为1。

? DC2,DC1为0,0,意思是DC2为011B表示不操作,DC1为000B表示将开关

内容送到内部总线。 4)ADRL DR,[SR]

①第一条微程序

? 入口地址为93H,意思是指令的存储地址为93H。

? 指令下址为00H,意思是没有指定跳转地址,顺序执行下一条微程序。 ? CI3-0,SCC3-0为E0H,及CI3-0为1110B表示顺序执行,SCC3-0为0000H表

示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为4,4,意思是对应的只有一个寄存器A。

? I8-I6,I5-I3为1,0,意思是I8-I6为001B表示将结果输出,I5-I3为000B

表示该条命令执行的是加法命令。

? B口,A口为0,8,意思是A口的地址为1000 0000B可以看出该条微程序只

用到了A寄存器。

? DC2,DC1为3,0,意思是DC2为011B表示地址寄存器接受,DC1为000B表

示将开关内容送到内部总线

②第二条微程序

? 入口地址为94H,意思是指令的存储地址为94H。

? 指令下址为00H,意思是没有指定跳转地址,顺序执行下一条微程序。 ? CI3-0,SCC3-0为E0H,及CI3-0为1110B表示顺序执行,SCC3-0为0000H表

示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为4,3,意思是对应的只有一个寄存器B。

? I8-I6,I5-I3为0,0,意思是I8-I6为000B表示将结果输出并送给Q寄存

器,I5-I3为000B表示该条命令执行的是加法命令。

? B口,A口为8,0,意思是B口的地址为1000 0000B可以看出该条微程序只

用到了B寄存器。

? DC2,DC1为0,0,意思是DC2为011B表示不操作,DC1为000B表示将开关

内容送到内部总线

③第三条微程序

? 入口地址为95H,意思是指令的存储地址为95H。 ? 指令下址为00H,意思是顺序执行下一条微程序。

? CI3-0,SCC3-0为E0H,及CI3-0为1110B表示顺序执行,SCC3-0为0000H表

示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为1,6,意思是对应的寄存器要用到D,Q两个。

? I8-I6,I5-I3为3,0,意思是I8-I6为011B表示将结果输出并送给B寄存

器,I5-I3为001B表示该条命令执行的是加法命令。

? B口,A口为8,0,意思是B口的地址为1000 0000B可以看出该条微程序只

用到了B寄存器。

? SST,SSHSCI为0,0,意思是SST为000B进行状态位的判断,SSHSCI为000B

及Cin为0。

? DC2,DC1为0,0,意思是DC2为011B表示不操作,DC1为000B表示将开关

内容送到内部总线。

④第四条微程序

? 入口地址为95H,意思是指令的存储地址为95H。 ? 指令下址为30H,意思是结束程序。

? CI3-0,SCC3-0为30H,及CI3-0为0011B表示SCC编码有效,SCC3-0为0000H

表示必须转移,及入口执行第一条为程序后必须转到下址对应的地址。 ? MVR,I2-0为4,3,意思是从非串口非内存读数据并对应的寄存器要用到D,

Q两个。

? I8-I6,I5-I3为5,0,意思是I8-I6为011B表示将结果除以二输出并送给B

寄存器,I5-I3为001B表示该条命令执行的是加法命令。

? B口,A口为8,0,意思是B口的地址为1000 0000B可以看出该条微程序只

用到了B寄存器。

? SST,SSHSCI为5,0,意思是SST为101B进行状态位的判断,地位进位由RMA0

的值决定,SSHSCI为000B及Cin为0。

? DC2,DC1为0,0,意思是DC2为011B表示不操作,DC1为000B表示将开关

内容送到内部总线。

(3)ABEL语言源程序编辑以及JED文件生成

① 在所有现存在的指令下面添加 NTAD = (IR == [0010 0101]); ADNT = (IR == [0010 0111]); ADRL = (IR == [1110 1001]); SURM = (IR == [1110 1000]);

② 紧接着将即将运用到的微程序对应的地址添加进去 MA90 = (Y==[1,0,0,1,0,0,0,0]); MA91 = (Y==[1,0,0,1,0,0,0,1]); MA92 = (Y==[1,0,0,1,0,0,1,0]); MA93 = (Y==[1,0,0,1,0,0,1,1]); MA94 = (Y==[1,0,0,1,0,1,0,0]); MA95 = (Y==[1,0,0,1,0,1,0,1]); MA96 = (Y==[1,0,0,1,0,1,1,0]); MA97 = (Y==[1,0,0,1,0,1,1,1]); MA98 = (Y==[1,0,0,1,1,0,0,0]); MA99 = (Y==[1,0,0,1,1,0,0,1]);

③ 在D0-D7做如下的添加,将命令入口地址对应为1的加入指令 D0= !C_M&(!_MAP&(ADNT#SURM#ADRL#SUB#OR#CMP#MVRR#DEC#SHR#JR#PSHF#PUSH#POP#POPF#STRR#LDRR#LDPC#MVRD#CALA#RET#IRET#DI#ASR#RCR#STC#LDRA#LDRX#STRA#STRX#SBB#JRS#JRNS)#NXTADDR0&!_PL)&!Bit8;

D1= !C_M&(!_MAP&(SURM#ADRL#AND#OR#TEST#MVRR#SHL#SHR#IN_#OUT#POP#POPF#LDRR#LDPC#JMPA#CALA#RET#IRET#NOT#ASR#CLC#STC#JMPR#LDRA#STRA)#NXTADDR1&!_PL)&!Bit8;

D2= !C_M&(!_MAP&(SURM#ADD#SUB#AND#OR#INC#DEC#SHL#SHR#PSHF#PUSH#POP#POPF#MVRD#JMPA#CALA#IRET#RCL#RCR#CLC#STC#LDRX#STRA#CALR)#NXTADDR2&!_PL)#NXTADDR2&!_PL)&!Bit8;

D3= !C_M&(!_MAP&(XOR_#CMP#TEST#MVRR#INC#DEC#SHR#SHL#STRR#LDRR#LDPC#MVRD#JMPA#CALA#EI#DI#JMPR#JRS#JRNS#LDRA#LDRX#STRA)#NXTADDR3&!_PL)&!Bit8;

D4= !C_M&(!_MAP&(ADNT#NTAD#SURM#ADRL#JRC#JRNC#JRZ#JRNZ#JR#IN_#OUT#PSHF#PUSH#POP#POPF#STRR#LDRR#LDPC#MVRD#JMPA#CALA

#EI#DI#ADC#SBB#NOT#ASR#RCL#RCR#CLC#STC#JMPR#LDRA#LDRX#STRA)#NXTADDR4&!_PL)#NXTADDR4&!_PL)&!Bit8;

D5= !C_M&(!_MAP&(RET#IRET#JRS#JRNS#CALR#STRX)#NXTADDR5&!_PL)&!Bit8;

D6=!C_M&(!_MAP&(EI#DI#IRET#ADC#SBB#NOT#ASR#RCL#RCR#CLC#STC#JMPR#JRS#JRNS#LDRA#LDRX#STRA#STRX#CALR)#NXTADDR6&!_PL)&!Bit8;

D7= !C_M&(!_MAP&(ADNT#NTAD#SURM#ADRL)#NXTADDR7&!_PL)&!Bit8;

④ 添加下地址对应的代码

NXTADDR7:= 0; NXTADDR6:= 0;

NXTADDR5:=!C_M&(MA92#MA90#MA99#MA96#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA13#MA14#MA16#MA18#MA1A#MA1C#MA1E#MA22#MA24#MA30#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA63#MA66#MA68#MA69#MA6A)&!Bit8;

NXTADDR4:=!C_M&(MA92#MA98#MA90#MA99#MA96#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16#MA17#MA18#MA1A#MA1C#MA1D#MA22#MA24#MA30#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA5C#MA5E#MA60#MA63#MA66#MA69#MA6A)&!Bit8;

NXTADDR3:= !C_M&(MA15#MA17#MA1D#MA30#MA5C#MA5E#MA60)&!Bit8

NXTADDR2:= !C_M&(MA12#MA17#MA1D#MA1E#MA5C#MA5E)&!Bit8; NXTADDR1:= !C_M&(MA15#MA30#MA31#MA60#MA68)&!Bit8; NXTADDR0:= !C_M&(MA3F#MA68)&!Bit8;

⑤ CI3-0,SCC3-0对应的代码

CI3:= !C_M&(MA91#MA97#MA98#MA95#MA94#MA93#MA00#MA01#MA02#MA19#MA1B#MA89#MA1F#MA20#MA21#MA23#MA3A#MA3B#MA3C#MA3D#MA3E#MA5B#MA5D#MA5F#MA61#MA62#MA64#MA65#MA67#MA89)&NRST&!Bit8;

CI2:= !C_M&(MA91#MA97#MA98#MA95#MA94#MA93#MA00#MA01#MA02#MA19#MA1B#MA89#MA1F#MA20#MA21#MA23#MA2A#MA3B#MA3C#MA3D#MA3E#MA5B#MA5D#MA5F#MA61#MA62#MA64#MA65#MA67)&NRST&!Bit8;

CI1:= !C_M&1&NRST&!Bit8;

CI0 := !C_M&(MA92#MA90#MA99#MA96#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16

SCC3 := !C_M&0&NRST&!Bit8;

SCC2 := !C_M&(MA10#MA12#MA15#MA17#MA69)&NRST&!Bit8; SCC1 := !C_M&(MA12#MA15#MA17#MA30)&NRST&!Bit8; SCC0 := !C_M&(MA15#MA17#MA69)&NRST&!Bit8;

⑥ MVR,I2-I0添加相应代码

!_MIO00:=!(MA92#MA91#MA90#MA98#MA97#MA96#MA94#MA93#MA00#MA01#MA03#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA15#MA17#MA19#MA1B#MA89#MA1D#MA1E#MA1F#MA21#MA23#MA30#MA31#MA3A#MA3B#MA3D#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA5B#MA5D#MA5F#MA61#MA64#MA66#MA67#MA69#MA6A);

REQ00 := (MA13#MA14);

_WE00 :=(MA99#MA95#MA02#MA14#MA18#MA1C#MA20#MA24#MA5C#MA5E#MA60#MA62#MA68);

I200:=(MA99#MA97#MA95#MA93#MA0B#MA11#MA12#MA14#MA1A#MA1B#MA89#MA1C#MA20#MA24#MA30#MA3C#MA3F#MA5A#MA5C#MA5E#MA60#MA62#MA65#MA66#MA6A);

I100:=(MA92#MA99#MA98#MA96#MA95#MA94#MA01#MA0C#MA0D#MA0E#MA0F#MA12#MA13#MA14#MA15#MA17#MA19#MA1C#MA1D#MA1E#MA1F#MA20#MA21#MA22#MA23#MA24#MA30#MA31#MA3B#MA3D#MA3E#MA3F#MA52#MA53#MA54#MA55#MA5B#MA5C#MA5D#MA5F#MA60#MA61#MA63#MA64#MA67);

!I000:=!(MA92#MA91#MA90#MA98#MA96#MA94#MA00#MA01#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0C#MA0D#MA0E#MA0F#MA11#MA12#MA13#MA14#MA15#MA17#MA19#MA1C#MA1D#MA1E#MA1F#MA20#MA21#MA23#MA24#MA30#MA31#MA3B#MA3D#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA5B#MA5C#MA5D#MA5E#MA5F#MA60#MA61#MA62#MA63#MA64#MA67#MA6A);

⑦ I8-I6,I5-3代码添加

I800 := (MA97#MA96#MA0E#MA0F#MA53#MA54#MA55);

I700 :=(MA92#MA91#MA90#MA99#MA95#MA00#MA01#MA04#MA05#MA06#MA07#MA08#MA0B#MA0C#MA0D#MA0E#MA11#MA14#MA15#MA17#MA1C#MA1D#MA1E#MA1F#MA21#MA22#MA23#MA24#MA31#MA3B#MA3D#MA3F#MA50#MA51#MA52#MA54#MA5A#MA5B#MA5D#MA5F#MA61#MA64#MA66#MA67#MA6A);

!I600 :=!(MA92#MA91#MA90#MA99#MA96#MA95#MA93#MA00#MA02#MA03#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16#MA18#MA19#MA1A#MA1B#MA89#MA1C#MA21#MA24#MA3A#MA3B#MA3C#MA3D#MA3E#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA

57#MA58#MA59#MA5A#MA5C#MA5E#MA60#MA62#MA63#MA64#MA65#MA66#MA68#MA69#MA6A);

I500 :=(MA92#MA91#MA90#MA06#MA08#MA0A#MA52); I400 :=(MA92#MA07#MA08#MA52);

I300 :=(MA92#MA90#MA99#MA00#MA05#MA07#MA09#MA0D#MA15#MA21#MA3B#MA3D#MA51#MA52#MA64);

⑧ B口,A口对应代码添加

B30=(MA91#MA92#MA90#MA98#MA99#MA96#MA95#MA94#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA19#MA1C#MA50#MA51#MA52#MA53#MA54#MA55#MA63);

B20=(MA00#MA01#MA11#MA15#MA17#MA1D#MA1E#MA1F#MA21#MA22#MA23#MA24#MA31#MA3B#MA3D#MA3F#MA5A#MA5B#MA5D#MA5F#MA61#MA64#MA66#MA67#MA6A); B10 = 0;

B00=(MA00#MA01#MA11#MA1D#MA1E#MA1F#MA22#MA24#MA31#MA3F#MA5A#MA5B#MA5D#MA5F#MA61#MA66#MA6A);

A30=(MA91#MA90#MA97#MA93#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA1A#MA1B#MA89#MA50#MA51#MA5A#MA5E#MA62#MA66);

A20=(MA00#MA01#MA11#MA17#MA1D#MA1E#MA1F#MA22#MA23#MA31#MA3C#MA5B#MA5D#MA5F#MA61#MA65#MA67#MA6A); A10 = 0;

A00=(MA00#MA01#MA11#MA1D#MA1E#MA1F#MA22#MA31#MA3C#MA5B#MA5D#MA5F#MA61#MA65#MA6A);

⑨ SST ,SSHSCI对应代码的添加

SST200:=(MA96#MA0E#MA0F#MA53#MA54#MA55#MA57); SST100:=(MA0E#MA18#MA54#MA56#MA68);

SST000:=(MA92#MA91#MA96#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0C#MA0D#MA0F#MA50#MA51#MA52#MA53#MA55#MA56);

SSH00 :=(MA53#MA54#MA55); SCI100:=(MA50#MA51#MA53);

SCI000:=(MA99#MA00#MA01#MA05#MA09#MA0C#MA17#MA1D#MA1E#MA1F#MA23#MA31#MA53#MA54#MA55#MA5B#MA5D#MA5F#MA61#MA67);

⑩ DC2,DC1对应代码的添加

DC2_200:=(MA00#MA3A#MA3C#MA58#MA59#MA68);

DC2_100:=(MA97#MA93#MA00#MA01#MA12#MA15#MA17#MA19#MA1B

#MA89#MA1D#MA1E#MA1F#MA21#MA23#MA31#MA3A#MA3B#MA3D#MA58#MA59#MA5B#MA5C#MA5D#MA5E#MA5F#MA60#MA61#MA62#MA64#MA67);

DC2_000:=(MA97#MA93#MA00#MA01#MA02#MA12#MA15#MA17#MA19#MA1B#MA89#MA1D#MA1E#MA1F#MA21#MA23#MA31#MA3A#MA3B#MA3C#MA3D#MA59#MA5B#MA5C#MA5D#MA5E#MA5F#MA60#MA61#MA62#MA64#MA67);

DC1_200:= (MA01#MA31#MA3F); //(MA3F);//

DC1_100:=(MA01#MA11#MA12#MA16#MA30#MA31#MA6A);//(MA11#MA12#MA16#MA30#MA6A); //

DC1_000:=(MA13#MA16#MA1A#MA22#MA30#MA3C#MA3E#MA3F#MA63#MA65);

将对应的代码添加完全后,利用JED编译软件生成.jed文件在相应的文件下 产生最近对应的时间的文件。 (4)MACH编程

利用ispVM System软件点击scan查找到相对应的教学实验机,找到相应的.jed文件对应的为止,然后执行go,初相pass是表明对应的文件已经被下载到了MACH器件中,这样就可以打开对应的软件进行编程测试。 (5)修改监控制程序

在修改监控程序时,需要实现分析我所插入的四条指令是监控程序中十种类型哪一种,在对应的位置填入相应的指令和指令对应的编码即可。以下为监控程序的修改过程(黑体为插入的指令):

;1 WORD;3 - Follow By Two Registers TYPE3 DW 'ADD ', 0000H, 'SUB ', 0100H

DW 'CMP ', 0300H, 'AND ', 0200H, 'OR ', 0600H,'XOR ', 0400H DW 'TEST', 0500H, 'MVRR', 0700H DW 'NTAD', 2500H, 'ADNT', 2700H

DW 'ADC ', 2000H, 'SBB ', 2100H, 'NXOR', 2200H DW 'ADDR', 0B200H, 'SBUL',0B300H,0 ; 1 WORD 9 - Follow By A R and [R] TYPE9 DW 'LDRR', 8100H

DW 'ADRL', 0E900H, 'SURM', 0E800H DW 'ADRM', 0E300H, 'SWRM', 0E900H, 0 ; 1 WORD 10 - Follow By A Register(DR) TYPE10 DW 'POP ', 8700H, 'INC ', 0900H, 'DEC ', 0800H, 'JCFX ', 0C000H DW 'SHL ', 0A00H, 'SHR ', 0B00H

DW 'NOT ', 2D00H, 'ASR ', 2C00H, 'RCL ', 2A00H

DW 'ACR ', 2B00H, 'ADTW', 0A100H

DW 'SHLD', 0B000H, 'DECL',0B500H,'NEG ',0B400H DW 'INHL',0B100H, 0

改完监控程序以后进入SDW环境对监控程序进行编译,便已成功后进行芯片的烧制,以下图片为烧制过程的截图:

烧制过程:

烧制成功:

5.对扩展指令进行验证

① 验证指令NTAD DR,SR [/SR∧DR => DR] A2000 MVRD R1,2 MVRD R2,3 NTAD R1,R2 RET

G2000 执行指令(截图如下)

本文来源:https://www.bwwdw.com/article/9qgh.html

Top