想象一家快递分拣中心:墙边是一排排弹簧锁储物柜,传送带在仓库里蜿蜒穿梭,工头每隔几秒吹一次哨。哨声响起的瞬间,所有柜门同时“咔哒”锁死,把刚放进去的包裹锁得严严实实;传送带则随着节拍器“咚、咚”地迈步,把包裹一格一格地送到下一站。这排储物柜和这条传送带,就是今天的主角——寄存器与移位寄存器。寄存器是一排“定时上锁”的电子储物格,用于暂存数据;移位寄存器则在时钟的驱动下让数据逐位移动,实现串行与并行的转换。从四种装卸货玩法,到左移乘二、右移除二的算术绝活,再到绕圈跑的环形计数器,本文会用一条传送带,把时序电路里最重要的两种器件讲得明明白白。

岗位关联

对 AI 从业者而言,寄存器与移位寄存器是理解芯片如何存储、搬运数据的钥匙——无论你做模型部署、底层算子优化还是 AI 芯片架构,都绕不开这套“节拍感”的底层逻辑。

目录
  1. 可视化演示
  2. 寄存器基础:总闸落下的储物柜
  3. 移位原理:一节一拍向前走
  4. 工作模式:四种装卸货玩法
  5. 双向移位:能进能退的传送带
  6. 典型应用:传送带的三样绝活
  7. 环形计数器:一个工件绕圈跑
  8. 扭环形计数器:会翻转的传送带
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

\u5c55\u793a\u79fb\u4f4d\u5bc4\u5b58\u5668\u6570\u636e\u6d41\u52a8(SISO/SIPO/PIPO)\u3001LFSR\u7ebf\u6027\u53cd\u9988\u7ed3\u6784\u4e0e\u4f2a\u968f\u673a\u5e8f\u5217\u751f\u6210\u3001CPU\u5bc4\u5b58\u5668\u5c42\u7ea7\u8bbf\u95ee\u5ef6\u8fdf\u5bf9\u6bd4\uff0c\u5207\u6362\u6a21\u5f0f\u67e5\u770b\u3002

本节配有交互动效(进入视口后自动加载,约 3KB)。

\u79fb\u4f4d\u5bc4\u5b58\u5668\u6570\u636e\u6d41\u52a8 SISO: \u4e32\u884c\u8f93\u5165\u2192\u9010\u4f4d\u79fb\u4f4d\u2192\u4e32\u884c\u8f93\u51fa SIPO: \u4e32\u884c\u8f93\u5165\u2192\u5e76\u884c\u8f93\u51fa(8\u4f4d\u540c\u65f6\u8bfb) D[n+1] = D[n] << 1 | SI

寄存器基础:总闸落下的储物柜

想象一家快递站,墙上是一排排弹簧锁储物柜,工头每隔一小时吹一次哨子。吹哨的瞬间,所有柜门同时“咔哒”上锁,把顾客刚放进去的包裹锁得严严实实;下一声哨响之前,柜门纹丝不动。这排储物柜,就是寄存器。

把“哨声”换成电信号,把“电子储物格”换成 D 触发器,故事就变成了芯片里的时序逻辑。D 触发器是数字电路里最小的“储物格”,它只有一个数据输入端 D 和一个时钟输入端 CLK。所谓“边沿触发”,是指它只在时钟信号从 0 跳到 1(上升沿)的那一瞬间,采样输入 D 的值并记住它;其余时间,无论 D 怎么变化,输出 Q 都保持原样,像锁死的柜门。一个 D 触发器存 1 位数据;把 n 个触发器的时钟端接在一起、数据端各自分开,就构成了 n 位寄存器。“时钟共用”的设计极其关键,它保证所有位在同一时刻被锁存,不会出现先锁高位、后锁低位的“数据错位”。寄存器最核心的特性方程:

回到快递站的画面:寄存器从不主动“想起”什么,它只在哨声响起的那一瞬间记住门外站着的值。正是这种“定时上锁”的纪律性,让数字电路能够在一个个时钟节拍中有条不紊地保存运算的中间结果。

