硬布线控制器的设计与调试教学目的、任务与实验设备教学目的熟练掌握实验5和硬布线控制器的组成原理与应用。复习和应用数据通路及逻辑表达式。学习运用ISP(在系统编程)技术进行设计和调试的基本步骤和方法,熟悉集成开发软件中设计调试工具的使用,体会ISP技术相对于传统开发技术的优点。教学任务按给定的数据格式和指令系统,在所提供的器件范围内,设计一台硬布线控制器控制的模型计算机。根据设计图纸,在通用实验台上进行组装,并调试成功。在组装调试成功的基础上,整理出设计图纸和其他文件。实验设备C1微操作控制信号结果反馈信息CnSKIPTJ·····硬布线控制器(组合逻辑网络)ispLSI1032E-70LJ84指令译码模块节拍电位/节拍脉冲发生器指令寄存器W1W4T1T1启动停止时钟复位B1Bn硬布线控制器结构方框图2TEC-4计算机组成原理实验系统一台直流万用表一只集成电路建议使用ISP芯片(一片ispLSI1032)。采用ISP器件,则需要一台PC机运行设计自动化软件(例如ispEXPERT)作设计、编程和下载使用。总体设计思路(描述指令系统,给数据通路)采用与模型计算机相同的指令系统,即12条机器指令。实验设计中采用该指令系统的子集:去掉中断指令后的3条机器指令,只保留9条指令。采用的数据通路和微程序控制器方案相同。·数据通路图和数据通路控制信号ALUDR1DR2MUX1MUX2RFERM1M2S2S1S0T4RS1、RS0WR1、WR0RD1、RD0WRD(T2)SW_BUS#LDER(T4)AR2MUX3AR1RAM数据端口指令端口CERCEL#LRW(T3)LDAR2(T2)M3LDAR1(T4)AR1_INCIARIAR_BUS#LDIARPCALU2R4MUX4LDR4(T2)M4IRLDIR(T4)C、INTQRS1、RS0控制器INSDBUSC控制信号LDPC(T4)RD1、RD0WR1、WR0...LDDR2(T3)DBUSDBUSLDDR1(T3)RS_BUS#ALU_BUSSW0—SW7图4数据通路总体图B端口A端口PC_ADDA端口B端口PC_INC3控制器的设计思路硬布线控制器能够实现控制功能,关键在于它的组合逻辑译码电路。译码电路的任务就是将一系列有关指令、时序等的输入信号,转化为一个个控制信号,输出到各执行部件中。根据硬布线控制器的基本原理,针对每个控制信号S,可以列出它的译码函数S=f(Im,Mi,Tk,Bj)其中Im是机器指令操作码译码器的输出信号,Mi是节拍信号发生器的节拍信号,Tk是时序信号发生器的时序信号,Bj是状态条件判断信号。在TEC—4计算机组成原理实验系统中,因为时序信号Tk(T1—T4)已经直接输送给数据通路,所以译码电路不需Tk作为输入。又因为机器指令系统比较简单,操作码只有4位,不需要专门的操作码译码器,因此Im直接就是操作码,即指令寄存器的IR4—IR7信号。Mi的来源就是时序模块的节拍信号,例如W4—W1。Bj的信号包括:1.来自数据通路中运算器ALU的进位信号C;2.来自控制台的开关信号SWC、SWB、SWA;3.其他信号。其中C、SWC、SWA和SWB信号在微程序控制器中同样存在,不用加以解释。由于硬布线控制器设计和微程序控制器设计的不同需求和特点以及控制器的设计方案的不同,可能需要其他信号,也可能不需要其他信号,根据设计方案而定。每个控制信号的函数式都是上述输入信号的逻辑表达式,因此可以用各种组合逻辑构造电路网络,实现这些表达式的逻辑功能。理论上,只要对所有控制信号都设计出译码函数,这个硬布线控制器的方案也就得到了。根据要求,列出所需的控制台指令和机器指令控制台指令名称指令功能指令格式SWCSWBSWAKRR读寄存器堆方式100KRD读双端口存储器方式001KWE写双端口存储器方式010KLD加载寄存器堆方式011PR启动程序方式000机器指令名称助记符指令功能指令格式R7R6R5R4R3R2R1R04加法ADDRd,RsRd+Rs-Rd0000RS1RS0RD1RD0减法SUBRd,RsRd-Rs-Rd0001RS1RS0RD1RD0乘法MULRd,RsRd*Rs-Rd0010RS1RS0RD1RD0逻辑与ANDRd,RsRd&Rs-Rd0011RS1RS0RD1RD0存数STARd,[Rs]Rd-[Rs]0100RS1RS0RD1RD0取数LDARd,[Rs][Rs]-Rd0101RS1RS0RD1RD0无条件转移JMP[Rs][Rs]-PC1000RS1RS0RD1RD0条件转移JCDC=1PC+D-PC1001D3D2D1D0停机STP暂停运行0110XXXX老师提供的控制台指令流程图:5在这个控制台里,我们将控制台指令KRR,KRD,KWE,KLD,PR分别拆分为KRR1,KRR2,KRD1,KRD2,KWE1,KWE2,KLD1,KLD2和PR1,PR2。每个小指令分别占用W1-W4四个节拍。分2次执行完成。1000PR20001KRD10100KRR1CEL#LRW=1TJSKIPAR1-INC0010KWE10011KLD10000PR11001KRD21010KWE21011KLD21100KRR2控制台指令流程图SKIPSTSKIPSW-BUS#LDAR1M3=1LDAR2SSTOTJSKIPSW-BUS#LDAR1SSTOSW-BUS#LDAR1SSTOTJSW-BUS#LDAR1M3=1LDAR2SSTOTJSKIPSKIPSW-BUS#M4=1LDR4LDPCSSTOAR1-INCTJWRDTJSW-BUS#CEL#LRW=0SKIPSW-BUS#CEL#LRW=0SW-BUS#CEL#LRW=0RS-BUS#TJCERLDIRTJSW-BUS#LDERCERLDIRSKIPW1W2W3W46控制台控制信号作用:设计方案设计硬布线控制器的控制流程,也就是解决Mi、Im、Bj如何起作用的问题。设计微程序控制器时可以使用流程图,设计硬布线控制器同样可以使用流程图。微程序控制器的控制信号以微指令周期为时间单位,硬布线控制器以节拍为时间单位,两者本质上是一样的,1拍和1个微指令周期都是从时序T1的上升沿到T4的下降沿的一段时间。在微程序控制流程图中,1个执行框代表1个微指令周期,而在硬布线控制流程图中,1个执行框就代表1拍。控制信号信号作用信号有效条件C在加法运算和减法运算时产生的进位信号T4上升沿ALU_BUS允许运算结果送往数据总线1LDDR1M1=0时DR1接收寄存器堆A端口数据T3下降沿M1=1时DR1接收数据总线DBUS数据LDDR2M2=0时DR2接收寄存器堆B端口数据T3下降沿M2=1时DR2接收数据总线DBUS数据WRD控制双端口寄存器堆RF的写操作1且T2上升沿RS_BUS#控制RF的B端口数据是否能送DBUS上0LDER将DBUS上的数据打入暂存寄存器ER1且T4上升沿SW_BUS#将SW7-SW0数据送往DBUS0CEL#选中双端口存储器RAM左端口0LRW允许RAM左端口读操作1且T3上升沿允许RAM左端口写操作0且T3上升沿CERRAM右端口读出数据并放到指令总线INS上1禁止右端口操作0LDAR1将DBUS数据打入地址寄存器AR11且T4上升沿AR1_INCAR1的值加11且T4上升沿LDAR2M3=0时AR2的数据从程序计数器PC打入1且T2下降沿M3=1时AR2的数据从DBUS打入LDR4M4=1时R4的数据从DBUS打入1且T2下降沿M4=0时R4的数据从IR0-IR3打入PC_ADDALU2完成PC和IR低4位相加即PC+D1PC_INCPC+11LDPC程序计数器PC接收来自DBUS的地址1且T4上升沿LDIR将来自RAM的指令打入指令寄存器IR1且T4上升沿S2,S1,S0选择运算器ALU的运算类型17执行一条机器指令所需的微指令数目,在硬布线控制器中相当于机器指令所需的节拍数。决定执行一条指令需要的节拍数,要根据所有指令而定。既不能只考虑某些需要最多节拍的指令,也不能只考虑节拍数最少的指令,一般要根据大多数机器指令所需的节拍数而定,设计才比较合理。在本实验中,由于选用4拍对大多数指令就够用,所以节拍发生器产生4个节拍信号(W1—W4)。统一用4拍执行1条机器指令后,对于所需节拍较少的的指令,例如JMP指令只用2拍(忽略中断),剩下2拍就无事可做了。这在可行性上当然没有问题,但在性能上就打了折扣,因为多余的节拍都浪费掉了。为减少浪费,在时序电路中加入了一个控制信号SKIP的输入,该信号的作用是使节拍发生器在任意状态下直接跳到最后1拍(W4)。这样,设计控制流程时,在所需节拍较少的的指令流程的适当位置使SKIP控制信号有效,多余的节拍就可以跳过,从而提高了性能。机器指令选用四拍以后,将一条机器指令的执行化为占用两条(或者更多)机器指令的节拍,执行一条指令就可以占用W1、W2、W3、W4、W1、W2、W3、W4。为了区分一条指令的两个不同阶段,我们加了个ST内部信号作为标志位,当ST=0时,标志执行指令的前四个节拍,当ST=1时,标志执行指令的后四个节拍。注意到只有CLR#到来后的第四拍时ST信号才发生翻转,所以又设了一个SSTO信号作为ST信号的触发信号。具体实现ST-SSTO模块如下:我们增加了一个标志位RUN,由于按CLR#按钮复位后,实验系统的时序停止在T4,W4,ST的值为0,这样SSTO=!ST&W4的值为1.按QD启动按钮后,由于立即产生T1信号,在T1的上升沿使ST置1,在第一组W1,W2,W3,W4时,ST的值为1,这是我们不希望看到的。增加了标志位RUN后,按CLR#按钮复位,使RUN为0。由于SSTO=!ST*W4*RUN,因此复位后的SSTO=0.按QD启动按钮,在T1的上升沿,使RUN=1。根据SSTO的布尔表达式,在W1,W2,W3时,SSTO=0,直到W4时,才使SSTO=1,由于ST:=CLR#*SSTO#CLR*ST,在W4过后的下一个T1的上升沿,才使ST置1,从而将控制台操作的两种状态区分开来。根据控制台指令设计出的硬布线控制器:8逻辑状态表:根据硬布线指令流程图画出状态表,然后根据表格,列写出每个信号的逻辑表达式,并写出ABEL语言的源程序:OUTPUTST=0ST=11000PR20001SUB0000ADDC=1C=0M3=0LDAR2CERLDIRPC-INCIRM1=0LDDR1M2=0LDDR2M1=0LDDR1M2=0LDDR2RS-BUS#LDAR1M2=0LDDR2RS-BUS#LDAR1SKIPSKIPSKIPSKIPALU=A+BALU-BUSLDERALU=A-BALU-BUSLDERALU=A*BALU-BUSLDERALU=A&BALU-BUSLDERM1=0LDDR1M2=0LDDR2CEL#LRW=1LDERWRDWRDWRDWRDWRDM1=0LDDR1M2=0LDDR2ALU=AALU-BUSCEL#LRW=0RS-BUSM4=1LDR4LDPCCM4=01LDR4PC-ADDLDPCTJ0010MUL0011AND0101LDA0100STA1000JMP1001JC0110STPW1W2W3W4硬布线设计指令流程图9KRR1KRD1KWE1KLD1PR1KRR2KRD2KWE2KLD2ALU_BUSAR1_INCW4W4CEL#W1W1W1W1CERW2W2LDAR1W4W4W4W4LDAR2W4W4LDDR1LDDR2LDERW3LDIRW2W2LDPCW4LDR4W4LRWW1W1W1M1M2M3W4W4M4W4PC_INCPC_ADDRS_BUS#W4S0S1S2SW_BUS#W4W4W4W4W4W1W1,W3SKIPW1W1W1W1W1W2W1W1TJW4W4W4W4W1W4W2,W4WRDW4SSTOW4W4W4W4W410ST=1PR2OUTPUTPR2ADDSUBMULANDLDASTAJMPJCST