计算机组成原理课设论文.doc

上传人:scccc 文档编号:11360906 上传时间:2021-07-30 格式:DOC 页数:38 大小:4.42MB
返回 下载 相关 举报
计算机组成原理课设论文.doc_第1页
第1页 / 共38页
计算机组成原理课设论文.doc_第2页
第2页 / 共38页
计算机组成原理课设论文.doc_第3页
第3页 / 共38页
计算机组成原理课设论文.doc_第4页
第4页 / 共38页
计算机组成原理课设论文.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《计算机组成原理课设论文.doc》由会员分享,可在线阅读,更多相关《计算机组成原理课设论文.doc(38页珍藏版)》请在三一文库上搜索。

1、计算机组成原理课程设计题 目: 计算机原理课程设计 学 院: 计算机科学与工程学院 专 业: 计算机科学与技术 姓 名: 孤狼 学 号: 1100310315 指导教师: 2014年03月 20 日目录一.课程设计选题和完成内容2二、系统的总体设计22.1 嵌入式CISC模型机的数据通路框图22.2 系统的操作控制器的逻辑框图22.3模型机的指令格式32.4编写汇编源程序52.5最终机器码.5三、时序产生器5四、 微程序控制器的设计64.1设计微指令流程图64.2 设计微指令格式和微指令代码表84.3设计地址转移逻辑电路10五、单元电路设计105.1模型机顶层电路设计.115.2模型机crom

2、单元电路设计.12六、设计过程所遇到的问题及解决记录136.1JNS无法完成循环跳转.136.2 STO( STO R2 (R0) )存储位置每次都为00H.13七、测试及结果分析错误!未定义书签。八、心得体会总结16九、附录16 各个单元的电路设计或VHDL源文件36一.课程设计选题和完成内容选题:本设计选择题目为A类第一题题目:设计一台嵌入式CISC模型计算机 采用定长CPU周期、联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下: A类(最高成绩为“优”): 输入包含5个整数(有符号数)的数组M,输出所有负数的平方和。(非卓越班) 输入包含5个整数(有符号

3、数)的数组M,输出最大负数的绝对值。(非卓越班) 输入包含10个整数(无符号数)的数组M,输出众数(出现次数最多的数)及其出现的次数。(卓越班) 输入包含10个整数(无符号数)的数组M,输出中位数。(卓越班) 说明:A类题目的嵌入式模型计算机内必须设计和使用RAM存储器读写数据,相应地需要设计对RAM存储器数据的读写指令,以及对RAM中数组操作必须的寄存器间接寻址方式等。 B类(最高成绩为“良”): 输入5个整数(有符号数),输出所有负数的平方和。(非卓越班) 输入5个整数(有符号数),输出最大负数的绝对值。(非卓越班) 输入5个整数(有符号数),输出它们的平均值,以及小于此平均值的数的个数。

4、(卓越班) 要完成的内容:1. 完成系统的总体设计,画出模型机数据通路框图;2. 设计微程序控制器(CISC模型计算机)的逻辑结构框图; 3. 设计机器指令格式和指令系统; 4. 设计时序产生器电路; 5. 设计所有机器指令的微程序流程图; 6. 设计操作7. 的所有单元电路,并用VHDL语言(也可使用GDF文件-图形描述文件)8. 对模型机中控制器单元;设计模型机的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路。9. 由给出的题目和设计的指令系统编写相应的汇编语言源程序;9. 根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计 到模型机中的 ROM中去; 1

5、0. 使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软 件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。)二、系统的总体设计2.1 嵌入式CISC模型机的数据通路框图 图2-12.2 系统的操作控制器的逻辑框图2.3模型机的指令格式这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。 此模型的系统共设计了共有10 条指令,分别为:IN,MOV,LAD,STO,INC,JNS, ADD,MUL, OUT,TEST。2.3.1具体指令格式如下

6、:微地址助记符号指令格式指令功能15-1211 109 87 -0000001MOV Rd,im0001xxRdim立即数imRd000010INT Rd0010xxRdxx将输入数据存到Rd寄存器000011STO Rs,(Rd)0011RsRdxx(Rs)-(Rd)将Rs的内容存到Rd地址中000100INC Rd0100xxRdxx(Rd)+1Rd锁存SF和ZF000101DEC Rd0101xxRdxx(Rd)-1Rd锁存SF和ZF000110TEST Rd0110xxRdxx 测试 (Rd)是否为负,锁存SF000111JNS addr0111xxxxaddr若不为负数,则addrP

