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

下载本文档

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

文档简介

1、一 课设题目:设计一台嵌入式CISC模型计算机(采用定长CPU周期、联合控制方式),并运行能完成一定功能的机器语言程序进行验证,实现方法可从以下4类中任选一个: 连续输入5个有符号整数(8位二进制补码表示,用十六进制数输入),求最大的负数并输出显示。 说明:5个有符号数从外部输入; 一定要使用符号标志位(比如说SF),并且要使用为负的时候转移(比如JS)或不为负的时候转移(比如JNS)指令。二CISC模型机数据通路框图操作控制器和时序产生器状态条件寄存器FCFZALUACDRR0R1R2PCARROMIR具有时间标志的操作控制信号输入设备输出设备嵌入式CISC模型机外部时钟复位信号三操作控制器

2、的逻辑框图指令寄存器IR操作码微地址寄存器地址译码控制存储器地址转移逻辑状态条件微命令寄存器P字段操作控制字段微命令信号说明:在T4内形成微指令的微地址,并访问控制存储器,在T2的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器。四模型机的指令系统和所有指令的指令格式由此可见,本模型机中的指令系统中共有8条基本指令,下表列出了每条指令的格式、汇编符号和指令功能。助记符号指令格式功 能IN1 Rd 1 0 0 0Rd将数据存到Rd寄存器OUT1 Rs1 1 1 1Rs(Rs)LEDMOV1 Rs,Rd1 1 0 0RsRd(Rs)(Rd)CMP Rs,Rd1 0

3、1 0RsRd(Rs)-(Rd),锁存FSINC Rd1 1 0 1Rd(Rd)+1RdMOV Rd,data1 0 0 1RddatadataRdJMP addr1 1 1 0addraddrPCJNC addr1 0 1 1addr若小于,则addrPCTEST Rd0 1 1 1Rd测试是否 0,锁存FS说明:对Rs和Rd的规定:Rs或Rd选定的寄存器0 0R00 1R11 0R2 模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:76 5 4 3 2 1 0符号位尾数五所有机器指令的微程序流程图00PCARPC+102RD MBUSIR00P(1)TESTOUT1JM

4、PINCMOV1JNSCMPMOVIN1070F0E0DOC0B0A0908RdBUSBUSACRsBUSBUSACRsLEDRdBUSBUSACRsBUSBUSACPCARPC+1PCARPC+1PCARPC+1SWBUSBUSRd20060013120403锁存FS0000P(2)ROMBUSBUSPCRdBUSBUSDRROMBUSBUSRdAC+1BUSBUSRd0000000500AC-DR锁存FSFS=1FS=0003020ROMBUSBUSPC0000设计操作控制器单元(即微程序控制器) (1)设计微指令格式和微指令代码表CISC模型机系统使用的微指令采用全水平型微指令,字长为2

5、5位,其中微命令字段为17位,P字段为2位,后继微地址为6位,其格式如下: 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 S1 S0 ALU_B LDAC LDDR WR CS SW_B LED_B LDFR P1 P2 后继微地址由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右代表的微命令信号依次为:LOAD、LDPC、LDAR、LDIR、LDRi、RD_B、RS_B、S1、S0、ALU_B、LDA

6、C、LDDR、WR、CS、SW_B、LED_B、LDFR。微地址微命令字段P1P2后继微地址00000011100110010011110000000100000101001011001001011010001000000011100011100100101100000000000010010000010010111110000001010001011000011011001111100000000000110100001100100111110000000000011110000010011011110000001100010001000111001001101000000000001001

7、111001100100111100000001100101010000100011011110000001000010111110011001001111001100000001100100011000100111100000000000110110000010011011110000100100011101110011001001111000010011001111100001000100011000000000001001010001111000011110000000000100110100011001001011000000000100000010001100100101100000

8、00001100001000011001001111000000000 (2)设计地址转移逻辑电路地址转移逻辑电路是根据微程序流程图3-2中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。由于微地址寄存器中的触发器异步置“1”端低电平有效,与A4A0对应的异步置“1”控制信号SE5SE1的逻辑表达式为:(A5的异步置“1”端SE6实际未使用)SE5= FSP(2)T4SE4=I7P(1)T4SE3=I6P(1)T4SE2=I5P(1)T4SE1=I4P(1)T4六嵌入式CISC模型计算机的顶层电路图七 汇编语言源程序MOV R1,00H 功能:将0赋给R1

