【未完待续】计算机组成与体系结构第三次试验:微程序控制器实验

news2024/12/26 21:49:36

计算机组成与体系结构第三次试验:微程序控制器实验

  • 前言
  • 一、实验目的
  • 二、实验内容
  • 三、实验器件
  • 四、实验原理
  • 五、 实验步骤
  • 六、 实验结果
  • 七、思考题

前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!
很久没有写实验报告了,在这里非常感谢@m0_73880767同学提供的计算机组成原理实验指导书!你们的支持是我的最大动力!

请注意,该篇实验并非我在本科上该门课期间完成过的实验,而是于近期应同学要求补充的实验,由于时间较为久远,操作生疏,不一定保证实验结果一定正确,麻烦同学们自行甄辨,如操作不当或结果错误,还麻烦各位指正,以免误人子弟,谢谢!

一、实验目的

1、了解微程序控制器的组成原理及工作方式。
2、掌握微程序的编制及写入,观察微程序的运行。

二、实验内容

设计一个可自动运行的CPU电路,利用时序电路来产生指令执行所需的时间先后次序,通过微程序控制器来代替手动拨码开关的人工操作,在数据通路中完成程序的跳转重定向。

三、实验器件

1、存储器2764和计数器(74LS163、74LS192)。
2、D触发器(74LS74)、寄存器(74LS273)及移位寄存器(74LS194)。

四、实验原理

如图17所示,指令寄存器IR(74LS273)、程序计数器PC(74LS163)、存储器PROGRAM(2764)及其地址寄存器AR(74LS273)组成了一个“手动版”的数据通路。该通路是单总线结构(所有部件共用8位总线BUS,通过两个绿色数码管显示8位总线信息)和单存储器结构(即程序和数据共享存储器PROGRAM)。
在这里插入图片描述
在图17所示的数据通路中,程序计数器PC采用两个同步计数器74LSl63串联形成八位递增计数器,74LSl63的逻辑功能表如表9所示: D 0 D_0 D0 D 1 D_1 D1 D 2 D_2 D2 D 3 D_3 D3为并行输入端; Q 0 Q_0 Q0 Q 1 Q_1 Q1 Q 2 Q_2 Q2 Q 3 Q_3 Q3为并行输出端; E T E_T ET E P E_P EP为递增使能端;LOAD为置数端;MR为直接无条件清零端;CLK为时钟输入端;RCO为进位输出端(当 Q 3 − Q 0 Q_3-Q_0 Q3Q0输出端递增溢出,则RCO=1)。值得注意的是:表9中所列74LS163全部功能都必须在CLK端上升沿跳变后才能实现。

MR L D L_D LD E T E_T ET E P E_P EP功能 Q 0 Q 1 Q 2 Q 3 Q_0Q_1Q_2Q_3 Q0Q1Q2Q3
0×××清除0000
10××加载 Q 0 Q 1 Q 2 Q 3 = D 0 D 1 D 2 D 3 Q_0Q_1Q_2Q_3=D_0D_1D_2D_3 Q0Q1Q2Q3=D0D1D2D3
110×保持 Q 0 Q 1 Q 2 Q 3 Q_0Q_1Q_2Q_3 Q0Q1Q2Q3
11×0保持 Q 0 Q 1 Q 2 Q 3 Q_0Q_1Q_2Q_3 Q0Q1Q2Q3
1111自加1 Q 0 Q 1 Q 2 Q 3 Q_0Q_1Q_2Q_3 Q0Q1Q2Q3状态码+1

数据通路的运行包括了两个阶段:取指周期(取出指令)和执行周期(执行取指周期取出的指令)。而总线BUS上的信息流动路径也相应分为指令流和数据流。指令流:取指周期,指令信息从存储器流向指令寄存器(即ROM->IR),实现指令译码;数据流:执行周期,数据信息从存储器流向唯一的指令执行部件PC(即ROM->PC),实现程序的重定向。值得注意的是,若有多个指令执行部件,则数据流还有不同的分支路径
因为数据通路只有PC作为唯一的执行部件,用以验证指令跳转的功能。所以如表10所示,本实验设计了空指令NOP、停机指令HLT和两条不同类型的跳转指令:相对寻址的JMP1指令和直接寻址的JMP2指令。

