CPU模型机控制信号整理

在这里插入图片描述

前言:

我们的数字逻辑大作业的控制信号是一个最大最大的难点,于是我就在制作CPU的时候一边做一边整理了这份控制信号文档
完整的CPU工程文件可以在下方链接下载,里面也有一份更好看的控制信号整理文档.无需花费积分哦
//download.csdn.net/download/qq_43536068/12037172

*注:

如果没有特别注明SM=0,那么默认是在SM=1的”执行”的时候(即时钟下降沿)的真值表

SM为0取地址SM为1执行
因此,当SM为0的时候,实际上控制信号产生逻辑输出的是“取出指令”的控制信号

从单个元件的视角查看控制信号

通用寄存器组WE

WE (不要再给WE取反了!!!就之间WE)允许BUS上的数据进入通用寄存器组
MOVA,MOVC,ADD,SUB,OR,NOT,RSR,RSL,IN,SM=0(debug取地址周期为WE必须为1)
RAA[1,0]为IR[3 downto 2] 控制A口输出的控制信号
RWBA[1,0]为IR[3 downto 2] 控制B口输出 以及 写入操作

指令计数器PC

在这里插入图片描述
IN_PC: SM=0 (SM=0的时候PC需要进行自加操作)
LD_PC: JMP,JZ,JC的第二个周期的执行时间

选择器selector

在这里插入图片描述

RAM

DL: SM=0,MOVC,JMP,JC,JZ (jmp,jc,jz指令的地址读出阶段(也就是jmp系列指令的第二个周期)需要读)
XL: MOVB0

指令寄存器IR

LD_IR: SM=0

移位逻辑

F-BUS: MOVA,MOVB,ADD,SUB,OR,NOT
FRL-BUS: RSL
FRR-BUS: RSR

ALU

在这里插入图片描述
S[0]:ADD OR
S[1]:SUB NOT
S[2]:SUB OR
S[3]:ADD OR NOT
M:ADD SUB OR NOT
在这里插入图片描述

联合调试验证–从”事件”的视角

取指令周期

事件:
一条地址从 PC->选择器->RAM->IR
时间:
在这里插入图片描述

控制信号:
LD_PC 0
IN_PC 1
MADD 00
DL 1
XL 0
/CS 0(我决定cs直接拿去连接时钟)
LD_IR 1(我决定这个直接由SM控制)

MOVA

MOVA R1,R2是三个寄存器之间的互相移动,把数据从R1移动到R2
“执行周期”与此指令相关的控制信号

移位逻辑
F-BUS 1
FL-BUG 0
FR-BUS 0
ALU
S[3…0] 1111
M 0
通用寄存器组
RAA 不固定
RWBA 不固定
/WE 0

MOVC

MOVC R1,M是把RAM中数据移动到寄存器中的命令,其中M是C寄存器中存储的地址
“执行周期”与此指令相关的控制信号
其中,M走寄存器组的A口输出送给RAM,所以在我的图里面,selector选择器需要选取相应的寄存器A口的输出送给RAM的地址入口

移位逻辑
F-BUS 1
FL-BUG 0
FR-BUS 0
ALU
ALU不参与这个指令的过程
S[3…0] 1111
M 0
通用寄存器组
RAA 11
RWBA 不固定
/WE 0(执行周期)(只在乎下降沿的前一瞬间)
选择器(易错)
选择器需要选择寄存器组A口的输出
MADD[1…0] 01(执行周期)
RAM(基本与取地址的过程相似)
RAM需要把selector送过来的那个地址的存储单元中的值送到总线上
addr[7…0] 应该由selector输送过来
DL 1
XL 0

ADD

移位逻辑
移位逻辑直接放行ALU的输出值
F-BUS 1
FL-BUG 0
FR-BUS 0
ALU
ALU需要进行运算…得仔细检查ALU的两个输入口和寄存器的两个输出口有没有错误连接
S[3…0] 1001
M 1
通用寄存器组
RAA 不固定
RWBA 不固定
/WE 0

SUB