7、C001000LAD(Rs),Rd1000RsRdxx(Rs)-Rd 将Rs地址的内容读到Rd 001001MUL Rs Rd1001RsRdxx(Rs)*(Rd)-Rd001010ADD Rs,Rd1010RsRdaddr(Rs)+(Rd)-Rd001011OUT Rs1011Rsxxxx(Rs)OUTBUS 2.3.2对Rs和Rd的规定:Rs或Rd选定的寄存器0 0R00 1R1 1 0R2 1 1 R3 2.3.3模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下: 7 6 5 4 3 2 1 0符号位 尾数 2.4编写汇编源程序我们要实现的功能是对连续输入的5个数据并存

8、储到RAM的连续的存储单元中,然后再从RAM中将这5个数据依次读取出来并作判断是否为数,将5个数中所有的负数其求平方和,并对其结果进行显示等功能,从而得到一个简单的复杂指令模型机所实现的功能和结果/根据要求编写如下汇编源程序:MOV R0,00H ;数据存放在RAM中的地址MOV R1,4H ;计数 从4H(4)开始,到-1时结束 L1: INT R2 ;输入一个数到R2STO R2,(R0) ;将输入的数存放到RAM的(R0)地址INC R0 ;RAM地址指针+1DEC R1 ;计数-1TEST R1 ;测试计数是否到达5次,(R1)是否为负数JNS L1 ;根据SF符号标志的判断,若不为负

9、数,则跳转 MOV R0 00H ;当5个数输入存储完成后,重新初始化RAM指针MOV R1 4H ;重置计数 L2: LAD (R0) R2 ;将(R0)地址的数取出送到R2中TEST R2 ;测试取出的数是否为负数 JNS L3 ;若不为负数,则跳转到L3MUL R2,R2 ;若为负数,则求平方 ADD R2,R3 ;再求平方和,把结果送到R3 L3: INC R0 ;RAM地址+1 DEC R1 ;计数-1+TST R1 ;测试计数是否到达5次,(R1)是否为负数JNS L2 ;为正数,计数还不到5次,则跳转到L2 OUT R3 ;计数到达5次,则将最后结果输出2.5 最终机器码为:地址

10、助记符(汇编)机器代码作用00 MOV R0,00H0001000000000000数据存放在RAM中的地址00H开始01 MOV R1,4H0001000100000100计数 从4H(4)开始,到-1时结束02L1:INT R20010001000000000输入一个数到R203 STO R2,(R0)0011100000000000将输入的数存放到RAM的(R0)地址04 INC R00100000000000000RAM地址指针+105 DEC R10101000100000000计数-106 TEST R10110000100000000测试计数是否到达5次,(R1)是否为负数,锁存

11、SF07 JNS L1 0111000000000010根据SF符号标志的判断,若不为负数,则跳转08 MOV R0,00H0001000000000000当5个数输入存储完成后,重新初始化RAM指针09 MOV R1,4H0001000100000100重置计数0AL2:LAD(R0),R21000001000000000将(R0)地址的数取出送到R2中0B TEST R20110001000000000测试取出的数是否为负数,锁存SF0C JNS L30111000000001111若不为负数,则跳转到L30D MUL R2,R21001101000000000若为负数,则求平方0E AD

12、D R2,R31010101100000000再求平方和,把结果送到R30FL3:INC R00100000000000000RAM地址+110 DEC R10101000100000000计数-1+11 TEST R10110000100000000测试计数是否到达5次,(R1)是否为负数,锁存SF12 JNS L20111000000001010为正数,计数还不到5次,则跳转到L213 OUT R31011110000000000计数到达5次,则将最后结果输出三时序产生器 T1、T2、T3、T4与CLR、Q之间的关系图如下:四微程序控制器的设计 微程序控制器的设计过程包括: (1)根据微处

