硬连线控制器设计说明_第1页
硬连线控制器设计说明_第2页
硬连线控制器设计说明_第3页
硬连线控制器设计说明_第4页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、CPU 要求:能顾完成控制台操作 ,包括启动程序运行 、读存储器 、写存储器 、读寄存器、写寄存器 。能够执行表 3.1 中的指令 ,完成规定的指令功能 。表 3.1 中,XX 代表任意值 ,Rs 代表源寄存器号 ,Rs 代表目的寄存器号 。在条件转移指令中 ,代表当前 PC 的值,offset 是一个四位的有符号数 ,第三位是符号位 , 0 代表正数 ,1 代表负数 。注意 :不是当前指令的PC 值,而是当前指令的 PC 值加 1。.下载可编辑 .表错误!文档中没有指定样式的文字。.1 新设计 CPU 的指令系统指令格式名称助 记 符功能IR7 IR6 IR5 IR4 IR3 IR2IR1

3、IR0ADDRd,加法Rd Rd + Rs0001RdRsRs减法SUB Rd, RsRd Rd - Rs0010RdRsANDRd,逻辑与RsRd Rd and Rs0011RdRs加 1INC RdRd Rd + 10100RdXX取数LD Rd, Rs Rd Rs0101RdRs存数ST Rs, Rd Rs Rd0110RdRs若 C=1,则 PC +C 条件转移 JC offsetoffset0111offset若Z=1,则PC+Z 条件转移 JZ offset1000offsetoffset无条件转JMP RdPC Rd1001RdXX移输出OUT RsDBUS Rs1010XXRs

4、停机STP暂停运行1110XXXX.下载可编辑 .在 Quartus| 下对硬连线控制器进行编程的编译 。将编译后的硬连线控制器下载到 TEC-8 实验台的可编程器件 EPM7128S中去,使得 EPM7128S 成为一个硬连线控制器 。根据指令系统 ,编写检测硬连线控制器正确性的测试程序,并用测试程序对硬连线控制器在单微指令方式下进行调试,直到成功 。( 2)在调试成功的基础上 ,整理出设计文件 。1.硬连线控制器逻辑模块图 ;2.硬连线控制器指令周期流程图 ;3.硬连线控制器的硬件描述语言源程序;4.测试程序 ;5.设计说明书 ;6.调试总结 。四、硬连线控制器逻辑模块图本实验要求设计硬连

5、线控制器,而仍然利用实验台的数据通路和其他模块。因此我们只需对硬连线控制器部分进行编程就行了。TEC-8 模型计算机电路框图如下图 1。.下载可编辑 .ZC数据总线DBUSINS7 INS0MABUSS0D7L D0LD7R D0RS1ALULDCMBUSS2LDZMEMW双端口 RAMS3CINA 端口T3T2B端口A7L A0LA7R A0RA7 A0B7 B0RS1 (SEL1)AR7 AR0PC7 PC04选 1RD1 (SEL3)4 选1RD0 (SEL2)RS0(SEL0)CLR#CLR#选择器 A选择器 B2LDR0LARPCADDARLPCRD1 ARINCPCLDR1PCIN

6、C4T3RD0LDR2T3译码器LDR3DBUSIR3 IR0LDR0LDR1LDR2LDR3IRBUSR0DRWR1DRWR2DRWR3DRWLIART3T3T3T3IARLIRIABUST3IRT3DBUSSWDSBUS数据开关SD7 SD0123123QTTTTWWWNI时序发生器#PN IPTGE DNF ROPT TTRM LD TN NN OOC Q SD I IIHLS控制信号PC7 PC0+5V。控制信号切换电路。 转换开关01 01。DD SSRR RRA 组控制信号B 组控制信号SELCTL微程序控制器硬连线控制器2选 1选择器Z C#IR3 IR0R3Z C R3W3W1

