计算机组成原理:实验四常规型微程序控制器组成实验

一、实验目的

1.掌握时序产生器的组成原理。

2.掌握微程序控制器的组成原理。

3.掌握微指令格式的化简和归并。

二、实验电路

1.时序发生器

TEC-4计算机组成原理实验系统的时序电路如图4.1所示。电路采用2片GAL22V10(U6、U7),可产生两极等间隔时序信号T1-T4和W1-W4,其中一个W由一轮T1-T4循环组成,它相当于一个微指令周期或硬联线控制器的一拍,而一轮W1-W4循环可供硬联线控制器执行一条机器指令。

图4.1 时序信号发生器

本次实验不涉及硬联线控制器,因此时序产生器中的相关内容也可根据需要放到硬联线控制器实验中进行。

微程序控制器只使用时序信号T1-T4,产生T信号的功能集成在GAL22V10芯片TIMER1(U6)中,另外它还产生节拍信号W1、W2、W3、W4的控制时钟CLK1。该芯片的逻辑功能用ABEL语言实现,其源程序如下:

MODULE TIMER1

TITLE‘CLOCK GENERATOR T1,T2,T3,T4’

“2000,9

“INPUT

       MF,CLR,QD,DP,DZ,TJ,P1,INTC,INTS,DB PIN 1..10;

       W4  PIN  13;

“OUTPUT

       T1,T2,T3,T4,QD1,QD2,ACT,INTE,QDR PIN 14..22;

       CLK1 PIN 23;

       T1,T2,T3,T4,QD1,QD2,INTE,QDR ISTYPE ‘REG’;

       ACT,CLK1 ISTYPE ‘COM’;

       CLK=.C.;

       S=[T1,T2,T3,T4,QD1,QD2,INTE,QDR];

EQUATIONS

       QD1:=QD;

       QD2:=QD1;

       ACT=QD1 &! QD2;

       QDR:=CLR & QD # CLR & QDR;

       T1:=CLR & T4 & ACT # CLR & T4 &!(DP # TJ # DZ & P1 # DB & W4)& QDR;

       T2:=CLR & T1;

       T3:=CLR & T2;

       T4:=! CLR # T3 # T4 &! ACT &(DP # TJ # DZ & P1 #DB & W4 )#! QDR;

       INTE:=CLR & INTS # CLR & INTE &! INTC;

       CLK1=T1 #! CLR& MF;

       S.CLK=MF;

END

硬联线控制器只使用时序信号W1-W4,产生W信号的功能集成在GAL22V10芯片TIMER2(U7)中,该芯片的逻辑功能用ABEL语言实现,其源程序如下:

MODULE TIMER2

TITLE‘CLOCK GGENERATOR W1 W2 W3 W4’

“2000,9

“INPUT

       CLK1,INTR,IE,PIN 1..3;

       CLR,SKIP PIN 5..6;

“OUTPUT

       W1,W2,W3,W4,INTR1 PIN 14..18 ISTYPE‘REG’;

       INTQ PIN 20 ISTYPE‘COM’;

       CLK=.C.;

EQUATIONS

       W1:=CLR & W4;

W2:=CLR & W1 &!SKIP;

W3:=CLR & W2 &!SKIP;

W4:=!CLR # W3 # SKIP & W1 #SKIP & W2;

INTR1:=INTR;

INTQ=IE & INTR1;

[W1,W2,W3,W4,INTR1].CLK=CLK1;

END