Qn+1=DQ_{n+1} = D
D 触发器的特性方程:下一个时钟边沿后的输出 Q,等于当前时刻输入 D 的值。
  1. 时刻标记下标 n 表示“当前时刻”,n+1 表示“下一个时钟边沿之后的那一刻”。
    n+1n+1
  2. 数据采样上升沿到来的瞬间,触发器把输入 D 的值“拍”进自己体内。
    Qn+1=DQ_{n+1} = D
  3. 保持特性非边沿时刻,输出 Q 维持原值,记忆不丢。
    Qn+1=QnQ_{n+1} = Q_{n}

移位原理:一节一拍向前走

工头嫌储物柜太死板——包裹得往下一站送。于是他在柜子底下装了一条传送带:每个节拍,所有包裹整体向右挪一格,最右边的掉出货道,最左边的空位等待新包裹进入。这条传送带,就是移位寄存器。

移位寄存器本质上就是“寄存器 + 级间连线”:把前一级的输出 Q 接到后一级的输入端 D。这样每个时钟边沿,第 i 级的内容就“搬进”第 i+1 级,数据整体向一个方向移动一格。约定命名——“右移”是指数据从左边进来、向右逐级传递;因此第 i 级在下一拍会拿到第 i-1 级当前持有的值:

传送带最重要的价值是“同步搬运”:所有数据在同一时刻、朝同一方向、移动同样的步数。芯片里做卷积计算时,输入特征图的数据就是靠这样的移位通路,一行一行、一列一列地“流”进乘法器的。组合电路像一群没有钟表的工人各干各的,而移位寄存器像一支训练有素的搬运队,听着号令整齐迈步。

Qi+1n+1=QinQ_{i+1}^{n+1} = Q_{i}^{n}
移位关系:第 i+1 级触发器在下一个时钟边沿,会存储第 i 级触发器当前的数据。
  1. 下级编号下标 i 表示第几级寄存器,i+1 是它右边的邻居。
    i+1i+1
  2. 时刻编号上标 n 表示当前拍,n+1 表示下一拍,一“拍”就是一个时钟周期。
    n+1n+1
  3. 整体右移下一拍中 i+1 级的数据,等于当前拍 i 级的数据,于是每个数据都向右传了一格。
    Qi+1n+1=QinQ_{i+1}^{n+1} = Q_{i}^{n}

工作模式:四种装卸货玩法

传送带刚建好时,工头只会在最左边放包裹、最右边取包裹,这是“串入串出”——数据逐位从入口进,逐位从出口出,一个时钟一位。可快递站不是只做两头的生意:有时候整排柜子同时装货(并入),有时候整排卸下来(并出)。排列组合一下,就有了四种基本工作模式:

1. 并入并出:所有触发器同时在时钟边沿接收外部并行数据,也同时对外输出——本质是一个带“总闸”的普通寄存器。

2. 串入串出:入口一次进一位,出口一次出一位,常用于跨时钟域的数据搬运。

3. 串入并出:数据从一头逐位进入,凑满 n 位后整排一次性输出——这叫“串转并”。

4. 并入串出:数据先整排装入,再逐位从出口送出——这叫“并转串”。

串行接口(如 UART、SPI)只有一根数据线,一次只能发一位,所以要靠“串入并出”把收到的比特凑成 8 位一字节;反过来,处理器内部总线 32 位并行输出,要发出去得先“并入串出”一位一位排队走。串行传输一位要一个时钟周期,所以 n 位数据全部到达的总时间:

四种模式好比传送带的四种调度方案:有人喜欢整车卸货(并行),有人喜欢流水线逐件发货(串行)。在高速电路里,并行与串行的转换是绕不开的桥——而移位寄存器,就是这座桥的桥墩。

