43 / 63 · 测验
设计检查:延迟、对齐与输入保留
不仅检查移位方向,也检查有效数据移动次数与观察基准。
课时内容可免费阅读,选课后可保存学习进度。
固定计算延迟的基准
三位寄存器寄存器 存储多位状态的电路。本课程中的同步寄存器在时钟边沿存储指定输入。了解更多只在有效输入到来时执行 q <= {q[1:0], din},valid=0 时保持 q。复位复位 将状态恢复为规定初值的控制。必须同时规定其同步或异步性质,以及相对于其他控制的优先级。了解更多后从 0 开始,在不同上升沿上升沿 时钟从 0 变为 1 的瞬间。它不同于表示整个 CLK=1 区间的电平。了解更多依次施加 (valid,din) = (1,1), (0,0), (1,0), (1,1)。
此时总边沿数为四,但实际只移动三次。检查状态追踪与“延迟几个周期”的说法是否一致。
每列记录一个上升沿的观察结果。输入取自边沿前,名称带 after 的状态取自更新后。列的排列表示采样顺序,并非描绘物理传播延迟传播延迟 从输入变化到输出稳定为正确值所需的时间。逻辑表达式等价与时间特性是两回事。了解更多。这里展开了题目的输入顺序。第二列 valid=0,状态保持。不要把 q 的变化次数与时钟列数混淆。
查看波形数据
| 信号 | 波形 | 总线值 |
|---|---|---|
| edge | 2345 | E0 → E1 → E2 → E3 |
| valid | 101. | |
| din | 10.1 | |
| accepted count | 2.34 | 1 → 2 → 3 |
| q after | 2.34 | 001 → 010 → 101 |
进一步设计问题
若扩展成每次接收八位数据的流水线流水线 用寄存器把计算划分为多个阶段,使多个输入能够重叠处理的结构。数据、valid 与控制信号必须在各级对齐。了解更多,只将数据寄存器做成三级、却把 valid 只延迟一级,是错误实现。必须对数据与 valid 使用相同移动规则,或一起设计可暂停缓冲区的接受与传递规则。
自己试试
若把此电路改为不考虑 valid、每个边沿都移动,上述输入序列的最终 q 会怎样改变?
阅读解释
因为连 invalid 周期的 din=0 也被存入,序列变为 001 → 010 → 100 → 001。最终为 001,不同于只移动有效输入的原设计所得 101。实现必须遵守“忽略 invalid 数据值”的约定。
施加正文中带 valid 的输入序列后,最终 q 与实际移动次数是多少?
状态为 000 → 001 → 001 → 010 → 101。第二边沿 valid=0,因此状态保持。必须同时满足移位方向、移动条件与移动次数,才是正确答案。