移位逻辑
F-BUS 1
FL-BUG 0
FR-BUS 0
ALU
S[3…0] 0110
M 1
通用寄存器组
RAA 不固定
RWBA 不固定
/WE 0

RSR

移位逻辑
F-BUS 0
FL-BUG 0
FR-BUS 1
ALU
不进行运算直接放行,并且是放行寄存器组B输出口送出的值(寄存器组的B口其实就是RWBA控制信号所控制的,而且RWBA也控制着”总线来的数据该写入哪个寄存器里面”)
S[3…0] 1010
M 0
通用寄存器组
RAA 不固定
RWBA 不固定
/WE 0

JMP

JMP指令的意义在于,”取地址周期”从RAM取出本条指令,”执行周期”再从RAM取出一个8位地址,然后把这个8位地址塞进PC里面(这样下一次PC就会把这个地址送给RAM,实现”跳转”)
RAM
DL 1
XL 0
addr 由选择器selector提供
选择器
MADD 00
PC
LD_PC 1(执行周期)
IN_PC 0(执行周期)

MOVB

MOVB M R2是把寄存器里面的值送进ram里面
“执行周期”的控制信号
ALU
ALU需要直接放行寄存器中输出的值(寄存器中的值由A口输出)(又需要修改ALU这个元件的逻辑了)
移位逻辑
移位逻辑也是直接放行
F-BUS 1
FL-BUS 0
FR-BUS 0
WE
RAA 除了”11”以外任意值
RWBA 11
Selector选择器
选择器在执行周期需要给RAM的addr地址入口送入来自寄存器C(将会从寄存器B输出口(因为这条命令是MOVB 11 R2,而”11”所在的位对应RWBA控制信号)读出)的地址值
MADD[1…0] 10 (注意!!MADD(1) 是高位,MADD(0)是 低位)(这个要看自己电路图的selector和寄存器组的接法灵活确定)
RAM
RAM在执行周期需要被写入,所以XL=1
DL 0
XL 1

OUT指令

WE寄存器组
送出要输出到”输出设备”OUTPUT的值
WE 1(此时不需要写入所以WE必须为1)
RAA 无效,随便写啥都行
RWBA 任意值,你想显示哪个寄存器的值就写在这里
ALU
ALU需要直接放行来自寄存器B输出口的值
S[3…0] 0100
M 0
移位逻辑
移位逻辑也是直接放行
F-BUS 1
FL-BUS 0
FR-BUS 0

HALT

