590 likes | 732 Views
TEC-2000 教学机的指令格式. 8 位 4 位 4 位. 目的寄存器. 源寄存器. 操 作 码. I/O 端 口 地 址. 相对转移指令的偏移量. 直接数 / 内存地址 / 指令中变址偏移量. 单字指令 仅用一个指令字, 第一个指令字 分为三个部分。 最高 8 位是操作码。从这个意义上讲 , 教学机的基本指令是固定长度的操作码结构 , 最多支持 256 条基本指令。
E N D
TEC-2000 教学机的指令格式 8位 4位 4位 目的寄存器 源寄存器 操 作 码 I/O 端 口 地 址 相对转移指令的偏移量 直接数 / 内存地址 / 指令中变址偏移量 单字指令仅用一个指令字,第一个指令字分为三个部分。 最高 8 位是操作码。从这个意义上讲, 教学机的基本指令是固定长度的操作码结构, 最多支持 256 条基本指令。 最低的 8 位有多种用法:给出 1 或 2 个寄存器的编号,或入/出端口的地址,或用于给出相对转移指令的偏移量。 双字指令要用两个指令字, 第二个指令字的内容可能是立即数、一个直接地址或一个变址位移量。
TEC-2000 16位机基本指令系统 指令格式 汇编语句 操作数个数 CZVS 指令分组 功能说明 00000000 DRSR ADD DR,SR 2 **** A DR←DR+SR 00000001 DRSR SUB DR,SR 2 **** A DR←DR-SR 00000010 DRSR AND DR,SR 2 **** A DR←DR and SR 00000011 DRSR CMP DR,SR 2 **** A DR-SR 00000100 DRSR XOR DR,SR 2 * • • • A DR←DR xor SR 00000101 DRSR TEST DR,SR 2 * *** A DR and SR 00000110 DRSR OR DR,SR 2 * • • • A DR←DR or SR 00000111 DRSR MVRR DR, SR 2 • • • • A DR←SR 00001000 DR0000 DEC DR 1 **** A DR←DR-1 00001001 DR0000 INC DR 1 **** A DR←DR+1 00001010 DR0000 SHL DR 1 * • • • A DR,C←DR*2 00001011 DR0000 SHR DR 1 * • • • A DR,C←DR /2 01000001 OFFSET JR ADR 1 • • • • A 无条件跳转 01000100 OFFSET JRC ADR 1 • • • • A C=1 时跳转 01000101 OFFSET JRNC ADR 1 • • • • A C=0 时跳转 01000110 OFFSET JRZ ADR 1 • • • • A Z=1 时跳转 01000111 OFFSET JRNZ ADR 1 • • • • A Z=0 时跳转
TEC-2000 16位机基本指令系统 指令格式 汇编语句 操作数个数 CZVS 指令分组 功能说明 10000000 0000000 JMPA ADR 1 • • • • B 无条件跳到ADR ADR(16位) 10000001 DRSR LDRR DR,[SR] 2 • • • • B DR←[SR] 10000010 I/O PORT IN I/O PORT 1 • • • • B R0←[I/O PORT] 10000011 DRSR STRR [DR],SR 2 • • • • B [DR]←SR 10000100 00000000 PSHF 0 • • • • B FLAG 入栈 10000101 0000SR PUSH SR 1 • • • • B SR 入栈 10000110 I/O PORT OUT I/O PORT 1 • • • • B [I/O PORT]←R0 10000111 DR POP DR 1 • • • • B 出栈到 DR 00001000 DR0000 MVRD DR, DATA 2 • • • • B DR←DATA DATA(16位) 10001100 00000000 POPF 1 * *** B FLAG←出栈 10001111 00000000 RET 1 • • • • B 子程序返回 11001110 00000000 CALA ADR 1 • • • • D 调用子程序 ADR(16位)
指令执行步骤概述 划分与设计指令执行步骤,是控制器部件重要的教学内容,这一设计要依据指令的格式和功能、控制器部件的组成、被控制对象运行方式以及它们彼此之间的连接关系等多个方面的实际情况共同决定,就是说,它解决的是信息随着时间在这些部件之间的流动关系,与指令系统、计算机整机和它的各个部件都有关系,因此也就比较难以全面理解与掌握。 下面分成两个步骤,从3个角度来介绍上述内容。 1. 准备性知识:指令执行步骤简介;教学计算机组成框图。 2. 典型指令执行步骤介绍: (1)指令执行步骤简单的文字描述; (2)指令执行步骤与信息流动的时间空间对应关系; (3)教学计算机的典型指令执行步骤,和每一步骤中对各个部件的控制作用。
形成下一条指令地址 每条指令的执行步骤 是一次读 内存操作 —读取指令 指令地址 (在程序计数器PC中) 送入主存地址寄存器 读主存,读出内容送入指令寄存器 IR —分析指令 —按指令规定内容执行指令 不同指令的操作步骤数, 和具体操作内容差异很大, —检查有无中断请求 若有,则响应中断并转中断处理 若无,则转入下一条指令的执行过程 公共操作 可能执行 一次或多次 可以复合 R_R类型指令 读写内存类型指令 输入输出类型指令 其他类型指令 是每一条指令的特定操作 公共操作
TEC-2000 教学机系统的组成 电 源 +5V 微程序 /硬连线 控制器 计算机 终端 运算器 (16 位) 中断实验 接口实验 内存扩展实验 串行接口 主存储器 (16位) PC机 按键 室开关 指示灯
(1)指令执行步骤与信息流动图示部分 典型指令的执行过程举例: 2000 0001 ADD r0, r1 ; 加法指令 2001 0790 MOV r9, r0 ; 传送指令 2002 E709 STRA [2007] , r9 ; 写内存指令, 这是一条双字指令, 2007 ;第二个字中的 2007 是直接地址 2004 1280 IN 80 ;读串行口数据到R0低8位 2005 44FA JRC, 800 ;C为1转移到2000,否则顺序执行 • 8F00 RET ; 子程序返回指令 2007 其他一些指令与这里的几条指令有相当多的共同特性,属于 同一组的指令的执行步骤非常类似。
形成下条指令地址 指令执行步骤简单的文字描述加法指令 ADD R0, R1 读取指令 ①AR PC ②读主存,IR 读出内容 PC PC + 1 执行指令 ③ALU R0 ALU R1 执行 + R0 ALU,记忆结果特征 结束,判中断
形成下条指令地址 寄存器内容传送指令MOV R9, R0 读取指令 ①AR PC ②读主存,IR 读出内容 PC PC + 1 执行指令 ③ALU 0 ALU R0 执行 + R9 ALU 结束,判中断
形成下条指令地址 写寄存器内容到主存MOV [2007] , R9 (地址 807 存在指令的第二个字中) 读取指令 ①AR PC ②读主存,IR 读出内容 PC PC + 1 执行指令 ③AR PC , PC PC+ 1 ④读主存,AR 读出内容 ⑤ 写主存, 总线 ALU , ALU 0 , ALU R9,+ 结束,判中断 (注)
形成下条指令地址 形成下条指令地址 输入指令 IN 80 读取指令 ①AR PC ②读主存,IR 读出内容 PC PC + 1 执行指令 ③AR I/O Port ④ 读外设,ALU 读出数据 ALU 0 执行 + R0 ALU 结束,判中断
形成下条指令地址 相对转移指令 JR C, 800 读取指令 ①AR PC(注) ②读主存,IR 读出内容 PC PC + 1 执行指令 ③ 若 c = 1 则: ALU IP ALU offset(IR低字节) 二者相加,结果送PC 否则,顺序执行 结束,判中断
形成下条指令地址 子程序返回指令 RET 读取指令 ①AR PC ②读主存,IR 读出内容 PC PC + 1 • 执行指令 ③AR SP SP SP + 1 ④ 读主存, PC读出内容 结束,判中断
运算器 控制器 主振 脉冲 C Z V S 节拍发生器 ALU 控制信号产生部件 程序计数器 3041 2000 操作数 地址 1234 乘商寄存器 6688 PC 寄存器组 指令寄存器 R9 AR 操作码 IR . 地址寄存器 用于运算器 数据总线 控制总线 地址总线 2000 0001 0790 E709 接口 2007 1280 输入设备 输出设备 44FA 8F00 2007 78BD 主存储器
运算器 控制器 主振 脉冲 4275 C Z V S 节拍发生器 ALU + 控制信号产生部件 程序 计数器 4275 3041 2001 2000 操作数 地址 1234 乘商寄存器 6688 寄存器组 PC 指令寄存器 0001 R9 AR 操作码 IR . 2000 地址寄存器 用于运算器 数据总线 控制总线 地址总线 2000 ADD R0,R1 0001 0790 AR PC E709 接口 2007 PC PC+1 1280 输入/出设备 读内存,IR读出内容 44FA 8F00 2007 R0 R0 + R1 78BD 主存储器
运算器 控制器 4275 主振 脉冲 C Z V S 节拍发生器 + ALU 控制信号产生部件 0 程序 计数器 4725 2002 2001 操作数 地址 1234 乘商寄存器 6688 寄存器组 PC 指令寄存器 0790 R9 4275 AR 操作码 IR . 地址寄存器 2001 用于运算器 数据总线 控制总线 地址总线 2000 MOV R9, R0 0001 0790 AR PC E709 接口 2007 PC PC+1 1280 输入/出设备 读内存,IR 读出内容 44FA 8F00 2007 R9 R0 + 0 78BD 主存储器
运算器 控制器 主振 脉冲 4725 C Z V S 节拍发生器 ALU + 控制信号产生部件 0 程序计数器 3041 802 操作数 地址 2004 2003 1234 乘商寄存器 6688 PC 寄存器组 指令寄存器 E709 R9 4275 AR 操作码 IR . 2003 地址寄存器 2007 用于运算器 数据总线 控制总线 地址总线 MOV [2007], R9 2000 0 401 0001 ARPC, PC PC+1 0790 读内存,IR读出内容 E709 接口 2007 ARPC,PC PC+1 1280 输入设备 44FA 读内存,AR读出内容 8F00 2007 写内存,数据总线R9+0 78BD 4275 主存储器
运算器 控制器 主振 脉冲 C Z V S 节拍发生器 ALU 控制信号产生部件 程序 计数器 3041 A 2004 操作数 地址 2005 1234 乘商寄存器 6688 PC 寄存器组 指令寄存器 1280 R9 AR 操作码 IR . 2004 地址寄存器 80 用于运算器 数据总线 控制总线 地址总线 IN 80 2000 0001 ARPC 0790 E709 接口 PC PC+1 2007 读内存,IR读出内容 1280 输入/出设备 44FA ARI/O port 8F00 2007 读设备,R0读出内容 4275 主存储器
运算器 控制器 主振 脉冲 C Z V S 节拍发生器 ALU 控制信号产生部件 程 序计数器 A 2005 操作数 地址 2006 2006 2000 1234 乘商寄存器 6688 2005 PC 寄存器组 指令寄存器 44FA R9 AR 操作码 IR . 2005 地址寄存器 用于运算器 数据总线 控制总线 地址总线 JR C, 800 2000 0001 IP,ARPC 0790 PC PC+1 E709 接口 2007 读内存,IR 读出内容 1280 输入/出设备 若C=1, 则 PCIP+offset 44FA 8F00 2007 否则 顺序执行 4275 主存储器
运算器 控制器 主振 脉冲 C Z V S 节拍发生器 ALU 控制信号产生部件 程序 计数器 A 2006 操作数 地址 2007 A00 1234 乘商寄存器 6688 FF0 PC FF1 寄存器组 指令寄存器 8F00 R9 AR 操作码 IR . FF0 地址寄存器 2006 用于运算器 数据总线 控制总线 地址总线 RET 2000 0001 IP,ARPC 0790 PC PC+1 E709 接口 2007 读内存,IR 读出内容 1280 输入/出设备 44FA ARSP SP SP+1 8F00 2007 读内存,PCMEM 堆栈FF0单元存A00 4275
/Reset PC 0 AR PC PCPC+1 寄存器之间 运算与传送 A组 B组 IR(AR) AR地址 读、写内存 或 I/O 接口 /MAP B、C、D组 C组 D组 读、写内存 AR地址 读、写内存 PC地址 微程序控制器方案 (2) 16 位机的基本指令、扩展指令执行流程图
/Reset PC 0 AR PC PCPC+1 寄存器之间 运算与传送 B组 A组 AR地址 读、写内存 或 I/O 接口 IR(AR) B、C、D组 C组 D组 读、写内存 AR地址 读、写内存 PC地址 硬连线控制器方案 (2) 16 位机的基本指令、扩展指令执行流程图
二、控制器的功能与组成 1. 控制器的功能: 控制执行指令 控制各部件协调运行,即为各部件提供控制信号。 2. 控制器的组成: 程序计数器 指令寄存器 指令步骤标记线路 提供控制信号的部件 分类 : 微程序的控制器 硬布线的控制器
1. 控制器的功能 计算机的功能是执行程序 程序是依次排列起来的指令代码 控制器的功能就在于: 正确地分步完成每一条指令规定的功能, 正确且自动地连续执行指令; 再进一步说,就是向计算机各功能部件提供 协调运行每一个步骤所需要的控制信号。
指令的执行过程 冯. 诺依曼 结构的计算机 即存储程序的计算机,设置内存,存放程序和数据,在程序运行之前存入。 执行程序: 正确从程序首地址开始; 正确分步执行每一条指令, 并形成下条待执行指令的地址; 正确并自动地连续执行指令, 直到程序的最后一条指令。
形成下一条指令地址 每条指令的执行步骤 是一次读 内存操作 公共操作 —读取指令 指令地址送入主存地址寄存器 读主存,读出内容送入指定的寄存器 —分析指令 —按指令规定内容执行指令 不同指令的操作步骤数, 和具体操作内容差异很大, —检查有无中断请求 若有,则响应中断并转中断处理 若无,则转入下一条指令的执行过程 R_R类型指令 读写内存类型指令 输入输出类型指令 其他类型指令 可能执行 一次或多次 是每一条指令的特定操作 公共操作
2. 控制器的组成 ①程序计数器PC:存放指令地址,有+1或接收新值功能。 ②指令寄存器IR:存放指令内容:操作码与操作数地址。 主脉冲源与启停控制线路,按需要给出主脉冲信号。 ③指令执行步骤标记线路:指明每条指令的执行步骤。 ④控制信号记忆或产生线路:给出计算机各功能部件部件协同运行所需要的控制信号。 主存储器部件 运算器部件 各部件包括 总线及输入/输出接口(输入/输出设备) 也包括 控制器部件 设计中的难点,在于解决对运算器、控制器的控制
TEC-2000 教学机系统的组成 电 源 +5V 运算器 (8 / 16 位) 计算机 终端 微程序 控制器 接口实验 中断实验 内存扩展实验 串行接口 主存储器 (8 / 16位) 硬布线 控制器 PC机 按键 开关 指示灯
主振 硬连线 方案的 控制器 控制条件 时序控制 信号 形成部件 译码 节拍 PC IR …. 启停 控制器信号 数据总线 控制总线 地址寄存器械 地址总线 输出 设备 输入 设备 主 存 运算器 部件
/Reset PC 0 AR PC PCPC+1 寄存器之间 运算与传送 A组 B组 AR地址 读、写内存 或 I/O 接口 IR(AR) B、C、D组 C组 D组 读、写内存 AR地址 读、写内存 PC地址 (2) 16 位机的基本指令、扩展指令执行流程图
(3) 控制器应提供的控制信号 Y15~Y0用16个指示灯显示结果 各用四个指示灯显示状态 SST SCI Cy F=0 Over F15 Cin C Z V S 运 算 器 部 件 (4 片 Am2901) Gal 20V8 Gal 20V8 RAM15 RAM0 Q15 Q0 SSH D15~D0 用16个数据开关提供输入数据 I8~6 I2~0 I5~3 A3~0 B3~0 通过24位微型开关 提供控制信号 I8~6I5~3I2~0SST SCI SSH A口B口
对运算器的控制 24位控制信号,同24位微型开关内容, A4~A0,B4~B0,I8~I6, I5~I3, I2~I0 SST2~0, SSH1~0, SCI1~0 寄存器分配: R4:SP R5: PC 约定用法:R0:I/O指令约定使用,也是通用累加器
读写主存储器或I/O接口 从学习指令执行步骤考虑,理解对主存储器读写的控制,分成两步: 1. 传送主存地址,以选择被读写的存储单元; 2. 给出读写命令, 读操作时,把读出数据保存起来, 写操作时,还要给出写入的数据。 从学习指令执行步骤考虑,理解对接口电路读写的控制,分成两步: 1. 传送IO端口地址,以选择被读写的芯片; 2. 给出读写命令, 读操作时,把读出数据保存起来, 写操作时,还要给出写入的数据。
对内存和 I/O接口的读写 • /MIO(0:有内存或串口读写,1:无) • REQ (0:读写内存, 1:读写串行口) • /WE (0:写操作, 1:读操作) 0 0 0写内存 0 0 1读内存 0 1 0写串口 0 1 1读串口 1 XX无内存和串口的读写操作
对总线的控制 总线是用于连接计算机各个功能部件的线路和连接线,通常由具有三态输出功能的器件构成,以便用分时地方式,在不同时刻把不同的数据发送到总线上,任何时刻仅能有一个数据发送到总线上; 总线上的数据可以被送到需要接收数据的部件或者线路,多个线路可以同时接收同一个来源数据。 计算机中总要使用 3 种类型的总线: 数据总线,地址总线,控制总线
选择送内部总线的信息来源 DC12~0 信号名称 注释 000 /SWTOIB 来自开关 001 /RTOIB ALU的输出 010 /ETOIB 符号扩展16位 011 /FTOIB 状态位输出 100 /STOIB 符号扩展8位 101 /INTVH 中断向量的 110 /INTVL 高、低 8 位 110 NC 不用 控制指定寄存器接收信息 DC22~0 信号名称 注释 000 NC不用 001 /RIR指令寄存器 010 /GARL地址寄存器低位 011 /GARH地址寄存器高位 100 /INTR取原中断优先级 101 /INTN置新中断优先级 110 /EI开中断 110 /DI关中断 对内部总线和特定寄存器的控制
硬连线(组合逻辑)控制器 • 组合逻辑控制器的组成和运行原理 • 2. 组合逻辑控制器的设计过程与技术 • (1) 指令系统与指令编码设计 • (2) 控制器应提供的控制信号 • (3) 指令执行步骤划分和功能确定 • (4) 节拍发生器(TIMING)设计与实现 • (5) 时序控制信号产生部件的设计与实现
1. 组合逻辑控制器的组成与运行原理 在讲解过微程序的控制器之后,再来讨论组合逻辑控制器的组成和运行原理就变得容易了, 因为二者有很多共同点。 它们都用于控制指令的执行过程, 并且使用几乎相同的执行步骤和几乎完全相同的控制信号,来完成对控制器之外的其他各功能部件的控制作用,因此可以简化对这些内容设计原理和方法的论述。 两种控制器实质性的差别,表现在处理指令各执行步骤的接续关系的方案和给出时序控制信号的办法完全不同,从而造成控制器的具体组成和运行原理、运行性能上的一些差异。比较它们的逻辑图可看出两种控制器组成的主要差异: 微程序控制器中的控存变成这里的时序信号产生部件,还取消了微指令寄存器;原来的下地址部件变成了这里的节拍发生器;原来的微地址映射部件变成这里的操作码译码器;一些信号连接关系也有某些变化。
组合逻辑控制器的组成与运行原理 (1)组合逻辑控制器用节拍发生器(Timing,几个触发器构成的时序逻辑电路)不同的状态组合来区分一条指令不同的执行步骤,指令执行步骤的接续是通过变换节拍发生器的状态组合完成的,不同于微程序控制器中通过下地址部件给出不同的微指令地址来实现。这里用节拍发生器取代了原来的下地址部件。 (2)组合逻辑控制器是通过由 “与—或” 两级逻辑关系构成的时序控制信号产生部件来直接给出全部的时序控制信号。送到第一级各“与门”的输入信号是指令操作码和节拍发生器的节拍状态(可能还有控制条件),每个与门产生一个与项输出,相关的与项输出信号送到第二级的 “或门” ,每个或门输出的就是一个时序控制信号。全部的时序控制信号由许多个 “与—或”逻辑门给出。与用控制存储器存放全部控制信号的微程序控制方案不同,这里用时序控制信号产生部件取代了原来的控制存储器,还取消了那里的微指令寄存器线路,把控制信号直接送到被控制的部件。
组合逻辑控制器的组成和运行原理 主振 控制条件 时序控制 信号 形成部件 节拍发生器 译码 程序计数器 OP IR PC 启停 指令寄存器 …. 数据总线 控制总线 地址寄存器 地址总线 运算器 部件 主存储器 部件 输 出 设 备 输 入 设 备
教学机的组合逻辑控制器 8 或16位的指令寄存器, 1 片100引脚的MACH, 5 片 8 输出引脚的GAL, 二者互斥运行,构成时序控制信号形成部件,提供35 位的控制信号。 2 片GAL与GAL3共同提供运算器A、B口信号。 节拍发生器(1 片GAL) ,产生 4 位节拍状态信号。 2 片GAL用于启动、停止等控制电路。 GAL1~GAL7公用于组合和微程序两种控制器。
2. TEC-2000 16位机指令与执行流程设计 TEC-2000 是原有型号的基础上,经过较大的改进与完善重新设计的,分为 16 位和 8 位字长的两种型号。 16 位机与 8 位机,从其指令格式、指令系统和运行的软件来看,是完全不同的两种机型,但是从整体硬件组成和使用的器件来看,又有相当多的类似之处。再从设计与实现的基本原理来看,二者同样有许多类似或相同之处,例如各自对组合逻辑和微程序两种控制器使用几乎完全相同的执行步骤。 关于 16 位机组合逻辑控制器设计过程中,可以直接跳过对指令执行步骤的划分和功能确定,对使用的控制信号的选择等内容的详细讨论,直接引用微程序控制器的设计结果即可;针对两种控制器的区别,重点讲解节拍发生器的设计与实现,时序控制信号产生部件的设计与实现,并强调设计中有关的原理性知识,顺便提到一些实现中对所用电路的选择原则。
/Reset 1000 PC 0 0000 0011 AR PC PCPC+1 寄存器之间 运算与传送 A组 B组 0010 0110 0100 IR(AR) AR地址 读、写内存 或 I/O 接口 B、C、D组 D组 C组 0111 0101 读、写内存 AR地址 读、写内存 PC地址 16 位机的基本指令、扩展指令执行流程图(组合逻辑方案)
1000 加电启动时, 执行 0PC 0000 0010 接下来的两步, 完成取指操作 0011 XXXX 指 令 操 作 码 XXXX XXXX 按指令具体功能, 再分别用 1、2、 3、4 步完成不同 指令组的中各条 指令的执行过程 0100 0110 指 令 操 作 码 指 令 操 作 码 0101 指令操作码 0111 最后检查中断请 求信号,有请求 时则响应中断, 否则开始下一条 指令的执行过程 16 位机组合逻辑控制器的指令执行流程设计
(1) 节拍发生器的设计原理 TEC-2000 16位机实现了29条指令,使用了 8 个节拍(不含响应中断的步骤),为此,节拍发生器至少要使用 4 位触发器,可以产生最多 24个节拍; 使用 4个触发器(分别命名为 T3 T2 T1 T0)不同的状态组合来区分每一个节拍,例如,用T3 T2 T1 T0 =1000 来标识最顶上一行的那个节拍,如此等等,正象前页一图所示。如何为每个节拍分配 4个触发器的状态组合,需要遵循的原则是:尽量做到从当前节拍切换到下一个节拍时,只有一个触发器的状态发生变化,办不到时,也要尽量使状态发生变化的触发器数目最少。此外,还要考虑有利于对写出的节拍发生器的逻辑表达式的逻辑化简。前一页给出的设计结果已经较好地体现了上述设计要求。 接下来的工作是按上图给出的设计结果,写出设计与实现这一节拍发生器的线路所依据的逻辑表达式。
节拍发生器的设计原理 按照节拍状态转换图(有限状态图)的结果,设计这一节拍发生器的逻辑线路的首要任务,是写出该节拍发生器线路的逻辑表达式。具体要求是写出反映每一个触发器的完整的状态转换序列的逻辑表达式。在该表达式中: (1)用一个与项表示在一个节拍中该触发器取值为 1 的一种状态,参加与运算的元素是: 进到本节拍的前一个节拍的 4个触发器的取值状态 (用 Ti和 /Ti分别表示该触发器的 1 状态和 0 状态); 从前一个节拍得以进到本节拍的限制条件(可能没有),如指令组(用代表该指令组的表达式表示)或具体的一条指令(用相应指令的操作码表示)等。 (2)再把所有节拍中该触发器取值为 1 的情形用或项表示在一个表达式中。下面看实际的例子。
T3 := C-M# * /Reset T2 := C-M#*Reset*/T3*/T2*T1*/T0*IR15 + C-M#*Reset*/T3*T2*T1*/T0 + C-M#*Reset*/T3*T2*T1*T0 + C-M#*Reset*/T3*T2*/T1*/T0 * IR15*IR14*IR11 T1 := C-M#*Reset*/T3*/T2*/T1*/T0 + C-M#*Reset*/T3*/T2*T1*/T0 + C-M#*Reset*/T3*T2*T1*/T0 * IR15*IR14*/IR11 + C-M#*Reset*/T3*T2*/T1*/T0 * IR15*IR14*IR11 T0 := C-M#*Reset*/T3*/T2*T1*/T0*/IR15 + C-M#*Reset*/T3*T2*T1*T0 + C-M#*Reset*/T3*T2*T1*/T0 * IR15*IR14*/IR11 + C-M#*Reset*/T3*T2*/T1*/T0 * IR15*IR14*IR11 T3 T2 T1 T0 1000 /Reset PC 0 0000 0011 AR PC PCPC+1 寄存器之间 运算与传送 0010 A组 B组 IR(AR) 0100 0110 B C D 组 读、写内存 或 I/O 接口 AR地址 C组 D组 0111 0101 读、写内存 PC地址 读、写内存 AR地址 16 位机的基本指令、扩展指令执行流程图
用VHDL语言描述节拍发生器的状态转换 --the state changes at the rising edge of the clock library ieee; use ieee.std_logic_1164.all; entity state_mac is port ( CP, RESET: in std_logic; IR: in std_logic_vector (15 downto 0); state_out: out std_logic_vecto r(3 downto 0) ); end entity state_mac;
architecture performance of state_mac is begin process (CP, RESET) is variable state: std_logic_vector(3 downto 0) := "ZZZZ"; begin if (RESET = '0') then state := "1000"; ELSE If cp’event and cp=’1’ then case state is when "1000" => state:= "0000"; when "0000" => state:= "0010"; when "0010" => if (IR(15 downto 14)="00" or IR(15 downto 14)="01") then state := "0011"; --Instuctions Group A else state := "0110"; --Instructions Group BCD end if; when "0011" =>state := "0000"; when "0110" => if (IR(15 downto 14)="11" AND IR(11)='0') then state := "0111"; --Instructions Group C else state := "0100"; --Instructions Group BD end if;