7、SEL3 SEL0LLCTCTIR7 IR4IR7 IR4IRBUSSWC SWA图 1 TEC-8 模型计算机电路框图从电路框图中可知 ,硬连线控制器与微程序控制器不同,其产生的控制信号除了受译码器输出信号SWCSWA 、IR7IR4 ,节拍电位信号 T1T3 ,状态条件信号 Z、C,以及 CLR#的控制外 ,还受时序发生器产生的节拍脉冲信号W3W1 的控制 。硬连线控制器的逻辑模块图为:.下载可编辑 .图 2 硬连线控制器的逻辑模块图五、硬连线控制器指令周期流程图与微程序控制器不同 ,硬连线控制器以节拍电位W3W1为时间单位 。其指令周期流程图为 :.下载可编辑 .STOPCLRSWC S

8、WB SWASWC SWB SWA100011000010001写寄存器读寄存器运行程序读存储器写存储器ST0=0ST0=1ST0=0ST0=1ST0=0ST0=1SBUSSBUSSEL3 = 0SEL3 = 0SEL3 = 1SBUSMBUSSBUSSBUSSEL2 = 0SEL2 = 0SEL2 = 0SEL1 = 0LARARINCLARMEMWSEL1 = 1SEL1 = 0STOPARINCSEL0 = 1STOPSTOPSTOPSEL0 = 1SEL0 = 1SST0SHORTSST0SELCTLSELCTLSELCTLSHORTSHORTSHORTSELCTLSELCTLDRW

9、STOPDRW STOPSTOPSELCTLSELCTLSBUSSBUSSEL3 = 1SEL3 = 0SEL3 = 1SEL2 = 0SEL2 = 1SEL2 = 1SEL1 = 1SEL1 = 0SEL1 = 1SEL0 = 1SEL0 = 0SEL0 = 0SELCTLSELCTLSELCTLSTOP DRWDRWSTOPSST0STOPST0=0ST0=1SBUSLPCLIRSHORTSST0PCINCSTOP=0IR7IR4W1W2W100010010001101000101011001111000100110101110ADDSUBANDINCLDSTJCJZJMPOUTSTPIR

10、7IR4MC=0C=1Z=0ZZ=1MMSTOPS = 1001S = 0110MS = 0000MCS = 1010S = 1111S=1111S=1010CINABUSS = 1011ABUSABUSDRWABUSDRWABUSABUSPCADDPCADDABUSABUSLARLARLPCDRWLDZDRWLDZLDZLDZLDCLONGLONGLDCLDCDRWS = 1010MMBUSABUSMEMWW2W3图 3 硬连线控制器参考流程图一个执行框代表一个节拍电位时间 ,TEC-8 实验系统中采用了可变节拍数来执行一条机器指令 。从上图中可知 ,大部分指令只需要两个节拍电位W1 和W2

11、 ,少数指令还需要 W3 。因此当需要 W3 时在 W2 时产生一个信号LONG。时序信号发生器收到信号LONG 后产生 W3 。 有的操作如写寄存器需要四个节拍电位,将该操作化成两条机器指令的节拍,通过信号 ST0 联系在一起 。还可以只产生 W1 ,通过 SHORT 信号实现 。根据硬连线流程图还可以得到组合逻辑译码表,如下表 2:表 2 组合逻辑译码表IRADSUANINLDSTJMOUSTJCJZ.下载可编辑 .DBDCPTPLIRW1W1W1W1WW1W1W1W1 W1W11MW2WW2/WW2W223S3W2W2WW2/WW2W223S2W2W2W2S1W2WW2/WW2W223S

12、0W2W2W2W2CINW2LDCW2W2W2LDZW2W2W2W2DRWW2W2W2W2W3ABUSW2W2W2W2WW2/WW2W223LARWW22PCADC,WZ,WD22.下载可编辑 .LPCMBUSW3MEMW3WLONGWW22STOPW2PCINC W1 W1 W1W1 WW1W1 W1 W1 W1W11根据译码表 ,对以后的编程和错误查找有很大的帮助。六、程序编写过程利用 Verilog 语言,在 Modelsim环境下进行编程和仿真 。刚开始做实验时心里是茫然的,不知道从哪里开始 ,无从下手 ,不知道采用什么方法 ,加上对 Verilog 语言的掌握还不够熟练 ,因此第一次

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

