Altifigence Academy

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。若采用有符号解释或饱和运算,就会得到不同的约定。不要让编程语言中的意外转换替你决定策略。回绕运算可能适合地址计数器,而亮度计算可能需要饱和运算。

事务路径
  1. 接收: 采集操作数、操作码和标签
  2. 计算: 执行规定的数值约定
  3. 交付: 传送结果及其匹配的标签

无效的 ALU 输出在电气上仍可能变化,但它不代表一个事务。有效结果若携带旧标签,同样是错误的。应将数据、标签和 valid 放在一起检查。对于每个输出,都要回答这些位表示什么,以及使用方何时可以信任它们。本课程的周期模型检查功能和顺序,不检查物理门延迟。在为延迟或吞吐率目标选择寄存器边界之前,先把约定转化为参考模型。

自己试试

记录 a=250、b=10 时八位 ADD 的结果和进位。解释数值 4 的来源,以及为什么必须把标签与结果一起存储。

阅读解释

260=1×256+4,因此 data=4,carry=1。保留低八位的约定使和对 256 取模。存储标签时,应采用与数据相同的接收、停顿和交付条件,使结果始终对应其输入。

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