38 / 63 · 概念
移位寄存器的状态方程
用向量状态转移表达比特移动,将存储长度与输出延迟联系起来。
课时内容可免费阅读,选课后可保存学习进度。
同时读取多个触发器
在 N 位移位寄存器寄存器 存储多位状态的电路。本课程中的同步寄存器在时钟边沿存储指定输入。了解更多中,将新输入 d 放入 bit 0,下一状态如下。
大括号表示 RTL 的拼接运算拼接运算 将多个位串并排连接的运算。结果位宽是操作数位宽之和,与数值加法不同。了解更多。每一位读取同一组旧状态,因此 d 不会在一个边沿内穿过整个寄存器。enable=0 时保持整个向量;reset 有效时,改为指定初始向量。
每列记录一个上升沿上升沿 时钟从 0 变为 1 的瞬间。它不同于表示整个 CLK=1 区间的电平。了解更多的观察结果。输入取自边沿前,名称带 after 的状态取自更新后。列的排列表示采样顺序,并非描绘物理传播延迟传播延迟 从输入变化到输出稳定为正确值所需的时间。逻辑表达式等价与时间特性是两回事。了解更多。从初始 q=000 输入一次 din=1,再输入三次 0。置 1 的比特依次经过 q0→q1→q2,随后消失。
查看波形数据
| 信号 | 波形 | 总线值 |
|---|---|---|
| din | 10.. | |
| q2 after | 0.10 | |
| q1 after | 010. | |
| q0 after | 10.. | |
| q after | 2345 | 001 → 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 解释不同。了解更多 向量解释时,同一转移可写为:
N=3、Q=5(101)、d=1 时,,且 ,因此下一值为 011。这种数值表达式与拼接式形式不同,可作为实现验证的参考模型。
当前究竟存储了什么
较旧比特向最高索引移动,新比特进入最低索引。接收足够多的有效输入后,寄存器保存“当前及最近 N-1 个输入”。同一结构可用于模式检测、简单延迟线和串并转换。
增加存储长度,并不会增加单周期能处理的比特数。该结构每个有效边沿只接受一位。并行输入、多位移动及 ready/valid握手 发送端 valid 与接收端 ready 在同一边沿均为 1 时,确认传输的约定,也包括等待期间的数据保持规则。了解更多 暂停,各自需要相应的数据通路与控制条件。
自己试试
N=4,当前 Q=1101,输入 d=0。分别用拼接式与数值式计算下一 Q。
阅读解释
拼接式为 {101,0}=1010。数值式为 ,结果相同。原最高位 1 被移出存储范围。