37 / 63 · 概念
串行输入与帧边界
定义输入顺序与有效边沿,计算串并转换中的位排列。
课时内容可免费阅读,选课后可保存学习进度。
将时间顺序转换为向量位置
串行输入在每个有效边沿传递一个比特。对三位寄存器寄存器 存储多位状态的电路。本课程中的同步寄存器在时钟边沿存储指定输入。了解更多使用 q<={q[1:0],din},从初始 q=000 接收 1、0、1、1,结果如下。
| 已接受比特数 | din | 更新后 q |
|---|---|---|
| 1 | 1 | 001 |
| 2 | 0 | 010 |
| 3 | 1 | 101 |
| 4 | 1 | 011 |
新比特从右侧进入,已有比特移向更高索引。寄存器是最近三个比特的滑动窗口,收到第四个比特时,最早的比特丢失。
每列记录一个上升沿上升沿 时钟从 0 变为 1 的瞬间。它不同于表示整个 CLK=1 区间的电平。了解更多的观察结果。输入取自边沿前,名称带 after 的状态取自更新后。列的排列表示采样顺序,并非描绘物理传播延迟传播延迟 从输入变化到输出稳定为正确值所需的时间。逻辑表达式等价与时间特性是两回事。了解更多。第一列为 reset。之后接受的 1、0、1、1 中,只有最近三位保留在 q 中。观察最后一列最早比特是否被移出。
查看波形数据
| 信号 | 波形 | 总线值 |
|---|---|---|
| edge | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| din | 0101. | |
| q after | 23452 | 000 → 001 → 010 → 101 → 011 |
MSB-first 与 LSB-first 是通信约定
若从 MSBMSB 权重最高的比特。其索引取决于向量声明方向,不能总认为它是编号最大的位。了解更多 开始发送八位数值,并按上述方式接收八次,就能重建原向量。若从 LSBLSB 权重最低的比特。应同时检查表示方向与索引规则。了解更多 开始发送,位置顺序会相反,必须改变连接方向或在末尾重排。这不只是显示选项,而是收发双方必须一致的协议。
只看数据值无法判断帧边界
需要状态来指出哪个边沿是第一位、总共接收了几位,以及何时可以消费结果。通常同时使用已接受比特数的计数器与 valid 或 done。若输入存在空闲周期,应计数已接受的数据数,而非时钟数。
使用 ready/valid握手 发送端 valid 与接收端 ready 在同一边沿均为 1 时,确认传输的约定,也包括等待期间的数据保持规则。了解更多 接口时,只在上述条件成立的边沿同时更新移位寄存器与计数。若只给其中一方加 enable,数据与长度信息就会错位。提供的连续输入实验是接受每个数据边沿的简单情形。
自己试试
一个八位帧在第四位之后,valid 连续两个周期为 0。若 ready=1,接收计数器和移位寄存器应如何工作?
阅读解释
两个周期的 accept 都为 0,因此计数器与数据寄存器必须一起保持。下一个有效比特才是第五位。若只数时钟,数据还不足时就可能错误报告完成。