5 寄存器¶
5.1¶
整体架构¶
5.1.1 寄存器转移操作¶
定义:存储在寄存器中的数据的移动与处理。
包括三个部分:寄存器组(包括load, count, shift, add等),基本操作(也叫做微操作microoperation),操作控制。
寄存器传输语言:RTL
一些标记:
- 字母与数字代表寄存器,比如\(R2, PC, IR\)
- 括号代表寄存器位的范围,比如\(R1(1), PC(7:0)\)
- 箭头代表数据传输,比如\(R1 \leftarrow R2\)
- 逗号分隔并行操作,比如\(R1 \leftarrow R2,R2 \rightarrow R1\)
- 中括号指定内存地址,比如\(R0 \leftarrow M[AR]\)
- 条件转移:\(if(K1=1)then(R2\leftarrow R1)\)表示为\(K1:R2\leftarrow R1\)
微操作可分为:
- 传输:将寄存器上的数据进行转移
- 算数:对寄存器上的数据进行算数运算
- 逻辑:对寄存器上的数据进行位运算
- 转移:转移数据进入寄存器
Note
条件处的运算均为位运算,后半部分可能出现算数运算, 对于\((K1+K2):R1 \leftarrow R1 \vee R3\)式子来说,前面的+是指的是位运算中的+,而不是算数运算中的+
5.1.2 寄存器传输结构¶
- 基于多路选择器的传输
对于每一个寄存器均连接一个多路选择器
- 基于总线的传输
只用一个多路选择器,节省了门数入代价
- 三态门总线传输
利用三态门代替了多路选择器
5.2¶
时序电路设计的方法:一是仅仅利用flip-flops与逻辑门进行设计,二是利用RTL来设计,利用不同类型的寄存器以及函数模块进行设计。后者适用于复杂电路的设计。
5.2.1 转移寄存器(Shift Registers)¶
可以简单的利用D flip-flops 成排连接
也可以增加平行输入端,并相应的增加一个2-1MUX
甚至可以继续增加一个Hold端,将MUX改为三输入
多操作的综合Shift Registers
Note
同理,Shift Register也可以被做成移动更多位的
5.2.2 计数器(Counters)¶
分为两种,同步计数器与异步计数器(行波计数器)
- 异步计数器
如果有更多位,只需要在后面继续把反输出输入下一个D flip-flop的C口即可。
注意
- 从最低有效位开始波的频率逐位减半。
- 每一次传播都有一个延迟时间。
- 从\((1,1,1)\rightarrow (0,0,0)\)会有中间态产生
- 同步计数器
使用一个递增器即可
Count Enable(CE):控制递增还是保持原状。
Carry Out(CO):用于连接下一个计数器,比如说更高位的计数,CO就可以连接到下一个4位的计数器的EN端了
当然,也可使用平行门电路,与全加器类似的优化方法。
补充1:Counter with Parallel Load
补充2:Synchronous BCD
方法1:列出状态表,注意到编码存在非法状态(10-16),我们可以在这些自由项中任意选择状态,让输入方程更加简单。但是我们不能让非法状态落入死循环,以上是被动地设置。我们也可以主动地设置检测非法状态的方程,并让非法状态尽可能快的回到正常状态。
总结来说主动处理非法状态的方法:首先确定非法状态不循环,然后可以设置非法状态的检测方程,接着可以选择让他尽可能快地回到正常状态,也可以直接回到固定地某一个状态。
方法2:还有一种方法就是正常的计数器,增加一个load信号,由于load信号优先级比count高,当检测到\(Q_0Q_3=1\)就将0000load到计数器中即可。当然这个方法也可能出现扰动进入非法状态,但是只要来一次时钟信号仍然会回到0000
补充3:Counting Modulo N
(1)异步清零法:可以像补充2中方法2中那样使用一个特征函数接一个与门然后接到clear口上,但是在实际情况下,若进入与门的三个信号出现了小小的偏差,导致出现了特征函数的情况并导致清零。这就造成了该电路计数的不稳定性。
(2)同步清零法
(3) 拓展:超过4位的N,需要计数器的拼接
例如8-38的重复计数器:
5.2.3 寄存器单元设计¶
两种设计方法:一是基于MUX的设计方法,二是传统时序电路的设计方法
基于MUX的设计方法的基本模板:
下面利用一个例子来比较两种方法的优劣。
Register transfers: \(CY:A\leftarrow B\bigoplus A\) $CX:A\leftarrow B\vee A $ \(Hold state:(0,0)\)
Control inputs:\((CY,CX)\)
方法一:
门输入代价为19
方法2:
先画出状态图(Moore Model),然后画出状态表,然后利用K-Maps写出方程。这时的门数入代价就是14。
比较上述两种方法,方法一简单但是门数入代价较高,方法二复杂但门数入代价较小。但在面对较多状态时,方法二无法有效解决问题。
5.2.4 串行数据传输¶
串行数据传输与并行数据传输相对应。
串行数据传输不受数据大小长度影响,而并行数据传输受其影响
5.3 数字系统设计¶
数字系统设计三要素:寄存器、微操作、控制
5.3.1 设计DashWatch¶
要求:
画控制单元的状态图:
针对Datapath的控制信号(Control Signals):
数据通路(Datapath):
控制单元(Control Unit):
控制单元的输出:
\(LSR=S1+S6,RSTM+S2,ENTM=S3,UPDATE=S6,DS=S7\)