硬连线控制器设计.docx

上传人:李司机 文档编号:1953082 上传时间:2022-12-28 格式:DOCX 页数:32 大小:791.78KB
返回 下载 相关 举报
硬连线控制器设计.docx_第1页
第1页 / 共32页
硬连线控制器设计.docx_第2页
第2页 / 共32页
硬连线控制器设计.docx_第3页
第3页 / 共32页
硬连线控制器设计.docx_第4页
第4页 / 共32页
硬连线控制器设计.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《硬连线控制器设计.docx》由会员分享,可在线阅读,更多相关《硬连线控制器设计.docx(32页珍藏版)》请在三一办公上搜索。

1、模型机硬连线控制器设计一、实验目的(1)融会贯穿计算机组成原理与体系构造课程各章教学内容,通过知识的综合运用,加深对CPU个模块工作原理及相互联系的认识;(2)掌握硬连线控制器的设计方法;(3)培养科学研究能力,取得设计和调试的实践经历。二、实验设备(1) TEC-8实验系统1台(2) PentiUIn3以上的PC1台(3)双踪示波器1台(4)直流万用表1块(5)逻辑测试笔(在TEC-8实验台上)1支三、设计与调试任务(1)设计一个硬连线控制器,和TEC-8模型计算机的数据通路结合在一起,构成一个完整的CPU,对该CPU要求:能顾完成控制台操作,包括启动程序运行、读存储器、写存储器、读存放器、

2、写存放器。能够执行表3.1中的指令,完成规定的指令功能。表3.1中,XX代表任意值,RS代表源存放器号,RS代表目的存放器号。在条件转移指令中,代表当前PC的值,offset是一个四位的有符号数,第三位是符号位,。代表正数,1代表负数。注意:不是当前指令的PC值,而是当前指令的PC值加1。表错误!文档中没有指定样式的文字。.1新设计CPU的指令系统名称助记符功能指令格式IR7IR6IR5IR4IR31R2IRlIRO加法ADDRd,RsRd-Rd+RsOOOlRdRs减法SUBRd,RsRd-Rd-Rs0010RdRs逻辑与ANDRd,RsRd-RdandRsOOllRdRs加1INCRdRd

3、-Rd+10100RdXX取数LI)Rd,RsRd-Rs0101RdRs存数STRs,RdRs一Rd0110RdRsC条件转移JCoffset假设C=I,那么PC一+offsetOllloffsetZ条件转移JZoffset假设Z=I,那么PC一+offset1000offset无条件转移JMPRdPC-Rd1001RdXX输出OUTRsDBUSRs1010XXRs停机STP暂停运行1110XXXX 在Quartus|下对硬连线控制器进展编程的编译。 将编译后的硬连线控制器下载到TEC-8实验台的可编程器件EPM7128S中去,使得EPM7128S成为一个硬连线控制器。 根据指令系统,编写检测

4、硬连线控制器正确性的测试程序,并用测试程序对硬连线控制器在单微指令方式下进展调试,直到成功。(2)在调试成功的根底上,整理出设计文件。L硬连线控制器逻辑模块图;2 .硬连线控制器指令周期流程图;3 .硬连线控制器的硬件描述语言源程序;4 .测试程序;5 .设计说明书;6 .调试总结。四、硬连线控制器逻辑模块图本实验要求设计硬连线控制器,而仍然利用实验台的数据通路和其他模块。因此我们只需对硬连线控制器局部进展编程就行了。TEC-8模型计算机电路框图如以下图IoA端口ALUABUSLDCLDZT3/B端口MBUSMEMWD7LDOLD7RDOR双端口RAMA7L-A0L-ZS-A7RAOR-RDO

5、LDROLDRILDR3RORDl(SEU)RDo(SEL2)41选择器BDBUS4选I选择器A214争星器LDRODRWT3JI.DR2SWDSBUSRSI(SELI) RSO(SELO)R3督控制信号R7-AROPC7PCOARDBUSIR3IRO-ILDR3IRBuSLlRTfLlARIABUSCLR#PCADD Up PClFC TA/CLR#LARARINCT3f I5F数据开关SD7SDOA组控制信号时序发生器,Dzql 立(fels - 一CLLN- / L乙dCl dels 一 工2控制信号切换电路微程序控制器IR7IR4转换开关B组控制信号硬连线控制器I21 SEI.CTI.

