基于proteus的一个硬布线CPU
基于proteus的一个硬布线CPU
- 指令集与CPU架构
- 硬布线控制器
- 指令流程图
- 参考资料
指令集与CPU架构
本文是前述博客基于proteus的一个微程序CPU的姐妹篇,硬布线CPU的指令集完全兼容微程序CPU的指令集,分为以下五大类共38条机器指令,指令OP码如下表1所示:
1)系统指令:NOP、HLT、IRET;
2)寄存器及I/O操作指令:MOV、SET、IN、OUT/OUTA;
3)存储器及堆栈操作指令:LAD/POP、STO/PUSH;
4)跳转系列指令:JMP、JMPR、Jx(JC/JZ/JS)、JxR(JCR/JZR/JSR);
5)算术逻辑运算指令:SHT (RLC/ LLC/ RRC/ LRC)、SOP (INC/DEC/NOT/THR)、ADD/ADDI、SUB/SUBI、AND/ANDI、OR/ORI、XOR/XORI;
表1. 硬布线CPU指令集
硬布线CPU电路图如下图1所示,红线的左侧是与微程序CPU完全兼容的数据通路,包括了:程序/数据存储器ROM/RAM及其地址寄存器AR;指令寄存器IR;通用寄存器R0~R3;算术逻辑运算器ALU及其附属缓存器DA(兼作移位功能)和DB;外设I/O接口;中断向量地址IVA;程序计数器(PC)、运算结果标志位寄存器(PSW)及其断点寄存器(BP_PC、BP_PSW)。而图1红线右侧则是与微程序控制器功能对应的硬布线控制器(包括基于两级状态机的时序发生器电路)以及中断电路。
图1. 硬布线CPU电路图
硬布线控制器
硬布线CPU的控制器属于多周期硬布线控制器,采用两级状态机架构,如下图2所示:一级状态机MCLOCK由六个状态{M1, M2, M3, M4, M5, M6}组成,其中M1-M2是取指状态,M3-M6是执行状态。每一次状态M循环对应一个指令周期,其状态数目不固定,由该指令决定。状态机在每条指令最后的执行状态Mx结束后,自动跳转到下一条指令的取指状态M1。每一个状态M本身是一个二级状态机,与微程序CPU的微指令状态机完全相同:包括两个状态{T1,T2},循环进行状态转移T1→T2。在T1状态,指令/数据先从源部件打入总线BUS;在T2状态,指令/数据再从总线BUS打入目标部件。
图2. 硬布线CPU控制器的状态机架构
上述两级状态机的时序发生器电路如下图3所示,二级状态机与微程序CPU的微指令状态机完全相同,依旧使用JK触发器74LS73。时钟信号CLK驱动,循环进行固定的状态转移T1→T2。一级状态机则使用一个2位扭环计数器及其译码电路,由每次状态T循环开始的T1上升沿驱动,进行状态数量不固定的状态M循环(如图2所示)。一级状态机的次态Mx+1不仅取决于当前状态Mx,还由跳转信号#M决定:#M=1则照常进行状态转移Mx→Mx+1;#M=0则计数器输入置位{1,0,0,0},使次态Mx+1强制转移到M1。
图3. 状态机的时序发生器电路
跳转信号#M的形成逻辑电路如下图4所示:当一条指令的当前状态是指令周期最后一个状态Mx,其指令信号与状态节拍信号Mx的逻辑“与”令跳转信号#M=0,从而使次态强制转移到下一条指令的取指状态M1,构成M1→Mx循环。Mx与指令的关系如下:
Mx=M2 (M1→M2):NOP/HLT指令
(注:如下图4所示,#HLT指令信号由NOP指令产生,立即停机在状态M2的T2节拍)
2)Mx=M3 (M1→M3):IN、OUT、MOV、IRET、JMPR (JMPR/JxR) 指令
3)Mx=M4 (M1→M4):PUSH、POP、SET、SOP、JMPI (JMP/Jx) 指令
4)Mx=M5 (M1→M5):LAD、STO、SHT、ALU2_R (ADD、SUB、AND、OR、XOR) 指令
5)Mx=M6 (M1→M6):ALU2_I (ADDI、SUBI、ANDI、ORI、XORI) 指令
图4. 状态机的跳转信号形成逻辑电路
如下图5所示, 硬布线CPU是由指令寄存器IR保存的OP码{I7,I6,I5,I4}(参考上述CPU指令集列表1)经过两个74LS138译码器直接产生相应的指令信号。其中,单独设置指示信号ALU2代表五个双操作数运算指令ADD/SUB/AND/OR/XOR(这些指令状态机的时序相近),并且与指令寄存器IR的{I1I0}位结合,构成了以下两个指示信号:操作数之一来自指令第二字节IMM(立即数)的双操作数运算指示信号#ALU2_I和操作数全部来自寄存器的双操作数运算指示信号#ALU2_R。
另一方面,因为状态机时序相近的原因,在下图5中设置指示信号MEM_OP代表四个存储器操作指令LAD/STO/POP/PUSH。相似的,因为LAD/POP指令、STO/PUSH指令和跳转系列指令共用OP码,所以需要{I1,I0}位参与指令译码:当I1I0=00时,生成跳转指令信号#JMP和存储器操作指令信号#LAD/#STO(跳转目标地址或操作数地址来自指令第二字节ADDR);当{I1,I0}≠00时,生成跳转指令信号#JMPR和堆栈操作信号#POP/#PUSH(跳转目标地址或操作数地址来自寄存器)。
图5. 指令译码电路
因为数据通路是相同的,所以硬布线CPU执行指令所需的微操作信号序列与前述微程序CPU保持一致。每一个微操作信号由当前状态节拍信号Mx和特定的指令信号通过逻辑与形成。如下表2所示。
表2. 微操作信号形成逻辑
根据上表2可以推导出如下图6所示的微操作信号硬布线逻辑电路。其中,横向信号线是状态节拍信号Mx(M1~M6),横向信号线下方是指令寄存器IR译码生成的指令信号组合。横向信号线上方的一排与非门和反相器则对应上表2的所有方框:每个与非门的一端输入横向信号线下方的指令信号组合(对应上表2某个方框中的所有指令信号)的逻辑或,另一端输入状态节拍信号Mx;每个反相器只输入节拍信号Mx(反相器),表示任何指令在该状态Mx都有效。在下图6中,最上方的若干个与非门或反相器输出(低电平有效)通过与门逻辑形成某一个微操作信号(对应上表2中的某一行)。
图6. 微操作信号硬布线逻辑电路
指令流程图
硬布线CPU的状态机流程图与微程序CPU的微程序流程图基本相同,其中每一个方框代表一个状态Mx,对应微程序流程图中的一条微指令。每一个方框内的微操作信号都由上图6所示的硬布线逻辑电路生成,亦与微程序流程图方框中的微操作信号基本一致。
取指周期和中断处理周期的状态机流程图如下图7所示:所有机器指令至少需要2个CPU周期(M1和M2)的取指周期,在M1周期开始时刻,通过中断标记信号INT决定是运行取指周期(INT=0),还是运行中断处理周期(INT=1)。指令寄存器IR在M1周期或者复位信号#RESET=0的情况下清零。在取指周期M2的T2节拍上升沿时刻,信号IR_CLK上跳变,把从程序存储器PROGRAM取出的指令打入指令寄存器IR,再通过指令寄存器IR的{I7,I6,I5,I4}译码产生一系列的指令信号(如上述指令译码电路图5所示)。若产生NOP指令信号,则直接返回M1周期取出下一条指令;若产生HLT指令信号,则CPU直接停机,重启跳出断点后进入下一指令的取指周期。若产生其他信号,则进入执行周期(M3~M6)。
图7. 取指周期和中断处理周期的状态机流程图
如上图7 所示,所有CPU指令的状态机都经过公共的取指周期(M1~M2状态),然后在取指周期末尾,OP码{I7,I6,I5,I4}译码产生一系列指令信号,进入各自指令的执行周期。下图8列出了寄存器操作指令(MOV、SET指令)和I/O操作指令(IN、OUT/OUTA指令)执行周期的状态机流程图,与微程序流程图完全一致。
图8. 寄存器及I/O操作指令的状态机流程图
下图9列出存储器操作指令(LAD/STO指令)和堆栈操作指令(POP/PUSH指令)执行周期的状态机流程图。与微程序流程图相比,硬布线版本CPU不需要考虑微指令容量问题,因此堆栈操作指令POP和PUSH的执行周期只占用两个CPU周期,效率得到提升。
图9. 存储器及堆栈操作指令的状态机流程图
下图10所示的状态机流程图包括了中断返回指令、目标地址来源寄存器的跳转指令JMPR(包括JMPR和JxR系列指令)和目标地址来源存储器的跳转指令JMPI(包括JMP和Jx系列指令)。与微程序流程图相比,硬布线版本CPU不需要考虑微指令容量的问题,因此跳转指令JMPR的执行周期只占用两个CPU周期,效率大大提高。
图10. 中断返回及跳转系列指令的状态机流程图
如下图11所示:算术逻辑运算系列指令的状态机都在M3周期生成运算器74LS181的控制端逻辑[S3,S2,S1,S0,M,CN],其中,双操作数运算指令ALU2系列(包括ADD、SUB、AND、OR、XOR五种指令)在M3周期微操作信号一致,在M4周期则出现两个分支:操作数之一来自存储器的指令系列ALU2_I和操作数全部来自寄存器的指令系列ALU2_R。
图11. 算术逻辑运算系列指令的状态机流程图
参考资料
本文的内容节选自作者编撰的教材专著《基于Proteus的计算机系统实验教程——逻辑、组成原理、体系结构、微机接口》(机械工业出版社),更详细的内容可以直接在书中查阅。
读者如有兴趣,可以在 当当网图书, 京东图书,亚马逊上搜索作者姓名赖晓铮即可找到这本著作。
本书详细描述了在proteus虚拟仿真环境中,从逻辑电路开始,一步一步构造运算器、存储器、控制器,最终用三种CPU体系架构(微程序、硬布线、流水线)实现了一个8位的CPU。并且,这个CPU不仅可以做逻辑、算术运算,拥有循环、分支、堆栈等程序结构,还可以完整实现对8086所有外设的控制,即替代8086完整实现了传统《微机原理》里讲到的所有外设实验。
本书的全部proteus工程文件,PPT,实验视频以及配套的两种形式课程设计(纯汇编、硬件改动)的资料都放在 百度网盘,提取密码:34ad
广州风标为本书配套了实验箱(如下图所示),可以让学生在电脑的proteus虚拟仿真环境中设计CPU或选择已有的8086、8051、ARM等CPU模型,然后通过虚拟总线映射到实验箱的物理总线,控制实验箱面板上的真实外设。有兴趣的读者可以自行联系 广州风标教育技术股份有限公司。
基于proteus的一个硬布线CPU相关推荐
- 8位12指令硬布线CPU设计
实验f4a 8位12指令硬布线CPU设计 模型机是计算机的缩细模型,通过它可以理解计算机整机的结构及功能,理解CPU.存储器.中断控制器.接口的结构及实现逻辑和各部件之间的接口关系.本次课程设计的主要 ...
- 计组高分笔记:【05】中央处理器 「CPU细节 | 取指周期 | 间址周期 | 执行周期 | 中断周期 | 数据通路 | 硬布线控制器 | 微程序控制器 | 指令流水线 | LOAD | STORE」
文章目录 1. CPU的功能和基本结构 1.1 CPU的组成 1.1.1 运算器的基本组成 1.2.2 控制器的基本组成 1.2.3 CPU的总图 2. 指令执行过程 2.1 指令周期 2.2 指令的 ...
- 计组学习笔记之CPU(3)——硬布线控制器和微程序控制器
目录 控制器 控制器的结构和功能 硬布线控制器 硬布线控制器的定义 硬布线控制器结构 逻辑网络输入信号的三个来源 硬布线控制器的基本原理 微操作控制信号 微操作控制信号的产生 安排微操作时序的原则 微 ...
- 中央处理器(CPU)—— 控制器的功能和基本原理(硬布线控制器(CU))
本文主要介绍硬布线控制器设计(了解即可) 1.硬布线控制器的设计 ---- 纯硬件方式实现控制器 (1)硬布线控制器概念 设计思路: 硬布线控制器基本原理 (2)硬布线控制器设计(了解) 分析每个阶段 ...
- (计算机组成原理)第五章中央处理器-第四节1:CPU硬布线控制器的设计原理(逻辑表达式,微操作时序,电路设计)
文章目录 一:内容回顾 二:硬布线控制 (1)CU如何发出微命令 (2)逻辑化表达式 三:硬布线控制器设计 (1)硬布线控制器设计步骤 (2)步骤一:分析各个阶段的微操作序列 (3)步骤三:安排微操作 ...
- hc05与单片机连接图_基于proteus的51单片机开发实例(13)-LED指示那个按键被按下
1. 基于proteus的51单片机开发实例(13)-LED指示那个按键被按下 1.1. 实验目的 本实例将实现两路外部中断的检测和识别,让我们能够更好地理解51单片机的外部中断以及中断优先级的概念. ...
- 2016计算机课程设计,2016年计算机组成原理课程设计-硬布线控制器的设计.doc
2016年计算机组成原理课程设计-硬布线控制器的设计 编 号: 学 号: 课 程 设 计 教 学 院计算机学院课程名称计算机组成原理课程设计题 目硬布线控制器的设计专 业计算机科学与技术班 级二班姓 ...
- 8 计算机组成原理第五章 中央处理器 控制器 硬布线控制器 微程序控制器
文章目录 1 控制器的功能和工作原理 1.1 控制器的结构和功能 1.2 控制单元的输入和输出 1.2.1 控制单元输入 1.2.2 控制单元输出 2 硬布线控制器 2.1 CPU的控制方式 2.2 ...
- 基于proteus的功率_学习电路仿真:基于proteus电路仿真软件的步进电机仿真
本文是电路仿真软件的进阶篇,对于电路仿真软件的基础篇,大家可翻阅往期文章哦.本文中,将基于proteus电路仿真软件的步进电机仿真,一起来了解下吧. 步进电机广泛应用在生产实践的各个领域.它最大的应用 ...
最新文章
- 计算机桌面是是在哪个盘,电脑虚拟内存是设置在哪个盘的
- 软件测试黑马程序员课后答案_软件测试课后习题答案
- 运算符重载(c++细节篇二)
- MTK 添加自定义PMS权限 Patch
- python怎么输出文字_python怎么输出汉字
- NoNode for /hbase/hbaseid解决方案
- java实现打印直角三角形
- iphone8plus屏幕尺寸_百思买在苹果发布会前列出了一款“iPhone SE Plus”屏幕保护保护膜...
- C++工作笔记-仿大佬“容器”风格
- iOS界面设计之基础控件的学习 --- UITextField
- hdu 1203 I NEED A OFFER!
- BZOJ - 2783 树
- ASP.NET 2.0下实现匿名用户向注册用户的迁移(上) zhuan
- 海康威视 java B/S 开发 流程
- siamfc代码解读_分析SiamFC
- python、变量命名中字母不区分大小写_python变量名不区分大小写吗
- 接连倒闭失联的背后 传统健身房生意为什么突然就不行了?
- 完蛋,公司被一条 update 语句干趴了!
- 顺丰快递单号查询API接口调试demo【快递100API接口】
- cpu第几代计算机,赛扬G系列有几代cpu分别是
热门文章
- 长春计算机学校哪个好技校,长春市技校排名前十的学校
- 使用Flex做出对比杜邦分析图
- Google AdWords: Intermediate Techniques Google AdWords:中级技术 Lynda课程中文字幕
- 第一份工作,入职前的感想和疑惑
- 社区团购系统介绍 社区团购小程序分析
- 01背包问题(取还是不取呢)
- CC65 开发FC/NES 游戏(一)环境搭建(2021-04-27更新部分内容和修改部分错误介绍)
- 逆向学习(二) 安卓逆向
- gis 联合 融合_三大院齐聚郑州,共同探索BIM+GIS和大数据应用的无限可能
- cocos2d-iphone之魔塔20层第二部分