原创 《从算法到电路:数字芯片算法的电路实现》+心得体验

2024-11-17 11:58 182 3 3 分类: 通信

非常荣欣参加了这次《从算法到电路:数字芯片算法的电路实现》试读体验活动,同时非常感谢面包板论坛举办此活动。本书印刷还是非常新颖,具有精美漫画。下图为图书正面和反面。

1、本书内容简介

这是一本深入解读基础算法及其电路设计,以打通算法研发到数字IC设计的实现屏障,以及指导芯片设计工程师从底层掌握复杂电路设计与优化方法为目标的专业技术书。任何芯片(如WiFi芯片、5G芯片、AI芯片、多媒体处理芯片等)都是由四则运算器、滤波器、特殊信号发生器等基本算法电路构成的,熟练掌握这些基本算法电路是实现复杂算法电路的基础。忽视基本算法及其电路设计而谈论复杂算法电路,无异于痴人说梦。

本书力求从算法、芯片设计、软件开发等多个角度解读基础算法电路的设计,涵盖了溢出保护、有符号运算、浮点运算、位宽确定等运算电路基础知识,以及除法器、信号发生器、滤波器、小数分频器等常用基本算法电路的Matlab建模和RTL设计,可帮助数字IC 设计者掌握常用算法设计思路、工具和流程,从根本上提高设计基本算法电路和复杂算法电路的能力。

本书共分为12章。

第1-2章介绍算法和芯片设计的基础知识,包括算法与芯片设计的关系,芯片设计人员掌握算法知识的必要性,以及位宽确定、有符号数处理、浮点数运算、溢出保护和四舍五入等算法的实现。

第3-11章重点介绍各种典型基本算法的电路设计,其中包括任何数字芯片都必不可少的乘法器和除法器设计,在不同专业芯片领域有着广泛应用的数字信号发生器、复数求模求角度运算器、普通滤波器、ΣΔADC中使用的抽取滤波器、基于ΣΔ结构实现的小数倍分频器、CRC校验器等。每个电路均给出了算法的浮点建模、定点建模、RTL以及TestBench仿真文件,并在理论上对ADC、频率、滤波器以及电路结构拓扑进行深入解读。部分电路给出了多种可选设计,并在面积和时序等方面进行了优缺点分析。

第 12 章介绍IEEE754浮点运算单元的设计,专为满足具备标准协议格式的浮点运算核开发需求。其中涉及算法的内容较少,重点介绍协议实现、集成和应用。基于这一章设计得到的电路既可作为SoC芯片中的可编程浮点运算加速器,也可作为专用芯片的浮点运算硬核。

2、数字开发工程师掌握算法知识的必要性

读了此书,了解到对于一名数字开发工程师必须掌握算法知识,因为在数字电路开发流程中,与算法关系最为密切的是数字前端开发工程师,电路设计的好坏主要取决于RTL设计,而较复杂的RTL设计又离不开算法原理的支持。一个算法设计要转变为RTL设计,一方面要解决算法具象化的问题,另一方面要解决算法定点化的问题。因此,数字开发工程师掌握算法知识如下:

  1. 算法的具象化

算法具象化问题,是指一个大的算法架构里面包含有多个算法层次。例如一款WiFi芯片的算法,由表及里可分为以下层次:

1)顶层的架构上包含发射机(TX)、接收机(RX)和信道。

2)进人发射机这一层次,里面包含扰码模块、卷积码编码器、LDPC编码器、空时编码器、空间流分配器、波束成形器、快速傅里叶反变换(Inverse Fast Fourier Transform. IFFT)等。

3)进入LDPC编码器中,其内部包含了生成矩阵存储器、编码器、码率打孔器等。如果每个层次的每一处细节都需要由算法工程师告知数字开发工程师,那么对于算法工程师的数量和质量的要求就都比较高,实际操作中无法执行。

在实际中,算法工程师会选择一个层级作为底层,自该层往上,均为算法工程师需要具体化的内容,算法工程师会提供给数字开发工程师详细的代码,而该层再往下的内容需要由数字开发工程师自行完成,算法工程师只规定接口的格式、精度,以及运算时间要求。

比如,某个算法工程师做算法的具象化,除了加减乘除四则运算外,都已经具象化完毕,也规定了这些四则运算最终的输出宽度和精度,对于四则运算内部如何处理,则要求数字开发工程师自行解决,那么,此时开发工程师就必须会搭建四则运算的电路。

B.算法的定点化

算法的定点化问题,即在算法中处理的数据,其属性通常是复数、带符号、浮点,其形式通常是向量或矩阵,甚至是三维或更多维的矩阵,而开发工程师习惯处理的数据通常是实数、无符号、整型的标量,那么将复数转变为实数,带符号的计算转变为无符号的计算,浮点数计算转变为整数计算,矩阵运算转变为多个标量的单独运算,就是广义的定点化。

可以将具象化问题与定点化问题结合起来。假设算法已经细化到两个有符号的浮点数的除法,其内部运算过程并未给出,需要开发人员根据设计经验编写,此时,开发人员就必须熟悉常见的除法电路,其优缺点是什么,其运算器内部的参数如何定,还必须熟悉定点化如何做。

这些基本知识看似简单,像是研究生在做小学数学题,但很多工程师对此只有几分粗浅的认识,缺乏方法梳理和原理理解,凭习惯和普通设计经验进行设计,导致开发速度慢、设计缺陷多、验证时间长,在这种基本电路上牵扯了大量开发和验证时间,甚至还会多次重复开发。很多项目付出巨大的代价才最终证明,无论上层架构和算法做得多么出色,只要底层运算设计有问题,芯片项目就会失败。千里之堤,毁于蚁穴,开发工程师掌握基本的算法常识,了解算法的工作思路和流程,熟悉常见运算单元的电路实现和仿真验证方法,是十分必要的。

3、本书可以给你带来什么

以书之作者多年的经验来看,工程师对于基本算法电路的处理方式主要分为两种:一种是凭经验,例如遵循“凡是加法就保留一个溢出位”这样的规则;另一种是在开始设计前,查阅大量的文献资料。一般资历较深的工程师会选择第一种,资历较浅的工程师会选择第二种。开发工程师通常不具备算法仿真和评估能力,因此即使是最基本的乘除法,在纷繁复杂的各种方法中选出最合适的方法也是十分困难的。一些类似口诀、规则的经验之谈,需要分情况讨论,过于简化的规则在实施中通常会增加不必要的面积开销。由于缺乏方法论的总结,同一个工程师在处理不同芯片项目中的相同问题时,经常会使用不同的方法,并且经常进行重复研究,这样不仅会导致设计质量不稳定,还会延长开发时间。

本书的写作目的是为广大的数字芯片开发工程师提供一种实用的指导方法论。书中梳理了常见的基本算法在数字电路实现过程中的落地步骤和注意事项,并在计算时间和面积等方面对一些常见方法进行比较,最终使得读者遇到基本算法问题时,能够有的放矢、胸有成竹、按部就班地进行电路设计、参数确定和问题分析。在掌握了本书介绍的技巧和方法论之后,数字芯片开发工程师就有能力承担算法和数字设计的综合性任务,从事更为复杂的算法电路设计工作。

4、总结

本书内容即便是对数字芯片设计陌生的我,也能迅速理解书中的内容。本书作者的叙述清晰易懂,实践性很强,这本书无论是对于有志于从事算法及数字芯片设计的大学生,还是希望在算法和电路设计交叉领域深造的学习者而言,都是一本难得的好书。

作者: shenwen2007_656583087, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1854985.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条