一、前言
首先,非常感谢书籍作者以及面包板社区给到这本好书!作为一名平日里喜爱钻研各种新鲜事物的电子爱好者,在我最近在设计一个小项目查阅资料的过程中,无意间看到了《从算法到电路:数字芯片算法的电路实现》这本书,这勾起了我的好奇心。
二、初见
收到面包板社区寄来的书籍后,我迫不及待地翻开序和前言,了解到作者是一名集算法设计、RTL编写与FPGA验证的工程师,在该行业有丰富的经验。在当前大环境下,芯片的国产化是趋势,也是必然,而算法是自研芯片的基石。如果说复杂算法是大厦,那么基本算法就是组成大厦的一砖一瓦,任何算法都是由加减乘除、滤波器等基本都数学方法构成的,掌握好基本算法对于工程师们来讲是非常重要的。这本书能给到广大数字芯片开发工程师及爱好者们一种指导方法论,跟着作者的指引,进入到目录部分。
本书共分为了12章节,个人认为可以分成五大部分:
·第一部分:1~6章,主要讲的基本电路设计,包括四则运算电路及举例几个常用的数字信号处理电路;
·第二部分:7~8章,主要讲滤波器的基础概念及其电路设计;
·第三部分:9~10章,讲了sigma-delta ADC电路设计及其改进——锁相环小数倍分频器电路设计;
·第四部分:11章,CRC校验电路设计
·第五部分:12章,IEEE754浮点运算单元的电路设计,是对全书前11章节内容的综合。
三、内容
芯片中的算法和电路设计师密切相关的,而算法的优劣直接影响电路的性能、功耗和面积。第一章通过阐述芯片研发流程、芯片数字电路设计和算法关系、芯片验证与算法的关系以及介绍一些算法工具,让读者能理清楚芯片的研发流程,知晓算法与电路的关系,为工程师纵向发展十分重要。
在实际的电路中,经常会遇到诸如运算溢出、数位截取、浮点数和有符号数的处理之类的问题。在第二章中,作者讲解了在RTL中解决上述问题的基本方法。例如,“溢出保护”小节中,作者用Verilog加文字说明的方式,分别讲解了无符号数和有符号数的溢出保护,代码齐全。
四则运算是最基本的算法,作者在第三章讲述了加法实际上是异或逻辑,即若两个位相加,在不考虑进位的情况下,只要将两个位做异或运算,即可得到1+1=0的效果,这样的也称为模二和运算。作者通过举例,实现了半加器、全加器、超前进位加法器,最后还做了浮点数加法器的实现。
在乘法器章节,作者引入了三种乘法器的设计方法,分别是直接用综合器设计、基于迭代设计和基于CORDIC的设计。通读该章节,作者由基本原理推导,到对其算法建模,再到电路的实现,最后还把不同的方法进行了性能和面积的比较,让读者自由选择所需的算法。
四、总结
本书内容丰富,图文并茂,作者从开发者的角度,深入浅出地剖析算法设计单元,并逐一讲解,让我这样一位小白也能看懂书中的内容。本书的实践性很强,书中代码均可从作者的公众号下载到,结合书中实例运行代码,能加深对知识点的理解。因此,无论是芯片开发者,还是初入芯片领域的学生或工程师,这都是一本难得的好书,值得认真阅读。