《从算法到电路:数字芯片算法的电路实现》兔爸爸-读后感
非常感谢面包板社区提供的书籍精读机会!
标题解释:
莎士比亚曾经说过:凑够100个读者,就能召唤出101个不同的哈利波特。
由于知识储备、知识盲区、技术视角、读书目的差异,不同读者对同一本的感受也不同。
所以本文只是我个人的感觉,因此标题叫这个名字,也不全是咕哝玄虚。
读书的大致过程和感受
0: 浏览目录,了解该书的主题和组织方法
主要针对:四则运算-扣底客算法-滤波器-ADC-PLL,从浅入深
技术路径:整数--定点数--浮点数,应当是以定点数的运算为主
1: 我有些不解,为什么不是"从C算法到电路",而是"从四则算术到电路"?
我于是读了前言和第一章, 查询了本书作者:
白栎旸,厦大通信系硕士,芯片设计与算法工程师,WiFi芯片算法负责人
https://www.douban.com/personage/36621950/
擅长射频电路相关数字校准算法设计以及SoC芯片的架构设计,
移知课程《从算法到RTL实现》主讲人,《数字IC设计入门》作者。
B站 皮特派 还有不少教学视频呢!
https://www.zhihu.com/people/peter_pye
不知为什么, 让我想起了《通信之道——从微积分到5G》这本书,
总感觉两本书, 在技术气味上有些相象吧。
2: 既然作者的技术出身是"SOC芯片设计",
那么从"IP集成"的工作需要出发, 真正要手撸的代码, 可不就是这个 ( 定点数四则计算+ 矩阵运算) 么!
脑海中突然 想起这么一句话: 我们不是数字IP的生产者, 我们只是数字IP的搬运工
3: 无端想起,学校里的"基础教研室"和"专业课教研室",
在 Fabless 的大背景下,大家都想挣"快钱",
正如前几年大干快上"AI调参/区块链/5G",拉投资容易,出成果又快又容易,1年就名利双收;下一年就转行去.
而专心研究更底层理论和基础的陈景润们, 用爱来为我们发电吧!
4: 对于"补码",感觉 作者还是没有说到我心里去;
取反好理解,为了加减法合一; 但为什么要加1呢?
作者还是没说出来, 只是用一个数据罗盘,让我,们自己悟.
为什么要加一? 假设不加一,光是取反,那么整个数轴就会出现两个"0点" : 全0和全1!
加一是为了 合并这两个"0点"为1个 (全F+1=0,全0+1=1)
5: "加法"是逻辑工程师的基础算法啦!太熟悉啦!
作者讲解逻辑, 偏重于"手搓一个"和"人家的IP"一模一样的东西出来
我曾经在 FPGA4FUN 网站上看到的这个主题: https://www.fpga4fun.com/Counters.html
印象相当深刻: 这算是 "加法"的一个小例子, 我认为这种行文和讲解, 是真正的大家手笔,细致而精微,妙不可言!
当然, 这些差别,不过是因为两个人有不同的主题,材料有不同的组织方式,表达方法不一样罢了
6: "乘法"就讲到了"扣底客算法", 说实话,我是吃惊的.
我以前所知道的"扣底客算法"是算正切的,等于是将 tan 以另外一种维度展开成无穷级数
我没想到居然还能计算"乘法"! 算是赚到了!!
"扣底客"的原理是"吉纹丝转换", 我得好好理解一下. 我以前一直以为是"二分法无限逼近"来着.....
"线性坐标下的定点数建模", 一下没看明白~~~
独自一个人去研究这个算法, 估计一时半会也比较难领悟, 总而言之,姑且相信有这么一种"简单算法"
7: "除法"也可以用"扣底客算法"加速实现, 现在的数学的确和厉害了!
终于可以像"补码"统一 加减法一样, 用 "扣底客"来 统一 乘除法啦!!
我以前想的是, (由CPU通过C算法库先) 取倒数, 来 统一乘除法,
呵呵, 算是占人家"补码"的便宜,揩人家"补码"的油,
不过,"取倒数"的时间和"除法"的时间,不一样么? 还搭上"乘法"的时间, 等于2倍时间啦!! 一点好处都没捞到!!
8: "扣底客算法" 能生成正弦信号? 是 arctan 算法吧?
算是遗留问题, 等我学完 "吉纹丝转换", 再进一步评论吧.
9: 总之, "扣底客算法" 是本书的书胆!
这个算法绝对能支撑得起一本书!!
让我们知道"扣底客算法"有这么多的精妙应用 !
10: 最后的读书体会
1) 作者对当前国内FPGA从业者现状进行了一些描述,我本人非常赞同!
可以和"基础/专业"做类比: 国内大多做"专业应用"于
2) 我发现自己以前这么多年的 FPGA工作,所做都是"操作类",而不是"计算类"
所谓"操作类",指的是:FSM状态机;从MEM读数变换后写入;从Avalon接口读出写入到AXI;I2C/SPI/UART的Master/Slave实现等等..
所谓"计算类",指的是 "真正意义上的数学函数计算"
3) 这是一本很有观点的书。
能够讲解清楚 What很不容易;
能够讲明白 Why 的都是高手!
4)一些期望
最近正在研究用 bluespec来描述算法,
我相信,"扣底客算法" 完全可以用 bluespec 来描述, 而且会描述得更加精巧
希望有能人志士门,在这个角度多做贡献!!