6、-介GIR3IROWlSEL3-SEL0IR7IR4IRBUS图1TEC-8模型计算机电路框图从电路框图中可知,硬连线控制器与微程序控制器不同,其产生的控制信号除了受译码器输出信号SWCSWAIR7IR4,节拍电位信号TT3,状态条件信号Z、C,以及CLR#的控制外,还受时序发生器产生的节拍脉冲信号W3W1的控制。硬连线控制器的逻辑模块图为:微操作控制信号BlBn硬布线控制器结构方框图启动停止 时钟 复位指令寄存器图2硬连线控制器的逻辑模块图五、硬连线控制器指令周期流程图与微程序控制器不同,硬连线控制器以节拍电位W3W1为时间单位。其指令周期流程图为:图3硬连线控制器参考流程图一个执行框代表一

7、个节拍电位时间,TEC-8实验系统中采用了可变节拍数来执行一条机器指令。从上图中可知,大局部指令只需要两个节拍电位町和W2,少数指令还需要W3。因此当需要W3时在W2时产生一个信号LONG。时序信号发生器收到信号LONG后产生W3。有的操作如写存放器需要四个节拍电位,将该操作化成两条机器指令的节拍,通过信号STO联系在一起。还可以只产生Wl,通过SHORT信号实现。根据硬连线流程图还可以得到组合逻辑译码表,如下表2:表2组合逻辑译码表IRADDSUBANDINCLDSTJMPOUTSTPJCJZLIRWlWlWlWlWlWlWlWlWlWlWlMW2W2W2/W3W2W2S3W2W2W2W2/

8、W3W2W2S2W2W2W2SlW2W2W2/W3W2W2SOW2W2W2W2CINW2LDCW2W2W2LDZW2W2W2W2DRWW2W2W2W2W3ABUSW2W2W2W2W2W2W3W2W2LARW2W2PCADDC,W2Z,W2LPCMBUSW3MEMWW3LONGW2W2STOPW2PCINCWlWlWlWlWlWlWlWlWlWlWl根据译码表,对以后的编程和错误查找有很大的帮助。六、程序编写过程利用VerilOg语言,在ModeISiin环境下进展编程和仿真。刚开场做实验时心里是茫然的,不知道从哪里开场,无从下手,不知道采用什么方法,加上对VeriIOg语言的掌握还不够熟练,因

9、此第一次实验课几乎没有什么进展。后来通过王教员和唐教员的耐心讲解和指导,明白了可以用两种不同的实现方法进展编程,但因为个人觉得利用状态机的方法进展编程理解起来思路较为简单,而且逻辑较为清楚,于是决定利用状态机的方法进展编程。本程序是在唐教员的程序根底上进展修改的(唐教员的还没有完成),但在编程过程中还是遇到了很多的问题,比方时序问题等。在同学和教员的帮助下,完成了一局部工作,但程序依然存在着一些问题,结果实验还是没有完全做完。把整个控制器分为四个状态:StateO表示初始状态,对所有的信号进展初始化,表示Clear以后的状态,只有SToP有效;Statel表示Wl有效时的状态,具体又可以按照S

10、WerSWA的不同进展不同的赋值与操作;State2表示W2有效时的状态,再根据STV的不同进展赋值;State3表示W3有效时的状态。正常情况下一个状态完成以后进入下一状态,但有很多情况下是不行的,比方写存储器、读存储器、写存放器等操作。于是需要根据对STO信号、SHORT信号、LONG信号等进展判别来进展不同状态之间的转化。具体为:从Stateo开场,假设SW符合要求(5),进入State1,否那么回到stateO;statel:假设执行程序且STO=O或读存储器或写存储器,那么下一状态仍为statel,否那么下一状态为state2;state2:假设为执行指令的LD或ST,那么下一状态为

11、State3,假设为写存放器操作且STO=O或执行指令但不为LD或ST,那么下一状态为Wl,假设都不符合,下一状态为初始状态State0;state3:直接回到State1;源程序压缩包:CPU为源程序,其余程序为测试程序,程序名字表示所测试的指令或工作台模式。七、MOdelSiin仿真过程程序编译成功后,开场编写仿真程序,进展仿真。因为对仿真程序的掌握不是很完善,刚开场我们组就出了很多问题,不是时序的问题就是赋值的问题。感谢同学和教员的耐心指导和帮助。因为篇幅问题,在此仅贴出操作台操作和局部有代表性的指令的仿真过程,(ADD,AND,LD,JC,JMP,STP)其余仿真代码在程序包里,因为并

