跳转至

5 寄存器

文本统计:约 1460 个字

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)

分为两种,同步计数器与异步计数器(行波计数器)

  1. 异步计数器

如果有更多位,只需要在后面继续把反输出输入下一个D flip-flop的C口即可。

注意

  1. 从最低有效位开始波的频率逐位减半。
  2. 每一次传播都有一个延迟时间。
  3. \((1,1,1)\rightarrow (0,0,0)\)会有中间态产生


  1. 同步计数器

使用一个递增器即可

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\)

评论区

对你有帮助的话请给我个赞和 star => GitHub stars
欢迎跟我探讨!!!