![]() |
![]() |
|---|
Refer: https://www.telesens.co/2018/07/30/systolic-architectures/
Refer: https://digitalsystemdesign.in/systolic-matrix-multiplier/
![]() |
![]() |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
|
如果 Delay 未被引入,则时序总是 + 1。即
如引入 Delay
Anti-Delay AD):
- 可以实现:
-
$D$ 当 input 在 domain,或 -
$D^{-1}$ 当 input 在 range
-
- 不能实现:
-
$D$ (AD^~1) 当 input 在 range -
$D^{-1}$ (AD)当 input 在 domain
-
Combinational Designs 只需在给定周期内 domain 和 range 中的对应元素。延迟器
$D$ 是一个建模状态的组件:range 比 domain 延迟一个周期。如果输入在 domain 中而输出在 range 中,那么
$D$ 描述的是一个可实现的寄存器、$D$ latch 或触发器 (flipflop)。然而,如果输入在 range 而输出在 domain 中,那么
$D$ 模拟的就是一个预测其输出的反寄存器,因此无法实现。Rebecca可以模拟寄存器和反寄存器,以及那些初始化为给定值的寄存器和反寄存器。
在 circuits 间插入 registers 以提高 Throughput
- 减少 Power consumption,尤其 FPGAs(减少 glitches)
- 增加,area,latency,clock power consumption
在没有流水线(pipelining)的情况下,整个电路链必须等待所有组合逻辑完成计算后,才能开始处理下一个输入数据。这意味着下一个数据必须等待整个链路的延迟时间。
当我们在电路之间插入寄存器时:
- 数据流被分成了独立的阶段(stages)
- 每个阶段可以同时处理不同的数据
- 在每个时钟周期:
- 第一个阶段可以接收新的输入数据
- 同时第二个阶段正在处理上一个数据
- 第三个阶段在处理更早的数据
核心想法:引入 Anti-Delay以消除 Delay 的 Effect。可以拥有无法实现的输入或输出。
在数字电路中引入Delay(延迟)概念有几个重要原因:
- 现实电路特性反映:
- 实际电路中的信号传输和逻辑门操作都需要时间
- 电子元件存在固有的传输延迟,不可能实现真正的"瞬时"响应
- Delay模型帮助我们更准确地描述和分析实际电路的行为
- 时序分析和同步:
- 通过明确考虑延迟,可以分析关键路径时序
- 帮助确保不同信号路径的延迟匹配,避免竞争冒险
- 在设计同步电路时,需要考虑时钟周期与各部分延迟的关系
Anti-Delay 的引入实际上是一个抽象工具
它帮助我们在逻辑设计层面实现"组合性"(combinational)
使我们能够将注意力集中在逻辑功能上,而不是时序细节
我们可以认为一个理想的(无时间依赖的/timeless pre-condition)
因此
我们可以认为一个理想的(无时间依赖的/timeless pre-condition)
因此
$$
\text{(Horner's Rule) }
\begin{cases}
R^n &= (R; D)^n ; D^{-n}\
\text{row}_n,R &= \text{snd }\Delta_n,D ; \text{row}_n, (R; \text{snd }D); [\Delta_n, D^{-2}, D^{-n}]
\end{cases} $$
![]() |
|---|
| Column First |
![]() |
| Row |






