Ttotal=N×TclkT_{total} = N \times T_{clk}
串行耗时:N 位数据逐位传输,总共需要 N 个时钟周期。
  1. 数据位数N 是待传输的比特数,一次只传一位。
    NN
  2. 单拍时间T_clk 是一个时钟周期的时长,即每位数据占用的时间。
    TclkT_{clk}
  3. 乘积汇总N 位逐位传输,总耗时等于位数乘以单拍时间。
    ×N\times N

双向移位:能进能退的传送带

有些快递站的传送带装了倒车挡,按下手柄可以反方向转动——包裹们调头往左边跑。这种既能向右又能向左移动的移位寄存器,叫双向移位寄存器。它比单向版本多了两个东西:一个模式控制端 S,和一整套“换向开关”(多选一逻辑)。

S 的作用就像方向信号灯:S=1 时允许右移,此时每级寄存器在时钟边沿读取“左邻”的数据;S=0 时允许左移,改为读取“右邻”的数据。一个式子可以同时描述两种行为:

实际工程里,74HC194 就是著名的 4 位双向移位寄存器芯片,提供左移、右移、并入、保持四种模式。双向传送带的价值,在于让数据“想往哪走就往哪走”——比如浮点运算器里,尾数对齐时左移、规范化时右移,同一套硬件来回倒腾,省下两套独立的移位电路。

Qin+1=S⋅Qi−1n+S‾⋅Qi+1nQ_{i}^{n+1} = S \cdot Q_{i-1}^{n} + \overline{S} \cdot Q_{i+1}^{n}
双向移位:S 为 1 时,第 i 级下一拍取左侧邻居的值(右移);S 为 0 时,取右侧邻居的值(左移)。
  1. 模式信号S 是方向控制端,1 表示右移,0 表示左移。
    S‾\overline{S}
  2. 右移路径S=1 时,第 i 级下一拍接收第 i-1 级(左邻)的数据。
    S⋅Qi−1nS \cdot Q_{i-1}^{n}
  3. 左移路径\overline{S}=1 时,第 i 级下一拍接收第 i+1 级(右邻)的数据。
    S‾⋅Qi+1n\overline{S} \cdot Q_{i+1}^{n}
  4. 或门合并两条路径按 S 的状态互斥使能,用或运算合成最终输入。
    ++

典型应用:传送带的三样绝活

传送带见得多了,但真正让它封神的,是三个被玩出花的绝活:算算术、拖时间、造随机。

第一招:算算术。 二进制里,左移一位等于乘以 2,右移一位等于除以 2(向下取整)。所以移位寄存器配上加法器,能做出便宜的乘除法器:要算 x × 8,就把 x 左移 3 位,比查乘法表快得多。早期 CPU 的乘法指令,很多就是靠“移位 + 累加”硬算出来的。

第二招:拖时间。 数据在移位寄存器里每拍挪一格,走过的级数乘以时钟周期就是它被延迟的时间。n 级移位寄存器构成“延迟线”,常用来对齐校正信号,比如高清显示器里各通道信号到达时间不一致时,就用可编程延迟线补齐。

第三招:造“随机”。 把移位寄存器最后两级引出来做异或反馈,再接回输入端,就形成了线性反馈移位寄存器 LFSR。它输出的序列看起来东一个西一个毫无规律,其实是完全确定的周期序列——称为“伪随机序列”。n 级 LFSR 精心选择抽头后,能走完除全零外的所有状态,最大周期:

工程上 LFSR 常用作噪声源、数据加扰、CRC 校验的分频器。回到传送带的故事:同样是排队走路,有人用队伍来算账(乘除),有人用它来磨时间(延迟),还有人用它抽签定顺序(伪随机)——传送带还是那条传送带,但玩法完全不同。

Lmax=2n−1L_{max} = 2^{n} - 1
LFSR 最大周期:n 级线性反馈移位寄存器最多可产生 2^n - 1 个不重复的状态。
  1. 状态总数n 个触发器共有 2^n 种状态组合,但全零状态会让反馈永远为 0,被困死。
    2n2^n
  2. 剔除全零全零状态自锁且无意义,所以可用周期最多为 2^n - 1。
    −1-1
  3. 抽头保证只有选择合适反馈抽头的本原多项式,才能达到这个最大周期。
    LmaxL_{max}

