寄存器组成
一般使用load信号选择将寄存器的值重新加载或者加载原来的值。
而不使用停掉时钟信号而产生时序问题。
可以在In1上接自增自减信号,或者其他信号。
寄存器传输操作
寄存器名称:数字和字母表示。
寄存器的位数:括号中的数字表示,特别有H代表高位数一半,L代表低位数一半。
箭头代表数据的转移
括号内的字母代表内存地址。
条件传输
if(K1) R1<-R2 缩写为:K1:(R1<-R2)
冒号左侧的式子为逻辑1时,进行冒号右边的式子,否则不进行。
sl:逻辑左移,填0
sr:逻辑右移,填0
微操作
多路复用器传输
Multiplexer-Based Transfers:由多路复用器确定寄存器的输入
K1:(R0<-R1)
~K1(K2):(R0<-R2)
寄存器设计
右侧是一个寄存器,首先输入K选择操作并对寄存器使能。
若输入全0则维持,否则用多路复用器选择一个操作对寄存器的值进行更新。(每一个编码选择一个操作)
1.首先确定有几个寄存器(如果可以的话)(注意并不是有几个寄存器就有几个状态,寄存器的个数应该和输入的个数相同)
2.画出状态表,第一列为现态,第二列为次态,第三列为输出
3.根据状态表写出次态方程。比如两个寄存器A,B输入x,y,那么次态A(i+1)和Ai,Bi,x,y有关,画出四变量卡诺图进行化简
Bus-Based Transfers for Multiple Registers
一般是用于多路复用器之间的传输。
注意到每一个的输出都接在了两路总线上,这两路总线分别接在另两个寄存器的输入选择上
这种方法减少了电路成本,注意到将三个寄存器的输入接在了一个3选1多路复用器上,然后将多路复用器的输出接在了三个寄存器的输入上
Three-State Bus
基于三态门的寄存器信号传输。输出信号通过三态门以后被直接接在了总线上,总线分别接在了三个寄存器的输入上。通过三个三态门的控制实现寄存器信号转移
Shift Registers
最基本的移位寄存器,每一个时钟脉冲,信号就移位一次
将In的信号移入
如果加入多路复用器,可以选择加载信号或者移位。
首先shift选择串行输入还是并行输入。
当选择并行输入时,Load选择加载数据还是进行移位
四选一多路复用器,输出接着一个寄存器上,如果选择0,则保持
如果选择1,则上方的移入,如果选择2,下方的移入,如果选择3,输入一个新的数
计数器
Ripple Counters
由于传输延迟而实现的。
clk的第一个上升沿,传入的是clk=0,A=1
clk的第二个上升沿,传入的是clk = 1,A=0,因此A是clk的两倍,B是A的两倍
产生的是BA = 00 01 10 11 00 01 10 11,...产生了计数效果
Synchronous Counters
每一个时钟信号就将寄存器的数值加1传输进寄存器
Counter with Parallel Load
Load |
Count |
Action |
0 |
0 |
Hold Stored Value |
0 |
1 |
Count Up Stored Value |
1 |
X |
Load D |
添加了一个load的选择器,可以选择信号。
Counting Modulo 7
计数到6时重新加载输入0,否则自增。不能加在clear上,因为可能时间不够长导致其被reset