计算机组成原理课程设计报告题目:求五个数中最大正数的相反数院系:计算机科学与信息安全学院专业:计算机科学与技术指导教师:陈智勇学生姓名:潘承锋学号:14003101242017年3月24号目录一:课程设计的题目及内容.................................4二:课程设计的要求.......................................4三:系统开发环境及VHDL语言介绍.......................5四:系统总体设计.........................................61嵌入式CISI模型机系统数据通路图........................62嵌入式CISC系统控制器的逻辑结构框图..................63模型机的指令系统和所有指令的指令格式设计.............74指令系统表如下.......................................95时序产生器...........................................96微程序控制器的设计全过程............................107地址转移逻辑电路的设计..............................108.汇编程序代码设计如下................................119指令的对应的地址与机器代码...........................1110.微程序流程图如下.....................................1211微指令格式如下.......................................12五:MAXPLUSII软件编译与仿真测试和结果分析TOP图如下..13六:遇到的问题及解决办法以及体会........................14七:参考文献............................................15八:附录................................................16一:课程设计的题目及内容1题目输入包含5个整数,找出最大的正数的相反数2要求采用定长CPU周期、联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下:这是一个很简单的数据的比较代码,并不需要用到我们得ram,在寄存器里面得到我们的代码,然后取反得到的最大的正数,并且循环输出我们要的结果二:课程设计的要求1.完成系统的总体设计,画出模型机数据通路框图;2.设计微程序控制器(CISC模型计算机)的逻辑结构框图;3.设计机器指令格式和指令系统;4.设计时序产生器电路;5.设计所有机器指令的微程序流程图;6.设计操作控制器单元;在CISC模型计算机中,设计的内容包括微指令格式(建议采用全水平型微指令)、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器等。具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件----图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件;8.由给出的题目和设计的指令系统编写相应的汇编语言源程序;9.根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去;10.使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。)11.器件编程,并在EDA实验平台上进行操作演示三:系统开发环境及VHDL语言介绍1MaxplusIIMax+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)生产2VHDLVHDL全称超高速集成电路硬件描述语言(英语:VHSIChardwaredescriptionlanguage),在基于复杂可编程逻辑器件、现场可编程逻辑门阵列和专用集成电路的数字系统设计中有着广泛的应用。VHDL语言诞生于1983年,1987年被美国国防部和IEEE确定为标准的硬件描述语言。自从IEEE发布了VHDL的第一个标准版本IEEE1076-1987后,各大EDA公司都先后推出了自己支援VHDL的EDA工具。VHDL在电子设计行业得到了广泛的认同.VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点.四:系统总体设计1嵌入式CISI模型机系统数据通路图2嵌入式CISC系统控制器的逻辑结构框图3模型机的指令系统和所有指令的指令格式设计输入指令(IN1)格式:1514131211109876543210操作码××Rd××××××MOV指令格式:1514131211109876543210操作码××Rd立即数imMOV0指令格式:1514131211109876543210操作码RsRdxxxxxxxxxxNOT指令格式:1514131211109876543210操作码××Rdxxxxxxxxxxx加1指令(INC)格式:1514131211109876543210操作码××Rd××××××减1指令(DEC)格式:1514131211109876543210操作码××Rd××××××小于零件转移指令(Js)格式:1514131211109876543210操作码××××地址addr无条件转移指令(JMP)格式:1514131211109876543210操作码××××地址addr输出指令(OUT1)格式:1514131211109876543210操作码Rs××××××××模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:76543210符号位尾数对于Rs或Rd的格式我们规定如下:Rs或Rd选定的寄存器00R001R110R211R3其中S2,S1,S0表示的是算术逻辑运算单元ALU,其功能表为:S2S1S0功能000X-Y001X+1010X-1011NOTX100不用101不用110不用111不用4指令系统表如下指令助记符指令格式功能15--121110987---------0IN1Rd0001XXRdXXXX输入设备MOVRdim0010××Rdim立即数→RdINCRd0011Rd(Rd)+1→Rd,锁存标志位DECRd0100Rd(Rd)-1→Rd,锁存标志位Jsaddr0101Addr小于零,则addr→PCCMPRsRd0110RsRd比较运算Mov0rsrd0111RsRd寄存器交换数据JMPADDR1000addr无条件转移指令OUT1RS1001Rs内容输出到设备NOT1010RDaddr数据取反5时序产生器时序信号产生器用于产生多级时序系统中需要的时序信号,本实验采用的是微程序控制器的时序产生器,如下图6微程序控制器的设计全过程微程序控制器的设计包括以下几个阶段:(1)机器指令的微程序流程图(2)设计微指令格式和微指令代码表(3)设计地址转移逻辑电路(4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器(5)设计微程序控制器的顶层电路(由多个模块组成)。7地址转移逻辑电路的设计地址转移逻辑电路是根据微程序流程图中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。由于微地址寄存器中的触发器异步置“1”端低电平有效,与µA5~µA0对应的异步置“1”控制信号SE6~SE1的逻辑表达式为: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.汇编程序代码设计如下MOVR2,5H;寄存器R2用于存放循环次数IN1RO;寄存器R0用于接收外部输入的数据L0:IN1R1:寄存器R1用于接收外部输入的数据DECR2;将循环次数减1JSL1:R2的数字小于零则,结束循环CMPR0,R1;比较两个数字的大小,影响zf,cf,不改变寄存器的内容JSL0;R0R1则继续取下一个数字MOVR1,R0:R0R1则将寄存器r1的内容送到r0JMPL0;无条件跳转到L0处,继续取数字L1:NOTR0;取最大正数的相反数INCR0;End:OUT1R0;JMPEND;不断循环9指令的对应的地址与机器代码地址(十六进制)汇编语言源程序机器代码00MOVR1,5H001000100000100101IN1R0000100000000000002L0:IN1R1000100010000000003DECR2010000100000000004JSL1010100000000100105CMPR1,R0011001000000000006JSL0100100000000001007MOV0R1,R0011101000000000008JMPL0100000000000001009L1:NOTr010100000000000000AINCR000110000000000000BEND:OUT1R010010000000000000CJMPEND10000000000010110D0E10.微程序流程图如下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,uA5~uA6微地址20位微命令加六位微地址0011010010001111110110000000;--20bit+6bit后续位地址0110001010001011111100000000;--执行输入的操作0210001010001111111000000000;--MOV0310001110010111111100000000;--INC0410001110100111111100000000;--DEC05100000100011111111010000