环形计数器:一个工件绕圈跑

工头想做一份“轮值表”:4 个工人轮流值班,1 号值完给 2 号,2 号值完给 3 号……轮到 4 号后回到 1 号。于是他把传送带弯成一个闭环,让唯一的包裹永远在圈里跑,永远不会出站。这个“闭环传送带”在电路里就是环形计数器。

实现特别简单:把移位寄存器的最后一级输出直接接回第一级的输入。n 级环形计数器只有 n 个有效状态——任何时刻恰好只有一位是 1,其余全是 0。比如 4 位时状态按 1000 → 0100 → 0010 → 0001 → 1000 循环。由于每个状态都能直观看出“谁在值班”,译码电路不需要额外逻辑,直接取某一级输出即可,在顺序控制(交通灯、机床工序)里相当省事。但环形计数器有个著名隐患:如果上电瞬间状态不是“恰好一个 1”(比如 1010),这个错误模式就会永远在环里反复,无法自愈。

为了解决“卡在错误状态”的问题,工程上会加自启动电路:检测到状态不合法时,强制把系统拉回 1000…0。就像闭环传送带上万一混入两个包裹,管理员会在门口盯着,见到异常就伸手拿掉一个。

Nring=nN_{ring} = n
环形计数器状态数:n 级寄存器可用的有效状态只有 n 个——分别是 n 个“单点 1”循环移位的结果。
  1. 有效模式只有“恰好一个 1”的模式才算有效,共有 n 种位置可放这个 1。
    nn
  2. 循环移位每个时钟周期这个唯一的 1 向右移动一位,经过 n 拍回到原位。
    +1+1
  3. 状态浪费n 位寄存器理论上有 2^n 种状态,环形计数器只用到其中 n 种。
    2n−n2^n - n

扭环形计数器:会翻转的传送带

环形计数器状态太少太浪费,工头想了个改进:传送带在出口处加了一道“翻面机”——包裹每绕完一圈,出来时会自动换个面(0 变 1、1 变 0)再回到起点。这就是扭环形计数器,也叫约翰逊计数器。

实现上和环形计数器的唯一区别,是反馈路径上多了一个反相器:末级输出取反后接回第一级输入。4 位扭环的状态依次是 0000 → 1000 → 1100 → 1110 → 1111 → 0111 → 0011 → 0001 → 0000,共 8 个,正好是普通环形的两倍:

扭环形计数器让“一个包裹正着跑一圈、反着跑一圈”,计数步数翻倍,而代价只是一个反相器。它依然只用了全状态空间的一小部分——4 位理论 16 种状态只用 8 种,但每个状态转换时只有一位变化,译码不会出现毛刺。这块“小账本”,工程上算得比谁都精。

Ntwist=2nN_{twist} = 2n
扭环形计数器状态数:n 级寄存器可得到 2n 个互不相同的有效状态。
  1. 反馈取反末级输出经非门后接回第一级输入,使状态序列“折返”一次。
    Qn‾\overline{Q_{n}}
  2. 翻倍计数每个状态及其按位取反后的状态都合法,所以状态数从 n 变 2n。
    2n2n
  3. 利用率相比普通环形的 n/2^n,扭环提高到 2n/2^n,且译码只需检测连续 0/1 的分界位置,电路同样简单。

AI 应用场景

芯片 RTL 设计中的同步寄存器组

阶段:硬件建模与逻辑综合

解决的问题:在数字芯片设计里,组合逻辑的输出会因门延迟产生毛刺和竞争,直接使用相当危险。传统做法靠人工加缓冲很难保证时序收敛;AI 时代的大算力芯片更需要大量同步寄存器来“切”流水线。用寄存器在每个时钟边沿锁存一次数据,所有信号整齐划一,毛刺被隔离在两级寄存器之间。