汇编助记符[OP码] I7 I6 I5机器语言程序指令说明
JMP1,addr0 0 100100000; JMP1 xxxxxxxx; addr相对寻址:程序最终跳转到地址xxH执行 PC->xxH
JMP2,[addr]0 1 001000000; JMP2 xxxxxxxx;[addr]直接寻址:程序最终跳转到地址yyH执行 PC->yyH,yyH=[xxH]
HLT1 1 111100000; HLT硬件停机
NOP0 0 000000000; NOP“空”指令 ,不执行任何操作

图18列出了上述四条指令的逻辑流程图,其中方框代表了从某个源部件经过总线BUS到达另一个目标部件的信息路径,菱形代表了指令译码结果(决定不同指令的跳转)。菱形之上的方框属于所有指令都必须经历的取指周期,而菱形之下各个分支代表了不同指令的执行周期。为了信息的稳定可靠传输,每一个方框都包含两个等长的节拍T1和T2。T1时刻,源部件的信息输出到总线BUS,所以AR_CLK上升沿有效,使得AR地址对应的ROM存储单元稳定输出信息到总线BUS;T2时刻,总线BUS上的信息输入到目标部件,所以PC_CLK和IR_CLK上升沿有效,使得总线BUS上的信息稳定打入到PC(重定向指令地址),或稳定打入到IR( 同时PC自加1)。
通过图18可以发现,所有跳转指令的逻辑流程图实际上仅需要由两种方框组成:在取指周期中出现的指令流{ROMIR}和在执行周期中出现的数据流{ROMPC}。JMP1和JMP2指令的区别仅仅在于JMP2指令做了递归操作,执行了两次相同的数据流{ROMPC}操作。而NOP指令和HLT指令比较特殊,只有取指周期,没有执行周期。指令译码后,NOP指令直接返回下一个取指周期,而HLT指令直接硬件停机。
在这里插入图片描述
为了完成指令流{ROMIR}和数据流{ROMPC},数据通路中需要根据一定的时序安排一系列的微操作信号来确保信息从某个部件输出到总线,再从总线输入到另一个部件。数据通路的操作信号说明如表11所示。值得注意的是:程序计数器PC、地址寄存器AR以及指令寄存器IR的各自锁存脉冲信号PC_CLK、AR_CLK及IR_CLK分别由PC_INC、LDAR及LDIR信号在T1或T2节拍形成的。所以,数据通路中实际需要的微操作信号只有:PC_INC、LDPC\、LDAR、OE\、LDIR和CLR\信号。

信号名称作用有效电平
PC_CLK程序计数器PC的锁存脉冲信号上升沿跳变有效
PC_INCT2节拍,PC_INC形成PC_CLK高电平有效
LDPC\程序计数器PC的加载信号低电平有效
AR_CLK地址寄存器AR的锁存脉冲信号上升沿跳变有效
LDART1节拍,LDAR形成AR_CLK高电平有效
OE\存储器PROGRAM的读允许信号低电平有效
IR_CLK指令寄存器IR的锁存脉冲信号上升沿跳变有效
LDIRT2节拍,LDIR形成IR_CLK高电平有效
CLR\指令寄存器IR的清零信号低电平有效

指令流{ROMIR}和数据流{ROMPC}各自所需的微操作信号及其信息路径如表12所示,每个周期内微操作信号再与(T1,T2)节拍逻辑组合。如果把表11中的微操作信号用人工拨码开关来实现的话,实验者可以根据表12手动执行微操作信号,以T节拍为基准时钟,顺序依次实现指令逻辑流程图18中的各个方框,完成一条机器指令的执行。其中,实验者在菱形P1时刻,可以通过观测指令寄存器IR的{IR7,IR6,IR5}是否与某个指令的OP码相同,来判断不同指令所需的执行周期(即朝哪个分支继续执行)。

