2

我无法理解这个 FPGA 电路中使用的算法。它处理冗余与非冗余数字格式。我已经看到了一些非冗余格式的数学(正式)定义,但我无法真正掌握它。

本文摘录描述了该算法:

图 3 显示了可扩展的蒙哥马利乘法器的框图。内核包含p w-bit PE,总共wp位单元。Z以进位保存冗余形式存储。如果 PE p在 PE1 完成Z ^(e-1) 之前完成Z ^0 ,则结果必须排队,直到 PE1 再次可用。[5] 中的设计以冗余形式对结果进行排队,每个条目需要2w位。对于较大的n,队列消耗大量区域,因此我们建议将Z转换为非冗余形式以节省一半的队列空间,如图 4 所示。在第一个循环中,Z初始化为0。当不需要排队时,直接绕过进位保存冗余Z'以避免进位传播加法器的延迟。非冗余Z结果也是系统的输出。

和图表: 图 3 是高级,图 4 是 FIFO,并通过使其使用非冗余格式进行了“改进”。

这是“改进的”PE 框图。这显示了“改进的”PE 框图——“改进的”与一些不相关的方面有关。
“改进的”PE 框图

我没有“未改进” FIFO 的图片,但我认为它只是一个普通的 FIFO。我不明白的是,FIFO 的 CPA 和 3 输入 MUX 是否以某种方式在格式之间转换?

了解冗余与非冗余格式(在具体示例中)是第一步,了解该电路如何实现它将是第 2 步。

4

1 回答 1

3

一些背景知识并查看 users.ece.utexas.edu/~adnan/vlsi-05-backup/lec12Datapath.ppt 建议以下内容:

由于正确传播进位需要时间,因此进行正确的二进制加法相对较慢和/或占用面积。

如果您按位并行工作,则可以取三个二进制数,将每个数字中相同位置的位相加,并产生两个二进制数。

幻灯片 27 指出 0001 + 0111 + 1101 = 1011 + 0101(0)。

由于乘法器需要进行大量加法,因此您将加法器树构建为将 3 个数字减少为 2 个数字的集合,最终以两个数字作为输出结束,abcde....z 和 ABCDE...Z0。这是您的冗余形式的输出,真正的答案实际上是 abcde...z + ABCDE...Z0

于 2011-04-06T04:46:14.043 回答