12、没有烧到芯片里,也没有真正的实现,所以实际源程序可能还存在着一些问题。(一)操作台模式仿真过程1 .写存储器过程仿真(SW为OOl)写存储器只需要Wl,仿真图如图4所示:1_I1IZOQns3C0ns/bO01CP3sO01)RV/w01,ONC/AmOOIAPCwO01AA/fO01sCADO/BMWVAWNC/WO014W/Si*O01/STOP/S*XX)1IR/5WOoIoc/smO01DZWOQUSKMTw*O01ONG/WbOOVON/5WOOI/50/5WOOVSI/swO0yS2/SW00153/9*00UM图4写存储器过程仿真图2 .读存储器过程仿真(SW为OlO)读存储器的

13、过程在时序上与写存储器类似,都只需阳。仿真图如图5所示:O*加QW*M01034WC,vw:Olstostolstolsto图5读存储器过程仿真图3.读存放器过程仿真(SW为011)读存放器过程需要Wl和W2o2图6读存放器过程仿真图4.写存放器过程仿真(SW为100)写存放器过程各需要两个Wl,W2o并用STO作为时序判定条件M10QNC“胸皿MC-MWQMR4wOOCCOJ/VWlOOMMrcHoOMMMftvWQ5T0PwlIRJ封XeADC“ZBWZlW8Y-v00CrC,M1ONMttQ50/9W10Q/S1“6】B行2Ziowa/HvW04AwWOMBUS20OnlMOns8OOf