9、MOV R2,80H 将80赋给R2L1:IN1 R0 输入一个数放入R0 INC R1 将R1加1 TEST R0 测试R0的符号位,锁存FS JNS L1 为正跳转到L1处CMP R2,R0 (R2)-(R0),锁存FSJNS L1 大于跳转到L1处 MOV1 R0,R2 ( R0)-(R2),锁存FS MOV R0,04H 将04存入R0 CMP R1,R0 累加器(R1)-(R0),锁存FS JNS L2 大于0跳转到L2出输出 JMP L1 否则跳转到L1处L2:OUT1 R2 输出R2的内容八机器语言源程序助记符 地址(十六进制) 机器代码 机器代码十六进制 MOV R1,00H

10、00 10010001 91 01 00000000 00MOV R2,80H 02 10010010 92 03 10000000 80L1:IN1 R0 04 10000000 80 INC R1 05 11010001 D1 TEST R0 06 01110000 70 JNS L1 07 10110000 B0 08 00000100 04CMP R2,R0 09 10101000 A8JNS L1 0A 10110000 B0 0B 00000100 04 MOV1 R0,R2 0C 11000010 C2 MOV R0,04H 0D 10010000 90 0E 00000100

11、04 CMP R1,R0 0F 10100100 A4 JNS L2 10 10110000 B0 11 00010100 14 JMP L1 12 11100000 E0 13 00000100 04L2:OUT1 R2 14 11111000 F8 九机器语言源程序的功能仿真波形图及结果分析执行MOV R1,0 执行MOV R2,8O执行IN1 RO 累加器R1+1 TEST RO,锁存FS 执行JNS L1 将88输入到R0 执行CMP R2,R0,比较大小 执行JNS L1 R2R0,将R0的值赋给R2 执行MOV R0,04 执行CMP R1,R0,看是否输入够了五个数 执行JNS

12、L2,够5个数跳转执行JMP L1,跳转到L1处继续输入 执行IN1 R0,输入数据 INC R1,R1累加1当R1累加到5后 够五个数跳转到L2 执行OUT1,R2,输出R2执行CMP R1,R0 输出为99十故障现象和故障分析故障1:在进行仿真的时候,输入完一个数后程序执行到最后应该跳转到前面执行第二次输入,但我的仿真结果确实直接就跳到最后输出的那一步啦,刚开始以为是自己的跳转微指令写错啦,但经过检查没有发现错误,然后我又检查了ROM里面的代码,也没有发现错误,就在自己非常郁闷的时候,我的同学告诉我,应该把读取指令周期中P1测试前的08改成00,这样在P1测试后才能进行正常的跳转,后来我一

13、该,果然好了。故障2:仿真完了之后没有输出,后来经过老师的帮助才知道自己把微命令写错啦,真是太大意啦。故障3:自己修改了ALU单元里面的内容,然后进行了覆盖,结果仿真完之后还是错啦,然后自己仔细检查自己修改的代码,也没有错误,后来问同学才知道,在修改完之后还要进行整体的编译,没有错误之后才能进行仿真。十一.心得体会刚开始接触到这个课设的时候,自己完全傻了眼,看着老师在PPT上演示那些复杂的电路图,自己顿时感到前所未有的压力,刚开始做的时候自己都不知道从哪里学起,真的是老虎吃天无处下爪啊!后来我自己想了想,我知道自己的基础不行,所以决定先从最基础的看起,我先把计算机组成原理课本上的跟课设有关的内

14、容全都看了一边,看完之后觉得自己对课设有了基本的认识,终于知道要从哪里做起,然后自己又反复的看课设书上的例子,从刚开始的看不懂,到后来的了解,再到后来的深入理解,中间有不懂的地方就和同学一起讨论,然后在问老师,看看自己的理解是否正确,这样就更加深了自己印象,通过几天下来的学习,自己终于知道课设的具体步骤,以及如何实现,先从汇编语言开始,根据老师给的题目来写汇编代码,然后再设计自己的指令格式,设计完之后就要开始写流程图啦,再根据自己的流程图写微指令,然后在制做各个单元,再到最后的连线仿真,在经过一个礼拜的努力之后,自己终于完成了这次的课设,内心真的蛮激动的!这次课设让我学到了很多,任何一件事情看

15、着很难,但当自己付诸实际行动的时候,你就回发现原来它只是一张纸老虎,只要肯努力,你就回成功!十二.软件清单1. 运算器和状态条件寄存器单元a. ALU单元S1S0功能00 TEST测试,锁存FS01 (AC)-(DR),锁存FS10(AC)+1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.all;ENTITY ALU ISPORT( A: IN STD_LOGIC_VECTOR(7 DOWNTO 0); B: IN STD_LOGIC_VECTO

16、R(7 DOWNTO 0); S1,S0: IN STD_LOGIC; BCDOUT: 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(S1,S0)BEGIN IF(S1=0 AND S0=0) THEN-TEST SF=A(7); ELSIF(S1=0 AND S0=1) THEN -CMP(SUB) BCDOUTB) THEN SF=0; ELS

