数逻第六章 寄存器

寄存器组成

一般使用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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值