14、 W1 有效时的状态 ,具体又可以按照SWCSWA 的不同进行不同的赋值与操作;state2 表示 W2 有效时的状态 ,再根据 SW 的不同进行赋值 ;state3 表示 W3 有效时的状态 。正常情况下一个状态完成以后进入下一状态,但有很多情况下是不行的,比如写存储器 、读存储器 、写寄存器等操作 。 于是需要根据对 ST0 信号、SHORT 信号、 LONG 信号等进行判别来进行不同状态之间的转化。具体为:从 state0 开始,若 sw 符合要求 (<5 ),进入 state1 ,否则回到 state0 ;state1 :若执行程序且 ST0=0 或读存储器或写存储器 ,则下一状

15、态仍为state1 ,否则下一状态为state2 ;state2 :若为执行指令的 LD 或 ST,则下一状态为state3 ,若为写寄存器操作且 ST0=0 或执行指令但不为LD 或 ST,则下一状态为 W1 ,若都不符合 ,下一状态为初始状态state0 ;state3 :直接回到 state1 ;源程序压缩包 :CPU 为源程序 ,其余程序为测试程序 ,程序名字表示所测试的指令或工作台模式 。七、 Modelsim仿真过程程序编译成功后 ,开始编写仿真程序 ,进行仿真 。 因为对仿真程序的掌握不是很完善 ,刚开始我们组就出了很多问题,不是时序的问题就是赋值的问题。感谢同学和教员的耐心指导

16、和帮助。因为篇幅问题 ,在此仅贴出操作台操作和部分有代表性的指令的仿真过程,( ADD ,AND ,LD,JC,JMP, STP)其余仿真代码在程序包里 ,因为并没有烧到芯片里,也没有真正的实现 ,所以实际.下载可编辑 .源程序可能还存在着一些问题。(一) 操作台模式仿真过程1.写存储器过程仿真 (SW 为 001)写存储器只需要W1,仿真图如图 4 所示:图 4 写存储器过程仿真图2.读存储器过程仿真 (SW 为 010)读存储器的过程在时序上与写存储器类似,都只需 W1 。仿真图如图 5 所.下载可编辑 .示:图 5 读存储器过程仿真图3.读寄存器过程仿真 (SW 为 011)读寄存器过程