命令微操作信号(工作节拍)功能
指令流ROM->IRLDAR(T1), OE(T1&T2), LDIR(T2), PC_INC(T2)【T1】:PCAR,ROMBUS【T2】:BUSIR, PC+1
数据流ROM->PCLDAR(T1), OE(T1&T2), LDPC(T1&T2),PC_INC(T2)【T1】:PCAR,ROMBUS【T2】:BUSPC

进而,我们可以将图17的“手动版”数据通路升级为“自动版”的CPU电路,如下图19所示。“自动版”CPU由数据通路、时序电路及微程序控制器三大部分组成:下方左边的数据通路保持不变,而上方红色框内的微程序控制器(CONTROL UNIT)取代了拨码开关及人工操作者;下方右边红色框内的时序电路(CLOCK UNIT) 则负责提供数据通路和微程序控制器依序运行所需的节拍序列{T1,T2,T3,T4}。
在这里插入图片描述
微程序控制器(CONTROL UNIT)的主要任务是完成当前指令的翻译和执行,即将当前存储器PROGRAM读出的指令转换成硬件逻辑部件工作的微操作信号序列,完成信息传送和各种处理操作。因此,微程序控制器将表11中的一条微操作信号视为一个微命令,而所有微命令的集合以并行二进制序列的形式构成微指令,如表13所示。

微代码1716151413121110987654321
微命令LDARLDPC\PC_INC\\OE\LDIR\P1\uA4uA3uA2uA1uA0

上表中的微指令字长24位,采用下址转移方式确定后续运行的微指令:微指令的1-5位表示顺序下一条微指令地址 [uA4-uA0];而 6-24位表示微命令集合(由于微指令18-24位没有对应的微命令,所以表13只显示了微指令1-17位)。所有微指令都存储在专用的控制存储器(CM)中,如图20所示:控制存储器24位,由3个ROM芯片2764组成。微命令寄存器18 位,由两个寄存器74LS273和一个4位触发器74LS175组成。
在这里插入图片描述
在指令逻辑流程图18中,一个方框对应一条特定的微指令,方框右上方是当前微指令在控制存储器CM中的地址,右下方是顺序下一条微指令地址[uA4-uA0]。若考虑方框右上方和右下方微指令地址的差异,在图18中总共有四种不同的方框,所以本实验的微指令代码表14所示。每条微指令的1-5位即下址字段[uA4-uA0],而6-24位是控制字段。
在T1节拍,上图20中的控制存储器把当前微指令打入微命令寄存器,微指令中所有标识为“1”的位表示执行了相应的微操作(且数据通路自动生成LDARAR_CLK),从而实现对应方框内的信息路径;反之,标识为“0”的位则代表没有执行对应的微操作。在T2节拍,数据通路自动生成了LDIRIR_CLK和PC_INCPC_CLK的后续操作。

微地址242322212019181716151413121110987654321
00000000000010010010101000000
00001000000011010010000000000
00010000000011010010000000001
00111000000000000000000000000

