欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机组成原理(共22页).docx

    • 资源ID:14500010       资源大小:599.42KB        全文页数:22页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机组成原理(共22页).docx

    精选优质文档-倾情为你奉上计算机组成原理课程设计报告题 目:求五个数中最大正数的相反数院 系:计算机科学与信息安全学院 专 业:计算机科学与技术 指导教师:陈智勇 学生姓名: 潘承锋 学 号: 2017年3月24号目 录一:课程设计的题目及内容题目输入包含5个整数,找出最大的正数的相反数 要求采用定长CPU周期、联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下: 这是一个很简单的数据的比较代码,并不需要用到我们得ram,在寄存器里面得到我们的代码,然后取反得到的最大的正数,并且循环输出我们要的结果二:课程设计的要求1.完成系统的总体设计,画出模型机数据通路框图;2.设计微程序控制器(CISC模型计算机)的逻辑结构框图; 3.设计机器指令格式和指令系统; 4.设计时序产生器电路; 5.设计所有机器指令的微程序流程图; 6.设计操作控制器单元; 在CISC模型计算机中,设计的内容包括微指令格式(建议采用全水平型微指令)、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器等。具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件-图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件; 8.由给出的题目和设计的指令系统编写相应的汇编语言源程序;9.根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去;10.使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。)11.器件编程,并在EDA实验平台上进行操作演示三:系统开发环境及语言介绍 Max plus IIMax+plus是Altera公司上一代的PLD开发软件,Max+plus界面友好,使用便捷,主要用于设计新器件和大规模CPLD/FPGA).使用MAX+PLUSII的设计者不需精通器件内部的复杂结构。设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,MAX+PLUSII把这些设计转自动换成最终所需的格式。其设计速度非常快。对于一般几千门的电路设计,使用MAX+PLUSII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。 设计处理一般在数分钟内内完成。特别是在原理图输入等方面,Maxplus2被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用使用Maxplus2基本上也是以上几个步骤,可简化为:(1设计输入(2)设计编译(3)设计仿真(4)优化(5)布局布线(6)后仿真(7)生产 VHDL 全称超高速集成电路硬件描述语言(英语:VHSIC hardware description language),在基于复杂可编程逻辑器件、现场可编程逻辑门阵列和专用集成电路的数字系统设计中有着广泛的应用。VHDL语言诞生于1983年,1987年被美国国防部和IEEE确定为标准的硬件描述语言。自从IEEE发布了VHDL的第一个标准版本IEEE 1076-1987后,各大EDA公司都先后推出了自己支援VHDL的EDA工具。VHDL在电子设计行业得到了广泛的认同VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点 四:系统总体设计嵌入式CISI模型机系统数据通路图 嵌入式CISC系统控制器的逻辑结构框图  模型机的指令系统和所有指令的指令格式设计 输入指令(IN1)格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码× ×Rd××××××MOV指令格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码× ×Rd立即数imMOV0指令格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码RsRdxxxxxxxxxxNOT指令格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码× ×Rdxxxxxxxxxxx加1指令(INC)格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码××Rd××××××减1指令(DEC)格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码××Rd××××××小于零件转移指令(Js)格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码× ×× ×地址addr无条件转移指令(JMP)格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码× ×× ×地址addr输出指令(OUT1)格式:15 14 13 1211 109 87 6 5 4 3 2 1 0操作码Rs××××××××模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下: 76 5 4 3 2 1 0符号位尾数对于Rs或Rd的格式我们规定如下:Rs或Rd选定的寄存器00R001R110R211R3其中S2,S1,S0表示的是算术逻辑运算单元ALU,其功能表为:S2S1S0功能000X-Y001X+1010X-1011NOT X100不用101不用110不用111不用 指令系统表如下指令助记符 指令格式功能 15-1211 10 9 87-0IN1 Rd 0001 XX RdXXXX输入设备MOV Rd im0010×× Rdim立即数RdINC Rd0011Rd(Rd)+1Rd,锁存标志位DEC Rd0100Rd(Rd)-1Rd,锁存标志位Js addr0101Addr小于零,则addrPCCMP Rs Rd0110RsRd比较运算Mov0 rs rd0111RsRd寄存器交换数据JMP ADDR1000addr无条件转移指令OUT1 RS1001Rs内容输出到设备NOT 1010RDaddr数据取反时序产生器  时序信号产生器用于产生多级时序系统中需要的时序信号,本实验采用的是微程序控制器的时序产生器,如下图微程序控制器的设计全过程 微程序控制器的设计包括以下几个阶段:(1)机器指令的微程序流程图 (2)设计微指令格式和微指令代码表 (3)设计地址转移逻辑电路  (4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器  (5)设计微程序控制器的顶层电路(由多个模块组成)。  地址转移逻辑电路的设计地址转移逻辑电路是根据微程序流程图中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。由于微地址寄存器中的触发器异步置“1”端低电平有效,与µA5µA0对应的异步置“1”控制信号SE6SE1的逻辑表达式为:SE= 1; SE5=ZF·CF·P(2)·T4;SE4=I7·P(1)·T4;SE3=I6·P(1)·T4;SE2=I5·P(1)·T4;SE1=I4·P(1)·T4;8. 汇编程序代码设计如下 MOV R2, 5H ; 寄存器R2用于存放循环次数 IN1 RO ;寄存器R0用于接收外部输入的数据L0: IN1 R1 : 寄存器R1用于接收外部输入的数据 DEC R2 ; 将循环次数减1 JS L1 : R2的数字小于零则,结束循环CMP R0, R1; 比较两个数字的大小,影响 zf, cf,不改变寄存器的内容JS L0; R0>R1则继续取下一个数字MOV R1,R0: R0<R1则将寄存器r1的内容送到r0JMP L0 ;无条件跳转到L0处,继续取数字L1: NOT R0; 取最大正数的相反数INC R0; End: OUT1 R0; JMP END; 不断循环 9 指令的对应的地址与机器代码地址(十六进制)汇编语言源程序机器代码00MOV R1 ,5H0010 00 10 01IN1 R00001 00 00 02L0:IN1 R10001 00 01 03DEC R20100 00 10 04JS L10101 00 00 05CMP R1, R00110 01 00 06JS L01001 00 00 07MOV0 R1, R00111 01 00 08JMP L01000 00 00 09L1: NOT r01010 00 00 0A INC R00011 00 00 0BEND:OUT1 R01001 00 00 0CJMP END1000 0 000 0D0E10.微程序流程图如下11微指令格式如下 load,ldpc,ldar,ldirldri,ldpsw,rs_b,s2,s1,s0,alu_b,sw_b,led_b,rd_b,cs_d,ram_b,cs_i,addr_b,p1,p2,uA5uA6 微地址 20位微命令加六位微地址00 0000"-20 bit+6 bit 后续位地址01 0000"-执行输入的操作02 0000"-MOV 03 0000"-INC 04 0000"-DEC 05 0000"-JS 06 0000"-CMP 07 0000"-MOV0 08 0000"-JMP 09 0000"-OUT 0A 0000"-OP 0B 0000"-p2 test zf=0,zf=1 0C 0000"-五:MAX PLUS II 软件编译与仿真测试和结果分析 TOP图如下通过创建二甲双胍仿真时序图 top.scf.,可以实现模型机的功能仿真,从图中可以看出cpu处理数据和数据的具体流向的每一个过程,如下是仿真的输出波形,具体结果和分析如下:从仿真的过程当中我们可以到,我的整体的设计是正确的,找到最大的正数之后将结果取反后再加一就得到题目要求的最大正数的相反数,76取反的89加一的8A,这个结果是完全正确的。我非常的开心看到这个结果六:遇到的问题及解决办法以及体会由于我刚开始的时候不知道老师把课程给提前一周上课,我就把前面的两节课都缺了,后来在两周的学习的过程中对我来说都是非常的困难的,我想要放弃了,因为在最后的这一两周我才知道要干吗,才完整的知道我们的原件的画法以及我们的每个原件的代码的编写的方法,在最后一天的今天我才学会我们max这个软件的仿真。我写的汇编的代码是完全没有问题的在整个的学习过程中,这是我最欣慰的一个事情;我在学习的过程中错的最多的就是汇编代码的转换以及微指令的的编写,特别是微指令的后继微地址写好,我有好多条的微命令写错导致结果的不正确,我花费了非常多的时间在指令这里,一位一位的去校对这些0与1对眼睛来说是一件非常痛苦的事情。还有就是要把alu的逻辑运算的指令要写的正确,不然在addr的微命令逻辑地址的转换是一件非常痛苦的事情,地址老是转换错误,还以为自己的微命令写错了,自己有一位一位的去校对我的微地址七:参考文献1计算机原理课程设计 陈智勇,周向红,陆二庆编 西安电子科技大学出版社 20062 计算机组成原理 陈智勇 陈宏 王鑫编 西安电子科技大学出版社 20093基于VHDL语言与Quartus 软件的可编程逻辑器件应用与开发 郑燕, 郝建国党建华著国防工业出版社 出版时间 2007 4.编译原理 蒋丽媛,康幕宁 西北工业大学出版社 八:附录ADDR源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDR ISPORT(I7,I6,I5,I4:IN STD_LOGIC;CF,ZF,T4,P1,P2:IN STD_LOGIC;SE5,SE4,SE3,SE2,SE1,SE0:OUT STD_LOGIC);END ADDR;ARCHITECTURE A OF ADDR ISBEGINSE5<='1'SE4<=NOT(CF AND NOT ZF)AND P2 AND T4);SE3<=NOT(I7 AND P1 AND T4);SE2<=NOT(I6 AND P1 AND T4);SE1<=NOT(I5 AND P1 AND T4);SE0<=NOT(I4 AND P1 AND T4);END A;ALU源程序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_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(7 DOWNTO 0);BEGINPROCESSBEGIN IF(S2='0' AND S1='0' AND S0='0') THEN -CMP(SUB) ALUOUT<=X-Y;IF(X<Y) THEN CF<='1' ZF<='0' ELSIF(X=Y) THEN CF<='0' ZF<='1' ELSE CF<='0' ZF<='0' END IF; ELSIF(S2='0' AND S1='0' AND S0='1') THEN -INC AA<=Y; TEMP<=AA+1; ALUOUT<=TEMP(7 DOWNTO 0); IF (TEMP="" OR TEMP="") THEN ZF<='1' ELSE ZF<='0' END IF; ELSIF(S2='0' AND S1='1' AND S0='0') THEN -DEC AA<=Y; TEMP<=AA-1; ALUOUT<=TEMP(7 DOWNTO 0); IF (TEMP="" OR TEMP="") THEN CF<='1' ; -实现地址的多路转移 ZF<='0' ELSE ZF<='1' END IF; ELSIF(S2='0' AND S1='1' AND S0='1') THEN -将数字取反 AA<=Y; TEMP<=NOT AA; ALUOUT<=TEMP(7 DOWNTO 0); END IF;END PROCESS;END A;CONTROM 源程序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 DOWNTO 0);D:OUT STD_LOGIC_VECTOR(19 DOWNTO 0);END CONTROM;ARCHITECTURE A OF CONTROM ISSIGNAL DATAOUT:STD_LOGIC_VECTOR(25 DOWNTO 0);BEGINPROCESS(ADDR)BEGINCASE ADDR ISWHEN""=>DATAOUT<="0000"-20 bit+6 bit 后续位地址WHEN""=>DATAOUT<="0000"-执行输入的操作WHEN""=>DATAOUT<="0000"-MOV WHEN""=>DATAOUT<="0000"-INC WHEN""=>DATAOUT<="0000"-DEC WHEN""=>DATAOUT<="0000"-JS WHEN""=>DATAOUT<="0000"-CMP WHEN""=>DATAOUT<="0000"-MOV0 WHEN""=>DATAOUT<="0000"-JMP WHEN""=>DATAOUT<="0000"-OUT WHEN""=>DATAOUT<="0000"-OP WHEN""=>DATAOUT<="0000"-p2 test zf=0,zf=1 WHEN""=>DATAOUT<="0000"-WHEN OTHERS =>DATAOUT<="0000"-取指令END CASE;UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0); -后续微地址D(19 DOWNTO 0)<=DATAOUT(25 DOWNTO 6);END PROCESS;END ACONVERT源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CONVERT ISPORT(IRCODE:IN STD_LOGIC_VECTOR(15 DOWNTO 0);OP:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);I11,I10,I9,I8:OUT STD_LOGIC;A:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END CONVERT;ARCHITECTURE A OF CONVERT ISBEGINOP<=IRCODE(15 DOWNTO 12);I11<=IRCODE(11);I10<=IRCODE(10);I9<=IRCODE(9);I8<=IRCODE(8);A<=IRCODE(7 DOWNTO 0);END A;ROM 的源程序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 ISBEGIN -HEX DOUT<= "00100" WHEN ADDR="" AND CS_I='0' ELSE - MOV R2,4H; 1 设置循环的次数为5次 "00000" WHEN ADDR="" AND CS_I='0' ELSE - IN1 RO; "00000" WHEN ADDR="" AND CS_I='0' ELSE -L0:IN1 R1; 循环输输入五个数字 "00000" WHEN ADDR="" AND CS_I='0' ELSE - DEC R2; 循环次数减少一次 "01001" WHEN ADDR="" AND CS_I='0' ELSE - Js L1; R2为零的时候结束循环 "00000" WHEN ADDR="" AND CS_I='0' ELSE - CMP R1 R0; 比较寄存器中数字的大小 "00010" WHEN ADDR="" AND CS_I='0' ELSE - JS L0; 1大于0则将1 中的数字付给0寄存器 "00000" WHEN ADDR="" AND CS_I='0' ELSE - MOV0 R1 R0; "00010" WHEN ADDR="" AND CS_I='0' ELSE - JMP L0; "00000" WHEN ADDR="" AND CS_I='0' ELSE - L1:NOT R0; 将数字取反 "00000" WHEN ADDR="" AND CS_I='0' ELSE - INC R0; 取反后加一 "00000" WHEN ADDR="" AND CS_I='0' ELSE -END:OUT1 R0; 输出最大正数的相反数 "01011" WHEN ADDR="" AND CS_I='0' ELSE - JMP END; 循环输出那个数字 "00000"END A;DECODER的源程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECODER ISPORT(I9,I8:IN STD_LOGIC;Y0,Y1,Y2,Y3:OUT STD_LOGIC);END DECODER;ARCHITECTURE A OF DECODER ISBEGINPROCESS(I9,I8)BEGINIF(I9='0' AND I8='0')THENY0<='1'Y1<='0'Y2<='0'Y3<='0'ELSIF(I9='0' AND I8='1')THENY0<='0'Y1<='1'Y2<='0'Y3<='0'ELSIF(I9='1' AND I8='0')THENY0<='0'Y1<='0'Y2<='1'Y3<='0'ELSEY0<='0'Y1<='0'Y2<='0'Y3<='1'END IF;END PROCESS;END A;PSW的vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PSW ISPORT(C,Z:IN STD_LOGIC;LDPSW:IN STD_LOGIC;CF,ZF:OUT STD_LOGIC);END PSW;ARCHITECTURE A OF PSW ISBEGINPROCESS(LDPSW)BEGINIF(LDPSW'EVENT AND LDPSW='1')THENCF<=C;ZF<=Z;END IF;END PROCESS;END A;MUX4 的源程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX4_1 ISPORT(R0,R1,R2,R3:IN STD_LOGIC_VECTOR(7 DOWNTO 0);I11,I10:IN STD_LOGIC;W:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX4_1;ARCHITECTURE A OF MUX4_1 ISBEGINPROCESSBEGINIF(I11='0' AND I10='0')THENW<=R0;ELSIF(I11='0' AND I10='1')THENW<=R1;ELSIF(I11='1' AND I10='0')THENW<=R2;ELSEW<=R3;END IF;END PROCESS;END A;专心-专注-专业

    注意事项

    本文(计算机组成原理(共22页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开