9
10
4.3设计地址转移逻辑电路
地址转移逻辑电路是根据微程序流程图中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。地址转移逻辑电路中异步置“1”信号SE6~SE1表达式的确定与P字段测试时转移微地址的确定密切相关.
由于微地址寄存器中的触发器异步置“1”端低电平有效,与μA4~μA0对应的异步置“1”控制信号SE5~SE1的逻辑表达式为:(μA5的异步置“1”端SE6实际未使用)
SE6 <= '1';
SE5 <= NOT(NOT(SF) AND P2 AND T4); SE4 <= NOT(I4 AND P1 AND T4); SE3 <= NOT(I3 AND P1 AND T4); SE2 <= NOT(I2 AND P1 AND T4); SE1 <= NOT(I1 AND P1 AND T4);
五、单元电路设计
设计模型机中的所有单元电路,并用VHDL语言(也可使用GDF文件----图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件。具体设计方法见附录。
重点设计单元电路为:CR0M,ALU,ROM. CROM内部重点单元:COUNTROM,ADDR,MCOMMAND
11
5.1模型机(顶层)电路:
12
5.2模型机crom单元电路:
13
六.设计测试过程所遇到的问题及解决记录
6.1 JNS (JNS L2\\JNS L3)无法实现循环跳转
问题所在:没有认真注意到P测试的返回地址与指令IR->PC地址的关系,开始
时随便设置了IR->PC的地址
问题解决:后来了解到改地址与P(2)测试相关,改为010000后,跳转成功。
6.2 STO( STO R2 (R0) )存储位置每次都为00H
问题所在:STO指令中开启ADDR_B,关ALU_B,导致取地址来自于ROM内的机器码后八位addr,该机器码后八位为00H。
问题解决:微指令中关ADDR_B,开ALU_B,ALU设置直接输出Y,此时Y值来源于(R0),即为目的地址。
七、测试及结果分析
根据设计的汇编程序和对应的机器代码,对设计的模型机进行仿真测试,并分析结果:
7.1下图显示了RAM地址的初值设置00H,循环计数设置04H,第一个循环读入
40H至R2并存进RAM的过程。