一条机器指令所经历的所有微指令(方框)组成的序列称为该机器指令的微程序,每条微指令包含了相同的取指周期微指令和各异的执行周期微指令序列。取指周期微指令地址必须是控制存储器CM首地址00000(因为系统启动时从首地址开始运行)。而菱形框 P1 (00 I7I6I5)是地址转移逻辑电路,当取指周期结束的时候,根据机器指令OP码的I7I6I5位进行译码,转入该机器指令对应的执行周期微指令序列的入口地址[00I7I6I5]。指令{NOP, HLT, JMP1, JMP2}的执行周期微指令序列的入口地址分别为{00000, 00111,00001,00010}。
在所有指令执行周期的微指令序列末尾,最后一条微指令的[uA4-uA0]都必须是取指微指令地址00000,即一条机器指令结束后必须返回公共的取指微指令,以便于取出下一条指令。而NOP指令因为取指后译码的执行指令入口地址仍为00000,直接指向下一条指令的取指周期微指令;所以NOP指令在取指后实际没有执行操作。
本实验微程序控制器的地址转移电路如图21所示,微指令地址寄存器五位(MA4-MA0),由触发器74LS74组成,均自带清“0”端和预置端。地址转移逻辑需要增加T3、T4节拍,T3时刻,当前微指令的后续微指令地址[uA4-uA0]打入微地址寄存器。T4时刻,若当前微指令不是取指周期微指令(即P1=0),则不执行任何操作,当前微地址转为顺序下一条微指令地址[uA4-uA0];若当前微指令是取指周期微指令(即P1=1),则图21中的地址转移逻辑电路根据指令寄存器IR的 I 7 I 6 I 5 I_7I_6I_5 I7I6I5位强制置位寄存器MA2-MA0,即修改当前微地址[uA2-uA0]位,转向该指令的执行周期微指令序列的入口地址[ 00 I 7 I 6 I 5 00I_7I_6I_5 00I7I6I5]。
在这里插入图片描述
综上所述,一条微指令包括了4个节拍(T1、T2、T3、T4),其作用分别是:
T1:当前微指令的微操作信号使能;信息从源部件输出到总线BUS
T2:信息从总线BUS打入目的部件;程序计数器PC+1(取指周期微指令专用)
T3:微指令下址取址
T4:根据指令寄存器IR所存的指令OP码修改微指令下址 00 I 7 I 6 I 5 00I_7I_6I_5 00I7I6I5(取指周期微指令专用)
微程序控制器必须严格按照节拍时序来工作,所以时序电路的设计是非常重要的,本实验的时序电路如图23所示。CLK为全系统的基准时钟信号,可以由方波信号源AUTO_CLK提供(双击信号源可以自行选择方波信号频率),或者通过人工操作按键MANUAL_CLK手动步进;移位寄存器74LS194用来作为节拍生成器:当HLT=1且RESET=0,74LS194的状态{S0,S1}={1,0},74LS194的工作模式为右移。而 S R = T 4 S_R=T4 SR=T4使得 74LS194处于循环右移模式,以CLK为基准时钟,周而复始地发送4个基准时钟间隔的时序节拍T1-T4(T1->T4的一次循环即为一个微指令的运行周期,称为CPU周期),如图22所示:
在这里插入图片描述
为了便于观测微程序的运行,时序电路提供了微指令显示功能:一个由T1上升沿驱动的升序计数器74LS192,通过数码管显示当前运行第几条微指令。时序电路还提供了软件停机的“断点”功能(便于调试),即HLT指令:当指令寄存器IR的OP码 00 I 7 I 6 I 5 = 111 00I_7I_6I_5=111 00I7I6I5=111的时候,硬件逻辑生成HLT=0,此时74LS194的状态{S0,S1}={0,0},工作模式为保持,节拍时序状态静止在{T1,T2,T3,T4}={0,1,0,0},即停机在HLT指令的取指周期T2节拍上。
在这里插入图片描述
图23 微程序控制器实验的时序电路
此外,时序电路设置了RESET电路,用来初始化时序发生器74LS194,以及HLT指令停机后跳出“断点”。其“重启”的操作步骤如下:
1)RESET置1,则CLR=0,清零指令寄存器IR(指令OP码归零且HLT=1)和微地址寄存器MA4-MA0(微程序控制器从取指周期开始运行)。此时,74LS194的状态{S0,S1}={1,1},工作模式为送数。
2)手动按一次CLK,将{T1,T2,T3,T4}置位初始化值{1,0,0,0}。
3)RESET置0,74LS194恢复循环右移模式,进入第一条指令的取指周期节拍时序。
(注:若是HLT指令后操作,则进入HLT指令后续下一条指令的取指周期节拍时序)

五、 实验步骤

实验1:手动版程序通路运行
●在数据通路(手动版)的存储器PROGRAM中,烧写进去如下所示的机器语言程序文本(烧写ROM方法参见3.4存储器实验):

