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

下载本文档

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

文档简介

1、组成原理课程设计 指导教师: 学生班级: 计科 11200 学生姓名: 学 号: 班内序号: 课设日期: 2015/6/222015/7/3 目 录一、设计目的.3二、设计要求.3三、设计方案.3四、设计过程.4五、程序与调试.11六、结果及分析.13七、收获、体会及建议.15一、设计目的:1主要掌握微程序控制结构计算机的设计方法,通过对机器指令和相对应微程序的设计,加深对微程序控制器的理解,加深对微程序设计特点的了解,加深对计算机各部件的理 解以及对整机结构的理解。2掌握几种寻址方式的控制执行过程。3了解多累加器计算机的特点。4熟悉vhdl语言的编程。二、设计要求:1运算器采用单累加器多寄存

2、器结构2指令系统:16条以上指令,有i/o指令,外部设备统一编址。3内存寻址范围1k以上字节寻址方式: 寄存器直接寻址 寄存器间接寻址 直接寻址 立即数寻址4可执行从键盘上输入的十进制两位数与两位数加法程序并打印输入的数据及结果或 实现两数相加通过数码管显示结果。三、设计方案: 1设计整机逻辑框图首先设计整机逻辑框图,并分析各主要部件中所使用的关键器件,彻底理解主要芯片的工作原理。根据设计要求,对实验仪硬件模块进行逻辑剪辑组合,便可设计出该实验计算机的整机逻辑框图。为利于调试,应在逻辑框图上表明各器件的控制信号及必要的输出信号。2指令系统和指令执行流程设计 指令系统需确定实验计算机的指令系统具

3、体由哪里指令组成,包括哪几种类型指令,指令操作数有哪几种寻址方式,以及指令编码等。 指令执行流程 一条指令从内存取出到执行完,需要若干个机器周期(节拍)。任何指令的第一个机器周期都是“取指令周期”,或称为公操作周期。而一条指令共需几个机器周期取决于指令在机内实现的复杂程度。 3微操作控制信号和微程序设计 微操作控制信号及其实现方法 设计微指令格式,微指令由32位组成,设计出每位微操作的定义。 确定微程序控制方式,设计任务包括设计各微程序入口地址的形成方法和控存的顺序控制(即下地址形成)方法。 编写各指令的微程序,根据指令流程和微指令格式仔细地逐条填写微指令各码位。4设计接线表要仔细设计接线表,

4、因为它是组装计算机的依据。 为了避免遗漏,应按模块逐个归纳整理,明确各模块中器件各控制信号的处理方法。 对于模块中不用的器件,也应有所处理。四、设计过程: 1、整机逻辑框图图4-1给出了最简单的8位微程序控制计算机的基本结构框图。 图41、8位微程序控制计算机基本结构结构描述:总线:该计算机采用单总线,即cpu的内部总线和外部总线均为一条总线。它的结构简单,实现较方便。但它的速度较慢,无法实现流水线和并行操作。 cpu:它的cpu由alu和寄存器模块、指令部件模块及微程序控制模块组成。寄存器:alu和寄存器模块包括通用寄存器(含累加器)、alu(包括暂存器)、状态寄存器等,它可采用单累加器多寄

5、存器或多累加器结构(见第一章)。alu:alu可完成各种算术、逻辑运算功能,如加、减、与、或、取反、取负、移位等。状态寄存器可包括进位位、全零标志位、负数标志位、溢出标志位等。指令部件:指令部件模块包括程序计数器(pc)及它的控制电路(加1、接数等)、指令寄存器(它一般包括一至三个8位寄存器,与最长的指令相对应)等。微程序控制部件:微程序控制摸块包括微程序存贮器(现为1kx32)、微程序计数器(mpc)及它的控制电路(加1、接数等)、微指令寄存器、时序控制电路、微操作信号发生电路等。 存贮器:存贮器为外接的ram存贮器(现为32kx8)外设:包括打印机输出设备、键盘输入设备。它们均接于总线上,

