- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3设计和实现ARelativelySimpleCPU的微序列控制器.doc
3设计和实现A Relatively Simple CPU的微序列控制器
如前面对Very Simple CPU的设计一样,我们保留前一章的指令集、数据路径、ALU等不变,而只是对其控制逻辑进行设计。
3.1修改状态图
这个控制单元的设计需要修改原来的状态转换图,参看前一章A Relatively Simple CPU设计中的状态转换图,在Fetch3状态,状态的转换影射可能同时影射到两个状态JMPZY1和JMPZN1,其状态的转换还需要参照标志寄存器Z的值来进行。所以,在微序列控制器中应该在影射逻辑中加入输入标志寄存器Z。而通常情况下,映射逻辑只接受IR寄存器中的操作码作为其输入,标志寄存器应该在微序列控制器的其他部分处理完成。所以我们需要对原来的状态图进行修改,增加两个状态JMPZ1和JPNZ1,并把Fetch3 的影射逻辑映射到这两个状态的地址上面。然后在这两个状态根据标志寄存器Z的值决定进入下一个状态是JMPZY1还是JMPZN1,或者JPNZY1还是JPNZN1。修改部分的状态转换图如下,其余部分不变(参看前一章)
3.2设计微序列硬件和微代码
这个CPU包含条件跳转语句,新创建的两个状态JMPZ1和JPNZ1根绝标志寄存器Z的值能够跳转到两个不同的状态。所以微序列控制器里面需要包含处理条件分支语句的功能。如果条件符合则进行跳转取下一条为指令的地址为微代码存储器的输出域ADDR,否则去微代码存储器的下一条微代码也就是原来地址加一。
这个微序列控制器得基本流程框图如下:
这个流程图与前面设计的Very Simple CPU的流程图不同之处在于:这个流程图中下一地址产生单元的输入有三个。由于条件转移可能取ADDR的值也可能取现在地址+1的值,所以这连个值都必须提供给下一地址生成器进行选择。加上Fetch3状态的影射逻辑所以下一地址生成器需要由一个4选1逻辑来实现。
首先我们来看映射逻辑的设计,由于这个CPU一共有39个状态,所以微序列控制其需要6bit的地址来存储这些状态。注意:映射逻辑并不给出实际的下一条微指令的地址,而是指名来源也就是执行子例程的第一个状态在微代码存储器中的地址。
设计中我们用{IR[3:0],00}来作为微代码存储器的地址完成由指令寄存器IR到执行子例程第一个状态的地址的影射。这样NOP1地址为000000,LDAC1地址为000100,…取指的几个状态分别被分配地址000001、000010、000011。最后的分配如下表:
State Location State Location State Location Fetch1 1 STAC5 34 JPNZY1 29 Fetch2 2 MVAC1 12 JPNZY2 30 Fetch3 3 MOVR1 16 JPNZY3 31 NOP1 0 JUMP1 20 JPNZN1 45 LDAC1 4 JUMP2 21 JPNZ2 46 LDAC2 5 JUMP3 22 ADD1 32 LDAC3 6 JMPZ1 24 SUBI 36 LDAC4 7 JMPZY1 25 INAC1 40 LDAC5 33 JMPZY2 26 CLAC1 44 STAC1 8 JMPZY3 27 AND1 48 STAC2 9 JMPZN1 41 OR1 52 STAC3 10 JMPZN2 42 XOR1 56 STAC4 11 JPNZ1 28 NOT1 60 由于JMPZ1和JPNZ1可以跳转到两个不同的状态,所以下一地址生成需要有3个输入,所以下一地址生成器的控制也不可能像Very Simple CPU那样用一个信号SEL直接控制。我们把这个过程分成两个部分:
我们首先用一个MUX来选择跳转条件,我们用所有可能的跳转条件作为MUX的输入,也就是Z和!Z,然后我们加入另外一个输入“1”用来表示无条件跳转指令中的跳转条件。由微代码存储器输出的Cond进行跳转条件的选择。
我们用组合逻辑来实现微序列控制器下一地址产生逻辑的控制信号S1S0。可以用如下公式表示:
IF(condition)THEN Next Address=ADDR
ELSE Next Address=Current Address+1
这样条件跳转和无条件跳转都可以如此实现。当执行无条件跳转时,condition恒等于1所以一定执行跳转。
现在我们就得到了下一地址产生逻辑的控制信号S1S0
BT Condition Next Address S1S0 0 0 Current Address +1 00 0 1 ADDR 01 1 X MAP 10 接下来我们就可以写出实现这个Relatively Simple CPU的微序列控制器的微代码存储器的内容(除
您可能关注的文档
最近下载
- 地球科学概论 第10讲 _生物圈——[武汉大学 地球科学概论].pdf VIP
- 某公司年度经济活动分析报告.ppt VIP
- prosteel3d命令一览表.pdf VIP
- 2024秋《战场侦察监视技术与装备》答案.docx VIP
- 明清时期举人名录.pdf VIP
- 苏教版小学科学五年级下册教学设计教案.pdf VIP
- 土方开挖施工方案(筏板、独立基础、条形基础、桩间土).pdf VIP
- 人教版七年级上册英语第一次月考试题(含答案).docx VIP
- 梅赛德斯-奔驰-R级-产品使用说明书-R350 4MATIC-251165-Rclass.pdf VIP
- 《模拟电子技术基础》模电期末试题集及答案(8套).pdf VIP
文档评论(0)