ORG	0000H
	DB	00100000B;  JMP1, 06H		
	DB 	00000110B		        
	DB 	11101010B;  HLT		
	DB	00001010B;		
	DB	00000000B				
	DB 	00000000B			
	DB 	00000010B;  NOP/[ADDR]		
	DB 	11100001B;  HLT		
	DB	01000000B;  JMP2, 06H->02H				
	DB 	00000110B	
END

在这里插入图片描述

● 在图17所示的数据通路(手动版)上,依据指令逻辑流程图18,手动拨码开关执行上述程序,观察每一步手工操作的结果(寄存器AR、IR、PC及总线BUS信息)。

实验2:基于JMP1和JMP2指令的汇编程序
● 根据表14微指令代码表,将下列微程序分别烧写入5-20所示微程序控制器的控制存储器EPROM1、EPROM2及EPROM3(切记勿写错存储器!)。
EPROM1烧写内容

ORG	0000H                     
	DB	00000001B
	DB 	00000001B
	DB 	00000001B
	DB	00000000B
DB	00000000B
	DB 	00000000B
	DB 	00000000B
	DB 	00000000B
END	

EPROM2烧写内容

ORG	0000H                     
	DB	00100101B
	DB 	10100100B
	DB 	10100100B
	DB	00000000B
DB	00000000B
	DB 	00000000B
	DB 	00000000B
	DB 	00000000B
END

EPROM3烧写内容

ORG	0000H                     
	DB	01000000B
	DB 	00000000B
	DB 	00000001B
	DB	00000000B
DB	00000000B
	DB 	00000000B
	DB 	00000000B
	DB 	00000000B
END

● 启动仿真图19所示的微程序控制器实验电路,首先RESET=1,然后手动CLK一次,初始化74LS194节拍发生器{T1,T2,T3,T4}={1,0,0,0},最后RESET=0,恢复正常节拍时序。开始手动CLK单步执行上述实验1的机器语言程序。观察每一次单步执行的结果,例如寄存器AR、IR、PC及总线BUS信息。(注意程序进入HLT指令“断点”后需要重复上述初始化操作才能跳出“断点”)
● 依照上述启动初始化方法,在RESET=0恢复正常运行后,转为AUTO_CLK方波信号源自动CLK。当程序通路陷入“断点”时刻(HLT指令),查看寄存器AR、IR、PC、总线BUS信息及微指令周期数指示。

实验3:增加新指令JMP3
● 增加一条间接寻址的跳转指令JMP3,如下所示。请补充指令逻辑流程图18及微指令代码表14(新增的微指令地址定为00011),以实现JMP3指令。

汇编助记符OP码机器语言程序指令说明
JMP3,[[addr]]0110000001100000; JMP3 xxxxxxxx;[[addr]]间接寻址:程序最终跳转到地址 zzH, PC->zzH, zzH=[yyH], yyH=[xxH]

●在图19所示微程序控制器实验电路的存储器PROGRAM中,烧写进去如下所示的机器语言程序文本(烧写ROM方法参见5.4存储器实验):

ORG	0000H
	DB	00100000B;  JMP1, 06H		
	DB 	00000110B		        
	DB 	11101010B;  HLT		
	DB	00001010B;  NOP/[ADDR]
	
	DB	01100000B;  JMP3, 0BH->03H->0AH				
	DB 	00001011B				
	DB 	00000010B;  NOP/[ADDR]		
	DB 	11100001B ;  HLT		

	DB	01000000B;  JMP2, 06H->02H				
	DB 	00000110B	
	DB	11100000B;  HLT				
	DB 	00000011B;  NOP/[ADDR]		
END

● 根据实验2所述方法,分别手动单步执行或AUTO_CLK自动执行实验3新的机器语言程序文本,观察单步执行或“断点”时刻的寄存器AR、IR、PC及总线BUS信息。

六、 实验结果

实验1:手动版程序通路运行
●在数据通路(手动版)的存储器PROGRAM中,烧写进去如下所示的机器语言程序文本(烧写ROM方法参见3.4存储器实验):

