桂电计算机组成原理课程设计_第1页
桂电计算机组成原理课程设计_第2页
桂电计算机组成原理课程设计_第3页
桂电计算机组成原理课程设计_第4页
桂电计算机组成原理课程设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机组成原理课程设计说明书题 目: 设计求平均值的CISC模型计算机 院 (系): 计算机科学与工程学院 专 业: 计算机科学与技术 学生姓名: 吴建海 学 号: 1100310526 指导教师: 陈智勇 1、课程设计的题目和内容:设计一台嵌入式CISC模型计算机(采用定长CPU周期、联合控制方式),并运行能完成一定功能的机器语言程序进行验证。 要求连续输入5个有符号整数(用8位二进制补码表示,十六进制数输入)求所有数的平均值并输出显示。说明:5个有符号数从外部输入; 一定要使用符号位(比如说SF)课程设计完成的内容 1.完成系统的总体设计,画出模型机数据通路框图; 2.设计微程序控制器(C

2、ISC模型计算机)的逻辑结构框图; 3.设计机器指令格式和指令系统; 4.设计时序产生器电路; 5.设计所有机器指令的微程序流程图; 6.设计操作控制器单元;在CISC模型计算机中,设计的内容包括微指令格式(建议采用全水平型微指令)、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器等。具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。 7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件-图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或

3、顶层文件; 8.由给出的题目和设计的指令系统编写相应的汇编语言源程序; 9.根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去; 10.使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。)2、 系统的总体设计:整个系统数据通路如下所示:控制器的逻辑结构框图:指令寄存器IR操作码微地址寄存器地址译码控制存储器地址转移逻辑状态条件微命令寄存器P字段操作控制字段微命令信号本模型机中的指令系统中共有12条基本指令,下表列出了每条指令的格式、汇编符号和指令功能。1、 模型机

4、的指令系统和所有指令的指令格式本模型机中的指令系统中共有12条基本指令,下表列出了每条指令的格式、汇编符号和指令功能。指令助记符指令格式功能15-1211 109 87-0IN1 Rd0001Rd输入设备RdMOV Rd,im0010Rdim立即数RdCMP Rs,Rd0011RsRd(Rs)-(Rd),锁存标志位ADD Rs,Rd0100RsRd(Rs)+(Rd)Rd,锁存标志位INC Rd0101Rd(Rd)+1Rd,锁存标志位DEC Rd0110Rd(Rd)-1Rd,锁存标志位JNZ addr0111addr若不等,则addrPCJNC addr1000Rsaddr若相等,则addrPC

5、JMP addr1001addraddrPCOUT1 Rs1010Rs(Rs)输出设备SUB Rs,Rd1011RsRd(Rs)-(Rd)RdMOV1 Rs,Rd1100RsRd(Rs)Rd说明:对Rs和Rd的规定:Rs或Rd选定的寄存器0 0R00 1R11 0R2 1 1R3 模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:76 5 4 3 2 1 0符号位尾数指令格式:(1)I/O指令(单字节)IN输入指令:7 6 5 43 21 0 操作码 RdOUT输出指令:7 6 5 43 21 0 操作码Rs (2)MOV指令(双字节)7 6 5 43 21 0 操作码 Rd

6、data(3) CMP指令(单字节) 7 6 5 43 21 0 操作码RsRd“Rs”为源寄存器,存放的是源操作数 “Rd”为目的寄存器,存放的是目的操作数所在的地址(4)算数运算指令(单字节)ADD、SUB7 6 5 43 21 0 操作码RsRd“Rs”为源寄存器,存放的是源操作数 “Rd”为目的寄存器,存放的是目的操作数所在的地址(5)DEC(单字节)自减1指令:7 6 5 43 21 0 操作码 Rd(6)INC指令(单字节)7 6 5 43 21 0 操作码 Rd(7)JNZ、JMP、JNC条件转移指令(双字节)7 6 5 43 2 1 0 操作码 addrT1、T2、T3、T4与

