课程设计-基于微程序控制器的简单计算机系统设计与实现_第1页
课程设计-基于微程序控制器的简单计算机系统设计与实现_第2页
课程设计-基于微程序控制器的简单计算机系统设计与实现_第3页
课程设计-基于微程序控制器的简单计算机系统设计与实现_第4页
课程设计-基于微程序控制器的简单计算机系统设计与实现_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告题目基于微程序控制器的简单计算机系统设计与实现课程名称专业班级学号姓名指导教师同组人员试验台号完成时间报告日期计算机科学与技术学院目录1课程设计概述111课设目的112设计任务113设计要求12实验原理与环境221实验原理结构图2211功能结构图2212中央处理器的功能2213中央处理器的组成322实验环境43模块设计方案531实验分析532数据通路图533模块设计6321主存储器6323控制存储器7323运算器和寄存器9324程序计数器11325总体设计124微指令设计1441机器指令设计1442微指令设计1443微程序设计1444指令流程图15441取指公操作16442立即数加17443直接寻址加17444直接寻址减18445回存19446无条件跳转20447有条件跳转20448非21449与224410异或224411SHL244412LOAD2445芯片控点设计255实验过程与调试2751主要故障与调试27511395载入失败275126116中存储数据被改变275132816中存储数据被改变27514193计数器跳转出问题28515193自加时的毛刺2852功能测试2853实验流程306设计总结与心得3161课设总结31611方案总结31612功能总结31613未实现功能总结3162课设心得31参考文献33附录部分芯片介绍341课程设计概述11课设目的计算机组成原理是计算机专业的核心基础课。本课程力图以“培养学生现代计算机系统设计能力”为目标,贯彻“强调软/硬件关联与协同、以CPU设计为核心/层次化系统设计的组织思路,有效地增强对学生的计算机系统设计能力的培养”。课程设计是学完该课程并进行多个单元实验后,综合利用所学的理论知识,并结合在单元实验中所积累的计算机部件设计和调试方法,设计出一台具有自己指令系统的简单计算机系统。所设计的系统能在基于EDA的实验平台上运行一段程序,通过检查程序结果的正确性来判断所设计计算机系统正确性。课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行主机系统底层电路的实现、故障分析与定位、系统调式等环节的锻炼,进一步提高了学生分析和解决问题的能力。12设计任务课程设计的主要任务是设计一台简单的计算机系统,并调试通过。本组所选用的计算机系统结构是基于微程序控制器的简单计算机系统设计与实现。1完成数据通路设计并验证数据通路功能确定CPU的基本结构是采用总线方式还是采用专用通路方式;2完成指定功能的各指令周期流程图表和所需要的控制信号。把所有指令的状态进行综合,并归纳成最终需要的若干个状态,画出指令流程的状态图,根据状态图设计状态机;3完成时序列电路设计。通过画出带控制信号的多周期数据通路图,列出指令译码表,设计控制译码器。最后将控制译码器信号与多周期数据通路图上的控制信号对应相连;主要技术指标如下1支持算术运算、逻辑运算、存储器读写、寄存器间数据传送等几类指令。2支持立即数寻址、直接寻址、隐含寻址、寄存器寻址等几种基本的数据寻址方式和顺序寻址、跳跃寻址两种指令的寻址方式。3支持10条以上的指令。4能运行由自己所是设计的指令系统构成的一段程序,程序执行功能正确。13设计要求1根据课程设计指导书的要求,制定出设计方案;2画出自己所设计计算机系统的原理框图和器件连接图,分析器件连接图中各器件不同引脚的功能,哪些可以固定连接,哪些需要通过微程序来控制,及这些控制信号的有效形式;3画出各指令的指令周期流程图和所需要的控制信号;4设计出实现指令功能的微程序控制器或硬布线控制器;5布线、调试、验收6课程设计报告和总结。2实验原理与环境21实验原理结构图211功能结构图组成原理课程设计CPU功能结构图如图21所示。图21CPU功能结构图212中央处理器的功能CPU作为运行指令的部件,从保证程序功能正确的角度看,CPU应该具有以下几方面的功能1)指令执行顺序的控制。即控制程序中的指令按事先规定的顺序自动执行,从而保证程序执行过程中,指令在逻辑上的相互关系不被改变。2)指令的操作控制。即产生指令执行过程中所需要的信号,以控制执行部件按指令规定的操作运行。3)时间控制。即对每个控制信号进行定时,一边按规定的时间顺序启动各操作。对于任何一条指令而言,如果操作控制信号的时间不正确,则指令的功能也就不能正确的实现。4)数据加工处理。即对数据进行算术、逻辑运算,或将数据在相关的部件之间传输。5)异常和中断处理。即处理运算中的异常及处理外部设备的中断服务请求等。213中央处理器的组成中央处理器主要由控制器和运算器两部分构成。控制器的主要功能包括取指令、计算下一条指令的地址、对指令译码、产生相应的操作控制信号、控制指令执行的步骤和数据流动的方向。运算器是执行部件,有算术逻辑单元和各种寄存器组成。运算器接受控制器的命令执行算术运算、逻辑运算即逻辑测试。许多中央处理器中具有多个运算功能单元,这些功能单元能够进行并行运算。中央处理器的功能与其结构紧密相关,任何一种功能都依赖相应的硬件去实现。如图21是一种能实现上述功能的CPU基本组成。下面对图21的各部分功能进行简要分析。ACPU内常用的寄存器1)PC(程序计数器)PC保存将要执行的指令地址,又称指令地址寄存器。CPU取指令时,将PC的内容送到主存地址寄存器,然后修改PC的值形成下一条要执行的指令地址,有以下两种修改PC内容的方法(1)程序顺序执行是,可利用程序计数器本身的递增功能来实现,若程序无此功能,则通过加法器实现;(2)转移时,用转移指令提供的地址修改PC的值。2)IR(指令寄存器)IR用于保存指令。从主存储器取出的指令存放在IR中,直到新的指令从主存中取出为止。IR中对应于指令操作码的部分输出送到指令译码器。IR中指令的操作码字段内容经指令译码器,送到微操作信号形成不见;指令的地址码字段根据寻址方式的不同可能送入程序计数器、地址寄存器或运算部件。有的机器指令操作码中包含寻址方式,因此不单独设计寻址方式字段;有的机器将寻址方式字段和操作码一并送入指令译码器;有的机器将操作码字段和地址码字段送入地址形成部件,以决定地址码的作用。3)AR(地址寄存器)AR用来保存当前CPU所要访问的主存单元地址,无论CPU是取指令还是存取数据,都必须先将要访问的主存单元地址送AR,知道读写操作完成。4)DR(数据缓冲寄存器)DR作为CPU和主存之间的数据缓冲寄存器用于存放操作数、运算结果或中间结果以减少访问主存的次数;也可以存放从主存中读出的数据,或准备写入的数据。B指令译码器、地址形成部件和微操作产生部件1)指令译码器(ID)指令译码器对指令的操作码进行译码,它的输出送到微操作产生部件。2)地址形成部件地址形成部件对指令的寻址方式字段、地址字段进行译码,计算操作数的地址信息。3)微操作产生部件微操作产生部件接收指令译码器送来的信息,与时序信号、条件及状态信息进行组合,形成各种具有时间标志的控制信号(即微操作控制序列)并发送到计算机的各个部件。微操作产生部件是控制决策机构。信息流的控制就是把操作产生部件的微操作控制序列(即微操作控制信号),送到各个部件的控制门、触发器或锁存器,去打开或关闭某些特定的门电路,使数据信息按完成指令功能所需要经过的路径,从一个功能部件传送到另一个功能部件,实现对数据加工处理的控制。根据设计方法不同,微操作产生部件的结构有三种不同的类型组合逻辑型、存储逻辑型即前两者的结合型。它们分别对应三中不同的控制器组成方式组合逻辑控制器、微程序控制器及组合逻辑与存储逻辑混合型控制器。C时序控制部件指令执行过程中所有操作都必须按照一定的次序完成,而且每个操作在什么时刻执行,执行多长时间都有严格的规定,不能有任何差错。例如执行加法指令,必须先将操作数送到ALU的输入端,然后再给出ALU执行加法的操作控制信号,待加法操作完成后,才能将结果送往目的地。不仅次序有规定,而且对什么时刻送操作数、什么时刻执行加法操作、什么时刻送出结果也有规定。因此,需要时序概念。图21中时序控制部件的作用就是产生一组时序信号,即一系列电位与脉冲,送到微操作产生部件,对各种操作信号进行时序控制。22实验环境JZYL型计算机组成原理实验仪一台。导线若干。涉及芯片类型及数量如表21所示。表21所需芯片类型及数量芯片编号芯片名称所需数量74LS193二进制同步可逆计数器174LS181四位运算器274LS244三态8位缓冲器274LS157四位2选1数据选择器474LS373八D锁存器7611616KCMOS静态RAM(20488)12816AEEPROM存储器(20488)274LS395四位寄存器174LS08二输入四与门274LS04六门反相器174LS32二输入四或门13模块设计方案31实验分析分析本次课程设计中对简易CPU的要求,需要设计的功能部件有主存储器、控制存储器、运算器、寄存器、计数器等。由于课程设计提供的芯片种类有限,我们选取了其中的74LS373、181、6116、2816A、74LS244、74LS193、74LS157、74LS395等芯片实现相应的功能。我们设计的机器指令长度为8为,其中前4位为操作码,后四位为操作数。在设计方案时,我们先将总体方案分解为多个小的模块,分别进行设计,然后再将各个模块拼接在一起,实现最终需要的功能。分解的模块包括主存储器、控制存储器、运算器、寄存器、计数器。下面将逐个分析各个模块的设计思路。32数据通路图图31数据通路图课程设计的数据通路图如图31所示。图中标明了计算机系统中的各个部件,包括内存、程序计数器、运算器、寄存器、控制存储器、指令寄存器、数据寄存器、微指令寄存器等等功能部件。同时,也注明了不同部件的芯片组成,以及控制信号。控制信号是由微程序中的信号(见43微程序设计)和时序节拍通过组合逻辑的方式形成。33模块设计321主存储器主存储器相当于计算机系统中的主存。我们选择一片6116作为主存储器。我们设计的机器指令长度为8位,低4位为操作数,所以,我们只选用了6116的低四位地址,其他地址位均接低电平。换言之,我们能手动写入的内存只有16位,分别从0000到1111。在写入6116时,使用了一片74LS244作为缓冲器。因为在总体电路中,6116的输入可能会有多个,为了避免冲突,使用一片244可以方便后面输入端的选择。6116的地址通过一片74LS157后输入。选择74LS157的原因是,6116的地址选择有多种情况。第一种情况是手动输入地址,这种情况发生在程序执行前,需往6116中写入程序,此时的地址由操作人员手动选择;第二种情况是程序自动选择,这种情况发生在程序连续执行过程中,由PC自动选择内存地址,取出操作指令或者指令的实现方式为直接寻址时,选择数据的地址。主存储器的结构图如32所示。图32主存储器结构图6116芯片的功能如表31所示。我们选择的写模式为L,L,OEL。我们选CEW择的读模式为L,H,OEL。其中,需要控制的只有,另外两个输入保持不变。CEW6116是RAM芯片,断电后,芯片内的信息将会丢失。表316116芯片功能表输入I/OCEWOEDIDO工作方式HHIGHZ非选择LHLHIGHZDO读LLHDIHIGHZ写LLLDIHIGHZ写LHHHIGHZ选择74LS244芯片的功能如表32所示。表3274LS244芯片功能表输入输出OEAIABOEIBYABLLLLLLLHLHHHHH高阻高阻74LS157芯片的功能如表33所示。表3374LS157芯片功能表使能端输入控制数据输入输出ESI0I1YHLLHLLLHHHLLLLLLHH323控制存储器控制存储器是整个课程设计中最重要的一个模块,这一部分设计起来没有太大难度。但是,由于微程序设计中的微指令是从控制存储器中取出的,这一部分的设计尤为重要。我们选择两片2816作为控制存储器。我们设计的微指令中,一共有13位有效信号。由于2816是8位的,所以,需要两片2816存储需要的微指令。我们设计的机器指令长度为8位,高4位为操作指令,所以,只选用了2816的低四位地址,其他地址位均接低电平。换言之,我们能写入的控制信号只有16位,分别从0000到1111。实际上,我们设计的指令只有12条,16个内存已能满足需求。在写入2816时,使用了一片74LS244作为缓冲器。写入完成后,去掉74LS244。因为2816中的信息是确定的,每一个8位(两个2816应是16位)都对应着一条微指令,只要一次正确写入后,以后都不需要更改。由于2816是ROM芯片,断电后,信息不会丢失。但是,写入数据时,需要使用一片74LS244,作为缓冲器。2816的微指令信号输出后,将会锁存到373中,避免在指令执行周期,控制信号发生改变。与2816相连的两片373的功能相当于计算机系统中的IR(微指令寄存器)。与2816相连的74LS395的作用是,在执行周期结束后,395清零(也可能是结束前,只要对结果不产生干扰就可以),系统进入取值周期。与74LS395相连的74LS373相当于计算机系统中的IR(指令寄存器)。其中,高4位为操作指令,这4位将会作为74LS395的输入,选择2816中的微指令,进而锁存在微指令寄存器中。控制存储器的结构图如图33所示。结构图中没有标明写入2816时用到的缓冲器74LS244,因为它只在写入时使用,写入成功之后,244将没有其他的作用,可以去掉。图33控制存储器结构图2816的芯片功能如表34所示。表342816芯片功能表引脚CEOEWE输入/输出读出LLH数据出闲置L高阻字节擦除LHL数据入H字节写入LHL数据入整片擦除L1015VL数据入H不工作LHH高阻禁写HHL高阻74LS373芯片功能如表35所示。表4674LS373功能表输出控制使能GD输出QLHHHLHLLLLQ0HZ74LS395芯片功能如表36所示。表3674LS395芯片功能表输入输出功能MRCPPEDSDNQN总清LLHHLL装入HHHH323运算器和寄存器运算器是CPU可以实现运算操作的基本部件,所使用的芯片本身只能实现最基本的加减算术运算和亦或、非与等基本逻辑运算。但是,通过基本运算的组合,可以实现及其复杂的运算,如积分,甚至傅里叶变换。现代计算机可以显示各种我们需要的功能,但是,如果把每条指令分解来看,可以发现,它可以做到的事情实际上再简单不过。唯快不破,它通过将处理速度做到极致,即使它做的事情异常简单,但是,它能做到的事情却可以改变整个世界。由于提供的芯片中,能显示运算操作的芯片只有74LS181。所以,181芯片是实现运算器的不二选择。由于设计的数据位数为8位,而181只能实现4为的逻辑运算和算术运算,所以,我们需要两片74LS181来实现8位数据操作。181的B输入通过了74LS157,原因是,由于寻址方式有立即数和直接寻址,所以,通过157来选择不同的寻址方式。157中的数据有两种情况,一种是立即数,这时高四位为0(由于指令位数的限制,立即数只能有4位);另一种是直接寻址,这时181中的8位数据全部来自于主存6116。74LS181的运算结果输入后,锁存在74LS373中,这样,可以防止运算结果被下一条运算操作改变。与这个373相连的是另外一个74LS373,它的作用相当于一个寄存器。181中的A输入来自于这个373(寄存器)。74LS157的其中一个输入来自一个74LS373,它的作用相当于计算机系统中的数据寄存器(DR)。直接寻址时,数据从主存6116中读出,锁存在这个373中,进行运算时,数据寄存器中的数据一直保持不变。运算器的结构图如图34所示。图34运算器结构图74LS181的功能比较强大,可以实现多种逻辑运算和位运算,图35列出了181的部分功能,其中,A0,A1,A2,A3,B0,B1,B2,B3位运算器输入;F0,F1,F2,F3为运算器输出;S0,S1,S2,S3为运算指令控制端;M位算术或逻辑运算控制端;CN为有无进位控制端,4NC为高位进位。图3574LS181功能表324程序计数器程序计数器的功能比较简单,就是在程序执行过程中,指示正确的内存地址,让计算机自动的从内存中读取出正确的指令执行。顺序执行时,每一条执行指令结束,PC自加1;但有跳转指令出现时,PC被设置为需要跳转到的内存地址。提供的芯片中,具有计数功能的有74LS193和74LS181。但是,181的功能过于强大,用这个比较复杂的芯片去实现如此简单的功能,不太合适,况且,181的置数操作不太容易实现,经比较可以知道,应选用193做为显示程序计数器的芯片。一片74LS193便可以实现。与74LS193相连的373是指令寄存器。当出现跳转指令时,指令寄存器的低4位将会被LOAD到193中,以确保下一条指令的执行时正确的。在顺序执行的情况下,193实现的都是1功能。由于一片193只有四位,所以,能表达的指令内存地址最大只能到1111。74LS193的输入接到一片74LS157,而此片157的另外一个输入为指令寄存器的低4位。这样设计是因为,取址周期时,从PC中读入地址,在从6116的指定内存单元中读出8位操作指令;而在执行阶段,如果寻址方式为直接寻址,则需要将指令寄存器的低4位作为数据的内存地址,从6116的指定内存单元中读出8位操作数。因为这两种情况都是存在的,所以,需要有一片74LS157来区分这两种情况。区分的条件是不同的机器指令对应着不同的微操作,通过微指令来选择157的输出是程序计数器的输入还是指令寄存器的低4位输入。程序计数器的结构图如图36所示。图36程序计数器结构图74LS193芯片的功能如表37所示。表3774LS193芯片功能表输入输出RCLDDNCPUCPDQN备注1DDDD0清零(异步)00XDDX置数(异步)01D1累加计数上升沿有效01D1累减计数上升沿有效功能说明1直接清零当RC1时,计数器异步清零。2直接置数当LD0时,计数器异步置数。3二进制加/减法计数脉冲CPU/CPD上升沿有效。325总体设计整个课程设计的总体结构图如图36所示。总体结构图中,添加了一个回存的功能,由于只是在寄存器后边加上一个74LS244芯片,然后将244的输出接到主存6116的输入端,所以,在模块设计中,没有把回存作为单独的一个模块说明。图36总体结构图4微指令设计41机器指令设计根据课程设计要求,我们设计的机器指令为8位,其中,前4位表示操作命令,后4位为操作数。由于操作命令用4位表示,所以,可以实现的操作最多只能有16条。设计的指令包括算术指令立即数加、直接寻址加、直接寻址减;逻辑运算非运算、与运算、亦或运算;回存;跳转指令无条件跳转、溢出跳转;载入指令;乘二指令;停机指令;取址操作。其中,直接寻址加、直接寻址减、逻辑运算及乘二运算均使用隐含寻址。取址操作、立即数加、载入操作、跳转指令和回存指令均使用立即数寻址。直接寻址加、直接寻址减、与运算、亦或运算均使用直接寻址。机器指令由操作人员将汇编语言翻译成机器语言后,手动输入到内存中。42微指令设计控制存储器由两片2816组成,最多可以有16位控制信号。但我们在设计微指令时,只使用了13个控制信号,使用了一片2816的所有8位,另一片2816的低5位。微命令编码方法采用直接表示法,将微指令操作控制字段的每一个二进制位定义为一个微命令。一条微指令从控存中取出时,它所包含的微命令经时间同步后去控制相应的数据通路中的部件。13位控制信号机器作用如表41所示。其他3位接低电平。表41控制信号作用2816输出控制信号作用说明C0S0181运算控制信号C1S1181运算控制信号C2S2181运算控制信号C3S3181运算控制信号C4CN181借位输入信号C5M181运算控制信号C6WRITE回存时244OE端/6116WE端控制信号C7ALUIN157控制选择来自DR/IR立即数的信号C86116ADD193地址与直接寻址地址间选择信号C9STOP停机时控制时序停止C10STOP停机时控制时序停止C11COUNT与脉冲信号进行逻辑运算后控制193是否加1计数C12LOAD与其他控制信号进行逻辑运算后控制193是否载入43微程序设计程序中每一条指令用8位二进制位来表示,而前四位为操作码,即为实现该指令的微程序的入口地址,后四位为操作数的地址(直接寻址)或操作数(立即数寻址)。操作指令对应的微程序如表42所示。写出这个表的过程比较复杂,也是整个课程设计最有技术含量的一部分,还有一部分是时序电路的加入。首先,先把可能需要控制的全部芯片控制信号列举出来,可能会超过16个,但是没关系,因为在后面的步骤中,会发现有些控制信息一直没有变化,可以用一个确定的信号代替。然后,给需要用到的指令分配一个4位的控存地址,这将会成为该指令的微程序的入口地址。由于指令只有4位,所以,所有指令条数不能超过16条。接着,就是比较复杂的一步了。分析每一条指令,画出每条指令的数据流和控制流,(具体流程图见44指令流程图)通过这种方式,知道每条指令需要的控制信号。表42汇编指令对应的微程序表指令控存地址1514131211109876543210取指公操作00000000101001010000立即数加00010000001011011001立即寻址加00100000001101011001减00110000001101000110回存01000000001100010000JMP01010001001001010000非01100000001101110000与01110000001101111011异或10000000001101110110停机10010000010001010000JO10100001001001010000LOAD10110000001101111010SHL11000000001101011100微程序表中,每条微程序都有16个控制信号。芯片编号参考图413。如表中编号所示,0,1,2,3分别表示181中的S0,S1,S2,S3;4,5分别表示181中的NC和M;6表示244A的OE;7表示157A和157B的使能端S;8表示157C的使能端S;9表示395中的R;10用来停机,实际使用时,没有使用9号控制信号;11和12分别表示193中的UP和LOAD;其他位均为0。44指令流程图我们设计的指令,包括取址公操作在内,一共有12条。不同类型的指令控制流和数据流都是不相同的,由于数据流这个部分可以参考图21,图中说明了所有数据所在的芯片。在同一个周期中,数据都是存在的,关键在与控制信息在同一个周期中不同节拍的控制。需要控制的芯片包括74LS373,它是8位锁存器,所以,需要控制数据何时写入373中,何时保持373中的数据不发生改变;74LS157,它是2选1数据选择器,所以,需要控制输出数据是两个输入数据中的哪一个;6116,这个芯片在回存指令时,必须要在某个节拍变成写模式,但是,在其他指令的周期中,必须一直保持读模式。另外还需要控制的芯片是74LS395,因为取址周期前,它需要清零,而执行周期前,它需要置数。441取指公操作我们设计的指令都是双周期的,其中,第一个周期为取指周期,从内存中取出执行指令;第二个周期为执行周期,执行该指令。取址公操作的控制信号存放在控制存储器的0000号单元,也就是说,需要进行取址操作时,将395清零即可。控制信号从控制存储器中读出后,写入到微指令寄存器中。通过这一组控制信号,从6116的指定单元中读出指令。指令存放在指令寄存器中。接下来,将4位操作指令载入74LS395中。这4位操作数成为这条指令的微程序的入口地址,从控制存储器中读出微程序后,锁存在微指令寄存器中。(这个锁存的节拍不在取指公操作,而是在执行周期的第一个节拍)取值公操作的控制流如图41所示。图41取值公操作控制流442立即数加立即数加的控制流程图如图42所示。图42立即数加控制流443直接寻址加立即数加和直接寻址加的区别在于,立即数加的加数为低4位操作数,被加数为寄存器AC中的值;而直接寻址加的加数为地址为低4位操作数的6116单元内的数据,被加数为寄存器AC中的值。其他基本一致。直接寻址加的控制流程图如图43所示。图43直接寻址加控制流444直接寻址减直接寻址加和直接寻址减的数据流和控制流上基本一致,只是在74LS181的控制上,对于4个运算控制信号有些区别。直接寻址减的控制流程图如图44所示。图44直接寻址减控制流445回存回存时,内存需要由读模式变为写模式。回存控制流程图如图45所示。图45回存控制流446无条件跳转无条件跳转控制流程图如46所示。图46无条件跳转控制流447有条件跳转有条件跳转流程图如图47所示。与无条件跳转的不同之处在于,必须判断数据时是否溢出。如果有溢出,则实现跳转,否则不实现跳转。图47有条件跳转控制流448非求非指令控制流程图如图48所示。图48求非指令控制流449与求非指令使用的寻址方式是隐含寻址,但是求与指令使用的寻址方式是隐含寻址加直接寻址。所以,数据通路要比求非运算要长一些。控制信号也更复杂一些。求与指令的控制流程图如图49所示。图49求与指令控制流4410异或亦或指令和与指令的数据流和控制流上基本一致,只是在74LS181的控制上,对于4个运算控制信号有些区别。亦或指令的控制流程图如图410所示。图410亦或指令控制流图411乘2指令控制流4411SHL乘2指令的寻址方式为隐含寻址,即把寄存器AC中的值扩大一倍,再存入AC中。乘2指令的控制流程图如图411所示。4412LOAD载入指令的功能是将指定内存单元中的数据载入寄存器AC中,作为运算的初始值。与之相对应的是回存指令,它的作用是将寄存器AC中的值存入指定内存单元。载入指令的控制流程图如图412所示。图412载入指令控制流45芯片控点设计在设计微指令之前,我们分析整个电路中的各个芯片的控点,其中有些是需要控制的,而有些是不需要变动的,始终接到一个电位就可以了。数据通路图如图413所示。图413数据通路图不需要控制的控点有向6116输入的74LS244芯片AOE和B并接到一个开关上,只有在写机器指令的时候为低电平,其他时刻都为高电平,手动控制,不需要微指令控制。和并接接地,CEO多余的地址线接在一起并接地。向2816输入的74LS244芯片A和B并接到一个开关上,只有在写微指令的时候为低电平,其他时刻都为高电平,手动控制,不需要微指令控制。多余地址线接地。74LS157D芯片使能端S分别接开关,需要手动控制输入改变地址时为低电平,0通道选通;其他时候为高电平,1通道选通。所有74LS373芯片的输出控制端接地。2816芯片和并接接地,多余的地址线接在一起并接地。CEO需要控制的控点有回存244A芯片A和B并接一起控制。74LS157A,74LS157B,74LS157C芯片的使能端S。所有74LS373的使能端S。181芯片运算指令控制端,算术或逻辑运算控制端M,有无进位控制端3210,。CN6116芯片端。WE74LS193的UP和LOAD。74LS395的MR,O和CP。这些控点都是需要微程序中的信号来控制的,具体控制见表42。还有些控制信号需要微程序中的控制信号与时序节拍组合逻辑后实现,具体组合逻辑见44指令控制流程图。表达式如下。其中T1,T2,T3,T4分别表示一个周期中的四个节拍,C11和C12为表42中编号为11,12的控制信号,A3是4位操作指令中的最低位。373A的使能端GT3;373B的使能端GT4;373C的使能端12;373D的使能端C;373E和373F的使能端10;395的P3T,4MR;193的1UP,1243CALOADN5实验过程与调试51主要故障与调试511395载入失败74LS395在本次课程设计中的功能有两个,第一个功能是在取址周期前,将数据清零。而0000是控制存储器中,取址指令的入口地址。通过这一操作,将取址的控制信号锁存在微指令寄存器中,保证双周期中,取址周期的正确执行。第二个功能是在执行周期前,将指令寄存器中的高4位,也就是4位操作命令载入,此时,将会从控制存储器中读出特定指令的控制信号,锁存到微指令寄存器中,保证执行周期的正确执行。按照步骤连接好电路后,开始测试时,发现74LS395清零功能是好的,但是,载入功能出问题了。给395提供载入信号后,输出仍然保持不变,还是0000。接下来需要做的就是排错。首先,将395的输入信号和输出信号分别接到信号灯上,及时显示输入和输出的数据。结果发现,不论输入信号如何,加上载入信号后,4个输出灯全是蓝色的,也就是0000。问题只有可能出在控制信号上,于是,我们也将控制信号接到信号灯上。让我们不可思议的是,控制信号也没有问题。最后,由于时间的原因,我们必须要离开实验室,便将试验台断电了。第二天来后,发现这个问题莫名其妙的被解决了。到现在也不知道载入失败的原因是什么。5126116中存储数据被改变6116数据的写入是一个很大的问题。写入数据时,之前的已经写入的数据经常会被后来的数据更改,所以,从6116指定的内存中读出数据时,显示在信号灯上的数据总是和预期的不一样。仔细观察后发现,这些数据是之后写入的某些数据,也就是说,数据被改写了。分析6116的写入方式,它是直接写入的,不需要另外的载入信号,当地址被选定后,数据就已经写入了制定的内存单元中。为了避免这一问题,我们在写入数据的过程中,需要改变地址时,要先选到较大的地址,保证这一地址还没有写入数据。比如写完0011后,接下来写入0100,这时候需要做的是,先将地址选择到0111,然后再选择到0100。通过这种方式,解决了6116中数据被改变的问题。5132816中存储数据被改变将控制信号写入2816后,马上测试,读出2816中存储的数据,保证数据都是准确无误的。但是,断电后,第二天发现,2816中的0000单元和0001单元数据被改变,而其他单元中的数据都没有问题。我们只能重新写入2816中的数据。这次因为偷懒,没有使用244作为缓冲器,而是直接将信号给到了2816的输入输出端。写入成功后,将2816由写模式转换成读模式。结果,输出信号灯的颜色变得很诡异,马上可以判定,这是数据冲突了。检查电路后,发现这是因为没有使用244的原因。因为没有244的高阻功能,使得输入信号和2816的输出信号同时存在了。将输入信号去掉后,信号灯变得正常。但是,奇怪的事情发生了,当写入其中一片2816时,另一片2816的数据也被改变了,但是,我们对另一片2816什么也没做。这样直接输入尝试了几次之后,发现这样的问题一直是存在的。检查电路发现,两片2816的控制信号是接在一起,也就是说,当一片2816处于写模式时,另一片2816也处于写模式(这是由于控制信号相同造成了)。由于另一片2816的输入没有给,所以,写入的数据肯定是有问题的。于是,我们将两片2816同时写入,这样,就不会出现一片2816写入,另一片输入悬空的情况了。在写入2816的过程中,还遇到了一个问题。因为之前2816的控制开关没有放在一起,在写模式与读模式之间转换时,有些麻烦,所以,想改变开关的位置,把它们放在一起,方便操作。但是,当把CE控制开关拨出来后,就出大问题了。2816所有单元的数据全部被改变。原来,CE这个控制信号只能在断电的情况下才能改变,这是另一组的同学告诉我的,他们也遇到过这样的问题。没办法,2816中的控制信号只能再次写入。514193计数器跳转出问题在时序执行时,遇到最严重的问题要算这个了。当把所有的机器指令写入6116后,开始自动执行,顺序执行语句执行得很好,一点问题都没有,而且很稳定。但是,遇到跳转指令时,问题就来了。如果需要跳转的地址的最低位为0,则不会有任何的问题;但是,如果最低位为1,则跳转的地址会自动加1。这个问题真的解决不了,跟老师讨论过这个问题,也安装排错的步骤把193的输入输出都接了出来,发现载入时,输入和预期的一样,但是输出就会加1。为了尝试解决这个问题,我们将PC自加的节拍由执行周期换到了取址周期,但是,对这个问题没有什么实质性的作用。换过193,但这个问题依然存在。大约花了2天的时间,改过很多的控制节拍,除了拿掉很多冗余的导线外,基本没有什么大的帮助。最后没有办法,在检查的时候,需要实现跳转的功能时,我们只能讲跳转的地址设定到最低位为0。这样人为的去编写机器代码,避开了这个无法消除的问题。515193自加时的毛刺这个问题是大家在做实验时普遍遇到过的问题。因为193芯片本身的问题,通过一个负脉冲,实现数据的加1功能。但是,芯片对负脉冲实在太过于敏感,如果用手指握住导线的一端,另一端接到193的UP,可以看到,193的数据就会不停的跳动。当有人从旁边走过的时候,193也会自加。进行时序控制时,有些与193加1毫不相干的节拍出现时,也会使193的值发生改变。跟同学讨论后,知道了大家基本上都有遇到这样的问题,至于解决方案,有些同学是在脉冲信号给到193的UP前,接2个D触发器,这样,就可以达到整形的目的。但是我们没这么做。我们是尽可能的减少直接接到时序的导线数量,最后做到接到T0,T1,T2,T3都只有一根导线,这样就减少了信号之间的干扰,193的跳动也开始受控制了。52功能测试检查时,我们有两组测试程序,一组是我们自测时用到的程序,将所以的指令全部执行了一遍。另外一组是老师布置给我们的任务,让我们实现一个比较大小的功能,并显示较大的那个数据。需要先写出汇编语句,再将汇编改写成机器指令。自测程序如表51所示。表51自测程序主存地址指令/数据二进制机器码AC值0000LOAD10111111FD0001ADD00010010FF0010JO10100101FF0011SUB00111110FE0100JMP01010001FE0101NOT01100000FF0110XOR100011015A0111ADD001011105B1000STORE010011015B1001AND01111111591010SHL乘211000000B21011LOAD101111015B1100STOP100100005B110110100101101001011110000000010000000111111111110111111101按照上述内容写好主存后,手动将PC清零,将395清零,按下START键使程序自动运行,观察各指示灯显示,运行结果正确。老师要求实现功能程序如表52所示。表52要求功能程序主存地址指令/数据二进制机器码AC值0000LOAD101111116C0001SUB00111110020010JNO10100101020011LOAD101111100100JMP010101110101LOAD101111116C0110JMP010101116C0111STOP100100006C1110011010100110101011110110110001101100该段机器指令的功能是比较1110单元与1111单元数据的大小,并将较大的数据载入到AC中。由于此时1110单元的值为6A,1111单元的值为6C,所以,AC的预期值为6C。执行该代码后,观察指示灯显示,显示结果正确。交换6116中1110单元与1111单元的数据,其他的机器指令不发生任何改变,再次执行该指令。此时6116中各单元的数据和AC的预期值如表53所示。表52要求功能程序主存地址指令/数据二进制机器码AC值0000LOAD101111116A0001SUB00111110FE0010JNO10100101FE0011LOAD101111106C0100JMP010101116C0101LOAD101111110110JMP010101110111STOP100100006C1110011011000110110011110110101001101010此时,1110单元的数据为6C,1111单元的数据为6A。执行同样的指令后,观察指示灯,AC显示的结果仍然为6C。说明该机器代码可以实现比较大小的功能。53实验流程第一天在实验室听老师布置任务和集中讲解。熟悉实验要求,查阅资料。第二天领取芯片和导线。第三天测试导线和芯片,熟悉芯片的功能。设计实验方案。第四天初步完成总体实验图的设计。第五天设计微指令。第六天设计微指令,测试微指令。第七天测试电路,测试各种硬布线信号。第八天测试硬布线信号,修改硬布线信号。第九天测试微指令,修改微指令。第十天修改微指令。第十一天处理74LS193的自加问题以及跳转问题。第十二天处理74LS193的跳转问题,下午检查。6设计总结与心得61课设总结基于微程序控制器的简单计算机系统设计是基于CPU的基本运行原理选取适当芯片实现的。在本次课程设计过程中,我们对如下内容作了总结工作。611方案总结本次课程设计,我们采用微程序方式实现简易CPU。按照CPU基本工作原理,选择适当的芯片,完成了本次设计。我们采用定长的8位数据进行存取,4位地址用于数据存取,用一片193芯片和157芯片实现主存地址的得到,利用193的加1和置数功能,完成程序的顺序执行和跳转,利用157芯片区分读取指令或数据;用一片6116芯片作为主存储器存储指令和数据;用两片181芯片相结合进行8位数据的数学运算和逻辑运算,在输入端和输出端共运用2片373芯片用于缓存运算的数据用于下次的运算和回存;用一片373芯片缓存由主存读取出的指令;用一片373芯片缓存由主存读取出的数据;用一片244芯片控制进行回存工作;用一片395芯片实现操作指令的清零和置数。612功能总结本次课程设计,利用现有芯片,用传统方式实现了微程序方式的简单计算机系统的设计。采用8位定长指令,8位变长数据、16位微命令在单指令周期内,实现了算术逻辑运算、取数、存数、JMP、JO操作、移位操作、停机操作,并实现了隐含寻址、直接寻址、立即数寻址三种寻址方式。613未实现功能总结未能实现JZ操作。有条件跳转时,我们有两个选择,为零跳转和溢出跳转。因为为零跳转的判断比较复杂,需要使用多个或门,但实验台上的或门只有一片,所以,很难实现这一功能,我们只能退而求次之,选择了对逻辑门要求较少的溢出跳转。未能将溢出信号保留。我们将181的溢出信号锁存在一片373中,当数据溢出时,溢出信号将会保留两个周期。但是,在下个执行周期发生时,执行任何操作,溢出信号都会丢失。但是,如果是执行逻辑运算或者是跳转操作时,溢出信号不应该发生改变。因为时间的原因,检查完课设已经是星期五的下午了,所以,这个功能未能实现。62课设心得两个星期的课程设计终于结束,回想这两周,虽然很辛苦,但也获益良多。首先,这次计算机组成原理课程设计让我充分认识到磨刀不误砍柴工。起先想着数据通路部分上学期做过实验应该很好实现,我们便直接开始连接电路而没有管总体架构,以致出现了刚开始就很多问题。幸亏我们迷途知返,重新开始思考,设计出总体实验原理图,并在大脑中运用逻辑推理模拟实现整个实验总体方向。有了清晰的整体思路后绘制出电路图,最后省下不少时间。而且多与老师和其他同学交流至关重要。有时候遇到问题不能死钻牛角尖,而应该将问题提出来,与同学和老师讨论,集思广益才能事半功倍。其实我们遇到的很多问题,都是由于我们自己已经有了一个思维定式,在思想上已经肯定了我们的理论方案,所以无论在大脑中模拟多少次程序运行,仍然找不出问题出在哪里。这时候就必须主动问老师或者请教同学指点迷津,有时候甚至别人只说了一句话,我们就能茅塞顿开。同时遇到问题必须冷静思考。在这两周的时间里我们遇到的问题层出不穷,也有着多方面的原因,有的是我们对实验原理不够熟悉,有的是太相信自己的思路,当然也有很大部分是实验台的问题,当遇到这些那些大大小小的问题时,很容易产生负面情绪,焦躁不安,面对着那么多的导线和芯片往往一个头两个大,因为这样也浪费了不少时间。唯有静下心来,耐心理顺逻辑思路,往往会豁然开朗,茅塞顿开。这一次课设的所获得的经验,是我们从课本上那些理论知识上学习不到的。理论知识固然重要,但动手实践能力往往更为重要。大多数人都有丰富的理论知识,但是一到动手操作的时候就会手足无措,手忙脚乱的,所以这一次的课设很好的培养了我们的动手能力和将理论结合实践的能力。参考文献1计算机组成原理(第一版)秦磊华编著清华大学出版社2011年2月2数字逻辑实验指导书(第一版)华中科技大学计算机学院数字逻辑课程组编著2010年3月3计算机组成原理实验指导书(第六版)华中科技大学计算机学院计算机组成原理课程组编著2010年9月附录部分芯片介绍174LS193二进制同步可逆计数器193芯片引脚图及引脚说明193芯片功能表输入输出RCLDDNCPUCPDQN备注1DDDD0清零(异步)00XDDX置数(异步)01D1累加计数上升沿有效01D1累减计数上升沿有效功能说明1直接清零当1时,计数器异步清零。CR2直接置数当LD0时,计数器异步置数。3二进制加/减法计数脉冲CPU/CPD上升沿有效。274LS181四位运算器181芯片引脚图181芯片功能表374LS244三态8位缓冲器244芯片引脚图74LS244芯片功能表输入输出OEAIABOEIBYABLLLLLLLHLHHHHH高阻高阻474LS157四位2选1数据选择器74LS157芯片引脚图74LS157芯片功能表使能端输入控制数据输入输出ESI0I1YHLLHLLLHHHLLLLLLHH574LS373八D锁存器74LS373芯片引脚图74LS373功能表输出控制使能GD输出QLHHHLHLLLLQ0HZ6611616KCMOS静态RAM(20488)6116芯片引脚图6116芯片功能表输入I/OCEWOEDIDO工作方式HHIGHZ非选择LHLHIGHZDO读LLHDIHIGHZ写LLLDIHIGHZ写LHHHIGHZ选择72816EEPROM存储器(20488)2816芯片引脚图2816芯片功能表引脚CEWEOE输入/输出读出LLH数据出闲置L高阻字节擦除LHL数据入H字节写入LHL数据入整片擦除L1015VL数据入H不工作LHH高阻禁写HHL高阻GANEMPLOYMENTTRIBUNALCLAIMEMPLOYMENTTRIBUNALSSORTOUTDISAGREEMENTSBETWEENEMPLOYERSANDEMPLOYEESYOUMAYNEEDTOMAKEACLAIMTOANEMPLOYMENTTRIBUNALIFYOUDONTAGREEWITHTHEDISCIPLINARYACTIONYOUREMPLOYERHASTAKENAGAINSTYOUYOUREMPLOYERDISMISSESYOUANDYOUTHINKTHATYOUHAVEBEENDISMISSEDUNFAIRLYFORMOREINFORMATIONABOUTDISMISSALANDUNFAIRDISMISSAL,SEEDISMISSALYOUCANMAKEACLAIMTOANEMPLOYMENTTRIBUNAL,EVENIFYOUHAVENTAPPEALEDAGAINSTTHEDISCIPLINARYACTIONYOUREMPLOYERHASTAKENAGAINSTYOUHOWEVER,IFYOUWINYOURCASE,THETRIBUNALMAYREDUCEANYC

温馨提示

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

评论

0/150

提交评论