1、 课 程 设 计课程名称: 计算机组成原理 设计题目: 一个很简单CPU设计 学 院: 信息工程和自动化 专 业: 计算机科学和技术 年 级: 08级 1班 学生姓名: 张桥 指导老师: 李凌宇 日 期: -9-9 教 务 处 制 课 程 设 计 任 务 书 信息工程和自动化 学院 计算机 专业 08 1 年级学生姓名: 张桥 课程设计题目: 一个简单CPU设计 课程设计关键内容:设计一台完整计算机。首先要确定该计算机功效和用途。在设计中依据功效和用途确定指令系统,定义数据通路,设计每条指令实施步骤,要求利用微程序进行设计,每人最少要求4条CPU指令,能够自己选择;在设计中要求画出指令系统格式
2、并说明各位意义;要求画出数据通路并定义微操作信号;要求画出微程序步骤图。设 计 指 导 教 师 (签字): 教学基层组织责任人(签字): 年 月 日一台模型计算机设计一、教学目标、任务和试验设备融会贯通本课程各章节内容,经过知识综合利用,加深对计算机系统各模块工作原理及相互联络认识,加深计算机工作中“时间空间”概念了解,从而清楚地建立计算机整机概念。二、数据格式和指令系统本模型机是一个8位定点二进制计算机,含有四个通用寄存器:R0R3,能实施11条指令,主存容量为256KB。1 数据格式数据按要求采取定点补码表示法,字长为8位,其中最高位(第7位)为符号位,小数点位置定在符号位后面,其格式以下
3、:数值相对于十进制数表示范围为: 1X1272 指令格式及功效因为本模型机机器字只有8位二进制长度,故使用单字长指令和双字长指令。 LDR Ri,D格式 7 4 3 2 1 00 0 0 0Ri不 用D功效:RiM(D)(2) STR Ri,D格式 7 4 3 2 1 00 0 0 1Ri不 用D功效:M(D)(Ri)(3) ADD Ri,Rj格式 7 4 3 2 1 00 0 1 0RiRj功效:Ri (Ri) (Rj)(4) SUB Ri,Rj格式 7 4 3 2 1 00 0 1 1RiRj功效:Ri (Ri) (Rj)(5) AND Ri,Rj格式 7 4 3 2 1 00 1 0 0
4、RiRj功效:Ri (Ri) (Rj)(6) OR Ri,Rj格式 7 4 3 2 1 00 1 0 1RiRj功效:Ri (Ri) (Rj)(7) MUL Ri,Rj格式 7 4 3 2 1 00 1 1 0RiRj功效:Ri (Ri) (Rj)(8) 转移指令格式 7 4 3 2 1 00 1 1 1条件不 用D功效: 条件码 00 无条件转移 PC D01 有进位转移 PC D10 结果为0转移 PC D11 结果为负转移 PC D IN Ri,M j格式 7 4 3 2 1 01 0 0 1RiMj其中M j为设备地址,能够指定四种外围设备,当M j=01时,选中试验箱二进制代码开关。
5、功效: Ri (M j) OUT Ri,M j格式 7 4 3 2 1 01 0 1 0RiMj当M j=10时,选中试验箱显示灯。功效: (M j) Ri HALT(停机指令)格式 7 4 3 2 1 01 0 1 1不用不用 功效: 用于实现停机。 三、总体设计总体设计关键任务是(1) 选定CPU中所使用产要器件;(2) 依据指令系统、选择器件和设计指标,设计指令流数据通路;(3) 依据指令系统、选择器件和设计指标,设计数据流数据通路。计算机工作过程,实质上是不一样数据流在控制信号作用下在限定数据通路中进行传送。数据通路不一样,指令所经过操作过程也不一样,机器结构也就不样,所以数据通路设计
6、是至关关键。所谓数据通路设计,也就是确定机器各逻辑部件相对位置总框图。数据远路设计,现在还没有很标准方法。关键是依据设计者经验,并参考现有机器三种经典形式(单总线、双总线或三总线结构),依据指令系统要求,可采取试探方法来完成。其关键步骤以下: (1) 对指令系统中各条指令进行分析,得出所需要指令周期和操作序列,方便决定各器件类型和数量。 (2) 组成一个总框图草图,进行各逻辑部件之间相互连接,即初步确定数据通路,使得由指令系统所包涵数据通路全部能实现,并满足技术指标要求。 (3) 检验全部指令周期操作序列,确定所需要控制点和控制信号。 (4) 检验所设计数据通路,尽可能降低成本,简化线路。以上
7、过程能够反复进行,方便得到一个很好方案。图1给出了一个没有考虑乘法除法指令操作总框图参考方案,注意,在此方案确定以后,应该检验所选择各个器件是否满足数据通路要求。实际上,数据通路设计和器件选择应同时进行而不能分离地工作。其次,接入总线器件全部要有三态输出,方便和总线连接。另外,在信息传送过程中应该注意器件原码和反码输出配合关系。图1所表示方案采取单总线结构,使用很多器件全部是三态输出,这种方案便于总线连接和扩展,但缺点是指令和数据传送全部要经过总线,所以对总线使用权就要分配适当。另外,实施算术逻辑指令时,先将第一个操作数由通用寄存器Ri送至缓冲寄存器DR1,然后再由通用寄存器Rj取第二个操作数
8、送至缓冲寄存器DR2,以后送往ALU进行运算。显然,实施条算术逻辑指令时间对应要长部分。 图1 模型机数据通路框图四、微程序控制器数据通路框图旦确定,指令流和数据流通路也就随之最终确定,所以运算器和控制器大部分结构也就确定下来了。图1中各功效器件上还标注了控制点及其控制信号这些控制信号就是微程序控制器进行设计依据。1微指令格式微指令格式提议采取水平型微指令,微命令编码采取直接表示法和分段直接译码法相结合混合表示法,以缩短微指令长度。后继地址采取断定方法。微指令格式以下:控制字段判别字段下址字段同学们应依据本模型具体情况来确定各字段长度。2 微程序控制器依据微指令和微程序长度,确定控制存放器需选
9、择几片EPROM(2716)用位扩展方法组成。3微程序设计将机器全部指令系统采取微指令序列实现过程,叫做微程序设计。一条机器指令对应一个微程序,11条机器指令应该对应11个微程序。微指令格式确定后,微程序横向设计在于正确地选择数据通路,纵向设计在于确定后继微指令地址实际上,微程序设计关键在于纵向设计,即怎样确定下一条微指令地址。通常做法是先确定微程序分支处微地址,因为微程序分支处需要进行判别测试。这些微地址确定以后,就能够在一个“微地址表”中把对应微地址单元填进去,以免后面设计中反复使用而未发觉,以致造成设计错误。五、输入输出输入输出是人机联络关键手段,输入可采取开关、键盘等方法,输出可采取字
10、符显示或打印输出等方法。考虑到成本和设备原因,本模型机采取最简单二进制开关输入和发光二极管显示方法,换句话说,本模型机中只使用两种“外部设备”:一个是二进制代码开关,它作为输入设备;另一个是发光二极管,它作为输出设备。本设计为了节省器件,输入输出时能够不设置专门数据缓冲寄存器。比如输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入信息也就不变。输出时,将输出数据送到数据总线BUS上,驱动发光二极管进行显示。假如采取正规输入输出方法,可采取对应器件组成接口电路。实习经验首先因设计出ALU计算器模块、R4R0零时寄存器选择模块、数据通路模块、存放器模块、计数器模块,最终在依据之
11、前设计所需信号和结果设计安排cpu控制模块,这么设计思绪清楚,省时省力。而我在试验室采取了完全相反步骤,先设计了cpu控制模块,最终依据控制模块设计其它模块,使得其它模块无法正常匹配cpu模块,不停地修正cpu模块,前后重写代码4次之多严重影响了试验进程。此经验教训应该谨记。试验步骤:试验步骤会根据正确次序进行,立即cpu控制模块设计放在最终,先说明其它模块设计。ALU计算模块:设计思想: 预算模块要求5种运算,而且运算数据要求补码表示范围在1X127先将AND运算和OR运算电路图做出来,这个比较简单:运算:OR运算:接着是加减法器设计。加减法器:设计思想:符号浮点数加减法和符号幅值加减法相同
12、,但两个相关键区分,首先因为有多个需要尤其表示,所以浮点数加法算必需明确地检测出操作数是否为0,正负无穷,或NaN(not a number),移位,对齐,相加减方法能处理大部分浮点数加减法。但它只能对规格化浮点数进行处理,当操作数为0,正负无穷,或NaN时,浮点数算法必需作特殊处理。所以,我们能够从符号加减法器开始,然后对结果进行修改,使之成为符号浮点加减法器。不过以后发觉maxplusII中有加减器运算模块,设置好初值后能够直接拿来使用,原件及具体设置以下:原件:Cout有效8位操作数 有符号初值设置:只有三处需要设置:打开cout输出。LPM_RERERSENTATION=”SIGNED
13、”表示操作数为符号数。LPM_WIDTH=8表示操作数为8位。乘法器设计:一样在maxplusII中找到了乘法器原件,设置初值后便可直接使用。具体设置及以下:有符号运算位输出结果必需和操作数相匹配位操作数有符号运算需要改动地方有三处:LPM_REPRESENTATION=”SIGNED”设置运算为符号赋值运算。LPM_WIDTHA=8输入操作数A为8位。LPM_WIDTHB=8输入操作数B为8位。LPM_WIDTHS=16输出结果为16位,此处值必需和输入值相匹配。因为该cpu只显示8位值,所以我只取成法器输出结果高8位结果。最终ALU :因为设计需要,必需在每次预算实施前对运算方法进行存放,
14、这么能够节省8个反复cpu状态,同时,为了选择正确结果输出,需要一个选择器进行筛选。在maxplusII中发觉多路选择器件LPM_MUX,设置初值后能够直接取用;电路及初值设置以下:运算器结果选择器运算方法存放器路输入选择位结果输出LPM,_MUX初值设置:LPM_SIZE=44路输入选择LPM_WIDTH=88位结果输出数据通路模块: 数据通路模块作用是控制数据在总线上传输,包含个寄存器载入、释放,ALU运算器操作数输入、结果输出等部分R4R1选择模块:选择模块功效在这个试验中很关键,其能够大量降低cpu控制模块状态设置,选择器最基础功效有依据指令要求确定特定临时寄存器释放和载入。同时依据设
15、计需要,还要有存放备选数据能力,避免被总线上数据影响最终选择结果。设计思绪:有四个临时寄存器,能够由两位决定二进制值决定各个寄存起编号,可由24译码器实现此功效。选择器要能起到选择正确次序是临时寄存器工作作用,所以要有控制端控制第一次序操作临时寄存器和第二时间操作临时寄存器(该cpu对寄存器操作最多只有两个操作步)。最终要决定对所选临时寄存器是载入还是释放,或既不载入也不释放。依据这一思绪设计选择模块以下:载入选择:选择寄存器存放预选值置有效是否进行操作选择操作次序选择释放选择:置有效设计思绪:依据试验要求,数据通路需要一个ALU运算模块,两个数据寄存器,其功效是保留操作数并将得到操作数直接送
16、入ALU预算模块进行预算。4个零时寄存器R4R1,一个数据选择模块,控制外部数据输入计数器。设计图下:释放选择载入选择数据总线ALU模块外部数据输入临时寄存器临时寄存器临时寄存器数据寄存器ALU模块数据总线存放器模块:存放器模块作用即存放程序指令和程序需要各项数据,和在合适时机读出个指令和数据。包含一个PC计数器(program counter)一个AR寄存器(adress register),一个内存芯片(LPM_RAM_IO)。设计思绪:CPU要依据指令次序实施对应程序,在内存中,指令根据次序配列存放在对应内存单元中,每实施完一条指令,PC自动加一,将地址数据送给AR,RAM取得AR中地址
17、数据,放出对应地址指令或操作数。读取指令按此步骤循环。PC能够用74161计数器完成其功用,由74244控制器数据在争取时间传给AR,AR可用74273制作,只用于存放RAM中下一指令或操作数内存地址。内存由LPM_RAM_IO设置初值后制作完成。LPM_RAM_IO设置:内存数据写实能读实能内存大小地址数据输入地址数位宽数据位宽时钟信号LPM_FILE=”内存数据,能够将程序写进.mif文件,然后在此设置对应.mif文件地址则能够在内存中读取该文件LP,M_NUMWORDS=256内存容量大小,试验要求256KLPM_WIDTH=8数据显示位宽LPM_WIDTHAD=8地址显示位宽电路设计图
18、:各输出管脚 各输入管脚 PC计数器 ARRAM控制器模块控制器模块是CPU设计精髓所在,其功用是控制全部模块能够正确实施内存中程序代码。控制器模块要求能够翻译指令码为和之对应机器码语言。能够在正确时间放出有效信号,关闭无效信号,协调各模块之间按工作配合。设计思绪:ROM模块:首先依据试验要求,和之前设计各模块对信号控制要求,画出CPU状态图:P FTHCHT1 FTEHCH2 THETCH3 FETHC2FETHC2FETHC2FETHC2FETHC2FETHC2FETHC2FETHC2FETHC2FETHC2FETHC2PCARPC+1PC-ARPC+1PC-ARPC+1RAM-RiRi-
19、ALURi-ALURi-ALURi-ALURiMDR2-RjDR2-RjDR2-RjDR2-RjDR2-RjAR-MAR-MSTOPM-RiRi-MDR1-RiDR1-RiDR1-RiDR1-RiDR1-Ri 从这状态图中能够看出,有很多反复状态,尤其是5个运算指令各个状态完全相同,唯一不一样是每个状态第一个步骤需要对运算器输入不一样运算选择以确定不一样运算方法,所以能够考虑将5个运算指令后多个状态整合,以降低cpu状态。更改后状态图:PALU-IRALU-IRALU-IRALU-IRALU-IR FETHCH1 FETCH2 FETHC2PPCARPC+1CL-IRCB-IRARRiPC-A
20、RPC+1FETHC2ARRiPC-ARPC+1FETHC2AR-MARRiFETHC2 FETCH3CL-IRCB-IRSTOPFETHC2Ri-MMOUT; B00000 =B001;-SW-PC 1% B00001 =B010;-PC-AR PC+1 2% B00010 =B000;-RAM-IR% %CHUSHI 3% B10000 =B110;%CLCTB011;%ARB110;%ARB001;%MB110;%CLCTB111;%ARB011;%ARB001;%RiB111;%ALU_SB011;%DR1B111;%DR2B001;%RiB011;%DR1B011;%DR1B011;
21、%DR1B011;%DR1B101;%ARB001;%PCB001;%PC+1% %JUMP 19% B11001 =B010;%CLCTB001;%RiB001;%CLCTB001;%MiB001;%STOP&% %HALT 22% END TABLE;(SW_BUS,PC_BUS,R_LOAD,R_BUS,ALU_BUS,A_S,S1,S0)=OUT26.19;(S_EN,CB,CL,LDDR1,LDDR2,RD,WE,ARLD,PCLOAD,PCINC,STOP,IRLD,P,P1,AD4,AD3,AD2,AD1,AD0)=OUT18.0;END;跳转条件电路:跳转条件电路要求在符合跳转
22、条件时,更改下址,改变为操作,完成跳转。设计思绪:跳转和不调转下址只有一位不一样,只要条件满足,只需更改那一位下址代码即可。首先跳转条件有四种,跟据条件转为信号能够用24译码器实现。然后经过逻辑电路实现选择确定跳转。设计电路:控制模块总图:寄存器跳转判定时序电路最终总图:控制器模块数据通路模块显示模块试验总结这次CPU设计试验是一台模型机设计. 此模型机是个八位定点二进制计算机,含有四个通用寄存器:R0R3,能实施11条指令,主存容量为256B。数据格式是定点补码表示法,字长为八位,其中最高位为符号位,小数点位置定在符号位后面。目标是综合利用前面所学内容,加深对计算机系统各模块工作原理及相互联
23、络认识,取得工和设计和组装调试实践和经验.模型机可划分为以下四个相对独立功效模块:运算器、存放器和系统总线;时序产生器;微程序控制器;显示模块,然后一一设计完成。这次试验微程序控制部分和数据通路部分有很大改善,设计通路时要用四个寄存器,微程序模块也做了对应改变.指令码用了25位,要实现11条指令.这是比较关键,也比较复杂,需要耐心细致地写好VHDL语言.调试过程再慢慢修改犯错地方.实习教训:试验中出现错误很多,最严重错误是先设计了总控制器,然后再设计其它电路,这么做法让我走了很多弯路,不停在控制器和数据通路模块之间修改徘徊,控制其模块修改了不止4次,数据通路模块不止一次重写,重新编译。 以后次试验中我明白不仅仅是专业知识,更深刻体会到,正确设计步骤和设计理念对一个设计进程严重影响。不仅仅在设计上,再很多其它方面也是如此。任何事情全部要有一个争取计划,争取方向,不能够走任何捷径,没有不回跑就会飞奇迹出现。结束语 试验已经完成,但在试验中很多问题仍然在脑中徘徊。试验中得到很多同学帮助,大家在一起认真讨论,仔细判定各个信号作用,分析各个模块逻辑电路组成。这次对比各自模块优劣,充足表现了共同学习,共同进步精神。 以后次实践我还领悟到只有将所学知识真正应用到实际操作中,才能愈加好地掌握,才能不停发觉自已存在问题,从而不停进步.