17、需要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 为 0011 )INC 与 AND 类似 。.下载可编辑 .图 9 AND 指令执行仿真图3. LD 指令仿真过程 (SW 为 000,IR74

18、 为 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 指令执行仿真图八、测试程序测试程序是在源程序编写完成并仿真成功并烧到芯片里以后用于在模型计算机上完整的测试源程序的。测试程序的编写过程中

19、 ,我们组尽可能的利用上所有的指令,使得每条指令都能测试一遍 ,以便更好的测试性能和正确性,但因为并没有烧到芯片里,所以测试程序并没有起到作用。地址指令十六进制机器代二进制机器代码码00HLD R0 R353H0101001101HINCR34CH0100110002HSUB R0R121H0010000103HJZ 0CH8CH1000110004HST R0 R268H01101000.下载可编辑 .05HLD R0 R353H0101001106HINCR34CH0100110007HADDR0R111H0001000108HJC0CH7CH0111110009HJMPR39CH1001

20、11000AHINCR248H010010000BHSTP0E0H111000000CH08H08H000010000DH15H15H000101010EHFFH0FFH111111110FH01H01H0000000110HANDR0R131H0011000111HOUTR20A2H1010001012HSTP0E0H11100000九、设计说明书1.源程序的设计利用状态机的思想 ,把整个控制器分为四个状态:state0 、state1 、state2 、state3 。不同 state 表示的状态为 :state0 表示初始状态 ,对所有的信号进行初始化,表示 clear 以后的状态 ,只

21、有 STOP 有效; state1 表示 W1 有效时的状态 ,具体又可以按照 SWCSWA的不同进行不同模式下的赋值与操作; state2 表示 W2 有效时的状态 ,再根据.下载可编辑 .SW 的不同进行赋值 ;state3 表示 W3 有效时的状态 ,主要是指执行指令LD 和ST 时才有可能会进入的状态(其他情况下不需要W3 )。定义两个变量 ,state和 next_state 。state 表示当前状态 , next_state 表示下一状态 。state 完成本状态内的所有操作以后进入next_state ,正常情况下 next_state就是 state 加 1,但有很多情况下是

22、不行的,比如写存储器 、读存储器 、写寄存器等操作不能直接的加一。于是需要根据对ST0 信号、SHORT 信号、LONG 信号等进行判别来确定下一状态。具体为:从 state0 开始,判断 SW,若 SW 符合要求 (值<5 ),进入 state1( next_state=state1 ),否则回到 state0 (next_state=state0 );state1 :判断 SW、ST0,若执行程序 (SW=000 )且 ST0=0 或读存储器( SW=010 )或写存储器 (SW=001 ),则 next_state=state1 ,否则next_state=state2 ;stat

23、e2 :判断 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=state0 ;state3 : next_state=state1 ;因此,参考流程图可知 ,对于不同的操作模式和指令的状态转换为:写存储器 : state0 state1 state1读存储器 : state0 state1 state1读寄存器 : state0 s

24、tate1 state2写寄存器 : state0 state1 state2 state1 state2.下载可编辑 .指令:LD/ST:state0 state1 state1 state2 state3其他:state0 state1 state1 state22.测试程序的设计源程序完成以后 ,要进行仿真 ,因此需要设计测试程序 。 设计测试程序是为了给出各输入信号的值,并产生与工作台模式或指令要求相符的机器周期(如执行 LD 指令时,依据指令产生的机器周期为W1 ,W1 , W2,W3,W1 ),观察仿真波形是否会产生有效的输出信号。因此,在设计测试程序时 ,重点和难点便是产生符合源

25、程序执行情况的机器周期。 因为测试的目的主要是看源程序在正确的机器周期下,对于不同的模式和指令是否会产生正确的信号, 因此可以把每个工作台模式和各个指令都写一个仿真程序进行单独仿真。十、实验总结表面上看 ,本次实验仅仅是要我们设计一个CPU 的硬连线控制器部分 ,而实际上却需要我们综合运用以往所学的很多关于计算机组成结构方面的知识。这次的实验让我真正明白了什么叫大实验,相比前几次的实验 。因为实验的前期准备不充分 ,使得进展较为缓慢 ,不知道从何下手 ,浪费了很多时间 。通过教员的讲解和指导 ,并经过组内的讨论决定运用状态机的方法进行编程。因为对 Verilog 语言的掌握还不够熟练 ,所以编

26、程过程中也出现了很多或大或小的问题,比如说赋值的时候是用 = 还是 <= (= 和 <= 表达的意义是不同的 ,只有在 assign 语句中用 = ,而在其他的赋值语句中一般用 <= ),状态之间的转化条件的确定 ,判断转移条件时是用信号判断 (LONG、SHORT 等)还是利用操作.下载可编辑 .模式和 IR 值判断(我们后来利用 SW、 IR 和 ST0 判断)等等 。遇到问题 ,积极的向同学和教员请教 ,在大家的帮助下 ,我们也确实解决了很多问题。很感谢教员和其他同学的帮助和耐心讲解,帮助我们找到了一些程序上的错误,让我们少走了一些弯路 。但在编写仿真程序时 ,又遇到了很多障碍 ,很多概念有点搞不清 ,比如说刚开始对于知道了T3 和 W13 的关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论