ORG	0000H
	DB	00100000B;  JMP1, 06H		
	DB 	00000110B		        
	DB 	11101010B;  HLT		
	DB	00001010B;		
	DB	00000000B				
	DB 	00000000B			
	DB 	00000010B;  NOP/[ADDR]		
	DB 	11100001B;  HLT		
	DB	01000000B;  JMP2, 06H->02H				
	DB 	00000110B	
END

在这里插入图片描述

● 在图17所示的数据通路(手动版)上,依据指令逻辑流程图18,手动拨码开关执行上述程序,观察每一步手工操作的结果(寄存器AR、IR、PC及总线BUS信息)。
电路启动:
在这里插入图片描述
首先,执行ROM->IR,可以发现其作用是将PC_H4B、PC_4BL的输出全置1:
在这里插入图片描述
此时由于AR输出依旧是0,所以如果关掉OE,其显示结果依旧是20
然后执行JMP1,也就是执行ROM->PC:
在这里插入图片描述
此时PC_H4B、PC_4BL的输出全置0,AR的输出全置1,导致PROGRAM的输入全置1,结果使PROGRAM的输出全置1:
在这里插入图片描述
再度执行ROM->IR,将PC_H4B、PC_4BL的输出全置1,此时PROGRAM的输入、AR和PROGRAM的输出均置0,其显示结果回到20:
在这里插入图片描述
执行JMP2,也就是执行两次ROM->PC:
在这里插入图片描述
在这里插入图片描述
然后再执行一次ROM->IR:
在这里插入图片描述综上所述,该实验的功能状态如下表所示:

指令流任务
ROM->IR将PC_H4B、PC_4BL的输出全置1
ROM->PC将PC_H4B、PC_4BL的输出+1(首次执行时因溢出变为全0)
指令状态
开机20
JMP1FF
JMP206

实验2:基于JMP1和JMP2指令的汇编程序
● 根据表14微指令代码表,将下列微程序分别烧写入5-20所示微程序控制器的控制存储器EPROM1、EPROM2及EPROM3(切记勿写错存储器!)。
EPROM1烧写内容

ORG	0000H                     
	DB	00000001B
	DB 	00000001B
	DB 	00000001B
	DB	00000000B
DB	00000000B
	DB 	00000000B
	DB 	00000000B
	DB 	00000000B
END	

EPROM2烧写内容

ORG	0000H                     
	DB	00100101B
	DB 	10100100B
	DB 	10100100B
	DB	00000000B
DB	00000000B
	DB 	00000000B
	DB 	00000000B
	DB 	00000000B
END

EPROM3烧写内容

ORG	0000H                     
	DB	01000000B
	DB 	00000000B
	DB 	00000001B
	DB	00000000B
DB	00000000B
	DB 	00000000B
	DB 	00000000B
	DB 	00000000B
END

● 启动仿真图19所示的微程序控制器实验电路,首先RESET=1,然后手动CLK一次,初始化74LS194节拍发生器{T1,T2,T3,T4}={1,0,0,0},最后RESET=0,恢复正常节拍时序。开始手动CLK单步执行上述实验1的机器语言程序。观察每一次单步执行的结果,例如寄存器AR、IR、PC及总线BUS信息。(注意程序进入HLT指令“断点”后需要重复上述初始化操作才能跳出“断点”)
● 依照上述启动初始化方法,在RESET=0恢复正常运行后,转为AUTO_CLK方波信号源自动CLK。当程序通路陷入“断点”时刻(HLT指令),查看寄存器AR、IR、PC、总线BUS信息及微指令周期数指示。

实验3:增加新指令JMP3
● 增加一条间接寻址的跳转指令JMP3,如下所示。请补充指令逻辑流程图18及微指令代码表14(新增的微指令地址定为00011),以实现JMP3指令。

汇编助记符OP码机器语言程序指令说明
JMP3,[[addr]]0110000001100000; JMP3 xxxxxxxx;[[addr]]间接寻址:程序最终跳转到地址 zzH, PC->zzH, zzH=[yyH], yyH=[xxH]