TIMER1和TIMER2中还集成了中断逻辑,中断逻辑的介绍见第八节。TIMER1的输入信号中,MF接实验台上晶体震荡器的输出,频率为1MHz。T1至T4的脉冲宽度为1000ns。CLR(注意,实际上是控制台上的CLR#信号,因为ABEL语言的书写关系改为CLR,仍为低有效信号)为复位信号,低有效。实验仪处于任何状态下令CLR#=0,都会使时序发生器和微程序控制器复位(回到初始状态),CLR#=1时,则可以正常运行。复位后时序发生器停在T4、W4状态,微程序地址为000000B。建议每次实验仪加电后,先用CLR#复位一次。控制台上有一个CLR#按钮,按一次,产生一个CLR#负脉冲,实验台印制板上已连好控制台CLR#到时序电路CLR的连线。

TJ(停机)是控制器的输出信号之一。连续运行时,如果控制信号TJ=1,会使机器停机,停止发送时序脉冲T1-T4、W1-W4,时序停在T4。在实验台上为了将时序信号发生器的输入信号TJ和控制存储器产生的TJ信号区分开来,以便于连线操作,在实验台上时序信号发生器的输入信号TJ被命名为TJI,而控制存储器产生的信号TJ仍命名为TJ。QD(启动)是来自启动按钮QD的脉冲信号,在TIMER1中,对QD用MF进行了同步,产生QD1和QD2。ACT表示QD1上升沿,表达式是QD1&!QD2,脉冲宽度为1000ns。QDR是运行标志,QD信号使其为1,CLR信号将其置0。DP(单拍)是来自控制台的DP开关信号,当DP=1时,机器处于单拍运行状态,按一次启动按钮QD,只发送一条微指令周期的时序信号就停机。利用单拍方式,每次只执行一条微指令,因而可以观察微指令代码和当前微指令的执行结果。DZ(单指)信号是针对微程序控制器的,接控制台开关DZ,它和P1信号配合使用。P1是微指令字判断字段中的一个条件信号,从微程序控制器输出。P1信号在微程序中每条机器指令执行结束时为1,用于检测有无中断请求INTQ,而时序发生器用它来实现单条机器指令停机。在DB=0且DP=0的前提下,当DZ=0时,机器连续运行。当DZ=1时,机器处于单指方式,每次只执行一条机器指令。

DB、SKIP、CLK1信号以及W1-W4时序信号都是针对硬联线控制器的。W1-W4是节拍信号,硬联线控制器执行一条机器指令需要一组W1-W4信号。DB(单步)信号就是每次发送一组W信号后停机,可见其功能与DZ类似。执行某些机器指令不需要完整的一组W信号周期,SKIP信号就是用来跳过本指令剩余的W节拍信号的。中断允许标志IE由控制存储器的输出信号INTS将其置1,由控制存储器的输出信号INTC将其置0。在TIMER2内部,控制台产生的中断请求用时钟CLK1进行同步,产生了INTR1。只有在INTE=1时,控制台产生的中断请求脉冲INTR才能起作用,即产生向控制器输出的中断信号INTQ,INTQ=INTE & INTR1。

2.数据通路

微程序控制器是根据数据通路和指令系统来设计的。这里采用的数据通路是在综合前面各实验模块的基础上,又增加程序计数器PC(U18)、地址加法器ALU2(U17)、地址缓冲寄存器R4(U25、U26)和中断地址寄存器IAR(U19),详见第4页的图3。PC和ALU2各采用一片GAL22V10,两者配合使用,可完成程序地址的存储、增1和加偏移量的功能。R4由两片74HC298组成,带二选一输入端。IAR是一片74HC374,用于中断时保存断点地址。有关数据通路总体的详细说明,请参看实验系统介绍。

3.微指令格式与微程序控制器电路

根据给定的12条机器指令功能和数据通路总体图的控制信号,采用微指令格式见图4.2。微指令字长共35位。其中顺序控制部分10位:后继微地址6位,判别字段4位;操作控制字段25位,各位进行直接控制。微指令格式中,信号名带有后缀“#”的信号为低有效信号,不带有后缀“#”的信号为高有效信号。

图4.2 微指令格式

对应微指令格式,微程序控制器的组成见图4.3。控制存储器采用5片EEPROM28C64(U8、U9、U10、U11、U12)。微地址寄存器6位,用一片6D触发器74HC273(U1)组成,带有清零端。两极与门、或门构成微地址转移逻辑,用于产生下一微指令的地址。在每个T1上升沿时刻,新的微指令地址会打入微地址寄存器中,控制存储器随即输出相应的微命令代码。微地址转移逻辑生成下一地址,等下一个T1上升沿时打入微地址寄存器。跳转开关JUMP(J1)是一组6个跳线开关。当用短路子将它们连通时,微地址寄存器μAR从本实验系统提供的微程序地址译码电路得到新的微程序地址μD0-μD5。当它们被断开时,用户提供自己的新微程序地址μD0-μD5。这样用户能够使用自己设计的微程序地址译码电路。5片28C64的地址A6(引脚4)直接与控制台开关SWC连接,当SWC=1时,微地址大于或者等于40H,当SWC=0时,微地址小于40H。SWC主要用于实现读寄存器堆的功能。

图4.3 微程序控制器的组成

微地址转移逻辑的多个输入信号中,INTQ是中断请求,本实验中可以不理会。SWA、SWB是控制台的两个二进制开关信号,实验台上线已接好。C是进位信号,IR7-IR4是机器指令代码,由于本次实验不连接数据通路,这些信号都接到二进制开关K0-K15上。

三、机器指令与微程序

为教学中简单明了,本实验仪使用12条机器指令,均为单字长(8位)指令。指令功能及格式如表4.1所示。指令的高4位提供给微程序控制器,低4位提供给数据通路。

表4.1  指令功能与格式

名  称

助 记 符

功 能

指令格式

R7  R6  R5  R4

R3   R2

R1   R0

加法

ADD  Rd,Rs

Rd+Rs→Rd

0   0   0   0

RS1  RS0

RD1  RD0

减法

SUB  Rd,Rs

Rd-Rs→Rd

0   0   0   1

RS1  RS0

RD1  RD0

乘法

MUL  Rd,Rs

Rd*Rs→Rd

0   0   1   0

RS1  RS0

RD1  RD0

逻辑与

AND  Rd,Rs

Rd&Rs→Rd

0   0   1   1

RS1  RS0

RD1  RD0

存数

STA  Rd,[Rs]

Rd→[Rs]

0   1   0   0

RS1  RS0

RD1  RD0

取数

LDA  Rd,[Rs]

[Rs]→Rd

0   1   0   1

RS1  RS0

RD1  RD0

无条件转移

JMP  [Rs]

[Rs]→PC

1   0   0   0

RS1  RS0

×   ×

条件转移

JC   D

若C=1则

PC+D→PC

1   0   0   1

D3   D2

D1   D0

停机

STP

暂停运行

0   1   1   0

×   ×

×   ×

中断返回

IRET

返回断点

1   0   1   0

×   ×

×   ×

开中断

INTS

允许中断

1   0   1   1

×   ×

×   ×

关中断

INTC

禁止中断

1   1   0   0

×   ×

×   ×

应当指出,用以上12条指令来编写实际程序是不够的。好在我们的目的不是程序设计,而主要是为了教学目的,通过CPU执行一些最简单的程序来掌握微程序控制器的工作原理。

上述12条指令的微程序流程设计如图4.4所示。每条微指令可按前述的微指令格式转换成二进制代码,然后写入5个28C64中。

为了向RAM和寄存器堆中装入程序和数据,检查写入是否正确,并能启动程序执行,还设计了以下五个控制台操作微程序:

存储器写操作(KWE):按下复位按钮CLR#后,微地址寄存器状态为全零。此时置SWC=0、SWB=1、SWA=0,按启动按钮后微指令地址转入27H,从而可对RAM连续进行手动写入。

存储器读操作(KRD):按下复位按钮CLR#后,置SWC=O、SWB=0、SWA=1,按启动按钮后微指令地址转入17H,从而可对RAM连续进行读操作。

启动程序(PR):按下复位按钮CLR#后,置SWC=O、SWB=0、SWA=0,用数据开关SW7-SW0设置内存中程序的首地址,按启动按钮后微指令地址转入07H,然后转到“取指”微指令。

写寄存器操作(KLD):按下复位按钮CLR#后,置SWC=O、SWB=1、SWA=1,按启动按钮后微指令地址转入37H,从而可对寄存器堆中的寄存器连续进行写操作。

读寄存器操作(KRR):按下复位按钮CLR#后,置SWC=1、SWB=0、SWA=0,按启动按钮后微指令地址转入47H,从而可对寄存器堆中的寄存器连续进行读操作。

图4.4 微程序流程图

应当着重指出,在微指令格式的设计过程中,对数据通路所需的控制信号进行了归并和化简。细心的同学可能已经发现,微程序控制器输出的控制信号远远少于数据通路所需的控制信号。这里提供的微程序流程图是没有经过归并和化简的。仔细研究一下微程序流程图,就会发现有些信号的出现的位置完全一样,这样的信号用其中一个信号就可以代表。请看信号LDPC和LDR4,这两个信号都在微程序地址07H、1AH、1FH、26H出现,而在其他的微程序地址都不出现,因此这两个信号产生的逻辑条件是完全一样的。从逻辑意义上看,这两个信号的作用是产生新的PC,完全出现在相同的微指令中是很正常的。因此用LDPC完全可以代替LDR4。还有另外一些信号,例如LDDR1和LDDR2,出现的位置基本相同。LDDR2和LDDR1的唯一不同是在地址14H的微指令中,出现了LDDR2信号,但是没有出现LDDR1信号。LDDR1和LDDR2是否也可以归并成一个信号呢?答案是肯定的。微程序流程图中只是指出了在微指令中必须出现的信号,并没有指出出现其他信号行不行,这就要根据具体情况具体分析。在地址14H的微指令中,出现LDDR1信号行不行呢?完全可以。在地址14H出现的LDDR1是一个无用的信号,同时也是一个无害的信号,它的出现完全没有副作用,因此LDDR1和LDDR2可以归并为一个信号LDDR1。根据以上两条原则,我们对下列信号进行了归并和化简:

LDIR(CER)         为1时,允许对IR加载,此信号也可用于作为双端口存储器右端口选择CER。

LDPC(LDR4)        为1时,允许对程序计数器PC加载,此信号也可用于作为R4的加载允许信号LDR4。

LDAR1(LDAR2)      为1时,允许对地址寄存器AR1加载,此信号也可用于作为对地址寄存器AR2加载。

LDDR1(LDDR2)      为1时,允许对操作数寄存器DR1加载,此信号也可用于作为对操作数寄存器DR2加载。

M1(M2)            当M1=1时,操作寄存器DR1从数据总线DBUS接收数据;当M1=0时,操作寄存器DR1从寄存器堆RF接收数据。此信号也可用于作为操作数寄存器DR2的数据来源选择信号。

在对微指令格式进行归并和化简的过程中,我们有意保留了一些信号,没有化简,同学们可以充分发挥创造性,提出更为简单的微指令格式。

还要说明的是,为什么微指令格式可以化简,而实验台数据通路的控制信号为什么不进行化简?最主要的原因是前面进行的各个实验的需要,例如LDDR1和LDDR2这两个信号,在做运算器数据通路实验时,是不能设计成一个信号的。还有一个原因是考虑到实验时易于理解,对某些可以归并的信号也没有予以归并。

四、实验接线

K0接C

K1接IR7

K2接IR6

K3接IR5

K4接IR4

TGI接GND

SKIP接GND

共七根线

五、实验任务

1.观察时序信号。

用双踪示波器观测时序产生器的输入输出信号:MF,W1-W4,T1-T4。比较相位关系,画出其波形,并标注测量所得的脉冲宽度。观察时须将TJI接低电平,DB、DZ、DP开关均置为0状态,然后按QD按钮,则连续产生T1、T2、T3、T4、W1、W2、W3、W4。

了解启停控制信号的功能,并熟练地使用连接这些控制信号的按钮或开关。

2.熟悉微指令格式的定义,按此定义将控制台指令微程序的8条微指令按十六进制编码,列于表4.2。三种控制台指令的功能由SWC、SWB、SWA三个二进制开关的状态来指定(KRD=001B,KWE=010B,PR=000B)。此表必须在预习时完成。

表4.2 微指令编码

微指令地址

微指令编码

微指令地址

微指令编码

00H

00  05C0  0207H

3CH

04  05C8  003DH

07H

00  0541  2005H

17H

00  0544  003FH

27H

04  0544  003DH

3FH

04  09C0  003EH

3DH

00  0140  003CH

3EH

00  05C8  003FH

单拍(DP)方式执行控制台微程序,读出上述八条微指令,用P字段和微地址指示灯跟踪微指令执行情况,并与上表数据对照。

其中判断条件为当程序的下一条微指令为判断语句时,看是什么判断。

微指令格式中并没有写出全部的信号,有一些进行了归并与简化。

微指令地址

微指令编码

00H

0000 0000 0000 0101 1100 0000 0000 0010 0000 0111

07H

0000 0000 0000 0101 0100 0001 0010 0000 0000 0101

27H

0000 0100 0000 0101 0100 0100 0000 0000 0011 1101

3DH

0000 0000 0000 0001 0100 0000 0000 0000 0011 1100

3CH

0000 0100 0000 0101 1100 1000 0000 0000 0011 1101

17H

0000 0100 0000 0101 0100 0100 0000 0000 0011 1111

3FH

0000 0100 0000 1001 1100 0000 0000 0000 0011 1110

3EH

0000 0000 0000 0101 1100 1000 0000 0000 0011 1111

用连续方式执行KWE和KRD(将TJI接地),画出μA0(28C64的地址A0)信号波形,作出解释。

    执行KWE:

   假设为单拍执行时:

首先按下CLE清零,然后设置SWC=O、SWB=1、SWA=0,按下QD,程序进入27地址,此时黄灯显示为10 0111,再次按下QD,程序进入3D地址,此时黄灯显示为11 1101,再次按下QD,程序进入3C地址,此时黄灯显示为11 1100,再次按下QD,程序进入3D地址,此时黄灯显示为11 1101,再次按下QD,程序进入3C地址,此时黄灯显示为11 1100,再次按下QD,继续重复,从此可以看出只有最后一位数值在0与1之间交换,并且是瞬间交换的。

所以当时连续执行时,μA0信号波形是0,1交换的方波。

执行KRD:

   同样首先假设为单拍执行时:

首先按下CLE清零,然后设置SWC=0、SWB=0、SWA=1,按下QD,程序进入17地址,此时黄灯显示为01 0111,再次按下QD,程序进入3F地址,此时黄灯显示为11 1111,再次按下QD,程序进入3E地址,此时黄灯显示为11 1110,再次按下QD,程序进入3F地址,此时黄灯显示为11 1111,再次按下QD,程序进入3E地址,此时黄灯显示为11 1110,继续重复,与执行KWE时一样

所以当时连续执行时,μA0信号波形是0,1交换的方波。

3.用P3和SWC、SWB、SWA的状态组合,观察验证三种控制台指令KWE、KRD、PR微地址转移逻辑功能的实现。

    执行KWE:

首先按下CLE清零,然后设置SWC=O、SWB=1、SWA=0,按下QD,程序进入27地址,此时黄灯显示为10 0111,再次按下QD,程序进入3D地址,此时黄灯显示为11 1101,再次按下QD,程序进入3C地址,此时黄灯显示为11 1100,再次按下QD,程序进入3D地址,此时黄灯显示为11 1101,再次按下QD,程序进入3C地址,此时黄灯显示为11 1100,再次按下QD,继续重复,11 1100与11  1100相互之间交换。

执行KRD:

首先按下CLE清零,然后设置SWC=0、SWB=0、SWA=1,按下QD,程序进入17地址,此时黄灯显示为01 0111,再次按下QD,程序进入3F地址,此时黄灯显示为11 1111,再次按下QD,程序进入3E地址,此时黄灯显示为11 1110,再次按下QD,程序进入3F地址,此时黄灯显示为11 1111,再次按下QD,程序进入3E地址,此时黄灯显示为11 1110,继续重复,11 1111与11  1110相互之间交换。

执行PR:

   首先按下CLE清零,然后设置SWC=0、SWB=0、SWA=0,按下QD,程序进  入07地址,此时黄灯显示为00 0111,在此按下QD,程序进入05地址,此  时黄灯显示为00 0101,接下来就是一下实验内容了。

4.熟悉05H,10H两条微令的功能和P2测试的状态条件(IR4-IR7),用二进制开关设置IR7-IR4的不同状态,观察ADD至STP九条机器指令微地址转移逻辑功能的实现。

05H的功能是取地址,

10H的功能就是进行加法运算。

首先按下CLE清零,然后设置SWC=0、SWB=0、SWA=0,按下QD,程序进 入07地址,此时黄灯显示为00 0111,在此按下QD,程序进入05地址,然后设置IR4-IR7的值转跳到不同的程序

ADD:设置IR4-IR7的值为0000,按下QD,观察黄灯显示为01  0000,所以成功的进入ADD程序。

SUB: 设置IR4-IR7的值为0001,按下QD,观察黄灯显示为01  0001,所以成功的进入SUB程序。

MUL: 设置IR4-IR7的值为0010,按下QD,观察黄灯显示为01  0010,所以成功的进入MUL程序。

AND: 设置IR4-IR7的值为0011,按下QD,观察黄灯显示为01  0011,所以成功的进入AND程序。

LDA: 设置IR4-IR7的值为0101,按下QD,观察黄灯显示为01  0101,所以成功的进入LDA程序。

STA: 设置IR4-IR7的值为0100,按下QD,观察黄灯显示为01  0100,所以成功的进入STA程序。

JMP: 设置IR4-IR7的值为1000,按下QD,观察黄灯显示为01  1000,所以成功的进入JMP程序。

JC: 设置IR4-IR7的值为1001,按下QD,观察黄灯显示为01  1001,所以成功的进入JC程序。

STP: 设置IR4-IR7的值为011,按下QD,观察黄灯显示为01  0110,所以成功的进入STP程序。

5.设置IR7-IR4的不同组合,用单拍方式执行ADD至STP九条机器指令微程序,用微地址和P字段指示灯跟踪微程序转移和执行情况。用逻辑笔测试小插座上输出的微命令信号,记录ADD、SUB、LDA、STA四条机器指令的微命令信号,自行设计表格。

首先按下CLE清零,然后设置SWC=0、SWB=0、SWA=0,按下QD,程序进 入07地址,此时黄灯显示为00 0111,在此按下QD,程序进入05地址,然后设置IR4-IR7的值转跳到不同的程序

ADD: 设置IR4-IR7的值为0000,按下QD,观察黄灯显示为01 0000,所以成功的进入ADD程序,再次按下QD,进入下一个10地址,黄灯显示01  0000,再次按下QD,进入下一个3B地址,黄灯显示11  1011,,再次按下QD,进入下一个34地址,黄灯显示11  0010,再次按下QD,程序停止。

SUB: 设置IR4-IR7的值为0001,按下QD,观察黄灯显示为01 0001,所以成功的进入SUB程序,再次按下QD,进入下一个11地址,黄灯显示01  0001,再次按下QD,进入下一个3A地址,黄灯显示11  1010,,再次按下QD,进入下一个34地址,黄灯显示11  0010,再次按下QD,程序停止。

LDA: 设置IR4-IR7的值为0101,按下QD,观察黄灯显示为01 0101,所以成功的进入LDA程序,再次按下QD,进入下一个15地址,黄灯显示01  0101,再次按下QD,进入下一个36地址,黄灯显示11  0110,,再次按下QD,程序停止。

STA:设置IR4-IR7的值为0100,按下QD,观察黄灯显示为01  0100,所以成功的进入STA程序,再次按下QD,进入下一个14地址,黄灯显示01  0100,再次按下QD,进入下一个35地址,黄灯显示11  0101,,再次按下QD,程序停止。

六、实验总结

本次实验深入探讨了常规型微程序控制器的组成原理及其应用,主要围绕以下几个核心环节展开:

1. 时序信号产生器的分析与理解:通过对时序发生器(包括TIMER1和TIMER2)的ABEL语言源程序的解读,掌握了时序信号T1-T4与W1-W4如何被生成和控制,以及这些信号在微程序控制器与硬联线控制器中的作用。特别是学习了如何使用复位信号CLR、启动信号QD、中断逻辑等控制整个系统的运行状态,为后续实验打下了基础。

2. 微指令格式的优化实践:通过研究给出的微指令格式,了解了微指令是如何设计来满足控制需求的,包括顺序控制部分和操作控制字段的安排。特别地,实践了微指令格式的化简和归并过程,比如将功能相似的信号如LDPC与LDR4归并,从而简化了微指令的设计,提升了效率,这一过程要求深入理解控制信号的功能与应用场景。

3. 微程序控制器电路的搭建与验证:基于对数据通路的理解,学习了微程序控制器的硬件组成,包括控制存储器(EEPROM)、微地址寄存器等关键组件的连接与功能。通过实际接线操作,如将K0至K4分别连接到特定控制信号,以及TGI接地、SKIP接地,加深了对硬件接口配置的认识。

4. 实验操作与结果分析:通过一系列具体操作,如观察时序信号波形、验证微指令编码的正确性、以及通过控制台指令(KWE、KRD、PR)的执行来测试微地址转移逻辑,不仅验证了理论知识,还学会了如何使用实验设备进行调试和验证。特别是在单拍模式下跟踪微指令执行,以及连续模式下观察μA0信号波形,这些实践加深了对微程序执行流程和控制逻辑的理解。

5. 指令功能验证与微地址逻辑测试:通过设置不同的IR值来执行特定机器指令(如ADD至STP),观察微地址转移与P字段指示,进一步验证了微指令设计的正确性及数据通路对指令的响应。此外,通过逻辑笔测试输出的微命令信号,更直观地理解了每条指令执行背后的微命令序列,这对于深入掌握微程序控制机制至关重要。

综上所述,本次实验是一个从理论到实践的全面探索过程,涵盖了微程序控制器设计的核心概念与技术细节,通过动手实践,不仅巩固了理论知识,也培养了问题解决和系统分析的能力。

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

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

相关文章

钓鱼特辑(四)安全较量,摆脱“麻瓜”标签

时至今日,尽管员工们对网络安全有所了解,却往往因缺乏足够的安全意识而对攻防没有直观感知。在红队看来,普通员工可能犹如“麻瓜”,防御薄弱,易于突破。 现在红队以求职者或合作方等“人畜无害”的身份在日常沟通中发动…

Windows中pip换源

step1:检查是否安装 输入如下,出现版本号,就是安装好了 pip -V或pip --version pip3 -V pip3 --version step2:找到(创建)配置文件 对于 Windows 用户,配置文件在【%APPDATA%\pip\pip.ini】文…

使用LinkedHashMap实现固定大小的LRU缓存

使用LinkedHashMap实现固定大小的LRU缓存 1. 什么是LRU? LRU是"Least Recently Used"的缩写,意为"最近最少使用"。LRU缓存是一种常用的缓存淘汰算法,它的核心思想是:当缓存满时,优先淘汰最近最少…

Mac下的压缩包和Win看到的不一样怎么办 Mac压缩后Win电脑看文件名会乱码

在当今多平台的数字工作环境中,Mac和Windows用户常常需要交换文件,但有时候会遇到一些兼容性问题。特别是在处理压缩文件时,Mac用户创建的压缩包在Windows系统中打开时,常常会遇到文件名乱码的问题。本文将详细讨论“Mac下的压缩包…

C语言基础(二十八)

1、冒泡排序&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h> #include <time.h> // 函数声明 void bubbleSort(int *arr, int n); int* createRandomArray(int n, int *size); int main() { int time getTi…

22行为型设计模式——解释器模式

一、解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;主要用于解析和解释特定的语言或表达式。它的核心思想是为语言中的每种语法规则定义一个解释器&#xff0c;通过这些解释器将语言的表示形式转换为可执行的操作。解释器…

【Python机器学习】NLP词频背后的含义——距离和相似度

我们可以使用相似度评分&#xff08;和距离&#xff09;&#xff0c;根据两篇文档的表示向量间的相似度&#xff08;或距离&#xff09;来判断文档间有多相似。 我们可以使用相似度评分&#xff08;和举例&#xff09;来查看LSA主题模型与高维TF-IDF模型之间的一致性。在去掉了…

STM32基于HAL库串口printf使用和接收

我们这里使用HAL库直接用cubemx生成代码配置串口 1.打开cubemx&#xff0c;选择MCU型号 2.我这里使用的是STM32F103C8T6&#xff0c;根据自己的型号选择&#xff0c;这里不限制型号 3.选择时钟源 4.系统设置 5时钟配置 5.选择和配置串口 5.配置中断和中断优先级 6.工程设置…

node环境安装、vue-cli搭建过程、element-UI搭建使用过程

vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;预先定义好的目录结构及基础代码&#xff0c;就好比咱们在创建 Maven 项目时可以选择创建一个骨架项目&#xff0c;这个骨架项目就是脚手架&#xff0c;我们的开发更加的快速 前端项目架…

探索Python测试的奥秘:nose库的魔法之旅

文章目录 探索Python测试的奥秘&#xff1a;nose库的魔法之旅1. 背景&#xff1a;为什么要用nose&#xff1f;2. nose是什么&#xff1f;3. 如何安装nose&#xff1f;4. 五个简单的库函数使用方法4.1 nose.tools.assert_true4.2 nose.tools.assert_equal4.3 nose.tools.raises4…

html2canvas、pdf-lib、file-saver将html页面导出成pdf

html2canvas、pdf-lib、file-saver将html页面导出成pdf 项目背景 需要根据用户的账号信息&#xff0c;生成一个pdf报告发给客户&#xff0c;要求报告包含echart饼图、走势图等。 方案 使用html2canvas&#xff0c;将页面转成图片&#xff0c;再通过pdf-lib将图片转成pdf文件…

Visual Studio Code离线汉化

从官网下载Visual Studio Code安装包后&#xff0c; 下载Visual Studio Code&#xff1a;https://code.visualstudio.com/ 若因网络等问题无法在线安装语言包&#xff0c;可以尝试离线安装&#xff1a; 从官网下载语言包&#xff1a; Extensions for Visual Studio family …

Stable Diffusion majicMIX_realistic模型的介绍及使用

一、简介 majicMIX_realistic模型是一种能够渲染出具有神秘或幻想色彩的真实场景的AI模型。这个模型的特点是在现实场景的基础上&#xff0c;通过加入一些魔法与奇幻元素来营造出极具画面效果和吸引力的图像。传统意义的现实场景虽然真实&#xff0c;但通常情况下缺乏奇幻性&a…

【网络世界】网络层

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 网络层 &#x1f4c1; IPV4 &#x1f4c2; 什么是IP地址 &#x1f4c2; 网段划分 &#x1f4c2; 特殊IP &#x1f4c2; 内网和公网 &#x1f4c2; IPV4的危机 &#x1f4c1; IP协议格式 &#x1f4c1; 路由 &#x1f…

极限的性质【上】《用Manim可视化》

通过前面的极限的定义&#xff0c;现在是计算极限的时候了。然而&#xff0c;在此之前&#xff0c;我们需要一些极限的性质&#xff0c;这将使我们的工作变得简单一些。我们先来看看这些。 极限的性质&#xff1a; 1.常数对极限的影响 1.首先&#xff0c;我们假设和存在&…

通过Origin提取图片数据

第一步&#xff1a; Tool --> Digitizer 第二步&#xff1a;点击文件&#xff0c;导入图片 第三步&#xff1a;设置坐标轴位置和数值&#xff08;Edit Aix&#xff09; 滑动鼠标放大图片&#xff0c;将X1移动到0&#xff0c;X2移动到80&#xff0c;Y1移动到97.0&#xff0c…

Kubernetes 上安装 Jenkins

安装 Helm curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash添加 Jenkins Helm 仓库 首先添加 Jenkins Helm 仓库 helm repo add jenkins https://charts.jenkins.io helm repo update安装 Jenkins 使用 Helm 安装 Jenkins 的最新版本&…

本地部署Xinference实现智能体推理工作流(二)

第二篇章 Dify接入 Xinference 部署的本地模型 1. 安装Dify 克隆 Dify 源代码至本地。 git clone https://github.com/langgenius/dify.git 2. 启动Dify 进入 Dify 源代码的 docker 目录&#xff0c;执行一键启动命令&#xff1a; cd dify/docker cp .env.example .env d…

【OWOD论文】开放世界中OD代码_2_模型部分

简介 本文记录OWOD代码中的模型代码部分。数据部分可看我上一个博客【【OWOD论文】开放世界中OD代码_1_数据部分-CSDN博客】 模型代码 1 起步 在代码中找到 detectron2\engine\defaults.py DefaultTrainer类 __init__方法 根据上述 build_model 回溯到 detectron2\modeling\…

无人机校企合作:组装、维修、研发全面提升学生技能方好就业

无人机校企合作在组装、维修、研发等方面全面提升学生技能&#xff0c;进而促进学生就业&#xff0c;是一个具有前瞻性和实践性的教育模式。以下是对该合作模式的详细分析&#xff1a; 一、合作背景与意义 随着无人机技术的快速发展和广泛应用&#xff0c;市场对无人机专业人…