具体案例:设计一个 AI 加速器中的数据缓存模块,每来一个时钟脉冲,32 位寄存器组同时锁存当前总线的数据,下一拍再整体输出给后级运算单元。这就像快递总闸一落,整排包裹被同时安全地锁进柜子。

AI 芯片卷积加速器的行缓冲

阶段:数据流调度与片上存储

解决的问题:卷积运算需要同时读取 3×3 邻域的 9 个像素,而摄像头或内存送来的数据是一行一行串行到达的。传统做法是把整幅图像先存进大容量 RAM,访问慢且功耗高;用多组移位寄存器做成“行缓冲”,让数据像传送带一样逐行流过,只保留当前需要的几行像素。

具体案例:在 NPU 中处理 224×224 特征图时,用 3 组深度为 224 的移位寄存器暂存最近三行数据,每来一个新像素,整条“传送带”前进一格,卷积窗口随时能取到完整的 3×3 邻域,无需反复访问片外存储。

高速 SerDes 通信中的 LFSR 加扰

阶段:物理层数据处理

解决的问题:高速串行链路如果连续传输长串的 0 或 1,接收端时钟恢复电路会“失锁”。传统做法是增加冗余编码;更高效的对策是用 LFSR 生成伪随机序列,与发送数据异或后打散数据图案,接收端再用同步的 LFSR 还原。

具体案例:PCIe 3.0 使用 23 级 LFSR 对下行数据加扰,让频谱更均匀、电磁干扰更低。这就像给每个包裹贴上随机编号再上路,防止一整列同样的箱子让流水线看花眼。

Python 演示

python45 行
# -*- coding: utf-8 -*-"""N 位右移寄存器与 3 级 LFSR 的 Python 实现"""class ShiftRegister:    """N 位右移寄存器, bit0 为最低位右端, 新位从最高位进入"""    def __init__(self, n, init=0):        self.n = n        self.val = init & ((1 << n) - 1)     def shift_in(self, bit):        # 旧数据右移一位, 新 bit 放到最高位 (串入)        self.val = (self.val >> 1) | (bit << (self.n - 1))        return self.out()     def out(self):        # 并行输出, 返回 n 位整数        return self.val class LFSR:    """3 级 LFSR, 特征多项式 x^3 + x + 1, 周期 2^3 - 1 = 7"""    def __init__(self, state=0b111):        self.state = state & 0b111     def next_bit(self):        # 反馈位 = 第3级输出 与 第1级输出 异或        fb = ((self.state >> 2) ^ (self.state >> 0)) & 1        # 右移并把反馈位补到最高位        self.state = ((self.state >> 1) | (fb << 2)) & 0b111        return fb def main():    sr = ShiftRegister(4)    data = [1, 0, 1, 1]    print("串入串出演示: 输入序列 1011")    for b in data:        sr.shift_in(b)        print("  输入", b, "-> 寄存器", format(sr.out(), "04b"))     lfsr = LFSR(0b111)    seq = [lfsr.next_bit() for _ in range(7)]    print("LFSR 伪随机序列: ", seq) if __name__ == "__main__":    main()
目的:模拟 4 位右移寄存器的逐一移入过程,并用 3 级 LFSR 生成周期为 7 的伪随机比特序列,直观展示“传送带搬数据”与“反馈造随机”两个核心机制。
  1. self.val = (self.val >> 1) | (bit << (self.n - 1))数据整体右移一格,同时把新比特放到最高位,对应传送带前进一步。
  2. return self.out()返回当前全部 n 位数据,对应“并出”观察口。
  3. fb = ((self.state >> 2) ^ (self.state >> 0)) & 1抽取第 3 级和第 1 级的输出做异或,构成 LFSR 的反馈。
  4. self.state = ((self.state >> 1) | (fb << 2)) & 0b111寄存器右移并把反馈位补回最高位,限定在 3 位范围内。
  5. sr.shift_in(b)逐位送入数据,模拟串入串出移位。
  6. seq = [lfsr.next_bit() for _ in range(7)]连续取 7 个时钟周期的输出,恰好覆盖一个完整伪随机周期。