●在图19所示微程序控制器实验电路的存储器PROGRAM中,烧写进去如下所示的机器语言程序文本(烧写ROM方法参见5.4存储器实验):

ORG	0000H
	DB	00100000B;  JMP1, 06H		
	DB 	00000110B		        
	DB 	11101010B;  HLT		
	DB	00001010B;  NOP/[ADDR]
	
	DB	01100000B;  JMP3, 0BH->03H->0AH				
	DB 	00001011B				
	DB 	00000010B;  NOP/[ADDR]		
	DB 	11100001B ;  HLT		

	DB	01000000B;  JMP2, 06H->02H				
	DB 	00000110B	
	DB	11100000B;  HLT				
	DB 	00000011B;  NOP/[ADDR]		
END

● 根据实验2所述方法,分别手动单步执行或AUTO_CLK自动执行实验3新的机器语言程序文本,观察单步执行或“断点”时刻的寄存器AR、IR、PC及总线BUS信息。

七、思考题

  1. 如图19所示的 微程序控制器实验电路中,如果采用微命令来实现HLT指令(例如安排控制存储器中一位作为HLT\信号)是否可行?请修改电路试验。
  2. 在实验2和实验3的机器语言文本中,有部分地址标示“NOP/[ADDR]”,为何相同位置会有不同的执行效果?在什么情况下执行到该处是NOP指令(顺序滑过)?什么情况下执行到该处是打入PC的地址(跳转)?
  3. 本实验的控制存储器CM最多可容纳多少条微指令?而指令体系最多可容纳多少条机器指令?微指令容量和指令容量各自是由于什么因素限定的?
  4. 假设只用两个2764芯片作为控制存储器,节拍脉冲精简到三个脉冲(T1-T3),请问微程序怎么改?机器语言程序需要改么?请修改电路试验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1120785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习中的核方法

一、说明 线性模型很棒,因为它们易于理解且易于优化。他们受苦是因为他们只能学习非常简单的决策边界。神经网络可以学习更复杂的决策边界,但失去了线性模型良好的凸性特性。 使线性模型表现出非线性的一种方法是转换输入。例如,通过添加特征…

BetaFlight飞控AOCODAF435V2MPU6500固件编译

BetaFlight飞控AOCODAF435V2MPU6500固件编译 1. 源由2. 准备2.1 板子2.2 代码2.3 工具 3. 配置修改4. 编译4.1 获取代码4.2 获取配置4.3 编译固件4.4 DFU烧录4.5 版本核对 5. 总结 1. 源由 刚拿到一块Aocoda F405V2 (MPU6500) AT32F435飞控板(替换主控芯片)。 Aocoda-RC F40…

unity中方向的两种表示:欧拉角和四元数

欧拉角:简单来说就是你可以选择 0度~360度 的范围 四元数:在计算机图像学中,四元数用于物体的旋转,是一种复杂,但效率较高的旋转方式 Quaternion结构体代表一个四元数,包含一个标量和一个三维向量&#x…

02、Python 字符串

目录 字符串的基础用法字符串包含引号字符串拼接获取用户输入长字符串原始字符串字节串字符串与字节串转换 字符串的基础用法 列字符串的内容几乎可以包含任何字符,英文字符也行,中文字符也行。 既可用单引号,也可用双引号 字符串包含引号…

函数和执行上下文

一.变量提升与函数提升 变量提升:通过var关键字定义(声明)的变量,在定义语句之前就可以访问到,只不过其值是undefined 函数提升:通过function声明的函数,在之前就可以调用,值是函数…

onehot-词嵌入-图嵌入

目录 一、为什么要有词嵌入? 二、one-hot编码: 三、什么是词嵌入(word embedding) 1、什么是嵌入矩阵? 2、为什么要设置维数? 3、相比one-hot编码的优点 4、什么是word2vec和GLove? 四、…

【计算机毕设案例推荐】高校学术研讨信息管理系统小程序SpringBoot+Vue+小程序

