1 / 24 · 概念
将方程转化为数据通路约定
在规定算术运算的同时,明确位宽、接收事件和有效结果。
课时内容可免费阅读,选课后可保存学习进度。
明确电路承诺的行为
数据通路负责存储、选择和计算数值,控制器决定哪些数值移动以及何时移动。这是两项不同的设计职责,但并不是独立运行的软件任务。在时钟沿到来时,控制信号决定寄存器如何更新;更新后的寄存器值在随后的周期中成为组合逻辑的输入。如果方程没有配套的时序约定,就可能为错误的事务算出正确的数值。
本课程的小型计算器接收无符号八位操作数 a 和 b,以及两位操作码。操作 0 表示加法,1 表示减法,2 表示 AND,3 表示 XOR。算术运算返回低八位,并另外给出加法进位或减法借位。后续项目还会携带标签。标签不影响计算,但它标识产生结果的输入,因此必须随结果一起传递。
| 约定项目 | 本课程的选择 |
|---|---|
| 操作数含义 | 从 0 到 255 的无符号整数 |
| 缩窄位宽 | 保留低八位,即模 256 |
| 边界信息 | ADD 进位和 SUB 借位 |
| 接收 | valid 和 ready 同时有效时的上升沿 |
| 顺序 | 结果遵循输入被接收的顺序 |
| 复位 | 丢弃尚未完成的工作,并清除有效状态 |
当 a=250、b=10 且执行 ADD 时,数学上的和为 260,输出为 4,carry=1。若采用有符号解释或饱和运算,就会得到不同的约定。不要让编程语言中的意外转换替你决定策略。回绕运算可能适合地址计数器,而亮度计算可能需要饱和运算。
- 接收: 采集操作数、操作码和标签
- 计算: 执行规定的数值约定
- 交付: 传送结果及其匹配的标签
无效的 ALU 输出在电气上仍可能变化,但它不代表一个事务。有效结果若携带旧标签,同样是错误的。应将数据、标签和 valid 放在一起检查。对于每个输出,都要回答这些位表示什么,以及使用方何时可以信任它们。本课程的周期模型检查功能和顺序,不检查物理门延迟。在为延迟或吞吐率目标选择寄存器边界之前,先把约定转化为参考模型。
自己试试
记录 a=250、b=10 时八位 ADD 的结果和进位。解释数值 4 的来源,以及为什么必须把标签与结果一起存储。
阅读解释
260=1×256+4,因此 data=4,carry=1。保留低八位的约定使和对 256 取模。存储标签时,应采用与数据相同的接收、停顿和交付条件,使结果始终对应其输入。