1、模型计算机控制器的设计本课程设计以设计一个模型计算机的控制器(CU)为目标,通过课程设计,进一步加深对中央处理器的结构和功能的理解,掌握控制器的设计方法和步骤,为今后从事计算机系统设计打下初步的基础。1 设计要求1.1 功能指标和要求1)支持一个规模较小、但功能相对完整的RISC指令系统,指令条数不超过32条;2)采用I/O端口独立编址方式;3)系统总线由CPU总线延伸形成,总线周期固定; 4)不支持中断及DMA功能;5)采用组合逻辑控制方式;6)忽略复位电路、时钟电路和时序电路的设计,但需说明对时序信号的要求。1.2 性能指标要求1)CPU字长8位,数据总线8位;2)地址总线8位,最大寻址空
2、间为256字节;3)I/O采用独立编址方式,4位地址码,最大支持16个I/O端口;4)时钟频率1MHz左右,机器周期为3-4个时钟周期;5)CPU输出与外部读写控制的控制信号有/MR、/MW、/IOR、/IOW。1.3 课程设计要求根据课程设计指导,完成模型机控制的设计,并提交课程设计报告。1.4 时间安排1)理解模型机的逻辑结构、数据通路以及指令系统和格式:1天2)数据通路设计及分析:1天3)指令执行流程设计:1天4)微操作的节拍安排与设计:1天5)微操作命令逻辑表达式:1天2 CPU逻辑结构设计2.1 CPU逻辑结构的组成1运算器1)ALU具有8种算术/逻辑运算功能,其运算功能由三位编码I
3、2I1I0选择;ALU除了2个数据输入端R、S和数据输出端Y外,另有一个最低位进位输入信号C0,以及4个状态输入:进位输出C、结果零Z、运算溢出V和符号位S。2)ALU输出移位器具有直通、左移一位和右移一位的功能,由两位编码I4I3选择;3)ALU数据输入端有A和B两个数据锁存器,指令不可访问;4)标志寄存器FLAG,4位,与数据总线的低4位连接,能独立置位或清零;5)4个通用数据寄存器R0R3;6)堆栈指针SP(8位);7)数据缓冲寄存器DR,指令不可访问;8)地址寄存器AR(8位),指令不可访问。2控制器1)程序计数器PC(8位),具有加1的功能;2)指令寄存器IR(8位);3)微操作控制
4、信号发生器,采用组合逻辑控制方式;4)时钟和时序信号发生器(不需设计)。2.2 CPU的逻辑结构及数据通路结构图2-1 CPU逻辑结构及数据通路结构图在模型计算机的CPU中设置了一个特殊的零寄存器ZERO,该寄存器的值恒为0。各寄存器的编码(地址)见表2-1。表2-1 寄存器编码表寄存器编码R0R1R2R3DRARSPFLAGZEROABPCIR00000001001000110100010101100111100010011010101111003 指令系统设计3.1 指令字长和寻址方式设计1)指令字长以单字长为主,少数指令为双字长;2)指令操作码字段长度可变;3)数据寻址支持立即寻址、寄存
5、器直接寻址和寄存器间接寻址三种方式;4)只有取数(LDA)和存数(STO)两条指令可以访问主存。3.2 指令系统设计在以下指令定义中,dR、sR表示通用数据寄存器组R0R3(编号0011)中的一个,data表示8位立即数,addr表示8位无符号地址,port表示4位I/O端口地址。1)数据传送类指令(8条)MOVdR, data;dR dataMOVdR, sR;dR (sR)LADdR, sR;dR (sR)STOdR, sR;(dR) (sR)PUSHsR;SP (sR),SP SP+1POPdR;SP (SP)1,dR (SP)CLC;Cy 0STC;Cy 12)算术运算类指令(6条)A
6、DDdR, sR;dR (dR) + (sR) SUBdR, sR;dR (dR) (sR) ADCdR, sR;dR (dR) + (sR) + CySBCdR, sR;dR (dR) (sR) CyINCdR;dR (dR) + 1DECdR;dR (dR) 13)逻辑运算类指令(8条)ANDdR, sR;dR (dR) (sR)ORdR, sR;dR (dR) (sR)XORdR, sR;dR (dR)(sR)NOTdR;dR (dR)SLdR;dR dR 1 , Cy D0(逻辑右移1位)SLCdR;带进位标志Cy的循环逻辑左移(1位)SRCdR;带进位标志Cy的循环逻辑右移(1位)4
7、)控制类指令(7条)JMPaddr;PC addrJCoffset;若Cy=1 则 PC (PC) + offsetJNCoffset;若Cy=0 则 PC (PC) + offsetJZoffset;若Z=1 则 PC (PC) + offsetJNZoffset;若Z=0 则 PC (PC) + offsetCALLaddr;(SP) (PC),SP (SP)+1,PC addrRET;SP (SP)1,PC (SP)5)输入/输出类指令(2条)INport;R0 (port)OUTport;port (R0)3.3 指令格式设计指令长度为单字节和双字节2种,操作码字段的长度可变,指令格式
8、有以下六种。1格式一7 4 3 2 1 0 操作码dRsR2格式二7 4 3 2 1 0操作码IO port / addr3格式三7 4 3 2 1 0操作码dR/sR4格式四7 4 3 2 1 0操作码dR/sRaddr5格式五7 4 3 2 1 0操作码6格式六7 4 3 2 1 0操作码adr3.4 指令汇总表表3-1 指令汇总表序号指令格式汇编语言字长操作数C Z V S功能说明10000 dR sRMOVdR, sR12dR (sR)20001 dR sRLADdR, sR12dR (sR)30010 dR sRSTOdR, sR12(dR) (sR)40011 dR sRADDdR
9、, sR12* * * *dR (dR)+(sR)50100 dR sRSUB dR, sR12* * * *dR (dR)-(sR)60101 dR sRANDdR, sR12*dR (dR)(sR)70110 dR sRORdR, sR12*dR (dR)(sR)80111 dR sRXORdR, sR12*dR (dR)(sR) 91000 dR sRADCDS, sR12* * * *dR (dR)+(sR)+Cy101001 dR sRSBCDS, sR12* * * *dR (dR)-(sR)-Cy111010 portINport11R0 (port)121011 portOUT
10、port11port (R0)131100 00 dRPUSHsR11SP (sR),SP (SP)+1141100 01 dRPOPdR11SP (SP)-1,dR (SP)151100 10 dRINCdR11* * * *dR (dR)+1161100 11 dRDECdR11* * * *dR (dR)-1171101 00 dRSHLdR11*dR dR*2,Cy D7181101 01 sRSHRdR11*dR dR/2,Cy D0191101 10 dRSLCdR11*带进位Cy的逻辑循环左移201101 11 dRSRCdR11*带进位Cy的逻辑循环右移211110 00 dR
11、NOTdR11*dR (dR)221110 01 dRdataMOVdR, data22*dR data231110 1000CLC100Cy 0241110 1001STC101Cy 1251110 1010addrCALLaddr21(SP) (PC),SP(SP)+1PC addr261110 1011RET10SP(SP)-1,PC(SP)271110 1100offsetJCoffset21C=1 时转移到(PC)+offset281110 1100offsetJNCoffset21C=0 时转移到(PC)+offset291110 1110offsetJZoffset21Z=1 时
12、转移到(PC)+offset301110 1111offsetJNZoffset21Z=0 时转移到(PC)+offset311111 0000addrJMPaddr21PC addr说明:表中CZVS一栏,*表示该标志位在指令执行后被重置,表示该标志位不受指令执行的影响。4 控制信号和时序信号4.1 控制信号在计算机的控制信号中,大部分用于控制寄存器数据输入和数据输出操作。寄存器一般由带有三态输出的D触发器或D锁存器构成,因此需要有数据输入和数据输出两个控制信号。为了可靠地实现两个寄存器之间的数据传送操作,输出寄存器的数据输出控制信号必须首先有效,经过一段时间的延迟后,输入寄存器的数据输入控
13、制信号才能有效,在时间上有一个时间差。寄存器之间的数据传送一般可在一个时钟周期内完成,因此,寄存器数据输出的控制信号持续1个时钟周期有效,而寄存器数据输入的控制信号持续半个时钟周期,且在时钟信号的后半个周期有效。1运算器相关的控制信号1)ALU运算功能控制信号AUL运算功能由控制信号I2I1I0的编码选择,具体见表4-1。表4-1 ALU运算功能选择I2I1I0运算功能说明000001010011100101110111RSSRR+0R- 0RSRSRS加法减法加0减0逻辑或与逻辑非逻辑异或2)移位器操作控制信号移位器的操作功能由控制信号I4I3的编码选择,具体见表4-2。表4-2 移位器操作
14、功能选择I4I3输出Y说明00011011三态Y=FF=F*2F=F/2Y输出高阻态F直通F左移1位F右移1位3)寄存器输入/输出控制信号通用寄存器组R0R3的数据输入输入和输出分别由Rni及Rno控制,其中Rno信号持续1个时钟周期,而Rni则只在时钟信号的后半个周期有效。数据缓冲寄存器DR在物理上由输出缓冲寄存器和输入缓冲寄存器组成,以便实现双向数据缓冲,但在逻辑上只有一个地址,一般通过读、写这两种不同的操作来区分不同的物理寄存器。对于数据输出缓冲寄存器DR,数据的传送方向为:CPU主存或I/O,其数据输入控制信号为DRi,数据输出由信号控制。对于数据输入缓冲寄存器DR,数据的传送方向为:
15、主存或I/OCPU,其数据输入由WE控制(WE与为互补信号),数据输出由DRo控制。地址寄存器AR为单向输出,ARi为数据打入控制信号。零寄存器(Z)为单向输出,Zo为数据输出控制信号。标志寄存器FLAG的数据输出信号为Zo。标志寄存器FLAG在结构上不同于普通的寄存器,普通寄存器的各个数据位作为一个整体同时接收数据,不能实现个别数据位独立接收数据,但标志寄存器FLAG要求各数据位能够独立接收ALU输出的特征值(C、Z、V、S),通常情况下,需用时序逻辑的设计方法来实现。标志寄存器FLAG中各标志位的设置情况见表4-3。表4-3 标志寄存器中CZVS标志值的选择I7I6I5CZVS说 明000
16、001010011100101CC701F0F7ZF=0ZZZZVOVVVVVSF7SSSSCZVS的值保持不变接收ALU标志位输出的值C置“0”,ZVS不变C置“1”,ZVS不变左移操作,ZVS不变右移操作,ZVS不变堆栈指针SP的输入输入和输出分别由SPi及SPo控制。4)ALU进位信号C0及移位器低位F0及高位F7的取值ALU进位信号C0及移位器低位F0及高位F7的取值见表4-4。表4-4 ALU进位信号C0及移位器低位F0及高位F7的取值I10I9I8C0F7F0说明00000101001110010111011101C70F7CF70F0CF0单字长加法、逻辑运算单字长减法多字长加、
17、减法无操作逻辑左移循环左移逻辑右移循环右移2控制器(CU)相关的控制信号程序计数器PC具有加1的功能,当控制信号PC+1有效时PC的值加1,其数据输入和输出分别由信号PCi和PCo控制。指令寄存器IR为8位,各位均有直接通道连接到微操作与时序信号发生器,其输入和输出分别由信号IRi和IRo控制。3存储器及I/O相关的控制信号访问存储器一般需要和两个信号来控制读、写操作,访问I/O端口则需要和两个信号来控制读、写操作,为了便于控制数据总线的数据传送方向,可在CPU设置REQ(存储器及I/O请求)、(存储器或I/O选择)和(写允许)三个控制信号,通过对这三个信号的译码后产生所需要的、和。表4-3
18、读写访问的控制信号REQ 译码输出说明0 1 0 01 0 11 1 01 1 1无效无操作写存储器读存储器写I/O读I/O4.2 数据通路分析1取指令操作 PCARMEMDRIR PC+1PC2执行指令1)双操作数运算指令 sR op dRdR sRA dRB FRi2) 单操作数运算指令 op dRdR dRA FRi3) 寄存器间数据传送指令 op sRdR (sR)(dR)4) push数据传送指令 sRSP sRDR SPAR SP-1SP DR AR5) pop数据传送指令 SPdR SP AR SP+1 SP AR DR DRdR6) 输入/输出指令 op port portR0
19、或 R0(port)7) jmp控制指令 addrPC addrPC8) offset类指令 op(PC + offset PC) PCA offsetB A+BPC9) call指令 op addr PCDR SPAR SP-1SP DRAR addrPC10) ret指令 Op SPAR SP+1SP ARDR DRPC11)LAD指令 sRdR sRAR M(AR)DR DRdR12) STO指令 sRdR sRDR dRAR DRM(AR)4.3 时序信号模型计算机的主时钟频率f为1MHz,周期T=1s,采用方波波形(即脉宽与脉间相等),普通的低速RAM和ROM的访问周期一般在小于30
20、0ns,因此存储器的访问可在1个时钟周期内完成。因此,模型机的机器周期M固定由1个时钟周期构成,指令的机器周期数可变,但至少需要M0、M1两个机器周期,其中M0为取指周期,M1为执行周期。5 指令执行流程设计指令执行流程图如图5-1所示,每个方框图表示一个机器周期,方框图的左上方的数字编码为机器周期的编号。1有效时图5-1 指令执行流程图6 指令执行流程及控制信号安排根据指令执行流程图,安排各机器周期所需要发出的微操作控制信号,并给出控制信号的编码。表6-1 指令流程及控制信号表指令机器码机器周期PC+1R /M /W源寄存器目的寄存器C0F0F7I10I9I8标志I7I6I5移位I4I3运算
21、I2I1I0注释-0000010001011100000000000000PCAR,PC+1PC-0000101011111011100000000000M(AR)DR-0001000000111110000000000000DRIRMOV1110 01 dRdata0000010001011100000000000000PCAR,PC+1PC0000101011111010000000000000M(AR)DR000110000010000dR00000000000DRdRMOV0000 dRsR00100000000sR00dR00000000000sRdRLAD0001 dRsR0011
22、0000000sR100000000000000sRAR0000101011111010000000000000M(AR)DR000110000010000dR00000000000DRdRSTO0010 dR sR00111000000dR 010100000000000dRAR01000000000sR010000000000000sRDR0100101000100111100000000000DRM(AR)PUSH 1100 00 dR0101000000110010100000000000SPAR01000000000sR010000000000000sRDR0100101000100
23、111100000000000DRM(AR)POP1100 01 dR0101000001001010100000000000SPAR0000101011111010000000000000M(AR)DR000110000010000dR00000000000DRdRCLC1110 1000011000000000010000000CySTC1110 1001011000000000011000001CyADD0011 dR sR10000000000sR100100000100000sRA10001000000dR101000000100000dRB1001000001001, 101000
24、dR00000100000A+BdRSUB0100 dR sR10000000000sR100100100100000sRA10001000000dR101000100100000dRB1001100001001, 101000dR00100100001A-BdR7 微操作控制信号逻辑表达式M0、M1两个机器周期,其中M0为取指周期, M1为执行周期;00000,00001,00010,00011,00100,00110,00111,01000,01001,01010,01100,10000,10001,10010,10010,10011为MOV、LAD、STO、PUSH、POP 、CLC、S
25、TC、ADD 、SUB指令中的微操作各微操作控制信号逻辑表达式为:PC+1=(M0+M1)00000*PCi写存储器MWE(D)=M1*01001读存储器MRD(D)= (M0+M1)*00001打入数存地址寄存器LDAR=M1*ARi*( 00010+ 00111+ 01010)打入指令寄存器LDIR=(M0+M1*00010*IRi打入数据缓冲寄存器LDDR=M1*01000*DRi打入目标寄存器LDdR=M1*00011+M1*00100+M1*10010+M1*10011打入进位信号C0 LDCy=M1*01100 打入A寄存器LDA=M1*10000打入B寄存器LDB=M1*1000113
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922