数字系统的设计

二、实验目的及要求

1.掌握微程序控制器的工作原理和组成结构;

2.构造一台模型机并完成调试,掌握整机概念。

三、实验环境

PC计算机,数字逻辑实验板

四、实验内容及方案设计

   (1)在实验1、实验2、实验3和实验4的基础上,构造一台模型机并完成调试,掌握整机概念。8位模型机CPU的电路原理图,如图5.1所示。

图 5.1  8位模型机CPU的顶层设计电路原理图

(2)微地址形成电路参考设计

微地址分支转移控制电路为控制存储器提供地址信号。微地址控制电路根据来自指令寄存器IR的控制指令操作码IR[7..4]、控制台的控制信号SWA和SWB、分支转移条件控制标志P[4..1]和状态标志FC与FZ,生成下一个微地址的控制信号uA[5..0],控制微程序按正常顺序执行微指令或者实现分支转移。微地址形成电路,如图5.2所示。

图5.2 分支转移控制电路原理图

P0、P1、P2和P3的作用如下表所示:

表5-1 微地址转移控制表

测试位

功能

P0

=1时,根据后继微地址NµA5~NµA0和模式开关SWC、SWB、SWA确定下一条微指令的地址。

P1

=1时,根据后继微地址NµA5~NµA0和指令操作码IR7~IR4确定下一条微指令的地址。

P2

=1时,根据后继微地址NµA5~NµA0和进位标志C确定下一条微指令的地址。

P3

=1时,根据后继微地址NµA5~NµA0和结果为0标志Z确定下一条微指令的地址。

M5-M0:是后继微地址NuA5-NuA0。

(2)指令编码设计参考设计

如LDI、 ADD、HALT指令操作码分别取001,1001,1111,三指令编码如表5-2

表5-2 指令编码表

地址

汇编语言

指令格式

16进制

机器码

功能

操作码

地址码

Op rd,rs

****   **  

00

LDI R1,31

0001

0100 0011 0001

14 31

31→R1:R1=31

02

LDI R0,55

0001

0000 0101 0101

10 55

55→R0 :R0=55

04

ADD R1,R0

0101

0100

54

(R1)+(R0)→R1:R1=86

05

HALT

1111

0000

F0

停机

表5-3 微指令编码表

指令

功能

指令码

微操作

微命令

微指令码

微地址

取指周期

(1)PC→MUX→AR,PC+1→PC

(2)RAM→BUS,BUS→IR,P1

M23,M21,M20,M5-M0

M19,M13,M7,

00B0003f

00082080

00

3f

LDI Rd,data

data→Rd

0001Rdxx data

(1)PC→MUX→AR,PC+1→PC

(2)RAM→BUS,BUS→Rd

M23,M21,M20,M4,M1

M17,M13

00B00012

00022000

01

12

ADD Rd,Rs

(Rd)加(Rs)→Rd

0101RdRs

(1)M=0,S3S2S1S0=1001,CN=0(“+”)

(2)ALU→BUS,BUS→Rd

M31, M30,M27,M24,

M17,M12

8C9021000

05

HALT

停机

1111xxxx

STOP

M18

00040000

0F

根据表5-2、表5-3,写出微操作、微命令、微指令编码和微地址。将微指令码写入到控制存储器的初始化文件ROM_5.mif中。将指令编码写入到存储器的初始化文件RAM_2.mif中。编译、仿真,仿真正确后,锁定引脚,再编译,下载到实验系统中,完成单步硬件调试。在调试过程中,注意观察指令所对应微程序的微指令编码的正确性。

4、硬件调试

(1)引脚锁定

参照实验1的锁定引脚步骤。

(2)所有端口分配完成后,再次编译

(3)编译通过后,下载运行调试4、硬件调试

5、

(1)拟改变指令的操作数则参照上述步骤,改写ROM_5.mif、RAM_2.mif文件,进行仿真并下载到实验系统中,完成单步硬件调试。

  1. 拟改变指令的操作码则参照上述步骤,改写ROM_5.mif、RAM_2.mif文件,进行仿真并下载到实验系统中,完成单步硬件调试。

在调试过程中,注意观察微指令编码的正确性,并记录实验数据及仿真波形,验证指令执行的准确性。 (本实验可以仅做仿真)

五、实验代码

原理图

 ALU代码:

module ALU181a (S, A, B, F, M, CN, CO, FZ);
   input[3:0] S; input[7:0] A,B;  input M, CN; 
   output[7:0] F; output CO, FZ; 
   //wire[7:0] F;   wire CO; 
	wire[8:0] A9, B9;  reg FZ; reg[8:0] F9; reg [7:0] F; reg CO;
   assign A9 = {1'b0, A} ;  assign B9 = {1'b0, B} ;
   always @(M or CN or A9 or B9 or S) begin  
    case (S)
      4'b0000 : if (M==0)  F9<=A9+CN  ;  					else  F9<=~A9 ;  
      4'b0001 : if (M==0)  F9 <= (A9 |B9) + CN ;      else  F9<=~(A9 | B9) ;
      4'b0010 : if (M==0)  F9 <= (A9 |((~B9)&9'b011111111))+ CN;     else  F9<=(~A9) & B9 ; 
      4'b0011 : if (M==0)  F9 <= 9'b000000000-CN;     else  F9<=9'b000000000;
      4'b0100 : if (M==0)  F9 <=A9+(A9 & ((~B9)&9'b011111111))+CN;     else  F9<=~(A9 & B9) ;
      4'b0101 : if (M==0)  F9<=(A9|B9)+(A9& ((~B9)&9'b011111111))+CN;  else  F9<= ~B9 ;
      4'b0110 : if (M==0)  F9 <= A9 - B9 - CN ;       else  F9<= A9 ^ B9 ;
      4'b0111 : if (M==0)  F9 <= (A9 & (((~B9)&9'b011111111))) - CN ;  else  F9<= A9 & (~B9) ;
      4'b1000 : if (M==0)  F9 <= A9 + (A9 & B9)+CN ;  else  F9<= (~A9) | B9 ;
      4'b1001 : if (M==0)  F9 <= A9 + B9 + CN ;       else  F9<= ~(A9 ^ B9) ;
      4'b1010 : if (M==0)  F9<=(A9|(((~B9)&9'b011111111)))+(A9&B9)+CN; else  F9<= B9 ;
      4'b1011 : if (M==0)  F9 <= (A9 & B9) - CN ;     else  F9<=A9 & B9 ;
      4'b1100 : if (M==0)  F9 <= A9 + A9 + CN ;       else  F9<=9'b000000001 ;
      4'b1101 : if (M==0)  F9 <= (A9 | B9)+A9+CN;     else  F9<= A9 | (~B9) ;
      4'b1110 : if (M==0)  F9 <= (A9 | (((~B9)&9'b011111111)))+A9+CN;  else  F9<= A9 | B9 ;
      4'b1111 : if (M==0)  F9 <= A9 - CN ;            else  F9<= A9 ;
         default : F9 <= 9'b000000000 ;
    endcase 
		//if (A9 == B9) FZ <= 1'b0 ; else  FZ <= 1'b1 ; 
		F <= F9[7:0] ;  
		
		if(F==8'b00000000) FZ <= 1'b1 ; else FZ <= 1'b0 ;
		if(M==0) CO <= F9[8];
		
      end
endmodule

六、实验结果测试

改写前:

改写后:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值