《硬布线设计实验报告5417.pdf》由会员分享,可在线阅读,更多相关《硬布线设计实验报告5417.pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 计算机组成原理 实验报告 实验名称:使用硬连线控制器的 CPU 设计 专业班级:计算机科学与技术 01 学生姓名:贾晓冬 宋丽君 杨嘉宁 肖迪月 实验时间:目录 No table of contents entries found.一、教学目的、实验设备与任务 教学目的 1.融会贯通计算机组成原理课程和计算机系统结构课程的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识。2.掌握硬连线控制器的设计方法 3.学习运用大容量可编程器件开发技术,掌握设计和调试的基本步骤和方法,体会 ISP 技术的优点。4.培养科学研究能力,取得设计与调试的实践经验。实验设备 TEC-5
2、计算机组成原理实验系统 一台 Pentium3 以上微型计算机 一台 逻辑测试笔 一支 设计与调试任务 1.按给定的数据格式和指令系统,利用大容量 ISP 可编程器件,设计一台硬布线控制器组成的处理机 2.根据设计,在 TEC-5 实验系统中进行调试。3.在调试成功的基础上,整理出设计图纸和其他文件 二、总体说明 1、硬连线控制器的基本原理 硬布线控制器的基本原理是,每个微操作控制信号 S 是一系列输入量的逻辑函数,即用组合逻辑电路来实现,S=f(Im,Mi,Tk,Bj)其中 Im 是机器指令操作码译码器的输出信号,Mi 是节拍信号发生器的节拍信号,Tk 是时序信号发生器的时序信号,Bj 是状
3、态条件判断信号。在 TEC5 实验系统中,时序信号 Tk(T1T4)已经直接输送给数据通路;因为机器指令系统比较简单,操作码只有位,省去操作码译码器,用 Im 直接作为操作码,即指令寄存器的 IR4IR7 信号。Mi 的来源就是时序模块的节拍信号,例如 W3W1。Bj 的信号包括:来自数据通路中运算器 ALU 的进位信号 C;来自控制台的开关信号 SWC、SWB、SWA;其他信号。其中 C、SWC、SWA 和 SWB 信号在微程序控制器中同样存在。每个控制信号的函数式都是上述输入信号的逻辑表达式,因此可以用组合逻辑构造电路。只要对所有控制信号都设计出逻辑函数表达式,这个硬布线控制器的方案也就得
4、到了。2、指令系统,由老师幻灯片中给出 指令格式名称 助记符功能R7 R6 R5 R4R2 R3R1 R0加法ADD Rb,RsRd+Rs Rd0 0 0 0RS1 RS0RD1 RD0减法SUB Rd,RsRd-Rs Rd0 0 0 1RS1 RS0RD1 RD0乘法MUL Rd,RsRd*Rs Rd0 0 1 0RS1 RS0RD1 RD0逻辑与AND Rd,RsRd&Rs Rd0 0 1 1RS1 RS0RD1 RD0存数STA Rd,RsRdRs0 1 0 0RS1 RS0RD1 RD0取数LDA Rd,RsRs Rd0 1 0 1RS1 RS0RD1 RD0无条件转移JMP RsRs
5、 PC1 0 0 0RS1 RS0X X条件转移JC D若 C=1 则PC+D PC1 0 0 1D3 D2D1 D0停机 STP暂停运行0 1 1 0X XX X中断返回IRET返回断点1 0 1 0X XX X开中断INTS允许中断1 0 1 1X XX X关中断INTC禁止中断1 1 0 0X XX X 3、控制台指令 SWC SWB SWA 操作 0 0 0 启动程序(PR)0 0 1 写存储器(WRM)0 1 0 读存储器(RRM)0 1 1 写寄存器(WRF)1 0 0 读寄存器(RRF)4、数据通路 5、控制器的指令周期流程图 由老师幻灯片给出 6、控制台控制信号及作用 控制信号
6、 信号有效条件 C 在加法和减法运算时产生的进位信号 RAM-BUS_ 存储器数据送数据总线 DBUS 信号。为0时将指令送往指令总线 IBUS ALU-BUS_ ALU 输出三态门使能信号,为0时将 ALU 运算结果送 DBUS RS-BUS_ 通用寄存器右端口三态门使能信号。为0时将 RF 的 B 端口数据送DBUS SW-BUS_ 将 SW7-SW0的数据送往 DBUS LDRi 双端口寄存器堆写入信号。为1时将数据总线上的数据再 T3的上升沿写入由WR1/WR0指定的寄存器 LDDR2 对操作数寄存器 DR2进行加载控制信号。为1时在 T2的上升沿将由RS1、RS0指定的寄存器中的数据
7、打入 DR2 LDDR1 对操作数寄存器 DR1进行加载控制信号。为1时在 T2的上升沿将由RD1、RD0指定的寄存器中的数据打入 DR1 LDAR_ 对 AR 进行加载的控制信号,为0时在 T2的上升沿将数据总线上的数据打入 AR AR_1 AR+1 LDPC_ 程序计数器 PC 接受来自 DBUS 的地址 PC_1 PC+1 LDIR 将来自 RAM 的指令打入指令寄存器 IR TJ 停机命令,关闭时序信号 SKIP 使节拍发生器在任意状态下直接跳到最后1拍 S3/S2/S1/S0 选择 ALU 的运算类型 M 选择 ALU 的运算模式:M=1时逻辑运算,M=0时算术运算 Cn_ ALU
8、最低位的+1信号,为0时,ALU 最低位 LRW_ 当 LRW_=1且 CEL_=0时,对双端口存储器左端口进行读操作 当 LRW_=0且 CEL_=0时在 T2节拍对左端口进行写操作 CEL_ 双端口存储器左端口使能信号。为0时允许对左端口读、写 CER_ 双端口存储器右端口使能信号。为0时将指令送往指令总线 IBUS 三、设计方案 1、说明 硬布线控制器以节拍为时间单位,1 拍是从时序 T1 的上升沿到 T4 的下降沿的一段时间。在硬布线控制流程图中,1 个执行框代表 1 拍。决定执行一条指令需要的节拍数,要根据所有指令而定。既不能只考虑某些需要最多节拍的指令,也不能只考虑节拍数最少的指令
9、,一般要根据大多数机器指令所需的节拍数而定,设计才比较合理。在本实验中,由于选用 3 拍对大多数指令就够用,所以节拍发生器产生 3 个节拍信号(W1W3)。统一用 3 拍执行 1 条机器指令后,对于所需节拍较少的的指令,为减少浪费,在时序电路中加入了一个控制信号 SKIP 的输入,该信号的作用是使节拍发生器在任意状态下直接跳到最后 1 拍(W3)。这样,设计控制流程时,在所需节拍较少的的指令流程的适当位置使SKIP 控制信号有效,多余的节拍就可以跳过,从而提高了性能。机器指令选用 3 拍以后,将一条机器指令的执行化为占用两条(或者更多)机器指令的节拍,执行一条指令就可以占用 W1、W2、W3、
10、W1、W2、W3。为了区分一条指令的两个不同阶段,我们加了个 ST 内部信号作为标志位,当 ST0=0 时,标志执行指令的前 3 个节拍,当 ST0=1 时,标志执行指令的后 3 个节拍。同时设置了一个 SSTO 信号作为 ST 信号的触发信号。具体流程图如下:2、逻辑状态表 四、设计的实现(ABEL-HDL)1、ABEL 语言源代码如下:MODULE Controller DECLARATIONS 输入管脚 SWC,SWB,SWA PIN;IR7,IR6,IR5,IR4 PIN;W1,W2,W3,MF,T1,C,CLR PIN;输出管脚 RAM_BUS_,ALU_BUS_,RS_BUS_,S
11、W_BUS_,LDIR,LDAR_,AR_1,LDPC_,PC_1,S3,S2,S1,S0,Cn_,M,LDDR2,LDDR1,TJ,SKIP,CEL_,CER_,LRW_,LDRi PIN;自定义 MF1,SSTO NODE ISTYPE COM;RUN,STO NODE ISTYPE REG;RRF,WRF,RRM,WRM,RP,ADD,SUB,AND,STA,LDA,JC,STP,OUT NODE ISTYPE COM;CLK=.C.;EQUATIONS MF1=!CLR&MF#T1&CLR;RUN:=CLR;=MF1;STO:=CLR&SSTO#CLR&STO;=MF1;SSTO=!S
12、TO&W3&RUN;指令译码 RRF=SWC&(!SWB)&(!SWA);WRF=(!SWC)&SWB&SWA;RRM=(!SWC)&SWB&(!SWA);WRM=(!SWC)&(!SWB)&SWA;RP=(!SWC)&(!SWB)&(!SWA);ADD=(!IR7)&(!IR6)&(!IR5)&(!IR4)&RP&STO;SUB=(!IR7)&(!IR6)&(!IR5)&IR4&RP&STO;AND=(!IR7)&(!IR6)&IR5&(!IR4)&RP&STO;STA=(!IR7)&(!IR6)&IR5&IR4&RP&STO;LDA=(!IR7)&IR6&(!IR5)&(!IR4)&RP&
13、STO;JC=(!IR7)&IR6&(!IR5)&IR4&RP&STO;STP=(!IR7)&IR6&IR5&(!IR4)&RP&STO;OUT=(!IR7)&IR6&IR5&IR4&RP&STO;管脚译码 LRW_=!(RRF#WRF#WRM)&STO&W1#STA&W3);CEL_=!(RRF#WRF#RRM#WRM)&W1&STO#(STA#LDA)&W3);CER_=!(RRF#WRF)&W2&STO#W1&RP&STO);RAM_BUS_=!(RRM&W1&STO#W3&LDA);ALU_BUS_=!(W3&(ADD#SUB#AND#STA);RS_BUS_=!(W3&(RRF&ST
14、O#OUT#JC&C)#W2&(STA#LDA);SW_BUS_=!(W3&(!STO)&(RRF#WRF#RRM#WRM#RP)#W3&STO&WRF#W1&STO&(RRF#WRF#WRM);LDRi=W3&(WRF&STO#ADD#SUB#AND#LDA);LDDR2=W2&(ADD#SUB#AND);LDDR1=W2&(ADD#SUB#AND#STA);LDAR_=!(W3&(!STO)&(RRF#WRF#RRM#WRM)#W2&(STA#LDA);AR_1=W3&STO&(RRM#WRM);LDPC_=!(W3&(!STO&(RRF#WRF#RP)#JC&C);PC_1=W3&(AD
15、D#SUB#AND#STA#LDA#STP#OUT)#W2&JC;LDIR=!CER_;TJ=W1&STO&RRM#W2&STO&WRF#W3&(!STO)&(RRF#WRF#WRM)#STO&(RRF#WRF#WRM)#STP#OUT);SKIP=W1&(!STO)&(RRF#WRF#RRM#WRM#RP)#STO&(RRM#WRM);S3=W3&(ADD#AND#STA);S2=W3&(SUB#STA);S1=W3&(SUB#AND#STA);S0=W3&(ADD#AND#STA);M=W3&(AND#STA);Cn_=!(W3&SUB);END 2、组装与调试 对程序进行编译,无误后下载
16、到芯片 连线,调试 连线按照 ABEL 程序里面对管脚的定义连线 第一步:检查全部硬布线控制流程,以单拍(DP)方式执行指令。进行的顺序也是先执行控制台命令,然后执行机器指令。当全部控制流程图检查完毕后,数据通路的执行部件(运算器,存储器等)功能正确;第二步:在内存中装入包括有全部指令系统的一段程序和有关数据,进一步可采用单步(DB)方式或连续方式执行,以验证机器执行指令的正确性;第三步:编写一段表演程序,令机器运行。管脚连线:Pin Name Pin Assignment Pin Type,Pin Attribute TJ 3 Output,PULLUP CLR 4 Input,PULLUP
17、 LDIR 5 Output,PULLUP LDAR_ 6 Output,PULLUP RAM_BUS_ 7 Output,PULLUP CER_ 8 Output,PULLUP T1 9 Input,PULLUP S2 10 Output,PULLUP LRW_ 11 Output,PULLUP LDDR2 12 Output,PULLUP M 13 Output,PULLUP W2 14 Input,PULLUP SWA 15 Input,PULLUP SWC 16 Input,PULLUP IR4 18 Input,PULLUP PC_1 26 Output,PULLUP IR5 27
18、Input,PULLUP RS_BUS_ 28 Output,PULLUP LDPC_ 29 Output,PULLUP SKIP 30 Output,PULLUP CEL_ 31 Output,PULLUP SW_BUS_ 32 Output,PULLUP IR6 33 Input,PULLUP LDDR1 35 Output,PULLUP ALU_BUS_ 37 Output,PULLUP S1 54 Output,PULLUP S3 46 Output,PULLUP CN_ 47 Output,PULLUP LDRI 48 Output,PULLUP S0 50 Output,PULLU
19、P MF 57 Input,PULLUP C 59 Input,PULLUP SWB 60 Input,PULLUP IR7 69 Input,PULLUP W3 70 Input,PULLUP AR_1 71 Output,PULLUP W1 73 Input,PULLUP 寄存器和内存单元内容:RAM 地址指 令机 器 代 码寄 存 器数 据00 HLDA R0,R258 HR 26 0 H01 HLDA R1,R35D HR 36 1 H02 HADD R0,R104 HR A M 地 址数 据03 HJC+595 H6 0 H2 4 H04 HAND R0,R134 H6 1 H8 3
20、 H05 HSUB R0,R31C H06 HMUL R0,R124 H07 HSTA R0,R144 H08 HSTP60 H09 HJMPR184 H 计算结果:五、本次设计的体会 贾晓冬:这次小组做实验其实还是挺开心的,而且在开始做之前有一个大体的计划,所以等到真正开始做的时候没有手忙脚乱,而且合作的很好。不过做的过程中也确实发现了很多问题,比如说ABEL 语言的标识符只能有字母、数字和下划线组成,或者里面的一个小小的逗号由于格式不对都能导致错误,各种奇奇怪怪的错误都在做的过程中出现了,不过幸好在大家的合作下都能找出来,虽然有时候找的过程很痛苦。其实我的主要任务就是各种找错,比如说在译码
21、表和程序出来之后找错啊什么的,还有就是参与讨论,理清原理。说起来很简单,但是其实做起来还是比较费时的,因为程序或者表格做出来,然后就需要一个一个的去对流程图,稍有不慎就有可能把错误忽略过去,不过由于是大家一起在做,所以也没有觉得有多难,还是那句话吧,三个臭皮匠顶一个诸葛亮,虽然几个人的水平都没那么高,但是一起合作可以找出很多忽略的地方,纠正很多一个人想不到的错误,所以效率也就提高。总之这次试验做的很成功也很高兴,全都仰仗大家的合作。宋丽君:硬布线控制器是依赖于组合逻辑而实现的,而老师在课堂上对微程序控制器讲解得比较多,所以在微程序控制器方面掌握的知识对我们研究硬布线控制器是很有帮助的。因为在数
22、字逻辑课上,老师讲授的是VHDL 语言,所以大多数同学选择用VHDL 语言编写代码。但是,经我们小组的仔细研究讨论,我们觉得相比于VHDL 语言,ABEL 语言显得更精练,更易于编写,所以我们决定在网上搜集资料来自主学习 ABEL 语言。在用 ABEL 语言编写代码的时候,主要是逻辑表达式的编写,其实也没有什么特别难的地方,只需按照组合逻辑译码表,则可以很轻松地完成这些代码的编写。当然,前提是这个组合逻辑译码表是完全正确的。其实,数据通路是非常重要的,每个方框里的每个信号都是不可缺少的部分。我们必须能知道每一步要做什么操作,而且要知道各个操作在哪个节拍电位里执行。总之,数据通路是基础,组合逻辑
23、译码表是关键。只要这两个任务能完美地完成,代码就能自然而然地编写出来了。同时,一个小组里组员之间的合作也是非常重要的,所谓集思广益,只有大家相互配合,各司其能,这个实验才能获得成功。杨嘉宁:这是我们计算机专业做的第一个硬件和软件结合的课程设计。在正式进实验室进行操作前,我们小组成员先进行了对这个实验必要的分析,对整个实验的各个步骤都进行了详细的了解和讨论。个人认为最有成效的讨论结果,莫过于决定用ABEL 语言而非 VHDL 语言进行编写。这一决定使我们在代码的编写上有了很大的改进,不仅提高了效率,还使差错变得简单易行,这一点在正式进入实验室操作时表现的更加明显。我的任务是前期讨论以及实验室里电脑软件和试验台的操作,这又使我对 ispLEVER 等软件的操作有了进一步的了解,从载入源代码、查错,到生成管脚和固定管脚,再到后来的下载到 TEC-5 上,不但让我认识到代码编写时细心谨慎的重要性(因为代码报错,经检查,都是类似于逗号没有写或者诸如此类的小错误),还极大地提高了我对这一软件的认识以及将软件与实验台结合使用的能力。个人认为,这是很好的一个课程设计安排,学以致用才是最好的结果,它不仅锻炼我们思考能力和动手能力,还加强了我们的团队合作能力。
限制150内