13、理器结构图、指令格式和功能设计所有机器指令的微程序流程图,并确定每 条微指令的微地址和后继微地址; (2)设计微指令格式和微指令代码表; (3)设计地址转移逻辑电路; (4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制 存储器; (5)设计微程序控制器的顶层电路(由多个模块组成)。4.1设计微指令流程图根据微处理器结构图、指令格式和功能设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址; 00PC-ABUS( I ) ,RD ROMIBUS-IR ,PC +1 P(1 )MOV INT STO INC DEC TEST JNS LAD MUL A

14、DD OUT 01 02 03 04 05 06 07 08 09 0A 0BRd-YY+1-Rd锁存SF,ZF测试Rd的最高位,锁存到SF中Rs-XRd-YX*Y-Rd锁存SF,ZFRs-XRd-YX+Y -Rd锁ZF,SFROM-BUSBUS-PCIR(A)-RdSW-RdRd-ARRs-ARRd-YY+1-Rd锁存SF,ZF 0E 0C RD RAMDBUS-RdP(2)00Rs-DBUSWE RAM 00 00 00 00 00 00 00 00 SF=1 SF=0 00 10IR(A)-Rd 00 004.2 设计微指令格式和微指令代码表指令流程图设计完成后,开始设计微指令格式和微指

15、令代码表,按照要求,CISC模型机系统使用的微指令采用全水平型微指令,字长为26位,其中微命令字段为18位,P字段为2位,后继微地址为6位,其格式如下:按照此格式并根据设计的指令流程图,可以得到:由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右代表的微命令信号依次为:LOAD、LDPC、LDAR、LDIR、LDRi、LDPSW、RS_B、S2、S1、S0、ALU_B、SW_B、LED_B、RD_B、CS_B、RAM_B、CS_I、ADDR_B。CLRLOADLDPC功能0XX将PC清010BUS-PC110不装入,不计数11PC+1S2S1S0功能0

16、00X+Y,修改ZF,SF010Y+1,修改ZF,SF011Y-1,修改ZF,SF111X*Y,修改ZF,SF1000&Y,修改ZF,SF110-Y4.3设计地址转移逻辑电路地址转移逻辑电路是根据微程序流程图中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。地址转移逻辑电路中异步置“1”信号SE6SE1表达式的确定与P字段测试时转移微地址的确定密切相关.由于微地址寄存器中的触发器异步置“1”端低电平有效,与A4A0对应的异步置“1”控制信号SE5SE1的逻辑表达式为:(A5的异步置“1”端SE6实际未使用)SE6 = 1;SE5 = NOT(NOT(SF)

17、 AND P2 AND T4);SE4 = NOT(I4 AND P1 AND T4);SE3 = NOT(I3 AND P1 AND T4);SE2 = NOT(I2 AND P1 AND T4);SE1 PC地址的关系,开始时随便设置了IR-PC的地址问题解决:后来了解到改地址与P(2)测试相关,改为010000后,跳转成功。6.2 STO( STO R2 (R0) )存储位置每次都为00H 问题所在:STO指令中开启ADDR_B,关ALU_B,导致取地址来自于ROM内的机器码后八位addr,该机器码后八位为00H。 问题解决:微指令中关ADDR_B,开ALU_B,ALU设置直接输出Y,此

18、时Y值来源于(R0),即为目的地址。七、测试及结果分析根据设计的汇编程序和对应的机器代码,对设计的模型机进行仿真测试,并分析结果:7.1下图显示了RAM地址的初值设置00H,循环计数设置04H,第一个循环读入40H至R2并存进RAM的过程。 7.2下图截取了其中3个循环,分别读进数40H,FCH,FEH.7.3下图为5次循环后读进的5个数,如图从地址00H开始存放。7.4下图为一次从RAM中读取负数,并计算平方并加到R3的过程7.5下图为3个负数从RAM中读取判断,求得平方并求和的过程。FC*FC+FE*FE+FF*FF=15H.九、心得体会通过课程设计的学习设计过程,我从对CISC模型机的组

19、成和工作原理毫不了解,到慢慢的独立设计完成,并实现了预期功能。这次课程设计我学会Altera MAX+plus EDA软件的使用,熟悉了VHDL语言,并能使用其进行期间的编程,当然,也能用图形描述文件(.Gdf)进行顶层电路的设计。最终能用EDA软件设计一个能完成一定功能的模型计算机,并通过功能仿真和在EDA实验平台上运行一个程序来验证模型机设计的正确性。在设计的过程中,我了解了每个机器码,每个微指令的作用,懂得模型机的原理。此次的课程设计让我收获的不单单有课程的知识,也学会了自主学习、学会了细心解决问题,培养了自己做事的耐心活认真的态度,培养了调试纠错的良好素养,更有的就是加强了自己的实践动

20、手能力。 十、附录(VHDL源文件)8.1ROM的设计(保存汇编源代码对应的机器码以及地址)程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM ISPORT(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 ISBEGI

21、NDOUT =0001000000000000 WHEN ADDR=00000000 AND CS_I = 0 ELSE-MOV R0,10H 0001000100000100 WHEN ADDR=00000001 AND CS_I = 0 ELSE-MOV R1,4H 0010001000000000 WHEN ADDR=00000010 AND CS_I = 0 ELSE-L1:INT R2 0011100000000000 WHEN ADDR=00000011 AND CS_I = 0 ELSE-STO R2,(R0) 0100000000000000 WHEN ADDR=0000010

22、0 AND CS_I = 0 ELSE-INC R0 0101000100000000 WHEN ADDR=00000101 AND CS_I = 0 ELSE-DEC R1 0110000100000000 WHEN ADDR=00000110 AND CS_I = 0 ELSE-TEST R10111000000000010 WHEN ADDR=00000111 AND CS_I = 0 ELSE-JNS L1 0001000000000000 WHEN ADDR=00001000 AND CS_I = 0 ELSE-MOV R0 10H 0001000100000100 WHEN ADD

23、R=00001001 AND CS_I = 0 ELSE-MOV R1 4H 1000001000000000 WHEN ADDR=00001010 AND CS_I = 0 ELSE-L2:LAD(R0) R2 0110001000000000 WHEN ADDR=00001011 AND CS_I = 0 ELSE-TEST R2 0111000000001111 WHEN ADDR=00001100 AND CS_I = 0 ELSE-JNS L3 1001101000000000 WHEN ADDR=00001101 AND CS_I = 0 ELSE-MUL R2,R2 101010

24、1100000000 WHEN ADDR=00001110 AND CS_I = 0 ELSE-ADD R2,R3 0100000000000000 WHEN ADDR=00001111 AND CS_I = 0 ELSE-L3:INC R0 0101000100000000 WHEN ADDR=00010000 AND CS_I = 0 ELSE-DEC R1 0110000100000000 WHEN ADDR=00010001 AND CS_I = 0 ELSE-TEST R1 0111000000001010 WHEN ADDR=00010010 AND CS_I = 0 ELSE-J

25、NS L2 1011110000000000 WHEN ADDR=00010011 AND CS_I = 0 ELSE-OUT R3 0000000000000000;END A;8.2 ALU(运算器)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;1USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALU ISPORT( X: IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y: IN STD_LOGIC_VECTOR(7 DOWNTO 0); S2,S

26、1,S0: IN STD_LOGIC; ALUOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; SF: OUT STD_LOGIC );END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGIN PROCESS BEGIN IF(S2=0 AND S1=0 AND S0=0) THEN-ADD AA=0&X; BB=0&Y; TEMP=AA+BB; ALUOUT=TEMP(7 DOWNTO 0); SF=TEMP(7); ELSIF(S2=0 AND S1

27、=1 AND S0=0) THEN -INC AA=0&Y; TEMP=AA+1; ALUOUT=TEMP(7 DOWNTO 0); SF=TEMP(7); ELSIF(S2=0 AND S1=1 AND S0=1) THEN -DEC AA=0&Y; TEMP=AA-1; ALUOUT=TEMP(7 DOWNTO 0); SF=TEMP(7);ELSIF(S2=1 AND S1=1 AND S0=1) THEN-MULAA=0&X;BB=0&Y;TEMP=AA*BB;ALUOUT=TEMP(7 DOWNTO 0);ELSIF(S2=1 AND S1=0 AND S0=0) THEN-TEST

28、AA=0&Y;SFBUS ALUOUT=Y; ELSE ALUOUT=00000000 ; SF=0; END IF; END PROCESS;END A;8.3状态条件寄存器只保留了用到的SFLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PSW ISPORT( S,LDPSW: IN STD_LOGIC; SF: OUT STD_LOGIC );END PSW;ARCHITECTURE A OF PSW ISBEGIN PROCESS(LDPSW) BEGIN IF(LDPSWEVENT AND LDPSW=1) THEN SF=S; END

29、 IF; END PROCESS;END A;8.4微程序控制器内部结构:( 1 ) 地址转移逻辑电路程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDR ISPORT(I4,I3,I2,I1: IN STD_LOGIC;SF,P2,P1,T4: IN STD_LOGIC;SE6,SE5,SE4,SE3,SE2,SE1: OUT STD_LOGIC);END ADDR;ARCHITECTURE A OF ADDR ISBEGINSE6 = 1;SE5 = NOT(NOT(SF) AND P2 AND T4);SE4 = NOT(I4 A

30、ND P1 AND T4);SE3 = NOT(I3 AND P1 AND T4);SE2 = NOT(I2 AND P1 AND T4);SE1 = NOT(I1 AND P1 AND T4);END A;(2)微地址寄存器微地址寄存器uar的内部结构:程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MMM ISPORT(SE,T2,D,CLR: IN STD_LOGIC;UA: OUT STD_LOGIC);END MMM;ARCHITECTURE A OF MMM ISBEGINPROCESS(CLR,SE,T2)BEGINIF(CL

31、R=0) THENUA = 0;ELSIF(SE=0) THENUA = 1;ELSIF(T2EVENT AND T2=1) THENUA = D;END IF;END PROCESS;(3)微地址转换器F1程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_116 ALL; ENTITY F1 IS PORT( UA5,UA4,UA3,UA2,UA1,UA0:IN STD_LOGIC; D:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ); END F1; ARCHITECTURE A OF F1 IS BEGIN D(5)=UA5; D(4)=UA4; D(3)=UA3; D(2)=UA2; D(1)=UA1; D(0) DATAOUTIR PC+1WHEN 000001 = DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT=10000000001101111100000000;-OUTWHE

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1