14、图7写存放器过程仿真图(-)指令执行过程仿真LADD指令执行过程仿真(SW为OoO,IR74为OOOI)SUB与ADD类似。D.,Qen/ADO/QR/W3/ADD/5WCA5WB/ADD/SWA,AD0R7J/AOD/VU/AD0JIR5/Ho(MR4/ADOAVi/A*2,ADDY3a:/ADD/Z*X/ADD/CP1/A0D/CP24/ADOQ3/AMW1600m200ns60OnB800EIOOOn图8ADD指令执行仿真图2.AND指令仿真过程(SW为OO0,IR74为OoIl)INC与AND类似。Msgs图9AND指令执行仿真图3.LD指令仿真过程(SW为OOO,IR74为OIOl)

15、ST与LD类似。.DSOOS1OS2OS3“仙伊,DAUS3,/STOPjCftW,图13STP指令执行仿真图八、测试程序测试程序是在源程序编写完成并仿真成功并烧到芯片里以后用于在模型计算机上完整的测试源程序的。测试程序的编写过程中,我们组尽可能的利用上所有的指令,使得每条指令都能测试一遍,以便更好的测试性能和正确性,但因为并没有烧到芯片里,所以测试程序并没有起到作用。地址指令十六进制机器代码二进制机器代码OOHLDROlR3l53H01010011OlHINC用4CH0100110002HSUBRORl21H0010000103HJZOCH8CH1000110004HSTRoR268H011

16、0100005HLDRRJ53H0101001106HINCRy4CH0100110007HADDRORIlH0001000108HJCOCH7CH0111110009HJMP69CH10011100OHINCR248H01001000OBHSTPOEOH11100000OCH08H08H00001000ODH15H15H00010101OEHFFHOFFH11111111OFHOlHOlH00000001IOHANDRORl31H00110001HHOUTR20A2H1010001012HSTPOEOH11100000九、设计说明书L源程序的设计利用状态机的思想,把整个控制器分为四个状态:S

17、tateO.statelstate2state30不同State表示的状态为:StateO表示初始状态,对所有的信号进展初始化,表示CIear以后的状态,只有STOP有效;Statel表示Wl有效时的状态,具体又可以按照SW(TSWA的不同进展不同模式下的赋值与操作;state2表示W2有效时的状态,再根据SW的不同进展赋值;State3表示W3有效时的状态,主要是指执行指令LD和ST时才有可能会进入的状态(其他情况下不需要W3)。定义两个变量,state和next-stateostate表示当前状态,next_state表示下一状态。state完本钱状态内的所有操作以后进入next_stat

18、e,正常情况下next_state就是state加1,但有很多情况下是不行的,比方写存储器、读存储器、写存放器等操作不能直接的加一。于是需要根据对STO信号、SHORT信号、LONG信号等进展判别来确定下一状态。具体为:从Stateo开场,判断SW,假设SW符合要求(值5),进入Statel(next_state=statel),否那么回到StateO(next_state=stateO);statel:判断SW、STO,假设执行程序(SW=OOO)且STo=O或读存储器(SW=OlO)或写存储器(SW=OOl),那么next_state=State1,否那么next_state=state2

19、;state2:判断SW、IR、STO,假设为执行指令(SW=OOO)的LD(IR74=0101)或ST(IR74=0110),那么next_state=State3,假设为写存放器操作(SW=IOO)且STO=O或执行指令但不为LD或ST,那么next_state=Wl,假设都不符合,next_state=stateO;state3:next_state=statel;因此,参考流程图可知,对于不同的操作模式和指令的状态转换为:写存储器:StateOStatelStatel读存储器:StateOStatelStatel读存放器:StateOStatelstate2写存放器:StateOSta

20、telstate2statelstate2指令:LD/ST:StateOStatelstatelstate2state3其他:StateOStatelStatelstate22.测试程序的设计源程序完成以后,要进展仿真,因此需要设计测试程序。设计测试程序是为了给出各输入信号的值,并产生与工作台模式或指令要求相符的机器周期(如执行LD指令时,依据指令产生的机器周期为NLWl,W2,W3,W1),观察仿真波形是否会产生有效的输出信号。因此,在设计测试程序时,重点和难点便是产生符合源程序执行情况的机器周期。因为测试的目的主要是看源程序在正确的机器周期下,对于不同的模式和指令是否会产生正确的信号,因此

21、可以把每个工作台模式和各个指令都写一个仿真程序进展单独仿真。十、实验总结外表上看,本次实验仅仅是要我们设计一个CPU的硬连线控制器局部,而实际上却需要我们综合运用以往所学的很多关于计算机组成构造方面的知识。这次的实验让我真正明白了什么叫大实验,相比前几次的实验。因为实验的前期准备不充分,使得进展较为缓慢,不知道从何下手,浪费了很多时间。通过教员的讲解和指导,并经过组内的讨论决定运用状态机的方法进展编程。因为对VerilOg语言的掌握还不够熟练,所以编程过程中也出现了很多或大或小的问题,比方说赋值的时候是用工还是二(二和二表达的意义是不同的,只有在assign语句中用二,而在其他的赋值语句中一般

22、用C),状态之间的转化条件确实定,判断转移条件时是用信号判断(LONG、SHORT等)还是利用操作模式和IR值判断(我们后来利用SW、IR和STo判断)等等。遇到问题,积极的向同学和教员请教,在大家的帮助下,我们也确实解决了很多问题。很感谢教员和其他同学的帮助和耐心讲解,帮助我们找到了一些程序上的错误,让我们少走了一些弯路。但在编写仿真程序时,又遇到了很多障碍,很多概念有点搞不清,比方说刚开场对于知道了T3和Wl”3的关系,却不明白怎么实现QD和T3,Wl3之间的协同配合,多亏了教员的仿真程序,看了很多遍以后才慢慢理解了如何实现它。总的来说,没有在规定的实验课程安排里完本钱次实验,还是觉得很遗

23、憾,也有一点失落感。因为没有烧到芯片里,程序中存在的一些问题也没法找出来,可能依然存在着很多的漏洞和缺乏。通过这次实验也让我对CPU各模块的工作原理和相互联系有了更加清晰的认识,收获良多。十一、心得体会这次实验让我收获了很多,让我真正的明白了理解和掌握是不一样的!以前总觉得自己对于CPU的原理已经理解了,但本次实验不仅仅需要我们动脑,更重要的是要求我们动手。由画出控制器流程图到VeriIOg语言的源代码的实现,再到编写仿真程序进展仿真,其间过程会出现很多的问题,需要很大的耐心和细心,当中不仅要对TEC-8实验台的操作相当熟悉,而且要对机器周期与时序的关系以及控制器各模块的理解很透彻才行。而自己

24、显然还需要很大的提高。从这次实验中我也发现了自己身上的很多缺乏,如根底知识的掌握还不够全面,分析问题往往不够透彻,做一件事情时自己的思路往往会受到各种因素的打搅,不够清晰。我也会在以后的学习生活中努力加以改正。通过本次实验我也明白了坚持和合作的重要性。科学需要一种探究精神,而在这个过程中会遇到很多的问题与障碍,会做很多无头绪或者繁琐的工作,比方这次的面对源程序的编译产生的各种错误,面对仿真波形得不到想要的结果,这个时候就需要我们坚持下去,耐下心去一点点分析,请教。只要踏实的静下心去,肯付出努力,问题终会解决。合作是必须的,团结就是力量,很多的事情和工作一个人是完不成的,团队之间的互相配合和相互帮助会使得很多麻烦的事情简单很多,遇到问题时通过和同学或教员进展交流,也都得到了较好的解决。计算机组成原理的实验终于全部做完了,整体来讲效果还是很好的,对于自己的帮助也还是很大的,通过这几次实验,我也更加明白了计算机的运行原理和根本构造,锻炼了自己的动手实践能力,收获很多!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号