HALT的实现方式就是让SM停止工作,我用了一个异或门就搞定了

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
模型计算的设计 一、教学目的、任务与实验设备 1. 教学目的 (1)融会贯通本课程各章节的内容,通过知识的综合运用,加深对计算系统各模块的工作原理及相互联系的认识,加深计算工作中“时间—空间”概念的理解,从而清晰地建立计算的整概念。 (2)学习设计和调试计算的基本步骤和方法,提高使用软件仿真工具和集成电路的基本技能。 (3)培养科学研究的独立工作能力,取得工程设计与组装调试的实践和经验。 2.设计与调试任务 (1)按给定的数据格式和指令系统,在所提供的器件范围内,设计一台微程序控制模型计算。 (2)根据设计图纸,在MAX+PLUS 平台上进行仿真,并下载到EL教学实验箱上进行调试成功。 (3)在调试成功的基础上,整理出设计图纸和其他文件。包括:①总框图(数据通路图);②微程序控制器逻辑图;②微程序流程图;④微程序代码表;⑤元件排列图(或VHD程序清单);⑥设计说明书;⑦调试小结。 2. 实验设备 (1) PC一台 (2) EL教学实验箱 (3) MAX+PLUS Ⅱ配套软件 二、数据格式和指令系统 本模型是一个8位定点二进制计算,具有四个通用寄存器:R0~R3,能执行11条指令,主存容量为256KB。 1. 数据格式 数据按规定采用定点补码表示法,字长为8位,其中最高位(第7位)为符号位,小数点位置定在符号位后面,其格式如下: 数值相对于十进制数的表示范围为: -1≤X≤1―2―7 2. 指令格式及功能 由于本模型器字只有8位二进制长度,故使用单字长指令和双字长指令。 ⑴ LDR Ri,D 格式 7 4 3 2 1 0 0 0 0 0 Ri 不 用 D 功能: Ri←M(D) (2) STR Ri,D 格式 7 4 3 2 1 0 0 0 0 1 Ri 不 用 D 功能: M(D)←(Ri) (3) ADD Ri,Rj 格式 7 4 3 2 1 0 0 0 1 0 Ri Rj 功能: Ri ←(Ri)+ (Rj) (4) SUB Ri,Rj 格式 7 4 3 2 1 0 0 0 1 1 Ri Rj 功能: Ri ←(Ri)- (Rj) (5) AND Ri,Rj 格式 7 4 3 2 1 0 0 1 0 0 Ri Rj 功能: Ri ←(Ri)∧ (Rj) (6) OR Ri,Rj 格式 7 4 3 2 1 0 0 1 0 1 Ri Rj 功能: Ri ←(Ri)∨ (Rj) (7) MUL Ri,Rj 格式 7 4 3 2 1 0 0 1 1 0 Ri Rj 功能: Ri ←(Ri)× (Rj) (8) 转移指令 格式 7 4 3 2 1 0 0 1 1 1 条件 不 用 D 功能: 条件码 00 无条件转移 PC ← D 01 有进位转移 PC ← D 10 结果为0转移 PC ← D 11 结果为负转移 PC ← D ⑼ IN Ri,M j 格式 7 4 3 2 1 0 1 0 0 0 Ri Mj 其中M j为设备地址,可以指定四种外围设备,当M j=01时,选中实验箱的二进制代码开关。功能: Ri ← (M j) ⑽ OUT Ri,M j 格式 7 4 3 2 1 0 1 0 0 0 Ri Mj 当M j=10时,选中实验箱的显示灯。功能: (M j)← Ri ⑾ HALT(停指令) 格式 7 4 3 2 1 0 1 0 0 0 不用 不用 功能: 用于实现停。 三、总体设计 总体设计的主要任务是 (1) 选定CPU中所使用的产要器件; (2) 根据指令系统、选用的器件和设计指标,设计指令流的数据通路; (3) 根据指令系统、选用的器件和设计指标,设计数据流的数据通路。 计算的工作过程,实质上是不同的数据流在控制信号作用下在限定的数据通路中进行传送。数据通路不同,指令所经过的操作过程也不同,器的结构也就不—样,因此数据通路的设计是至关重要的。所谓数据通路的设计,也就是确定器各逻辑部件相对位置的总框图。 数据远路的设计,目前还没有非常标准的方法。主要是依据设计者的经验,并参考现有器的三种典型形式(单总线、双总线或三总线结构),根据指令系统的要求,可采用试探方法来完成。其主要步骤如下: (1) 对指令系统中的各条指令进行分析,得出所需要的指令周期与操作序列,以便决定各器件的类型和数量。 (2) 构成一个总框图草图,进行各逻辑部件之间的互相连接,即初步确定数据通路,使得由指令系统所包涵的数据通路都能实现,并满足技术指标的要求。 (3) 检验全部指令周期的操作序列,确定所需要的控制点和控制信号。 (4) 检查所设计的数据通路,尽可能降低成本,简化线路。 以上过程可以反复进行,以便得到一个较好的方案。 图1给出了一个没有考虑乘法除法指令操作的总框图参考方案,注意,在此方案确定之后,应该检查所选用的各个器件是否满足数据通路的要求。实际上,数据通路的设计与器件的选择应同时进行而不能分离地工作。其次,接入总线的器件都要有三态输出,以便与总线连接。另外,在信息传送过程中应当注意器件原码和反码输出的配合关系。 图1所示的方案采用单总线结构,使用的许多器件都是三态输出,这种方案便于总线的连接和扩展,但缺点是指令和数据的传送都要经过总线,因此对总线的使用权就要分配得当。另外,执行算术逻辑指令时,先将第一个操作数由通用寄存器Ri送至缓冲寄存器DR1,然后再由通用寄存器Rj取第二个操作数送至缓冲寄存器DR2,之后送往ALU进行运算。显然,执行—条算术逻辑指令的时间相应要长一些。 图1 模型数据通路框图 四、微程序控制器 数据通路框图—旦确定,指令流与数据流的通路也就随之最后确定,因而运算器和控制器的大部分结构也就确定下来了。 图1中各功能器件上还标注了控制点及其控制信号.这些控制信号就是微程序控制器进行设计的依据。 1.微指令格式 微指令格式建议采用水平型微指令,微命令编码采用直接表示法和分段直接译码法相结合的混合表示法,以缩短微指令长度。后继地址采用断定方式。微指令格式如下: 控制字段 判别字段 下址字段 同学们应根据本模型的具体情况来确定各字段的长度。 2. 微程序控制器 根据微指令和微程序的长度,确定控制存储器需选用几片EPROM(2716)用位扩展方式组成。 3.微程序设计 将器的全部指令系统采用微指令序列实现的过程,叫做微程序设计。一条器指令对应一个微程序,11条器指令应当对应11个微程序。 微指令格式确定后,微程序的横向设计在于正确地选择数据通路,纵向设计在于确定后继微指令地址.事实上,微程序设计的关键在于纵向设计,即如何确定下一条微指令的地址。通常的做法是先确定微程序分支处的微地址,因为微程序分支处需要进行判别测试。这些微地址确定以后,就可以在一个“微地址表”中把相应的微地址单元填进去,以免后面的设计中重复使用而未发现,以致造成设计错误。 五、输入输出 输入输出是人联系的重要手段,输入可采用开关、键盘等方式,输出可采用字符显示或打印输出等方式。考虑到成本与设备因素,本模型采用最简单的二进制开关输入和发光二极管显示的方法,换句话说,本模型中只使用两种“外部设备”:一种是二进制代码开关,它作为输入设备;另一种是发光二极管,它作为输出设备。 本设计为了节省器件,输入输出时可以不设置专门的数据缓冲寄存器。例如输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入的信息也就不变。输出时,将输出数据送到数据总线BUS上,驱动发光二极管进行显示。 如果采用正规的输入输出方法,可采用相应的器件构成接口电路。 六、组装与调试 1. 元器件的布局与连接 由图1看出,数据通路一旦确定之后,在调试过程中将会很少有变化。因此从组装和调试的角度来看,模型总框图可划分为如下三个相对独立的功能模块: (1)运算器、存储器和系统总线 (2)时序产生器 (3)微程序控制器 本模型所使用的器件较多,布线的工作量相当大,希望同学们认真、细致地工作。 元器件布局的一般原则是尽心能地按功能电路相对集中,这样做的好处是各器件之间的连线较短,同时也便于组装和调试. 为了安装和调试检查方便,集成电路应当以相同方向排列。通常总是把集成电路片的定位缺口向左,此时它的电源脚在左上角,接地脚在右下角。这种排列有利于设置电源线与地线。规整的布线不仅对调试维修带来方便,也可以保证线路可靠地工作,任何马马虎虎的接线将会给调试带来难以想象的后果,因此在布线前必须对布线质量给予高度重视。 2. 分调试 按功能模块进行分调是实现总调的前提和基础,因为只有各功能模块工作正常后,才能保证全的正确运行。为此必须—步一个脚印、精心做好分调试,切不可赶急图快,以免在未做好分调的情况下进入总调,而最后又不得不返回头来重新分调。分调的重点放在时序产生器和微程序控制器上。 3. 总调 当各模块分调正常后,可将控制器发出的控制信号线接到相应的功能部件中去,转入全总调试。 总调的第一步,事实上是检查全部微程序流程图。方法是用单步方式读出并执行微指令。进行的顺序是:先执行控制台指令的微程序流程图,然后执行器指令的微程序流程图。当全部微程序流程图检查完毕后,如果存储器和运算器功能执行正确,就算总调第一步完成。 第二步是在内存中装入包括有全部指令系统的一段程序和有关数据,进一步可采用单指令方式或连续方式执行,以验证器执行指令的正确性。 第三步是编写一段表演程序,令器运行。 第四步是运行指导教师给出的验收程序。如果通过,就算大功告成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值