6、有分别的读、写控制信号。 2、指令系统和指令执行流程设计 2.1 cpu的基本功能部件下面以单累加器为例,介绍一种简单的8位微程序控制计算机。该cpu的基本功能部件为: 该计算机有一个累加器(a) 8个寄存器(r0-r7) pc为16位,寻址范围为64k* 其中0-7fffh为32k ram存贮器空间* 8000-ffffh为i/o空间* 编址方法: i/o采用与存贮器统一编址的方法,ab15=0为访问存贮器;ab15为访问i/o口。 三个8位指令存贮器,其中一个为ir,存放指令码,另二个分别为adrh和adrl,存放指令中的16位直接地址。 2.2指令系统和汇编代码首先应根据要求定义指令系统

7、,并确定相应的汇编代码。表4-1指令系统定义编号汇编码操作指令码1mov a, ri(ri) a00000iii2mov ri, a(a) ri00001iii3mov a, ri(7ehri) a00010iii4mov ri, a(a) 7ehri00011iii5mov a, #data8 data8 a00100000 dddddddd6mov ri, #data8data8 ri00101iii dddddddd7add a, ri(a) + (ri) a00110iii8sub a, ri(a) (ri) a00111iii9sub a,addr(a)-(addr) a010000

8、00 addrh addrl10lda addr(addr) a01001000 addrh addrl11sta addr(a) addr01010000 addrh addrl12jc addrif cy=1 then addr pc else (pc)+3 pc01011000 addrh addrl13jmp addraddr pc01100000 addrh addrl14jnkb addrif krix=0 then addr pc else (pc)+3 pc01101000 addrh addrl15jnpb addrif prix=0 then addr pc else (p

9、c)+3 pc01110000 addrh addrl16jnz addeif z=0 then addr pc else (pc)+3 pc01111000 addrh addrl17rsp7fffh sp10000000 18push aa堆栈,sp110001000 19pop asp1,堆栈a10010000 20cmp a,#data8(a)data8,按结果置c和z10011000 dddddddd 21rrc a(a)右移一位10100000 22cpl ri取反(7eh(ri)存储单元10101iii23call addr保存pc进栈,按addr转到子程序10110000 ad