常见误区

误区寄存器不就是靠电平锁住数据吗?时钟为高电平就存下来,低电平就保持,和锁存器应该是一回事吧?

正解寄存器的核心是边沿触发的 D 触发器,只在时钟“跳变”的那一瞬间采样输入;锁存器则对电平敏感,高电平期间输入一变输出就跟着变。打个比方:寄存器像只有吹哨瞬间才上锁的储物柜,锁存器像整段时间都敞着门、随时可能被人换走包裹的柜子。在同步电路里,寄存器才能保证各模块在同一个节拍上步调一致。

为何常见:两者都能存储 1 位数据,功能表象相似;而且有些资料把 latch 也翻译成“寄存器”,容易造成混淆。

误区移位寄存器的作用就是把数据从一头搬到另一头,数据不在里面停留,所以不算存储器件。

正解移位寄存器在搬数据的每一拍,内部每个触发器都在“持有”一位数据——它既是传送带,也是储物柜。比如 4 位移位寄存器随时可以读出当前 4 位并行值,这就是“并出”功能。数据不是简单地穿过,而是像包裹在一个个工位上暂存后接力传递。

为何常见:只关注了“移位”的动态过程,忽略了移位寄存器的存储本质——它首先是寄存器,然后才谈得上移位。

误区移位寄存器只是把前级的输出接到后级的输入,看起来是一条通路,应该归到组合电路吧?

正解组合电路没有记忆、输出只由当前输入决定;而移位寄存器每个触发器都受时钟控制,数据能保持、能按节拍移动关键靠“记忆”。它是典型的时序电路。就像传送带本身必须有节拍器驱动才会上货走货,没有时钟的“吹哨”,整条线就是一堆静置的柜子。

为何常见:移位寄存器里确实全是“线连来连去”,初学者容易被它的级联结构误导,忽略了时钟这个最重要的开关。

误区n 级环形计数器只有 n 个有效状态,二进制计数器却有 2^n 个,所以环形计数器毫无优势。

正解状态多不等于适合所有场景。环形计数器是“单热码”编码,每个时刻只有一位为 1,译码电路不用比较器、没有毛刺,直接取某级输出就能得到控制信号,在顺序控制器里实现最简单、最可靠。就像轮值表虽然只记录“谁在值班”,但一看便知,根本不用查表计算。

为何常见:只比较状态数量,忽略了工程中“简单、可靠、低延迟”往往比“状态多”更重要。

误区LFSR 输出的比特东一个西一个,看起来很随机,可以直接当作真随机数用于加密。

正解LFSR 是由固定反馈结构驱动的确定性电路,给定初态后,输出序列完全可复现,周期最多只有 2^n - 1,所以叫“伪随机序列”。它适合做加扰、扩频、测试向量,但不适合直接做安全加密。就像按固定口诀洗牌,外人看着乱,懂口诀的人能从头推到尾。

为何常见:人眼对“随机”的判断很不可靠,短序列的规律性会被表面上的无序掩盖。

面试题

Q1. 寄存器中存储一位数据的核心器件是?

单选题 · easy

  • A.与门电路
  • B.锁存电路
  • C.D触发器← 正确答案
  • D.传输电路

答案:C。寄存器由触发器阵列构成,D 触发器是最标准的 1 位存储单元,边沿触发保证同步。与门、传输门只是组合逻辑或开关,没有记忆能力;锁存器虽可存数,但寄存器教材语境下以 D 触发器为核心。就像储物柜的“格子锁扣”非 D 触发器莫属。

Q2. D 触发器的特性方程是?

单选题 · easy

  • A.Q=~D
  • B.Q=D← 正确答案
  • C.Q=0
  • D.Q=1

答案:B。D 触发器的特性方程是 Q_{n+1}=D,即在时钟边沿输出跟随输入。Q=~D 是 T 触发器的翻转特性,Q=0 和 Q=1 都是固定输出,不符合“采样输入”的行为。可以理解为:哨声一响,柜门锁住的就是门外站着的值 D。

