Altifigence Academy

38 / 63 · 概念

移位寄存器的状态方程

用向量状态转移表达比特移动,将存储长度与输出延迟联系起来。

同时读取多个触发器

在 N 位移位寄存器寄存器 存储多位状态的电路。本课程中的同步寄存器在时钟边沿存储指定输入。了解更多中,将新输入 d 放入 bit 0,下一状态如下。

Qk+1={Qk[N−2:0],dk}Q_{k+1}=\{Q_k[N-2:0],d_k\}

大括号表示 RTL 的拼接运算拼接运算 将多个位串并排连接的运算。结果位宽是操作数位宽之和,与数值加法不同。了解更多。每一位读取同一组旧状态,因此 d 不会在一个边沿内穿过整个寄存器。enable=0 时保持整个向量;reset 有效时,改为指定初始向量。

每列记录一个上升沿上升沿 时钟从 0 变为 1 的瞬间。它不同于表示整个 CLK=1 区间的电平。了解更多的观察结果。输入取自边沿前,名称带 after 的状态取自更新后。列的排列表示采样顺序,并非描绘物理传播延迟传播延迟 从输入变化到输出稳定为正确值所需的时间。逻辑表达式等价与时间特性是两回事。了解更多。从初始 q=000 输入一次 din=1,再输入三次 0。置 1 的比特依次经过 q0→q1→q2,随后消失。

移动一个比特,校验连接表达式
查看波形数据
波形数据:每个字符表示一个区间,点表示保持前一状态,p 表示一个时钟周期。
信号波形总线值
din10..
q2 after0.10
q1 after010.
q0 after10..
q after2345001 → 010 → 100 → 000

令 din=1 前进一次,再改为 din=0 并前进三次,可观察 001→010→100→000。改变输入的瞬间,当前 q 不变,只改变下一边沿的预期值。

一个比特存在哪个触发器中

同步 reset 优先于 enable。enable=0 时保持当前存储值。 q=000; q_next = (2q + din) mod 8

将拼接表达式转成数值公式检查

按 unsignedunsigned 将位串解释为非负整数的规则。n 位范围为 0 到 2^n−1,可能与同一位串的 signed 解释不同。了解更多 向量解释时,同一转移可写为:

Qk+1=(2Qk+dk) mod 2NQ_{k+1}=(2Q_k+d_k)\bmod2^N

N=3、Q=5(101)、d=1 时,2⋅5+1=112\cdot5+1=11,且 11 mod 8=311\bmod8=3,因此下一值为 011。这种数值表达式与拼接式形式不同,可作为实现验证的参考模型。

当前究竟存储了什么

较旧比特向最高索引移动,新比特进入最低索引。接收足够多的有效输入后,寄存器保存“当前及最近 N-1 个输入”。同一结构可用于模式检测、简单延迟线和串并转换。

增加存储长度,并不会增加单周期能处理的比特数。该结构每个有效边沿只接受一位。并行输入、多位移动及 ready/valid握手 发送端 valid 与接收端 ready 在同一边沿均为 1 时,确认传输的约定,也包括等待期间的数据保持规则。了解更多 暂停,各自需要相应的数据通路与控制条件。

自己试试

N=4,当前 Q=1101,输入 d=0。分别用拼接式与数值式计算下一 Q。

阅读解释

拼接式为 {101,0}=1010。数值式为 (2⋅13+0) mod 16=10(2\cdot13+0)\bmod16=10,结果相同。原最高位 1 被移出存储范围。

你的选择适用于此浏览器,可随时在页脚更改。