前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 项目名 基于SpringBoot的高校学术研讨信息管理系统小程序 技术栈 SpringBoot小程序VueMySQLMaven 文…

珠宝行业软件,虽简约但不简单

作者:永远的新手 从学习猫框以来,一直向猫老师请教如何学习猫框和VFP的基础知识,猫老师不厌其烦传授知识于我。因为我是一位纯业余VFP爱好者,我的VFP几乎是零基础,接触猫框后,虽说时间很短,但其…

快来跟我一起抢先看看未来世界的出行,体验未来城市吧~

体验平台:Pony Robotaxi,Apollo Robotaxi,如棋Robotaxi 本文关键词Apollo,自动驾驶,智能出行,无人公交,无人清扫车等 感受未来世界的出行,体验未来城市! 一、未来智能出行…

C++ vector 的模拟实现

目录 1. vector 类的成员变量 2. 无参构造 3. 析构函数 4. size_t capacity() 5. size_t size() 6. void reserve(size_t n) 7. 迭代器 8. void push_back(const T& x) 9. T& operator[](size_t pos) 10. iterator insert(iterator pos, const T& val…

【哈希表完整代码】模拟实现哈希表和unordered_set与unordered_map

目录 HashTable.h: Test.cpp: MyUnorderedSet.h: HashTable.h: #pragma once #include<iostream> #include<vector> #include<utility>//pair头文件 #include<assert.h> #include<string>using namespace std;namespace CLOSEHASH {enum Sta…

mk语法示例

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【会员管理系统】篇一之项目预热

一、技术架构 vue.js vueCLI 3.x Axios babel EcmaScript6 Eslint Mock.js Easy-Mock Element UI Vuex 二、RESTful风格 三、Mock.js简单使用 1、简单使用 &#xff08;1&#xff09;新建文件夹&#xff0c;在vscode中打开&#xff0c;使用终端…

在线存储系统源码 网盘网站源码 云盘系统源码

Cloudreve云盘系统源码-支持本地储存和对象储存,界面美观 云盘系统安装教程 测试环境:PHP7.1 MYSQL5.6 Apache 上传源码到根目录 安装程序: 浏览器数据 http://localhost/CloudreveInstallerlocalhost更换成你的网址 安装完毕 记住系统默认的账号密码 温馨提示:如果默认…

【数据结构与算法篇】还不会二分查找?看这篇就够了!

​&#x1f47b;内容专栏&#xff1a; 《数据结构与算法篇》 &#x1f428;本文概括&#xff1a;整数二分算法&#xff08;朴素二分&#xff0c;查找区间左端点与区间右端点二分&#xff09;、浮点数二分 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&…

【Python数据挖掘 基础篇】Python数据挖掘是个啥?

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 梦想从未散场&#xff0c;传奇永不落幕&#xff0c;博主会持续更新优质网络知识、Python知识、Linux知识以及各种小技巧&#xff0c;愿你我共同在CSDN进步 目录 一、了解数据挖掘 1. 数据挖掘是什么&#xff…

【LeetCode:1402. 做菜顺序 | 动态规划 + 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【Kotlin精简】第5章 简析DSL

1 DSL是什么&#xff1f; Kotlin 是一门对 DSL 友好的语言&#xff0c;它的许多语法特性有助于 DSL 的打造&#xff0c;提升特定场景下代码的可读性和安全性。本文将带你了解 Kotlin DSL 的一般实现步骤&#xff0c;以及如何通过 DslMarker &#xff0c; Context Receivers 等…

音乐制作软件 Studio One 6 mac中文版软件特点

Studio One mac是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…

Spring中静态代理设计模式

目录 一、为什么需要代理设计模式 二、代理设计模式 三、静态代理设计模式 3.1 存在的问题 一、为什么需要代理设计模式 在项目的开发过程中我们知道service层是整个项目中最重要的部分&#xff0c;在service中一般会有两个部分&#xff0c;一个是核心业务&#xff0c;一个是额…