版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模型机硬连线控制器设计一、 实验目的(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要求:l 能顾完成控制台操作,包括启动程序运
2、行、读存储器、写存储器、读寄存器、写寄存器。l 能够执行表3.1中的指令,完成规定的指令功能。表3.1中,XX代表任意值,Rs代表源寄存器号,Rs代表目的寄存器号。在条件转移指令中,代表当前PC的值,offset是一个四位的有符号数,第三位是符号位,0代表正数,1代表负数。注意:不是当前指令的PC值,而是当前指令的PC值加1。表Error! No text of specified style in document.1新设计CPU的指令系统名 称助 记 符功 能指 令 格 式IR7 IR6 IR5 IR4IR3 IR2IR1 IR0加法ADD Rd, RsRd Rd + Rs0001RdRs
3、减法SUB Rd, RsRd Rd - Rs0010RdRs逻辑与AND Rd, RsRd Rd and Rs0011RdRs加1INC Rd Rd Rd + 10100RdXX取数LD Rd, RsRd Rs0101RdRs存数ST Rs, RdRs Rd0110RdRsC条件转移JC offset若C=1,则PC + offset0111offsetZ条件转移JZ offset若Z=1,则PC + offset1000offset无条件转移JMP RdPC Rd1001RdXX输出OUT RsDBUS Rs1010XXRs停机STP暂停运行1110XXXXl 在Quartus|下对硬连线控
4、制器进行编程的编译。l 将编译后的硬连线控制器下载到TEC-8实验台的可编程器件EPM7128S中去,使得EPM7128S成为一个硬连线控制器。l 根据指令系统,编写检测硬连线控制器正确性的测试程序,并用测试程序对硬连线控制器在单微指令方式下进行调试,直到成功。(2)在调试成功的基础上,整理出设计文件。1.硬连线控制器逻辑模块图;2.硬连线控制器指令周期流程图;3.硬连线控制器的硬件描述语言源程序;4.测试程序;5.设计说明书;6.调试总结。四、硬连线控制器逻辑模块图 本实验要求设计硬连线控制器,而仍然利用实验台的数据通路和其他模块。因此我们只需对硬连线控制器部分进行编程就行了。TEC-8模型
5、计算机电路框图如下图1。图1 TEC-8模型计算机电路框图从电路框图中可知,硬连线控制器与微程序控制器不同,其产生的控制信号除了受译码器输出信号SWCSWA、IR7IR4,节拍电位信号T1T3,状态条件信号Z、C,以及CLR#的控制外,还受时序发生器产生的节拍脉冲信号W3W1的控制。硬连线控制器的逻辑模块图为:图2 硬连线控制器的逻辑模块图五、硬连线控制器指令周期流程图与微程序控制器不同,硬连线控制器以节拍电位W3W1为时间单位。其指令周期流程图为:图3硬连线控制器参考流程图一个执行框代表一个节拍电位时间,TEC-8实验系统中采用了可变节拍数来执行一条机器指令。从上图中可知,大部分指令只需要两
6、个节拍电位W1和W2,少数指令还需要W3。因此当需要W3时在W2时产生一个信号LONG。时序信号发生器收到信号LONG后产生W3。有的操作如写寄存器需要四个节拍电位,将该操作化成两条机器指令的节拍,通过信号ST0联系在一起。还可以只产生W1,通过SHORT信号实现。根据硬连线流程图还可以得到组合逻辑译码表,如下表2:表2 组合逻辑译码表IRADDSUBANDINCLDSTJMPOUTSTPJCJZLIRW1W1W1W1W1W1W1W1W1W1W1MW2W2W2/W3W2W2S3W2W2W2W2/W3W2W2S2W2W2W2S1W2W2W2/W3W2W2S0W2W2W2W2CINW2LDCW2W
7、2W2LDZW2W2W2W2DRWW2W2W2W2W3ABUSW2W2W2W2W2W2/W3W2W2LARW2W2PCADDC,W2Z,W2LPCMBUSW3MEMWW3LONGW2W2STOPW2PCINCW1W1W1W1W1W1W1W1W1W1W1根据译码表,对以后的编程和错误查找有很大的帮助。六、程序编写过程 利用Verilog语言,在Modelsim环境下进行编程和仿真。刚开始做实验时心里是茫然的,不知道从哪里开始,无从下手,不知道采用什么方法,加上对Verilog语言的掌握还不够熟练,因此第一次实验课几乎没有什么进展。后来通过王教员和唐教员的耐心讲解和指导,明白了可以用两种不同的实现
8、方法进行编程,但因为个人觉得利用状态机的方法进行编程理解起来思路较为简单,而且逻辑较为清楚,于是决定利用状态机的方法进行编程。本程序是在唐教员的程序基础上进行修改的(唐教员的还没有完成),但在编程过程中还是遇到了很多的问题,比如时序问题等。在同学和教员的帮助下,完成了一部分工作,但程序依然存在着一些问题,结果实验还是没有完全做完。把整个控制器分为四个状态:state0表示初始状态,对所有的信号进行初始化,表示clear以后的状态,只有STOP有效;state1表示W1有效时的状态,具体又可以按照SWCSWA的不同进行不同的赋值与操作;state2表示W2有效时的状态,再根据SW的不同进行赋值;
9、state3表示W3有效时的状态。正常情况下一个状态完成以后进入下一状态,但有很多情况下是不行的,比如写存储器、读存储器、写寄存器等操作。于是需要根据对ST0信号、SHORT信号、LONG信号等进行判别来进行不同状态之间的转化。具体为:从state0开始,若sw符合要求(<5),进入state1,否则回到state0;state1:若执行程序且ST0=0或读存储器或写存储器,则下一状态仍为state1,否则下一状态为state2;state2:若为执行指令的LD或ST,则下一状态为state3,若为写寄存器操作且ST0=0或执行指令但不为LD或ST,则下一状态为W1,若都不符合,下一状态
10、为初始状态state0;state3:直接回到state1;源程序压缩包:CPU为源程序,其余程序为测试程序,程序名字表示所测试的指令或工作台模式。七、Modelsim仿真过程程序编译成功后,开始编写仿真程序,进行仿真。因为对仿真程序的掌握不是很完善,刚开始我们组就出了很多问题,不是时序的问题就是赋值的问题。感谢同学和教员的耐心指导和帮助。因为篇幅问题,在此仅贴出操作台操作和部分有代表性的指令的仿真过程,(ADD,AND,LD,JC,JMP,STP)其余仿真代码在程序包里,因为并没有烧到芯片里,也没有真正的实现,所以实际源程序可能还存在着一些问题。(一) 操作台模式仿真过程1.写存储器过程仿真
11、(SW为001)写存储器只需要W1,仿真图如图4所示:图4 写存储器过程仿真图2.读存储器过程仿真(SW为010)读存储器的过程在时序上与写存储器类似,都只需W1。仿真图如图5所示:图5读存储器过程仿真图3.读寄存器过程仿真(SW为011)读寄存器过程需要W1和W2。图6 读寄存器过程仿真图4.写寄存器过程仿真(SW为100)写寄存器过程各需要两个W1,W2。并用ST0作为时序判定条件图7 写寄存器过程仿真图(二) 指令执行过程仿真1. ADD指令执行过程仿真(SW为000,IR74为0001)SUB与ADD类似。图8 ADD指令执行仿真图2. AND指令仿真过程(SW为000,IR74为00
12、11)INC与AND类似。图9 AND指令执行仿真图3. LD指令仿真过程(SW为000,IR74为0101)ST与LD类似。图10 LD指令执行仿真图4. JC指令仿真过程(SW为000,IR74为1000,此时C=1)JZ与JC类似。图11 JC指令执行仿真图5.JMP指令仿真过程(SW为000,IR74为1001)图12 JMP指令执行仿真图6.STP指令仿真过程(SW为000,IR74为1110)图13 STP指令执行仿真图八、测试程序 测试程序是在源程序编写完成并仿真成功并烧到芯片里以后用于在模型计算机上完整的测试源程序的。测试程序的编写过程中,我们组尽可能的利用上所有的指令,使得每
13、条指令都能测试一遍,以便更好的测试性能和正确性,但因为并没有烧到芯片里,所以测试程序并没有起到作用。地址指令十六进制机器代码二进制机器代码00HLD 53H0101001101HINC 4CH0100110002HSUB 21H0010000103HJZ 0CH8CH1000110004HST 68H0110100005HLD 53H0101001106HINC 4CH0100110007HADD 11H0001000108HJC 0CH7CH0111110009HJMP 9CH100111000AHINC 48H010010000BHSTP0E0H111000000CH08H08H00001
14、0000DH15H15H000101010EHFFH0FFH111111110FH01H01H0000000110HAND 31H0011000111HOUT 0A2H1010001012HSTP0E0H11100000九、设计说明书1.源程序的设计利用状态机的思想,把整个控制器分为四个状态:state0、state1、state2、state3。不同state表示的状态为:state0表示初始状态,对所有的信号进行初始化,表示clear以后的状态,只有STOP有效;state1表示W1有效时的状态,具体又可以按照SWCSWA的不同进行不同模式下的赋值与操作;state2表示W2有效时的状态,
15、再根据SW的不同进行赋值;state3表示W3有效时的状态,主要是指执行指令LD和ST时才有可能会进入的状态(其他情况下不需要W3)。定义两个变量,state和next_state。state表示当前状态,next_state表示下一状态。state完成本状态内的所有操作以后进入next_state,正常情况下next_state就是state加1,但有很多情况下是不行的,比如写存储器、读存储器、写寄存器等操作不能直接的加一。于是需要根据对ST0信号、SHORT信号、LONG信号等进行判别来确定下一状态。具体为:从state0开始,判断SW,若SW符合要求(值<5),进入state1(n
16、ext_state=state1),否则回到state0(next_state=state0);state1:判断SW、ST0,若执行程序(SW=000)且ST0=0或读存储器(SW=010)或写存储器(SW=001),则next_state=state1,否则next_state=state2;state2:判断SW、IR、ST0,若为执行指令(SW=000)的LD(IR74=0101)或ST(IR74=0110),则next_state=state3,若为写寄存器操作(SW=100)且ST0=0或执行指令但不为LD或ST,则next_state=W1,若都不符合,next_state=st
17、ate0;state3:next_state=state1;因此,参考流程图可知,对于不同的操作模式和指令的状态转换为:写存储器:state0state1state1读存储器:state0state1state1读寄存器:state0state1state2写寄存器:state0state1state2state1state2指令:LD/ST:state0state1state1state2state3其他:state0state1state1state22.测试程序的设计源程序完成以后,要进行仿真,因此需要设计测试程序。设计测试程序是为了给出各输入信号的值,并产生与工作台模式或指令要求相符的
18、机器周期(如执行LD指令时,依据指令产生的机器周期为W1,W1,W2,W3,W1),观察仿真波形是否会产生有效的输出信号。因此,在设计测试程序时,重点和难点便是产生符合源程序执行情况的机器周期。因为测试的目的主要是看源程序在正确的机器周期下,对于不同的模式和指令是否会产生正确的信号, 因此可以把每个工作台模式和各个指令都写一个仿真程序进行单独仿真。十、实验总结 表面上看,本次实验仅仅是要我们设计一个CPU的硬连线控制器部分,而实际上却需要我们综合运用以往所学的很多关于计算机组成结构方面的知识。这次的实验让我真正明白了什么叫大实验,相比前几次的实验。因为实验的前期准备不充分,使得进展较为缓慢,不
19、知道从何下手,浪费了很多时间。通过教员的讲解和指导,并经过组内的讨论决定运用状态机的方法进行编程。因为对Verilog语言的掌握还不够熟练,所以编程过程中也出现了很多或大或小的问题,比如说赋值的时候是用=还是<=(=和<=表达的意义是不同的,只有在assign语句中用=,而在其他的赋值语句中一般用<=),状态之间的转化条件的确定,判断转移条件时是用信号判断(LONG、SHORT等)还是利用操作模式和IR值判断(我们后来利用SW、IR和ST0判断)等等。遇到问题,积极的向同学和教员请教,在大家的帮助下,我们也确实解决了很多问题。很感谢教员和其他同学的帮助和耐心讲解,帮助我们找到了一些程序上的错误,让我们少走了一些弯路。但在编写仿真程序时,又遇到了很多障碍,很多概念有点搞不清,比如说刚开始对于知道了T3和W13的关系,却不明白怎么实现QD和T3,W13之间的协同配合,多亏了教员的仿真程序,看了很多遍以后才慢慢理解了如何实现它。总的来说,没有在规定的实验课程安排里完成本次实验,还是觉得很遗憾,也有一点失落感。因为没有烧到芯片里,程序中存在的一些问题也没法找出来,可能依然存在着很多的漏洞和不足。通过这次实验也让我对CPU各模块的工作原理和相互联
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新生儿专科培训总结
- 标准抵押担保合同大全
- 果园承包合同协议
- 煤炭销售合同范例
- 建筑安装工程勘察设计合同范本
- 石场复工复产安全培训
- 统编版语文九年级上册 第六单元《行香子》公开课一等奖创新教学设计
- 依依往事 悠悠情怀-初中语文10《往事依依》公开课一等奖创新教学设计
- 护理科室风采宣传
- 白血病病人入院宣教
- 主动土压力计算EXCEL小程序
- 东元7200MA变频器说明书
- 糖尿病酮症酸中毒ppt课件
- 作文稿纸模板(打印版)(共5页)
- 设备故障分析表
- 超声波清洗机验证
- 工资流水证明1页
- 北京市绿化工程质量监督实施方法
- 工程四新技术应用
- 人教版七年级(上)数学竞赛试题(含答案)
- 部编版五年级语文上册第八单元教材分析及全部教案
评论
0/150
提交评论