17、E SF=1; END IF; ELSIF(S1=1 AND S0=0) THEN -ADD+1 AA=0&A; TEMP=AA+1; BCDOUT=TEMP(7 DOWNTO 0); SF=TEMP(8); END IF; END PROCESS;END A;b. 状态条件寄存器单元LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS74 ISPORT( LDFR: IN STD_LOGIC; SF: IN STD_LOGIC; FS: OUT STD_LOGIC );END LS74;ARCHITECTURE A OF LS74 ISBEGI

18、N PROCESS(LDFR) BEGIN IF(LDFREVENT AND LDFR=1) THEN FS=SF; END IF; END PROCESS;END A;c.暂存器存储单元LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY LS273 ISPORT( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK: IN STD_LOGIC; O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END LS273; ARCHITECTURE A OF LS273 ISBEGIN PROCESS

19、(CLK) BEGIN IF(CLKEVENT AND CLK=1) THEN O=D; END IF; END PROCESS;END A;2. 通用寄存器单元3个通用寄存器(R0、R1、R2、)以及ALU输出的外部控制信号如下表中所示:R0_BR1_BR2_BALU_B功能1110输出ALU的结果0111输出(R0)1011输出(R1)1101输出(R2)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS273 ISPORT( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK: IN STD_LOGIC; O:

20、 OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END LS273; ARCHITECTURE A OF LS273 ISBEGIN PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK=1) THEN O=D; END IF; END PROCESS;END A;3.1:2分配器单元1:2分配器用来将ALU的运算结果或通用寄存器的内容经3选1多路选择器送到数据总线,或者将ALU的运算结果或通用寄存器的内容送往输出设备显示。功能如下表所示。输入输出WRLED_BX7.0W17.0W27.000XX7.0其它取值XX7.0XLIBRARY IEEE

21、;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FEN2 ISPORT( WR,LED_B:IN STD_LOGIC; X:IN STD_LOGIC_VECTOR(7 DOWNTO 0); W1,W2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END FEN2; ARCHITECTURE A OF FEN2 ISBEGIN PROCESS(LED_B,WR) BEGIN IF(LED_B=0 AND WR=0) THEN W2=X; ELSE W1=X; END IF; END PROCESS;END A;4. 3选1数据选择器单元 输入输出SW

22、_BCSID7.0N17.0N27.0EW7.00xxxxID7.010xxxN27.011xxxN17.0LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX3 ISPORT(ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SW_B,CS:IN STD_LOGIC;N1,N2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX3;ARCHITECTURE A OF MUX3 ISBEGIN PROCESS(SW_B,CS)

23、 BEGIN IF(SW_B=0) THEN EW=ID; ELSIF(CS=0)THEN EW=N2; ELSEEW=N1;END IF; END PROCESS;END A;5. 4选1数据选择器单元 输入输出CDEFW7.00111X17.01011X27.01101X37.01110X47.0LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX4 ISPORT(C,D,E,F: IN STD_LOGIC;X1,X2,X3,X4: IN STD_LOGIC_VECTOR(7 DOWNTO 0);W: out STD_LOGIC_VECTO

24、R(7 DOWNTO 0);END MUX4;ARCHITECTURE A OF MUX4 ISSIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN SEL- W- W- W- W-NULL;-END CASE; IF(SEL=1110) THEN -R0_out W=X1; ELSIF(SEL=1101) THEN -R1_out W=X2; ELSIF(SEL=1011) THEN -R2-out W=X3; ELSIF(SEL=0111) THEN -ALU_out WPC110不装入,也不计数11PC+1LIBRARY IEEE;USE IEEE

25、.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PC ISPORT( load,LDPC,CLR: IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END PC;ARCHITECTURE A OF PC ISSIGNAL QOUT: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(LDPC,CLR,loa

26、d) BEGIN IF(CLR=0) THEN QOUT=00000000; ELSIF(LDPCEVENT AND LDPC=1) THEN IF(load=0) THEN QOUTPC ELSE QOUT=QOUT+1; -PC+1 END IF; END IF; END PROCESS; O=QOUT;END A;7. 地址寄存器单元8. 主存储器单元LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM16 IS PO

27、RT(DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CS:IN STD_LOGIC);END ROM16;ARCHITECTURE A OF ROM16 ISBEGINDOUT=10010001 WHEN ADDR=00000000 AND CS=0 ELSE 00000000 WHEN ADDR=00000001 AND CS=0 ELSE 10010010 WHEN ADDR=00000010 AND CS=0 ELSE 10000000 WHEN ADDR=00000011 AND C

28、S=0 ELSE 10000000 WHEN ADDR=00000100 AND CS=0 ELSE 11010001 WHEN ADDR=00000101 AND CS=0 ELSE 01110000 WHEN ADDR=00000110 AND CS=0 ELSE 10110000 WHEN ADDR=00000111 AND CS=0 ELSE 00000100 WHEN ADDR=00001000 AND CS=0 ELSE 10101000 WHEN ADDR=00001001 AND CS=0 ELSE 10110000 WHEN ADDR=00001010 AND CS=0 EL

29、SE 00000100 WHEN ADDR=00001011 AND CS=0 ELSE 11000010 WHEN ADDR=00001100 AND CS=0 ELSE 10010000 WHEN ADDR=00001101 AND CS=0 ELSE 00000100 WHEN ADDR=00001110 AND CS=0 ELSE 10100100 WHEN ADDR=00001111 AND CS=0 ELSE 10110000 WHEN ADDR=00010000 AND CS=0 ELSE 00010100 WHEN ADDR=00010001 AND CS=0 ELSE 111

30、00000 WHEN ADDR=00010010 AND CS=0 ELSE 00000100 WHEN ADDR=00010011 AND CS=0 ELSE 11111000 WHEN ADDR=00010100 AND CS=0 ELSE 00000000;END A;9. 指令寄存器单元10. 时序产生器单元输入输出备注QCLRT1T2T3T4当CLR变为1且Q的上升沿到来时,T1为1,T2T4为0x000001循环右移1次在当前值的基础上LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE

31、IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER ISPORT( Q,CLR: IN STD_LOGIC; T2,T3,T4: OUT STD_LOGIC );END COUNTER;ARCHITECTURE A OF COUNTER ISSIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN PROCESS(Q,CLR) BEGIN IF(CLR=0) THEN T2=0; T3=0; T4=0; X=00; ELSIF(QEVENT AND Q=1) THEN X=X+1; T2=(NOT X(1) AND X(0);

32、T3=X(1) AND (NOT X(0); T4=X(1) AND X(0); END IF; END PROCESS; END A;11. 操作控制器单元a. 地址转移逻辑电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDR IS PORT( I7,I6,I5,I4:IN STD_LOGIC; FS,T4,P1,P2:IN STD_LOGIC; SE6,SE5,SE4,SE3,SE2,SE1:OUT STD_LOGIC);END ADDR;ARCHITECTURE A OF ADDR ISBEGIN SE6=1; SE5=NOT( F

33、S AND P2 AND T4); SE4=NOT(I7 AND P1 AND T4); SE3=NOT(I6 AND P1 AND T4); SE2=NOT(I5 AND P1 AND T4); SE1=NOT(I4 AND P1 AND T4);END A;b. 微地址寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MMM IS PORT( SE:IN STD_LOGIC; T2:IN STD_LOGIC; D:IN STD_LOGIC; CLR:IN STD_LOGIC; UA:OUT STD_LOGIC );END MMM;ARCH

34、ITECTURE A OF MMM ISBEGIN PROCESS(CLR,SE,T2) BEGIN IF(CLR=0) THEN UA=0; ELSIF(SE=0)THEN UA=1; ELSIF(T2EVENT AND T2=1) THEN UA=D; END IF; END PROCESS;END A;c. 微地址转换器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY F1 IS PORT( UA5,UA4,UA3,UA2,UA1,UA0: IN STD_LOGIC; D:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);EN

35、D F1;ARCHITECTURE A OF F1 ISBEGIN D(5)=UA5; D(4)=UA4; D(3)=UA3; D(2)=UA2; D(1)=UA1; D(0)=UA0;END A;d. 控制存储器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CONTROM ISPORT(ADDR: IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA:OUT STD_LOGIC_VECTOR(5 DOWN

36、TO 0); D:OUT STD_LOGIC_VECTOR(18 DOWNTO 0) );END CONTROM;ARCHITECTURE A OF CONTROM ISSIGNAL DATAOUT: STD_LOGIC_VECTOR(24 DOWNTO 0);BEGIN PROCESS(ADDR) BEGIN CASE ADDR IS END CASE; UA(5 DOWNTO 0)=DATAOUT(5 DOWNTO 0); D(18 DOWNTO 0)=DATAOUT(24 DOWNTO 6); END PROCESS;END A;e. 微命令寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MCOMMAND ISPORT( T2,T3,T4,I3,I2,I1,I0:IN STD_LOGIC; O:IN STD_LOGIC_VECTOR(18 DOWNTO 0); P1,P2,LOAD,LDPC,LDAR,LDIR,

温馨提示

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

评论

0/150

提交评论