硬连线控制器设计

  • 格式:doc
  • 大小:1.03 MB
  • 文档页数:23

下载文档原格式

  / 23
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

模型机硬连线控制器设计

一、实验目的

(1)融会贯通计算机组成原理与体系结构课程各章教学内容,通过知识的综合运用,加深对CPU个模块工作原理及相互联系的认识;

(2)掌握硬连线控制器的设计方法;

(3)培养科学研究能力,取得设计和调试的实践经验。

二、实验设备

(1)TEC-8实验系统1台

(2)Pentium 3 以上的PC 1台

(3)双踪示波器1台

(4)直流万用表1块

(5)逻辑测试笔(在TEC-8实验台上)1支

三、设计与调试任务

(1)设计一个硬连线控制器,和TEC-8模型计算机的数据通路结合在一起,构成一个完整的CPU,对该CPU要求:

●能顾完成控制台操作,包括启动程序运行、读存储器、写存储器、读寄存

器、写寄存器。

●能够执行表3.1中的指令,完成规定的指令功能。

表3.1中,XX代表任意值,Rs代表源寄存器号,Rs代表目的寄存器号。

在条件转移指令中,@代表当前PC的值,offset是一个四位的有符号数,第三位是符号位,0代表正数,1代表负数。注意:@不是当前指令的PC 值,而是当前指令的PC值加1。

表3.1新设计CPU的指令系统

●在Quartus||下对硬连线控制器进行编程的编译。

●将编译后的硬连线控制器下载到TEC-8实验台的可编程器件EPM7128S

中去,使得EPM7128S成为一个硬连线控制器。

●根据指令系统,编写检测硬连线控制器正确性的测试程序,并用测试程序

对硬连线控制器在单微指令方式下进行调试,直到成功。

(2)在调试成功的基础上,整理出设计文件。

1.硬连线控制器逻辑模块图;

2.硬连线控制器指令周期流程图;

3.硬连线控制器的硬件描述语言源程序;

4.测试程序;

5.设计说明书;

6.调试总结。

四、硬连线控制器逻辑模块图

本实验要求设计硬连线控制器,而仍然利用实验台的数据通路和其他模块。因此我们只需对硬连线控制器部分进行编程就行了。TEC-8模型计算机电路框图如下图1。

图1 TEC-8模型计算机电路框图

从电路框图中可知,硬连线控制器与微程序控制器不同,其产生的控制信号除了受译码器输出信号SWC~SWA、IR7~IR4,节拍电位信号T1~T3,状态条件信号Z、C,以及CLR#的控制外,还受时序发生器产生的节拍脉冲信号W3~W1的控制。

硬连线控制器的逻辑模块图为:

图2 硬连线控制器的逻辑模块图

五、硬连线控制器指令周期流程图

与微程序控制器不同,硬连线控制器以节拍电位W3~W1为时间单位。其指令周期流程图为:

图3硬连线控制器参考流程图

一个执行框代表一个节拍电位时间,TEC-8实验系统中采用了可变节拍数来执行一条机器指令。从上图中可知,大部分指令只需要两个节拍电位W1和W2,少数指令还需要W3。因此当需要W3时在W2时产生一个信号LONG。时序信号发生器收到信号LONG后产生W3。有的操作如写寄存器需要四个节拍电位,将该操作化成两条机器指令的节拍,通过信号ST0联系在一起。还可以只产生W1,通过SHORT信号实现。

根据硬连线流程图还可以得到组合逻辑译码表,如下表2:

表2 组合逻辑译码表

根据译码表,对以后的编程和错误查找有很大的帮助。

六、程序编写过程

利用Verilog语言,在Modelsim环境下进行编程和仿真。

刚开始做实验时心里是茫然的,不知道从哪里开始,无从下手,不知道采用什么方法,加上对Verilog语言的掌握还不够熟练,因此第一次实验课几乎没有什么进展。后来通过王教员和唐教员的耐心讲解和指导,明白了可以用两种不同的实现方法进行编程,但因为个人觉得利用状态机的方法进行编程理解起来思路较为简单,而且逻辑较为清楚,于是决定利用状态机的方法进行编程。本程序是在唐教员的程序基础上进行修改的(唐教员的还没有完成),但在编程过程中还是遇到了很多的问题,比如时序问题等。在同学和教员的帮助下,完成了一部分工作,但程序依然存在着一些问题,结果实验还是没有完全做完。

把整个控制器分为四个状态:state0表示初始状态,对所有的信号进行初

始化,表示clear以后的状态,只有STOP有效;state1表示W1有效时的状态,具体又可以按照SWC~SWA的不同进行不同的赋值与操作;state2表示W2有效时的状态,再根据SW的不同进行赋值;state3表示W3有效时的状态。

正常情况下一个状态完成以后进入下一状态,但有很多情况下是不行的,比如写存储器、读存储器、写寄存器等操作。于是需要根据对ST0信号、SHORT 信号、LONG信号等进行判别来进行不同状态之间的转化。具体为:从state0开始,若sw符合要求(<5),进入state1,否则回到state0;

state1:若执行程序且ST0=0或读存储器或写存储器,则下一状态仍为state1,否则下一状态为state2;

state2:若为执行指令的LD或ST,则下一状态为state3,若为写寄存器操作且ST0=0或执行指令但不为LD或ST,则下一状态为W1,若都不符合,下一状态为初始状态state0;

state3:直接回到state1;

源程序压缩包:CPU为源程序,其余程序为测试程序,程序名字表示所测试的指令或工作台模式。

七、Modelsim仿真过程

程序编译成功后,开始编写仿真程序,进行仿真。因为对仿真程序的掌握不是很完善,刚开始我们组就出了很多问题,不是时序的问题就是赋值的问题。感谢同学和教员的耐心指导和帮助。因为篇幅问题,在此仅贴出操作台操作和部分有代表性的指令的仿真过程,(ADD,AND,LD,JC,JMP,STP)其余仿真代码在程序包里,因为并没有烧到芯片里,也没有真正的实现,所以实际源程序可能还存在着一些问题。