本书使用数字无线电作为一个具有挑战性的设计示例,旨在弥补算法设计人员与在芯片上实现这些算法的设计人员之间的典型差距。 作者展示了如何将如此复杂的系统从高级表征转变为适合硬件实现的形式。 在此过程中,读者可以学到很多关于算法设计者如何从了解他们的目标硬件中受益,以及硬件设计者如何从熟悉算法中受益。
本书展示了如何将算法的高级描述迁移到具有明确定义的周期精确架构和完整记录的控制器的定点框图。 这可以显著缩短硬件设计周期的长度并改善其结果。 最终,本书提出了一个明确的设计流程,弥合了算法设计和硬件设计之间的差距。
·从以实施为中心的角度,本书提供 Wi-Fi 和蜂窝系统的基带无线电设计指南
解释算法如何转移到硬件以及每个操作在延迟、面积和功耗方面的成本是多少,以便基于算法、可用处理单元和设计要求进行战略架构决策;
有两种硬件工程师,一种用乘法计算复杂性,另一种用乘法器计算复杂性。 中间的差距很难弥合。 研究算法的人专注于让算法发挥作用。 密码学家设计出难以破解的密码。 研究机器视觉的人们想要识别框架内的物体。 如果你正在学习机器学习,你会花费大部分时间来获取 python 代码,将猫图片分类为猫图片,将狗图片分类为狗图片。 如果您正在设计通道解码器,您的重点是纠正尽可能多的比特错误并达到信道容量的极限。
对功能的关注是必要的,因为没有它,我们就没有好的算法可以实现。 但到了某个时候,一个好的想法就会变成一个产品,而产品必须是高效的。 它们应该运行得很快,这样才能成为愉快的用户体验的一部分。 它们应该消耗低功耗,以便在小型电池供电的移动设备上运行。 而且它们的制造成本应该很低,这样才能出售并赚钱。
因此,为了将一个好主意变成一个好产品,硬件设计师需要参与其中。 硬件实现比在软件上运行的任何东西都高效得多,但是为您的算法提供专用硬件平台的道路并不容易。 让任何微芯片正常工作都是一项挑战。 这是一个迭代的多步骤过程,需要经验和奉献精神。
硬件设计人员专注于寻找和打破关键路径,检测和修复违规行为,分配时钟网络,绘制制造设施可接受的布局,确保硅实际上按照模拟所说的那样工作,减少芯片面积 ,最大限度地减少功耗,并插入允许详细观察成品芯片的测试结构。
专注于算法的系统设计师和专注于芯片的硬件设计师之间存在着某种缺失。 中间有一个知识领域可以弥补这一差距。 应该有一种通用语言,算法设计者可以提前思考复杂性如何在硬件中转化,并且硬件设计者可以利用算法来制造高效的芯片。
系统设计人员会根据算术运算的数量来计算复杂性。 他们可能会说这样的算法需要一万次乘法,他们会使用乘法将他们的算法与其他人的算法进行比较。 默认情况下,硬件设计人员不会考虑乘法。 相反,他们从乘数的角度思考。 乘法器是一种相对复杂的 CMOS 电路,它将两个寄存器的内容相乘,以在更大的寄存器中产生输出。 乘法器可以以一定的速率产生输出,该速率根据实现它的硬件平台而有所不同。 中间有一个步骤,将乘法转换为所需乘数的数量。
归根结底,我们需要良好的最终产品,因此我们应该根据需要使用尽可能少的乘数。 算法设计者可以通过减少必要的乘法(运算)次数,或者认识到某些乘法是特殊的来帮助实现这一点。 硬件设计人员可以通过利用乘法器来提供帮助,以便他们在大多数时间都在做一些有用的事情。 但最好的选择是您可以利用这两个领域的知识来改进最终产品。 如果您可以展望硬件实现,也许您可以看到是什么让算法中的某些乘法变得“特殊”。 通过了解算法,您可以选择最适合它的硬件架构。 但这只是复杂算法转移到硬件时发生的模糊但关键过程的一小部分。 这片迷雾中的事物包括: • 定点建模。 算法是在通用处理器上使用易于使用的高级编程语言进行原型设计的。 这些设置使用具有大字长的浮点寄存器,以允许精确的数字表示。 硬件浮点运算速度慢且效率低,并且往往违背了转向硬件的目的。 因此,硬件算术使用更小的寄存器,并且二进制小数点位置固定。 这使得算术运行得更快。 但浮点和定点运算之间的转换可能会破坏算法的准确性,并且充斥着需要人工干预的设计选择。 • 确定处理单元(PU)。 算法描述了一系列算术和逻辑运算。 有人需要将其分解为一组有限的操作,这些操作被重复以形成整个算法。 这些操作必须转换为并行硬件处理单元 (PU)。 有时 PU 很简单,可能执行加法或乘法。 有时它会在没有已知硬件实现的情况下执行某些操作,因此您需要花一些时间来找到有效实现它的技巧。 • 确定PU 的数量。 软件原型设计是串行的。 硬件很好,因为它是并行的。 要在两者之间切换,您需要预算需要多少个 PU。 这就是乘法转化为乘数的地方。 您必须了解我们需要的系统吞吐量、PU 的时钟频率(这意味着您了解实现平台)以及算法的复杂度。 这就是一切开始融合的地方。 • 绘制框图。 框图使用 PU 作为构建块并绘制硬件草图,因为它直接映射算法的并行信号流。 • 确定架构。 但按照框图指示的直接实现很少足够好。 大多数时候,要么太快,要么太慢。 设计师通过确定最终架构来解决这个问题。 如果硬件太慢,可以使用流水线或并行。 如果它太快(是的,这同样糟糕),您可以应用硬件重用。 • 内存设计和分区。 您选择的架构将决定您的内存需求。 存储器用于排列数据、延迟数据或将其存储在中间步骤中。 有人必须弄清楚如何分配和分区这些存储器,以便可以足够快地访问它们,并在每个周期中提供它们的地址。 • 引入灵活性和可重新配置性。 好的硬件,特别是在复杂的系统中,必须是灵活的和可重新配置的。 我们必须能够适应或将其用于不同的“模式”。 这需要 PU 和控制器层面的基本决策。 • 规划控制。 复杂的电路包含需要寻址的存储器、需要路由的信号流以及需要配置的灵活的PU。 控制器必须不断观察电路的状态,并逐周期提供必要的控制。 控制器设计需要熟悉硬件和算法,并且可以决定整个系统的成败。 这组模糊的步骤不是硬件设计书籍的重点,也不在算法设计书籍的范围之内。 出于充分的理由,这两类书都有其他非常重要的事情要做。 这就是我写这本书的原因:让中间这个模糊的区域变得更加具体。 但这本书同样是关于数字无线收发信机的设计的。 无线电的实现是一个重要的主题,可能需要多卷书才能涵盖。 但无线电是我们上面描述的问题的一个很好的例子:如何从高级描述语言到底层的硬件设计。 我们所说的无线电是指通过无线电频谱进行无线通信的任何平台。 这包括所有 Wi-Fi、蜂窝网络和蓝牙平台,这应该足以告诉我们为什么“无线电”很重要。 一切要么是无线连接的,要么有人正在研究将其连接起来。 我所说的一切,是指一切电子产品。 显然,手机、平板电脑、电脑、视频游戏机、车辆和电视都连接到无线网络。 而且,某些看似“愚蠢”的电子产品(例如家用电器)正在联网。 随着嵌入式电子产品和可穿戴设备的兴起,即使是完全惰性的物体(例如衣服)也将连接到某种无线网络。 这意味着淘金热正在兴起。 每当有淘金热时,就会出现稀缺。 无线通信中的稀缺资源是频谱带宽,每个人都在努力获取更多带宽来完成一件事:获取更多数据。 更高的数据速率意味着更多样化的应用、更好的用户体验、更好的服务质量、更令人兴奋的畅销产品以及更多的收入。 这就是为什么无线电收发信机很重要。 他们无处不在,无所不为。 因此,他们试图从每一赫兹的带宽中提取最后的好信息。 为此,无线电对数据的形状和性质发挥了令人难以置信的技巧。 这使得无线电在算法层面上变得有趣,因此转向硬件尤其令人兴奋。 这就是为什么我们将使用它们作为示例。 我们将在本书中讨论的“无线电”特别是物理层基带的数字部分。 无线电的这一部分在一侧与使用通用处理器的更高层进行通信。 另一方面,它与物理层的模拟部分通信,处理空中传输的真实信号。 无线电的复杂性带来了一些有趣的挑战,这些挑战可以扩展到其他系统。 例如,在第 1 章中讨论信道编码时,我们发现算法很简单,但挑战在于将软件友好的算法划分为可以在硬件中并行化的处理单元。 当我们讨论OFDM时,我们发现处理单元很简单。 信号流图和框图也有微不足道的联系,算法本质上是并行的。 但当我们计算吞吐量需求时,我们会发现巨大的差距,迫使我们实现硬件重用、内存分区和复杂的控制。 另一方面(续)讨论 MIMO 解码时,没有明显的硬件与算法的运算相对应。 因此,我们退一步思考如何设计一个处理单元来有效地完成我们需要做的不那么明显的数学运算。 您可以通过两种方式使用本书。 您可以连续阅读它,在这种情况下,您将获得数字无线电实现的良好背景知识,并且在此过程中您将听到一个关于如何将复杂系统转移到硬件上的有趣故事。 或者您可以单独阅读各节和章节。 大多数章节都可以独立阅读。 本书的部分内容可分为三种“类型”: • 无线电 (R):涵盖 Wi-Fi 和蜂窝无线系统的算法和模型。 这些部分假设了读者具有很少的电波传播理论背景知识。 因此,对于想要实现无线电物理层的硬件工程师来说,它们是一个机会。 但更一般地说,这些部分展示了硬件工程师必须在多大程度上参与他们正在实现的算法,以及有时了解理论如何能够极大地改变硬件。 • 实现(I):这些部分讨论如何在数字硬件中实现无线电收发信机。 虽然我们将讨论实现的细节,但目的是提供有关可扩展到任何算法的概念的一般准则。 • 概括(G):这些部分更独立于数字收发信机。 它们以更明确的通用术语介绍了算法如何迁移到硬件。 这些部分的方法更加抽象,因此更容易概括。
0条评论