1、- 1 -1 CPU 的用途字长:8 位 D70寻址范围:64byte,2 的 6 次方64,A502 确定 ISA(包括程序员可访问的寄存器)1)程序员可访问的寄存器 AC8 位累加器CPU 的指令集(共 4 条)指令 操作码 操作COM 00XXXXXX ACAC(取反)JREL 01XXXXXX PCPC+00AAAAAAOR 10XXXXXX ACACM00AAAAAASUB1 11AAAAAA ACAC M00AAAAAA12)其他寄存器AR 地址寄存器 6 位 由 A50向存贮提供地址PC 程序计数器 6 位 指向下一条指令的地址DR 数据寄存器 8 位 通过 D70从存贮器接收指
2、令和数据IR 指令寄存器 2 位 存放从存贮器中取回的指令的操作码部分3 CPU 设计状态图为了确定 CPU 的状态图,对每条指令作以下分析1) 从存贮器中取指令(所有指令均相同)原理:在 CPU 能执行指令之前,它必须从存贮器中取出,CPU 通过执行如下的操作序列完成这个任务A) 选择存贮单元由 A50确定B) 对工 A50译码,延迟,并向存贮器发一个信号使存贮器将此指令输出到它的输出引脚。这些引脚与 CPU 的 D70相连。CPU 从这些引脚读入数据。具体操作:(分为三个状态)A)要取的指令的地址存放在程序计数器( PC)中。第一步就是把 PC 的内容拷贝到 AR 中。FETCH1:AR
3、PCB)CPU 必须从存贮器中读取指令,为此 CPU 必须发一个 READ 信号到器的RD(RDRAM,相对于 OEROM) 端上使存贮器将数据发送到 D70上,存入 CPU 的 DR 寄存器中。同时实现 PCPC+1,为取下一条指令作准备。FETCH2:DR M,PC PC+1C) 作为取指令的一部分,CPU 还必须完成两件事。 DR 的高 2 位拷贝到 IR,目的是确定指令的功能 DR 的低 6 位拷贝到 AR,目的:a. 对于 ORT 和 SUB1 指令这 6 位包含了指令的一个操作数的存贮器地址(一个数已经在 AC)b. 对于 COM 和 JREL,它们不需要再次访问存贮器,一旦它们返
4、- 2 -回到 FETCH1 周期,FETCH1 将把 PC 的值装到 AR,覆盖无用的值。FETCH3:IRDR7,6, ARDR50取指令周期的状态图2) 指令译码(每条指令的操作码都是唯一的)本 CPU 有四条指令,因此有四个不同的执行同期,为此用 IR 中的值来确定即可。FETCH1FETCH2FETCH3COM执行周期OR 执行周期SUB1执行周期IR=00IR=01 IR=10IR=11JREL执行周期3) 指令执行(每条指令的执行周期都是一样的)每条指令的执行周期的状态分析:1COM 指令功能是对 AC 的内容取反,执行周期的状态是COM1:ACAC2. JREL 指令代码为 0
5、1AAAAAA,即转移的相对地址由 AAAAAA 确定,而 AAAAAA 在DR50中,所以有JREL1:PCPC+ DR503OR 指令为了执行指令,必须完成两件事情OR1:DRM ;从存贮器取出一个操作数送到数据寄存器OR2:ACACDR;与 AC 相或,并把结果存回 AC 中FETCH1 FETCH2 FETCH3- 3 -4. SUB1 指令为了执行指令,必须完成两件事情SUB11: DRM;从存贮器取出一个操作数送到数据寄存器SUB12: AC AR, DR, IR,AC总是从其他一些部件中装入数据。若数据已在总线上,则需要做的是能够执行并装入操作。 (LD 端口分别是 ARLOAD
6、,DRLOAD,IRLOAD,ACLOAD 信号同步装入)b PC能从其他一些部件中装入数据,还有相应的自增(INC )当前值,所以应创建一个单独的硬件使之能自增。 (端口有 PCINC,PCLOAD)8- 5 -4) 把每个部件都连接到系统总线上三态缓冲区原有的寄存器部是把结果输出到系统总线,使 CPU 内部数据冲突,所以应增加三态缓冲区加以控制,但 AR 的输出还应与 A50相接,这是寻址所需。5) 根据实际需要修改上图的设计,并加上适当控制信号名称1 AR :仅向存贮器提供地址,没有必要将它的输出连接到内部总线上,加上ARLOAD 实现从 BUS 装入数据。2 ARPC :保留三态缓冲器
7、由 PCBUS 控制同步3 IR : 不通过内部总线向任何其他部件提供数据,而 IR 的输出将直接送到控制器用于确定指令的功能4 AC:本 CPU 不向其他任何单位提供数据5 DR70 :不统一,有 6 位也有 2 位宽度,必须确定哪些寄存器从总线的哪些位上接收和发送数据。应有 DRBUS 实现同步。DRLOAD 实现 LD6 AC:必须能装载 AC + DR的和,以及 ACDR 与 AC的逻辑与结果。CPU 必须包含一个能产生这些结果的 ALU,并由 ACLOAD 实现装入。7 PC:必须能装载 PC+ DR50的和。CPU 必须包含一个能产生这些结果的ALU 并由 PCLOAD 实现载入,
8、而 PCINC 实现 PCPC+18 6IRLOADACLOADDALUS1 ALUS2MEMBUSREADDRBUSPCBUSARLOAD6 PCLOAD PCINCDRLOAD 8 628ACPCMCLKA50D70866 6668 68 6ALU2ALU1DRARIR- 6 -ALU 的设计1) ALU1(与 PC 相连)的设计数据通路的分析:功 ALU1 必须接收 PC 和 DR 作为输入,然后把运算结果输出到 PC实现 PCPC+ DR50在本 CPU 中,把 PC 的导线和 ALU 的输入输出相连起来,并且利用系统总线把 DR 和 ALU 的输入连接起来。用计数器来实现 PCPC+
9、1 操作,就可以在 FETCH2 内完成,因为计数器不必占用总线的时间。6 D50PARALLELADDERPCDRTO PC66From bus2) ALU2(与 AC 相连)的设计在本 ALU 的设计中 AC 和 ALU 的输入输出连接,并且利用系统总线把 DR 和ALU 和输入相连起来。888ACMUXALUS1 ALUS2TO AC8PARALLELADDERDRFrom bus888888012( ALUS1,ALUS2=0,0, 选 ACAC ,ALUS1,ALUS2=0,1,选 ACA CDR,ALUS1,ALUS2=1,0,选 AC 9 因共有 9 条微指令,可用四位MUX微地
10、址寄存器,微地址寄存器控存24169 用四位确定 UPOS 的位数二 生成正确序列并设计映象逻辑1. 给有限状态机的每一种状态分配一个控存地址利用 IR 映射 1 IR0 来确定指令的执行如下表- 13 -IR 计数值 状态00 1000 COM101 1010 JREL110 1100 OR111 1110 SUB12.其余微指令的地址微程序控制器的状态地址FETCH1 0FETCH2 1FETCH3 2COM1: 8JREL1: 10OR1: 12OR2: 13SUB11: 14 SUB12: 153. 确定微指令中的选择域和地址域,即生成正确的微指令执行顺序1)一般状态转换设 SEL0,
11、ADDR 为下一条指令要执行的控存号,一个微指执行完后,从 ADDR 中得到下址,转到 ADDR 指定的微指令2)特别状态 FETCH3 下址的确定当 FETCH3 执行完后,必须到指令执行周期的微子程序入处,根据 1IR0 所算出的结果三 生成正确的微操作及相应的控制信号用水平型微指令生成微操作及用垂直型指令生成微操作本 CPU 采用水平型微指令生成微操作法微操作及它们的助记符助记符 微操作ARPC ARPCDRM DRMPCIN PCPC+1IRDR IRDR7,6ARDR ARDR50NOAC ACACPCPLUSDR PCPC+ DR50ACORDR ACACDRACSUBDR AC
12、AC + DR由于 IRDR 和 ARDR 在同一个微操作进行,可以对他们进行合并为 AIDR 来表示。指令格式选择域 1 位 微操作域 8 位 下址域 4 位微程序控制器基本的水平微代码- 14 -状态 地址 SELARPCDRMPCINAIDRNOACPCPLUSDRACORDRACSUBDRADDRFETCH1 0000 0 1 0 0 0 0 0 0 0 0001FETCH2 0001 0 0 1 1 0 0 0 0 0 0010FETCH3 0010 1 0 0 0 1 0 0 0 0 *COM1 1000 0 0 0 0 0 1 0 0 0 0000JREL1 1010 0 0 0
13、 0 0 0 1 0 0 0000OR1 1100 0 0 0 1 0 0 0 0 0 1101OR2 1101 0 0 0 0 0 0 0 1 0 0000SUB11 1110 0 0 1 0 0 0 0 0 0 1111SUB12 1111 0 0 0 0 0 0 0 0 1 00001 位 8 位 4 位控存容量:(1+8+4)*9117 位CPU 控制信号值控制信号 值ARLOAD ARPCAIDRPCLOAD PCPLUSDRPCINC PCINDRLOAD DRMACLOAD NOACACORDRACSUBDRIRLOAD AIDRALUS1 ACSUBDRALUS2 ACORDRMEMBUS DRMPCBUS ARPCREAD DRMDRBUS AIDRPCPLUSDR ACORDRACSUBDR设计体会由于这个 CPU 的设计和教材上的例子很相似,只要按照教材上设计程序就可以一步步的设计出来。通过这个 CPU 设计对 CPU 的指令的执行和实现有了更加深的了解,也对 CPU 内部的结构有了更好的理解。对这类非常简单的 CPU 设计的过程和具体步骤有一定的了解。