Q3. 4 位串入串出移位寄存器,把 4 个比特全部送入需要几个时钟周期?

单选题 · easy

  • A.1个时钟
  • B.2个时钟
  • C.3个时钟
  • D.4个时钟← 正确答案

答案:D。串入串出模式下,每个时钟周期只能移入 1 位,4 位数据需要 4 拍才能全部进入寄存器。这就像传送带每次只能放一个包裹,4 个包裹必须走 4 个节拍才能全部上带。

Q4. 要把串行比特流凑成并行字节,应该使用哪种模式?

单选题 · mid

  • A.串入并出← 正确答案
  • B.并入串出
  • C.并入并出
  • D.双向移位

答案:A。串入并出模式让数据一位一位进入、凑满 n 位后整排输出,正是串行转并行的桥梁。并入串出是并转串,并入并出没有串行过程,双向移位只解决方向问题。就像接收端先逐个收包裹、集满一箱再整箱搬走。

Q5. 3 级 LFSR 精心选择抽头后的最大周期是?

单选题 · hard

  • A.3拍
  • B.5拍
  • C.7拍← 正确答案
  • D.8拍

答案:C。n 级 LFSR 共 2^n 种状态,全零状态会自锁,剔除后最大周期为 2^3-1=7 拍。3 拍只是级数,5 拍不是本原多项式能达成的周期,8 拍包含了无意义的全零状态。对应故事里,抽签箱最多能走出 7 种不重复的签,再多就循环了。

Q6. 移位寄存器在工程中的典型应用有哪些?

多选题 · mid

  • A.乘除法← 正确答案
  • B.延时线← 正确答案
  • C.伪随机← 正确答案
  • D.全加器

答案:ABC。左移乘二、右移除二是移位寄存器的算术应用;n 级移位构成延迟线;带反馈的 LFSR 生成伪随机序列。全加器是组合逻辑电路,不涉及移位寄存器的存储与搬运特性,故不选。

Q7. 4 位环形计数器的有效状态个数是?

单选题 · easy

  • A.1个
  • B.2个
  • C.4个← 正确答案
  • D.8个

答案:C。n 级环形计数器只有 n 个有效状态,4 位就是 4 个,即“恰好一个 1”的四种循环位置。8 个是 4 位扭环的状态数,1 个和 2 个都不符合定义。就像 4 人轮值表只有 4 种“谁在值班”的情况。

Q8. 关于扭环形计数器,正确的说法有哪些?

多选题 · hard

  • A.双倍状态← 正确答案
  • B.取反反馈← 正确答案
  • C.无需时钟
  • D.自动启动

答案:AB。扭环把末级取反后反馈到首级,状态数从 n 变为 2n,故 A、B 正确。它是时序电路必须有时钟驱动,C 错误;从上电无效态可能卡死在短环中,需要自启动电路,D 错误。像传送带上混入错误包裹时不会自己消失,要人工干预。

Q9. 双向移位寄存器由哪个端口控制移位方向?

单选题 · mid

  • A.模式端← 正确答案
  • B.时钟端
  • C.电源端
  • D.复位端

答案:A。模式控制端 S 决定左移还是右移:S=1 右移、S=0 左移。时钟端只提供节拍,电源端供电,复位端清零,它们都不决定方向。就像传送带的“倒车挡”由专门的手柄控制,油门和刹车管不了方向。

Q10. 关于寄存器与锁存器的区别,正确的说法有哪些?

多选题 · extreme

  • A.寄存器对沿触发← 正确答案
  • B.锁存器对电平触发← 正确答案
  • C.寄存器对电平敏感
  • D.锁存器对沿触发

答案:AB。寄存器由边沿触发的触发器构成,只在时钟跳变瞬间采样;锁存器是电平触发,高电平期间输入直通。C 和 D 恰好把两者特性对调,属于典型混淆。可以记为:寄存器像吹哨上锁,锁存器像开门营业,营业期间谁都能进出。