新書推薦:
《
卡特里娜(“同一颗星球”丛书)
》
售價:NT$
398.0
《
伟大民族:从路易十五到拿破仑的法国史(方尖碑)
》
售價:NT$
857.0
《
古今“书画同源”论辨——中国书法与中国绘画的关系问题兼中国画笔墨研究
》
售價:NT$
602.0
《
《日本文学史序说》讲演录
》
售價:NT$
332.0
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:NT$
454.0
《
治盗之道:清代盗律的古今之辨
》
售價:NT$
556.0
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:NT$
959.0
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:NT$
1367.0
|
編輯推薦: |
这一本书就把除法器、信号发生器、滤波器、小数分频器等10余种基本算法电路的Matlab建模和RTL设计讲透了。它可以帮你从根本上理解复杂电路的设计与优化问题。无论是数字IC设计工程师,还是FPGA开发工程师,通过这本书都可以快速成长为算法与电路设计专家。
|
內容簡介: |
这是一本深入解读基础算法及其电路设计,以打通算法研发到数字IC设计的实现屏障,以及指导芯片设计工程师从底层掌握复杂电路设计与优化方法为目标的专业技术书。任何芯片(如WiFi芯片、5G芯片、AI芯片、多媒体处理芯片等)都是由四则运算器、滤波器、特殊信号发生器等基本算法电路构成的,熟练掌握这些基本算法电路是实现复杂算法电路的基础。忽视基本算法及其电路设计而谈论复杂算法电路,无异于痴人说梦。本书力求从算法、芯片设计、软件开发等多个角度解读基础算法电路的设计,涵盖了溢出保护、有符号运算、浮点运算、位宽确定等运算电路基础知识,以及除法器、信号发生器、滤波器、小数分频器等常用基本算法电路的Matlab建模和RTL设计,可帮助数字IC设计者掌握常用算法设计思路、工具和流程,从根本上提高设计基本算法电路和复杂算法电路的能力。本书共分为12章。第1 ~ 2章介绍算法和芯片设计的基础知识,包括算法与芯片设计的关系,芯片设计人员掌握算法知识的必要性,以及位宽确定、有符号数处理、浮点数运算、溢出保护和四舍五入等算法的实现。第3 ~ 11章 重点介绍各种典型基本算法的电路设计,其中包括任何数字内容简介这是一本深入解读基础算法及其电路设计,以打通算法研发到数字IC设计的实现屏障,以及指导芯片设计工程师从底层掌握复杂电路设计与优化方法为目标的专业技术书。任何芯片(如WiFi芯片、5G芯片、AI芯片、多媒体处理芯片等)都是由四则运算器、滤波器、特殊信号发生器等基本算法电路构成的,熟练掌握这些基本算法电路是实现复杂算法电路的基础。忽视基本算法及其电路设计而谈论复杂算法电路,无异于痴人说梦。本书力求从算法、芯片设计、软件开发等多个角度解读基础算法电路的设计,涵盖了溢出保护、有符号运算、浮点运算、位宽确定等运算电路基础知识,以及除法器、信号发生器、滤波器、小数分频器等常用基本算法电路的Matlab建模和RTL设计,可帮助数字IC设计者掌握常用算法设计思路、工具和流程,从根本上提高设计基本算法电路和复杂算法电路的能力。本书共分为12章。第1 ~ 2章介绍算法和芯片设计的基础知识,包括算法与芯片设计的关系,芯片设计人员掌握算法知识的必要性,以及位宽确定、有符号数处理、浮点数运算、溢出保护和四舍五入等算法的实现。第3 ~ 11章重点介绍各种典型基本算法的电路设计,其中包括任何数字芯片都必不可少的乘法器和除法器设计,在不同专业芯片领域有着广泛应用的数字信号发生器、复数求模求角度运算器、普通滤波器、ΣΔADC中使用的抽取滤波器、基于ΣΔ结构实现的小数倍分频器、CRC校验器等。每个电路均给出了算法的浮点建模、定点建模、RTL以及TestBench仿真文件,并在理论上对ADC、频率、滤波器以及电路结构拓扑进行深入解读。部分电路给出了多种可选设计,并在面积和时序等方面进行了优缺点分析。第12章介绍IEEE754浮点运算单元的设计,专为满足具备标准协议格式的浮点运算核开发需求。其中涉及算法的内容较少,重点介绍协议实现、集成和应用。基于这一章设计得到的电路既可作为SoC芯片中的可编程浮点运算加速器,也可作为专用芯片的浮点运算硬核。
|
關於作者: |
白栎旸
厦大通信系硕士,芯片设计与算法工程师,某知名企业WiFi芯片算法负责人。先后供职于多家知名芯片公司和创业团队,从事数字电路架构和算法设计工作。
具有丰富的数字IC设计经验和算法研发经验,长期与模拟设计团队联合设计数模混合电路,擅长射频电路相关数字校准算法设计以及SoC芯片的架构设计。主持研发的芯片累积产量已达上亿颗。
作为第一发明人获授国家发明专利4项。
著有《数字IC设计入门》等专业技术图书。
|
目錄:
|
目 录
序
前言
第1章 芯片算法与数字电路设计 1
1.1 芯片研发的流程 1
1.1.1 芯片公司的分类 1
1.1.2 芯片设计流程 2
1.2 芯片数字电路设计与算法的关系 4
1.2.1 预研阶段 4
1.2.2 系统架构确定阶段 5
1.2.3 实际电路设计阶段 5
1.3 芯片验证与算法的关系 6
1.3.1 普通验证 6
1.3.2 算法验证 6
1.4 算法工具和数字开发工具 7
1.5 数字开发工程师掌握算法知识的必要性 8
1.5.1 算法的具象化 8
1.5.2 算法的定点化 8
第2章 数字电路设计的算法基础 10
2.1 电路中有符号数的表示 10
2.1.1 无符号的信号对应的实体
电路 10
2.1.2 有符号的信号对应的实体
电路 11
2.1.3 补码罗盘 12
2.1.4 补码的优势 12
2.2 信号位宽 13
2.2.1 无符号整数信号的位宽 13
2.2.2 无符号浮点信号的位宽 13
2.2.3 有符号信号的位宽 14
2.2.4 特殊取值范围的位宽处理 14
2.2.5 MSB和LSB 14
2.2.6 信号的范围和精度 15
2.2.7 信号变化范围的确定 15
2.2.8 运算结果的位宽 16
2.3 溢出保护 19
2.3.1 什么是溢出 19
2.3.2 是否需要溢出保护 19
2.3.3 无符号信号的溢出保护 20
2.3.4 有符号信号的溢出保护 22
2.4 截位与四舍五入 24
2.4.1 截位的数学本质 24
2.4.2 四舍五入的设计方法 25
2.5 浮点数在电路中的定点化 27
2.6 signed声明和注意事项 28
2.7 从算法到RTL实现的转化流程 32
第3章 加法电路设计 33
3.1 实现加法器的方法 33
3.2 全加器的实现 34
3.3 超前进位加法器的实现 37
3.4 逻辑优化和面积对比 39
3.5 浮点数加法的电路实现 40
3.6 有符号数加法的电路实现 45
第4章 乘法电路设计 48
4.1 用综合器实现乘法电路 48
4.2 基于加法迭代的乘法电路 53
4.3 基于CORDIC的乘法电路 63
4.3.1 CORDIC原理 64
4.3.2 线性坐标系对CORDIC通式的简化 72
4.3.3 线性坐标系旋转模式下的CORDIC运算 73
4.3.4 算法建模 74
4.3.5 电路实现 80
4.4 不同实现方式的面积与性能
比较 85
4.5 浮点乘法的电路实现 85
4.6 有符号数乘法的电路实现 88
第5章 除法电路设计 91
5.1 用综合器实现除法电路 92
5.2 线性迭代除法电路 97
5.2.1 算法建模 97
5.2.2 电路实现 105
5.3 基于CORDIC的除法电路 112
5.3.1 线性坐标系向量模式下的CORDIC运算 112
5.3.2 算法建模 113
5.3.3 电路实现 120
5.4 不同实现方式的面积与性能
比较 123
5.5 复数除法电路 125
5.5.1 复数的原理和应用 125
5.5.2 复数除法方案 126
5.5.3 电路实现 127
第6章 常用数字信号处理电路
设计 131
6.1 基于CORDIC的正余弦波
发生器 131
6.1.1 圆坐标系对CORDIC通式的
简化 131
6.1.2 圆坐标系旋转模式下的
CORDIC运算 132
6.1.3 算法建模 133
6.1.4 电路实现 142
6.2 基于查表法的正余弦波
发生器 147
6.2.1 查表法的优缺点 147
6.2.2 查表数据的构造以及用脚本
生成Verilog格式的方法 148
6.2.3 查表法结构设计 151
6.2.4 查表法与CORDIC法的面积
对比 153
6.2.5 查表法对算法电路设计的
启示 154
6.3 反正切运算电路 155
6.3.1 圆坐标系向量模式下的
CORDIC运算 155
6.3.2 算法建模 156
6.3.3 电路实现 161
6.4 复数求模电路 162
6.4.1 算法原理 162
6.4.2 算法建模 163
6.4.3 电路实现 170
第7章 滤波器基础概念 174
7.1 频率和相位 174
7.2 信息的传递方式 178
7.3 带宽 183
7.4 滤波器的作用 185
7.5 滤波器的功能类型 186
7.6 滤波器关注的指标 186
7.7 滤波器的响应特性 188
7.8 滤波器的结构类型 190
7.9 FIR滤波器的结构 191
7.10 系统函数 193
7.11 一拍延迟对应的Z变换 194
7.12 在已知频域响应的前提下求
FIR的抽头系数 195
7.13 相移滤波和频谱奇对称 196
7.14 频谱复制情况下的抽头 201
7.15 使用频域扫描方式获取滤波器
抽头的应用场景 202
第8章 滤波器电路设计 203
8.1 低通滤波器 203
8.1.1 滤波器设计工具 203
8.1.2 设计命题说明 209
8.1.3 抽头个数和数值的确定 210
8.1.4 自动生成滤波器电路 213
8.1.5 手工编写滤波器电路 215
8.1.6 低通滤波器的验证 219
8.2 高通滤波器 223
8.2.1 抽头个数和数值的确定 223
8.2.2 电路实现与验证 224
第9章 ΣΔADC电路设计 226
9.1 ADC概述 226
9.1.1 ADC的本质 226
9.1.2 ADC的性能指标 227
9.1.3 ADC的参考电压 230
9.1.4 ADC的符号 232
9.2 ΣΔADC的组成 232
9.3 简单ΣΔ结构及其特征 233
9.4 复杂ΣΔ结构 239
9.4.1 高阶噪声滤波与一阶噪声滤波的性能比较 239
9.4.2 Mash1-1-1结构 240
9.4.3 Mash2-1-1结构 241
9.4.4 ΣΔ结构的算法建模 243
9.5 抽取滤波器概述 249
9.6 题设 253
9.7 滤波器的性能指标 254
9.8 CIC滤波器 255
9.8.1 滤波器结构 255
9.8.2 算法建模 256
9.8.3 电路实现 259
9.9 CIC补偿滤波器 263
9.9.1 算法建模 263
9.9.2 电路实现 265
9.10 半带滤波器 268
9.10.1 算法建模 268
9.10.2 电路实现 272
9.11 用CSD方法进行抽头乘法运算 279
9.12 抽取滤波的整体效果 279
第10章 锁相环小数倍分频器的电路设计 286
10.1 锁相环的基本结构 286
10.2 对ΣΔ结构的改进 287
10.3 电路实现与验证 289
第11章 CRC校验电路设计 298
11.1 校验技术概述 298
11.2 CRC校验原理 300
11.3 常用的生成多项式 302
11.4 用MATLAB计算CRC校验 信息 303
11.5 CRC的电路实现 304
11.6 CRC电路实现与CRC原理 310
11.7 校准结果的验收 311
11.8 CRC的应用 313
第12章 IEEE754浮点运算单元的设计 314
12.1 用数字硬件实现IEEE754浮点运算的意义 314
12.2 IEEE754的协议格式 315
12.3 IEEE754表示法中的特例 316
12.3.1 表示0的方法 316
12.3.2 表示无穷大的方法 317
12.4 IEEE754浮点运算单元的结构 317
12.5 IEEE754解析器的设计 319
12.6 加减法处理单元的设计 320
12.7 乘法处理单元的设计 327
12.8 除法处理单元的设计 330
12.9 乘除法结构的改进措施 333
12.10 APB接口设计 334
12.11 模块顶层设计 337
12.12 浮点运算单元的软件验证和性能对比 338
|
內容試閱:
|
前 言
芯片国产化是必然趋势
近年来,随着国际形势日益严峻,贸易和技术壁垒逐步加高,特别是在芯片设计制造、人工智能、生物医药等关键技术领域,人为的政策性壁垒正在有计划地建立,如美国于2022年颁布涉及总金额高达2800亿美元的《2022年芯片与科学法案》,欧盟于同年表决通过450亿欧元半导体振兴方案,美国、日本、荷兰三国于2023年初达成包括光刻机在内的先进技术和设备封锁协议等。可以想象,若这一趋势持续下去,在不久的将来,我国将不得不以更为独立的方式开展科研探索和技术创新工作。
在过去,国内芯片研发的主流方式是从国外购买较为成熟的高性能设计,将这些设计作为芯片的主要模块,另外一些难度较低的模块则自行研发,最后将购买的模块与自研模块进行集成,从而形成一个完整的芯片设计。所购买的模块包括中央处理器、总线、调制解调器、高速数据接口及其协议解析器等,几乎涵盖了芯片设计中所需要的全部子系统。这些大大小小的子系统来自不同的供应商,而国内芯片研发的主要工作就是连接它们,并解决不同供应商之间的适配问题。
从国际分工来看,处于上游的是芯片先进国家的模块和整体方案供应商,它们对模块的使用收取许可费,并对每一颗国产芯片加收提成;处于下游的是我国的芯片研发企业,它们缺乏核心技术,只能赚取芯片的组装费。
为了获得更多的研发自主权,同时也为了降低外购成本、增加经营净利润,国内很多芯片厂商和设备厂商对芯片中的核心模块开展了自主研发工作。自主研发的特点是周期长、资金投入大,很多公司都是从头开始组建团队,而团队带头人是否有足够的经验,是否能够使研发过程绕过许多技术陷阱,平滑顺利地进行下去,是自主研发成败的关键,因而研发最后是否能成功,有着极大的不确定性。即使自主研发完成,还要接受市场的考验,因为要用一款新的芯片取代已经成熟应用的老芯片,首先需要找到具有高度意向的产品端客户,该客户需要投入人力配合修改产品的软硬件设计,经过漫长的芯片导入后,才可能真正实现
量产。
在导入过程中,产品端客户需要投入大量的人力和时间,还要承担因更换芯片可能带来的风险,因而芯片的更新替代是非常漫长且艰辛的工作,除非遭遇缺货断供或大幅提价等外部压力,产品端客户一般不会轻易更换原来的芯片方案。在这条自主研发与国产替代的漫漫长路上,许多公司失败了。正因如此,购买模块进行集成,长期以来一直是国内研发的主要方式。可以说,国产芯片既受益于全球化,又受制于全球化。
随着逆全球化趋势的出现,过去的研发方式面临着巨大的挑战。一方面,国内芯片厂商可能面临无模块可买、无高端技术可用的窘境;另一方面,产品生产厂商也面临着进口芯片断供和提价的压力。于是形成了一个前所未有的窗口期,芯片厂商有更大的热情对较为复杂的核心设计进行攻关,产品生产厂商也对国产自主研发芯片有更大的包容度和替代意愿。在此形势下,国内芯片设计水平必将迎来一次大的升级,同时对从业者的要求也将大大提高。
算法是芯片自研的基石
按照购买模块进行组装的方式,芯片开发工程师需要掌握的基本技能是组装,即了解组成系统的各种总线协议、接口协议等,而对模块内部的了解很多时候都流于表面。因此,国内的芯片教学与培训多为介绍单片系统(System on Chip,SoC)集成、总线和接口协议。而自主研发复杂模块所面临的问题,通常不是结构性的,而是算法性和原理性的,如WiFi和5G芯片,里面充斥着各种复杂的矩阵运算、复数运算等,因为它们要解决的是多天线在无线信道下的输入、输出问题。AI芯片、图像/语音/视频等多媒体处理芯片,也需要解决很多数学问题。因此,深入理解芯片所基于的算法是国产自主研发的关键。任何算法都是由加减乘除四则运算、滤波器、特殊信号发生器等基本数学方法构成的,熟练掌握这些方法是实现复杂算法的基础。如果说复杂算法是大厦,那么基本算法就是组成大厦的砖石。忽视基本算法及其电路设计而谈论复杂算法电路,无异于伐根以求木茂,塞源而欲流长,特别是对于从事非架构工作的一线设计师来说,这种想法更是有害无益。
打通算法到电路实现是基本素养
读者可能会问:“算法不应该是算法工程师的事吗?算法工程师解决算法问题,然后告诉芯片开发工程师怎么做就可以了。”按照标准研发流程,确实应该如此。而且,还应该配套一个文档工程师,专为设计补充文档。但在实际工作中,研发并不会有非常清晰、明确的边界。算法工程师一般解决高级算法问题,如梳理算法处理的全流程,通过理论推导和仿真确定流程中每一处算法的选型,给出算法模型供RTL(寄存器传输级)参考,提供参考模型支持,以辅助验证,还要在后续的芯片测试过程中负责解释发现的错误和性能不佳的情况,并给出补救方案。由此可见,算法的工作既有高级的算法架构和算法选型,又有底层的算法建模和细节处理。包括大型公司在内的许多公司都没有足够的算法岗位来解决上述全部问题,很多基本算法的实施,如截位、溢出处理、符号位处理、乘除法等,都需要数字芯片开发工程师自行完成,至少需要在验证发现问题时,能够不需要算法工程师的协助,独立思考并定位问题。因此,进行普通算法的电路设计与写设计文档一样,是数字芯片开发工程师的必 备素质之一。我们不能一面抱怨现代分工的琐碎使得工程师越来越像一枚无足轻重的螺钉,一面又拒绝拓展其他相关领域的知识。事实上,在理解并能熟练设计基本算法电路之后,一个工程师的设计能力和对各种业务的适应能力将会大大增强。
本书可以给你带来什么
以作者多年的经验来看,工程师对于基本算法电路的处理方式主要分为两种:一种是凭经验,例如遵循“凡是加法就保留一个溢出位”这样的规则;另一种是在开始设计前,查阅大量的文献资料。一般资历较深的工程师会选择第一种,资历较浅的工程师会选择第二种。开发工程师通常不具备算法仿真和评估能力,因此即使是最基本的乘除法,在纷繁复杂的各种方法中选出最合适的方法也是十分困难的。一些类似口诀、规则的经验之谈,需要分情况讨论,过于简化的规则在实施中通常会增加不必要的面积开销。由于缺乏方法论的总结,同一个工程师在处理不同芯片项目中的相同问题时,经常会使用不同的方法,并且经常进行重复研究,这样不仅会导致设计质量不稳定,还会延长开发时间。
本书的写作目的是为广大的数字芯片开发工程师提供一种实用的指导方法论。书中梳理了常见的基本算法在数字电路实现过程中的落地步骤和注意事项,并在计算时间和面积等方面对一些常见方法进行比较,最终使得读者遇到基本算法问题时,能够有的放矢、胸有成竹、按部就班地进行电路设计、参数确定和问题分析。在掌握了本书介绍的技巧和方法论之后,数字芯片开发工程师就有能力承担算法和数字设计的综合性任务,从事更为复杂的算法电路设计工作。
本书支持
你在阅读本书的过程中有任何疑问,均可通过以下平台与作者联系,作者将尽可能提供满意的答复。
(1)微信公众号:皮特派讲芯片。
(2)B站:皮特派。
(3)知乎:皮特派。
你也可在公众号“皮特派讲芯片”中回复“算法”获取本书的配套参考代码。
|
|