10、drh addrl24retpc退栈,子程序返回10111000注: 对寄存器间接寻址指令,如mov ri,a,由于ri为8位,而存储器地址为16位,故取ri为低8位,高8位固定为7eh。根据这些指令,我们设计出如下的实验计算机的cpu结构框图(不包含微程序模块),如图4-2。 图42、微程序控制计算机cpu框图关于图4-2 cpu结构的说明:累加器: a为累加器,ca为它的打入脉冲(后沿有效(下同),ga为它的打入允许端(0为允许接数(下同),rrc右移允许端,act为暂存寄存器,cc和gc分别为它的打入脉冲和允许端;通用寄存器:r0r7为8个通用寄存器,rs为选择端,用于选择某个寄存器,w

11、rc和wre分别为写入脉冲和允许端。暂存器:tmp为暂存器,ct为它的打入脉冲,gt为它的打入允许端,用于暂存某些运算指令的第二操作数。多路开关muxa用于选择把tmp还是通用寄存器的内容加到alu上。算术逻辑运算单元:alu为8位的算术逻辑运算单元,fa、fb为两路输入,ff为输出;s2、s1、s0用于选择 工作方式,如加、减、fa、fb等;cout为加法的进位输出或减法的借位输出,需要时cout的值可锁存于cy寄存器中(cck为写入脉冲,cp为允许端)。如果需执行带进位(或借位)的加法(或减法)时,alu应该还有进位输入。alu输出ff通过三态门(ob为控制端)加至数据总线。指令寄存器:i

12、r为指令寄存器,它存放指令的第一字节(一般包含操作码和寄存器选择),cci和gi分别为它的打入脉冲和允许端。直接寻址指令寄存器:adrh和adrl为指令第二、三字节寄存器,存放直接寻址指令(如lda addr,jmp addr)的16位地址值。ca1、ca2和ga1、ga2分别为它们的打入脉冲和允许端。程序计数器:pc为16位的程序计数器,它的清0端接reset,使它在复位时为0,从0地址开始执行程序。pck为脉冲端,pinc为加1控制端,pld为并行接数控制端,它的输入端来自多路开关,可选择为“1”、cy、“0”等。其中“1”对应于jmp指令,cy对应于jc指令,其他情况接“0”(不转移)。

13、pc的输出和adr(由adrh、adrl组成)的输出通过多路开关加至地址总线ab。堆栈指针:sp为16位的堆栈指针,它的初态为7fffh。在把一个字节压入堆栈后,应把sp减一,指向下一个单元。在从堆栈弹出一个字节前,应把sp加一。3、微操作控制信号和微程序设计 3.1微程序顺序控制方法微程序计数增量方法: 微程序段的大小:它的微程序首地址根据指令操作码编码来形成。对于本实验计算机来说,由于每条指令对应的节拍数即微指令条数小于等于5,则我们可把微程序计数器打入地址的低3位置为“111”,其他几位接指令操作码。采用此方法时,各条指令的微程序段的大小取决于指令的微程序入口的间距。在把微程序计数器打入

14、地址的低3位置“111”,其他位接指令操作码时,每条指令的微程序长度不能大于8。 根据指令条数确定操作码位数。由于本计算机有24条指令,只需五位操作码,多余的首地址位(高位部分)可接为0。 在第一次启动运行时,应把mpc清0,从而从微程序存储器的0号单元开始执行微指令(第一条微指令应为取指令微指令。)。 在取出指令后,按指令操作码转移至相应指令的微程序入口执行(该入口处应为该指令的第二拍操作(第一拍为取指令)。例,指令操作码为00000,则微程序入口地址为0000000111。以后微程序计数器加1,执行下一拍指令操作。 每条指令的微程序的最后一条微指令应为取指令微指令。按照该方法可得出本实验计

15、算机的微程序控制模块的框图(见图4-3),图中: mpc 为微程序计数器 mclr为它的清0端,用于复位时清0 mpc mpck为它的时钟 mpld为打入信号,用于取指令后按指令操作码散转,mpc的输入为它的打入地址。对最多32条指令,每条指令最多8拍的情况,低3位接“1”,其他5位接指令操作码,高2位接0。(对最多16条指令,每条指令最多4拍的情况,低2位接“1”,其他4位接指令操作码,高4位接0。) mpc输出加至微程序存储器,作为微指令地址。 mir为微指令寄存器,它的输入来自微程序存储器。 微程序存储器位于实验芯片外,输出为32位微指令码,mick为它的时钟。它根据mpc输出的微指令地

16、址返回相应的32位微指令码到co310 mir 3.2 定义微操作控制本实验计算机结构比较简单,微操作信号比较少,因此可以采用全水平的微指令编码方式。这时,每位微指令码可控制一个微操作,如果微操作多于32个,则可采用分段编码方式。所有的微操作都由微程序来控制,微操作信号用来控制各功能部件的工作方式和工作状态,以及进行各功能部件之间的信号传递。本实验计算机如只有前述十八条指令,则按图4-2和图4-3,可得出以下微操作信号表。表4-3微操作信号表部件信号功能有效位累加器agarrca功能ga累加器a接数允许禁止(无操作)移位010暂存器tmpgttmp接数允许0暂存器actgc暂存器接数允许0寄存

17、器riwre寄存器写入允许0muxa (fb的多路选择)maalu的第二个操作数多路开关选择0: 寄存器内容送alu1: 暂存器tmp送alu算术逻辑运算单元alus2,s1,s0alu功能s2 s1 s0f = a + bf = a - bf = af = bf = b备用备用备用0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1cyme进位位cy接数coutcy接数移位输入01cpcy接数允许0指令寄存器irgi指令寄存器ir接数允许0地址寄存器adrga1高位地址寄存器adrh接数允许0ga2低位地址寄存器adrl接数允许0muxc (地址ab多路开关选择)

18、mc1,0muxc功能mc1 mc0pc送至地址总线abadr送至地址总线absp送至地址总线ab 备用 0 0 0 1 1 0 1 1程序计数器pcpincpc加1信号0prstpc清零信号0muxd (控制pc接数的多路选择)pld2,1,0pc接数控制pld2 pld1 pld0禁止cy=1转移zy0kb=0pb=0必转备用0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1其余微程序计数器mpcmpldmpc接数允许0存储器mcrdx读存储器0cwrx写存储器0堆栈spsspsp减一信号01sp增一信号10sp初始化为7fffh11muxb (数据总线db多路开关选择

19、)mb1,0muxb功能mxdb1 mxdb2alu结果送至数据总线dbpch送至数据总线dbpcl送至数据总线db三态 0 0 0 1 1 0 1 13.3 定义微指令编码功能所有的微操作都由微程序来控制,由于本cpu的微指令宽度为32位。微操作数少于32个,所以可采用直接控制方式,即上述每一个微操作信号都由微指令相应的某一位来控制。如下表所示:表4-4 微指令控制微操作对应表微指令的控制位微操作有效状态微操作功能描述0wre01ga02rrc03gc04gt05gi06ga107ahs08ga209ob010mb0x11mb1x12zp013cp014me015s0x16s1 x17s2x

20、18ma019pld0x20pld1x21pld2x22pinc023ssp0 x24ssp1x25mc0x26mc1x27mpld028crdx029cwrx03031对应的vhdl硬件描述如下:五、程序与调试:1、8位cpu的vhdl描述4begin dbl = db(7 downto 0); db(15 downto 8) = bz when crd = 0 else 00000000; process (mclk,clkg) begin if (run=0)or (reset = 0) then mclk = 0; elsif (clkgevent and clkg=0) then m

21、clk = not mclk; end if; end process; mpck = not mclk and clk; mick = not mpck; cck = not mclk; cc = not mclk; ca = not mclk; cir = not mclk; ca1 = not mclk; ca2 = not mclk; wrc = not mclk; pck = not mclk; process (pc,pck) begin if (reset =0) then pc = 0000000000000000; elsif (pckevent and pck=1) the

22、n if (pld = 1)then pc = ab; elsif (pinc = 1) then pc = pc +1; end if; end if; end process; process (ir,cir) begin if (cirevent and cir = 1) then if (gi = 0) then ir = dbl; end if; end if; end process; process (r0,wrc) begin if (wrcevent and wrc = 1) then if (wre = 0) then if (ra = 0) and (rb = 0) an

23、d (rc = 0) then r0 = dbl; end if; end if; end if; end process; process (r1,wrc) begin if (wrcevent and wrc = 1) then if (wre = 0) then if (ra = 1) and (rb = 0) and (rc = 0) then r1 = dbl; end if; end if; end if; end process; process (r2,wrc) begin if (wrcevent and wrc = 1) then if (wre = 0) then if

24、(ra = 0) and (rb = 1) and (rc = 0) then r2 = dbl; end if; end if; end if; end process; process (r3,wrc) begin if (wrcevent and wrc = 1) then if (wre = 0) then if (ra = 1) and (rb = 1) and (rc = 0) then r3 = dbl; end if; end if; end if; end process; process (r4,wrc) begin if (wrcevent and wrc = 1) then if (wre = 0) then if (ra = 0) and (rb = 0) and (rc = 1) then r4 = dbl; end if; end if; end if; end process;2、汇编指令集-m

温馨提示

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

评论

0/150

提交评论