7、CLR、Q之间的关系图QCLRT1T2T3T4一个CPU周期现在,我们开始微程序控制器的设计,它包括以下几部分工作:(1)根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;(2)设计微指令格式和微指令代码表;(3)设计地址转移逻辑电路;(4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器;(5)设计微程序控制器的顶层电路。 首先做第一步,根据指令格式和指令系统设计所有机器指令的微程序流程图.对于我设计的模型机,对应的指令流程图如下所示 第二步,指令流程图设计完成后,开始设计微指令格式和微指令代码表,按照要求,CISC模

8、型机系统使用的微指令采用全水平型微指令,字长为26位,其中微命令字段为17位,P字段为3位,后继微地址为6位,其格式如下: 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0LOAD LDPC LDAR LDIR LDRi RD_B RS_B S2 S1 S0 ALU_B LDAC LDDR WR CS SW_B LED_B LDFR P1 P2 P3 后继微地址按照这个格式,再根据我设计的指令流程图,可以得到:PCAR PC+1由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命

9、令字段从左边到右代表的微命令信号依次为:LOAD、LDPC、LDAR、LDIR、LDRi、RD_B、RS_B、S3、S1、S0、ALU_B、LDAC、LDDR、WR、CS、SW_B、LED_B、LDFR。P字段在下页附图中第三步:设计好了微指令代码表之后,我们可以开始设计地址转移逻辑电路地址转移逻辑电路是根据微程序流程图3-2中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。由于微地址寄存器中的触发器异步置“1”端低电平有效,与A4A0对应的异步置“1”控制信号SE5SE1的逻辑表达式为:(A5的异步置“1”端SE6实际未使用SE5=FSP(2)T4SE4

10、=I7P(1)T4SE3=I6P(1)T4SE2=I5P(1)T4SE1=I4P(1)T4嵌入式CISC模型计算机的顶层电路图汇编语言源程序和机器源程序: 地址(十六进制)汇编语言源程序 机器语言源程序00 MOV R1,05H 001000010000010101 MOV R3,00H 001000110000000002L1: IN1 R0 000100000000000003 ADD R0,R3 010000110000000004 DEC R1 011000010000000005 JNZ L1 011100000000001006 MOV R0,FBH 001000001111101

11、107 MOV R1,05H 001000010000010108 MOV R2,00H 001000100000000009 CMP R3,R2 00111110000000000A JNC L3 10000000000100000BL2: CMP R3 R0 00111100000000000C JNC L5 10000000000101100D DEC R2 01100010000000000E ADD R1,R3 01000111000000000F JMP L2 100100000000101110L3: CMP R3,R1 001111010000000011 JNC L4 100

12、000000001001112 JMP L5 100100000001100013L4: INC R2 010100100000000014 SUB R3,R1 101111010000000015 MOV1 R1,R3 110001110000000016 MOV R1,05H 001000010000010117 JMP L3 100100000001000018L5: OUT1 R2 101010000000000019 JMP L5 1001000000010110机器语言源程序的功能仿真波形图及结果分析可以看出,此时R2中存放的03就是结果,数据输出端OD输出的就是R2内的数据。故障

13、现象和故障分析在做的过程中出现了很多问题。在仿真的时候,在观察y输入信号的时候发现在一个周期内值改变了多次,一直检查不出来,后来请教了同学,才发现是DEC指令的机器代码在ALU里面的和COMTROM的不一样,导致执行的不是这个指令,改正之后,终于解决了 心得体会刚开始去上老师的课时,听得一头雾水,因为发现好多地方自己同不懂。然后我就去看课本,同时问老师一些问题,当看到其他同学也问老师问题时,自己也跑过去凑热闹,因为这样可以了解更多的知识。直到后来才发现,原来除了设计自己的指令外,我们需要写MCOMMAND,写CONTROM来解析我们写的指令,这或许可以算得上一个极简单的CPU模型了吧。就是有了

14、微程序控制器,计算机才认识我们自己设计的指令,才知道当读取到什么指令时该执行什么操作。听得多了,看得多了,就渐渐的明白了一些课设的相关知识,然后画指令流程图,设计指令,写程序完成任务,这些几乎都是水到渠成的工作了,很多都可以依葫芦画瓢来完成。本次课设,由于汇编学的很差,期汇编代码是和班级同学的相同,但是自己重新设计了指令周期流程图,经过调试得出的结果其实只要把最基本的原理搞明白了,后续工作开展是非常快的。但在没明白原理前,千万不要畏惧困难,慢慢的一点一点学习,特别是仿真软件的学习和使用,需要花费相当的时间。只要认真了,就有可能实现。软件清单:本次直接使用的是校园网的软件图,只有CROM、ROM

15、、改动较大。其他涉及到微指令字段的,把所有的字段位数改成26位即可LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY ROM IS PORT(DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CS_I:IN STD_LOGIC);END ROM;ARCHITECTURE A OF ROM ISBEGIN DOUT= 001000010

16、0000101 WHEN ADDR=00000000 AND CS_I=0 ELSE 0010001100000000 WHEN ADDR=00000001 AND CS_I=0 ELSE 0001000000000000 WHEN ADDR=00000010 AND CS_I=0 ELSE 0100001100000000 WHEN ADDR=00000011 AND CS_I=0 ELSE 0110000100000000 WHEN ADDR=00000100 AND CS_I=0 ELSE 0111000000000010 WHEN ADDR=00000101 AND CS_I=0 EL

17、SE 0010000011111011 WHEN ADDR=00000110 AND CS_I=0 ELSE 0010000100000101 WHEN ADDR=00000111 AND CS_I=0 ELSE 0010001000000000 WHEN ADDR=00001000 AND CS_I=0 ELSE 0011111000000000 WHEN ADDR=00001001 AND CS_I=0 ELSE 1000000000010000 WHEN ADDR=00001010 AND CS_I=0 ELSE 0011110000000000 WHEN ADDR=00001011 A

18、ND CS_I=0 ELSE 1000000000010110 WHEN ADDR=00001100 AND CS_I=0 ELSE 0110001000000000 WHEN ADDR=00001101 AND CS_I=0 ELSE 0100011100000000 WHEN ADDR=00001110 AND CS_I=0 ELSE 1001000000001011 WHEN ADDR=00001111 AND CS_I=0 ELSE 0011110100000000 WHEN ADDR=00010000 AND CS_I=0 ELSE 1000000000010011 WHEN ADD

19、R=00010001 AND CS_I=0 ELSE 1001000000011000 WHEN ADDR=00010010 AND CS_I=0 ELSE 0101001000000000 WHEN ADDR=00010011 AND CS_I=0 ELSE 1011110100000000 WHEN ADDR=00010100 AND CS_I=0 ELSE 1100011100000000 WHEN ADDR=00010101 AND CS_I=0 ELSE 0010000100000101 WHEN ADDR=00010110 AND CS_I=0 ELSE 1001000000010

20、000 WHEN ADDR=00010111 AND CS_I=0 ELSE 1010100000000000 WHEN ADDR=00011000 AND CS_I=0 ELSE 1001000000010110 WHEN ADDR=00011001 AND CS_I=0 ELSE 0000000000000000;END A;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_SIGNED.all;ENTITY ALU ISPORT( X: IN STD_LOGIC

21、_VECTOR(7 DOWNTO 0); Y: IN STD_LOGIC_VECTOR(7 DOWNTO 0); S2,S1,S0: IN STD_LOGIC; ALUOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; CF,ZF: OUT STD_LOGIC );END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL TEMP1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESSBEGIN IF(S2=0 AND S

22、1=0 AND S0=0) THEN-ADD AA=0&X; BB=0&Y; TEMP=AA+BB;ALUOUT=TEMP(7 DOWNTO 0); CF=TEMP(8); IF (TEMP=100000000 OR TEMP=000000000) THEN ZF=1; ELSE ZF=0; END IF;ELSIF(S2=0 AND S1=0 AND S0=1) THEN -CMP(SUB) ALUOUT=X-Y;IF(XY) THEN CF=1; ZF=0; ELSIF(X=Y) THEN CF=0; ZF=1; ELSE CF=0; ZF=0; END IF; ELSIF(S2=0 AN

23、D S1=1 AND S0=0) THEN -INC AA=0&Y; TEMP=AA+1; ALUOUT=TEMP(7 DOWNTO 0); CF=TEMP(8); IF (TEMP=100000000) THEN ZF=1; ELSE ZF=0; END IF; ELSIF(S2=0 AND S1=1 AND S0=1) THEN -DEC AA=0&Y; TEMP=AA-1; ALUOUT=TEMP(7 DOWNTO 0); CF=TEMP(8); IF (TEMP=000000000) THEN ZF=1; ELSE ZF=0; END IF; ELSIF(S2=1 AND S1=0 AND S0=0) THEN -AND TEMP1=X AND Y; ALUOUT=TEMP1; CF=0; IF (TEMP1=00000000) THEN ZF=1; ELSE ZF=0; END IF; ELSIF(S2=1 AND S1=0 AND S0=1)

温馨提示

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

最新文档

评论

0/150

提交评论