本帖最后由 劲华 于 2015-5-17 20:59 编辑
第一章 集成电路设计与HDL本章概要
本章将简单论述集成电路(IC)的概念与设计原理,并从IC的本质——“集成”出发,讲述IC的三个核心议题:“集成什么”、“如何集成”、“如何处理集成带来的利弊”。学习本章后应当建立起IC设计是一个系统工程的概念,知道Verilog HDL是一种硬件描述语言而不是设计语言,硬件电路本质上是并行运行的而且是有时序关系的。
本章的内容安排如下:
第1节从总体上论述什么是IC设计,IC设计的流程以及整体规划的重要性,并强调面向验证和软硬件配合的设计原则。
第2节简要介绍Verilog语法,并通过10个例子讲述如何通过简单的HDL语句描述复杂的硬件电路。本节主要强调HDL给出的描述需要有具体对应的基础电路原型,并明确时序的概念。此外给出了各种常用的验证小技巧,帮助读者快速进行验证设计。
第3节则是对第2节设计方法的一个总结和提炼。本节主要强调必须按照结构化方式设计电路,并需要遵循常规思维模式对复杂模块进行解耦,按照控制与数据分离的原则简化设计。此外,还讲述了芯片中控制流与数据流的设计方法。
第4节则针对IC中的定点化进行论述,强调定点化实质是人与机器的理解如何达到一致。
第5节给出了HDL语言描述规范,并强调遵循规范实质是一种IC设计模式,能够有效增加设计成功率。
第6节则引入了吞吐率、电路时序等关键性概念,给出了各种电路思想,并引入了四种经典电路优化方法:重定时、折叠、展开与脉动阵列。
第二章 FPGA设计与进阶
本章概要
本章将简单论述FPGA的基本原理和设计方法,并对FPGA与ASIC的差异进行论述。强调FPGA实质是一种ASIC虚拟机,通过各种基本元件的可编程实现整体的可编程。单纯将FPGA当做一种简单的HDL实现器件,实际只是FPGA的基本用法。如果想要发挥FPGA的强大功能,必须理解FPGA为什么可编程?为了与其它类型器件进行竞争,FPGA内置了哪些硬件IP、软件IP?FPGA的设计方法学与ASIC的设计方法学有什么差异?
由于FPGA在某种意义上已经独立于传统的ASIC开发,因此需要将FPGA的各种内嵌功能模块当做类似CPU或者DSP一样进行研究。在进行数据流设计时,需要尽量利用器件模块的原始资源,并充分发挥FPGA内置的并行性和级联流水的威力。对于复杂的流程控制设计时,则需要充分利用FPGA厂商提供的超级状态机(StateSequencer、PicoBlaze 、CoreABC 等),小型CPU(MicroCPU、nios、MicroBLaze)或者大型CPU(Cortex-A9、PowerPC等)。
此外,基于FPGA的流水线、重定时、展开、折叠以及脉动与传统的ASIC设计方法略有不同,这是因为FPGA本身就已经包含了对脉动和重定时的支持,而折叠与展开则通过内置查找表(LUT)支持。目前所有的FPGA基本单元都在向模块级全并行,支持重定时和脉动的设计方向发展。所以,理解FPGA模块叠加的思想对于充分发挥器件性能意义重大。
FPGA的调试功能也与ASIC有很大区别。ASIC的所有调试功能都必须由设计者设计;而FPGA器件则内置多种手段,包括内部逻辑观测、内置存储器修改、动态PLL设定、逻辑分析仪接口等。这些手段能够帮助初学者快速实现错误定位,降低调试难度。
本章的内容安排如下:
第1节从总体上论述什么是FPGA,FPGA设计的流程以及整体规划的重要性,并强调FPGA是一种利用已有器件进行各种并行组合的本质。此外,还介绍了FPGA的进阶之路。
第2节则介绍FPGA与ASIC的差异。
第3节则介绍FPGA的内部各种基础部件特性,包括RAM特性、乘法单元特性、PLL特性、移位寄存器特性;
第4节则介绍FPGA的介绍了各种Debug手段,如SignalTap、In-MemoryEditor等;以及对应的IO接口特性。FPGA设计,就是对上述模块进行组合的过程。
第5节则通过一系列的例子讲述FPGA的设计方法。
第6节则讲述FPGA的优化思想和注意事项,包括数据流量卸载、面积共享、通过插入寄存器实现速率提升的方法。这些实际是与ASIC中的Retiming、折叠、重定时、脉动思想是一致的,可以与复杂芯片系统结构方案系统设计方法对照阅读。
第7节则介绍适合FPGA的可综合概念,并强调与ASIC可综合的区别。
第8节则介绍FPGA设计中的一些注意事项,包括接口、时钟与复位以及各种signoff检查项。
第9节则介绍如何对FPGA设计进行仿真,并详细介绍Modelsim/Questsim软件的使用方法,给出了一个FPGA的仿真例子;此外还给出一个简单的FPGA SoC设计例子。
第三章 通信系统基础部件设计
本章概要
通信系统整体看起来非常复杂,但是如果按照一定的原则进行剖析就会发现,都是由有限的几类基本单元构成的。如果掌握了这类基本单元,再额外添加部分控制逻辑就能构成一个基本实用的通信系统。因此本章将对通信系统进行解构,给出各类常见单元的算法原理和实现方案。在这些基本单元的实现论述中,会将反复用到前面章节提到的四类经典实现手段:重定时、折叠、展开和脉动阵列。这些手段是数字信号处理中的精华,能够极大提升所设计芯片的质量。
本章的内容安排如下:
第1节从总体上论述通信系统的构成,强调设计的层次化和模块化,对大型芯片需要学会解构,知道如何着手设计。
第2节则从概要上介绍通信系统包含哪些基本算法以及对应的组成关系。
第3节则介绍各种芯片设计套路,并通过举例给出对应的设计方案。
第4节介绍数字滤波器。在通信系统设计中,滤波器实质是一个基石,而且变化多端。因此本节详细介绍滤波器的算法原理,实现原理,并反复讲述如何利用四大经典手段实现不同的应用目标。此外,还引入了分段处理的思想,这种思想在信道编解码章节中也会有深刻的体现。
第5节介绍快速傅里叶变换(FFT)。FFT也是信号处理的基石,掌握FFT的原理以及隐含的一大类空间映射特性,能够加深对通信本质的理解。同样,本章对FFT各种实现思想作了详细论述,也利用四大经典手段,给出不同的硬件实现方案。
第6节通过讲述三角函数和超越函数的实现过程,给出IC算法设计一个基本思想:利用逐次逼近的方法实现精确计算。
第7节通过利用任意波形发生器(DDS)的实现过程,给出IC算法设计另外一个基本思想:利用ROM存储数据或者通过提取计算规律,实现高速计算数据输出。此外还给出利用DDS模块实现基本的FSK(频率键控调制)、ASK(幅度键控调制)、PSK(相位键控调制)的方法。
第8节是对前面内容的一个总结,给出如何利用简单元件构建复杂的数字中频系统。此外,本节还给出了多个现网运行的数字中频例子,这些范例能够作为很多新项目的Golden参考设计。
第9节则是基于数字中频基础上,利用各个基本元件实现一个完全实用化的FM立体声收音机的例子。该部分内容强调IC设计追求模块极简化、功能高度集成化的思想。通过一步步引导,可以发现数字电路能够完美实现各种模拟信号处理功能,也能够体会到市场竞争的魅力。
第四章 通信系统的信道编解码
本章概要
本章将讲述通信系统中的各类信道编解码原理与实现方法。信道编解码的核心思想是通过引入冗余获得无差错的传输,这就是可靠通信传输的基础[1]。通过归纳总结,本章给出目前通信系统中常见的信道编解码类型,并对各类编码包含的思想做出说明。由于HDL天然支持二进制运算,所以信道编解码在HDL表达中往往存在非常精简的描述;如果HDL实现代码很繁琐,通常意味着没有找到最佳实现方法,往往需要从编码原理中找出简化技巧。
本章的内容安排如下:
第1节从总体上论述信道编解码的概念和分类标准,引入纠错译码的欧式距离与汉明距离的概念,给出什么是软译码。此外,需要理解信道编解码实际是一种数学变换与概率判决。
第2节给出当前高速串行通信中最重要的编码方式:8b / 10b的编码原理。通过本节应当理解信道编解码就是一种有规律的冗余和空间映射。
第3节给出信道编解码的基础——有限域的运算规则和实现方法。通过有限域的电路实现过程,可以发现离线计算与查表实现的重要性。
第4节给出CRC编码的实现方法,很容易发现CRC原理实现方案与ASIC真实实现的差距。对于信道编码,并行化是一个非常重要的实现需求。
第5节给出了RS的编码原理、译码原理以及硬件实现方案。本节最*+重*+要*+的思*+想是对非线性计算采用多*+维变量替*+换的方法实现计算线性化。此外,还需要明白最朴素的欧几里得算法原理[2]。通过有限域的FFT变换过程,可以进一步理解空间变换其实就是对向量进行正交化以及正交坐标映射的过程,而有限域的译码原理就是利用空间正交产生的额外冗余进行纠错。RS译码完整的硬件实现例子可以参考卫星通信的信道编解码一节。
第6节在第5节的基础上,给出BCH的编码和译码原理。
第7节给出了卷积码的编码原理、译码原理,并给出详尽的Viterbi译码原理。Viterbi译码算法隐含着最朴素的动态规划原理,而且还可以用到多种场合,而核心思想与FFT实际是完全相同的,就是分而治之、分段处理。如果理解Viterbi的核心思想后,还可以将Viterbi算法扩展到大数据业务和人工智能、图像识别上。
第8节给出一个实际通信系统所使用的信道编解码方案。通过该方案读者应当掌握信道编解码最常见的硬件实现结构方法。
第五章 通信原理与单载波芯片设计
本章概要
前面章节的内容主要围绕通信的组成单元进行论述,而本章及后面的章节将站在通信系统的角度进行论述。对于通信系统设计而言,首要的工作是建立完整的无线通信链路,形成收发完备的通信系统模型。通过通信链路能够找到各种影响传输性能的因素,能够正确描绘真实世界的通信过程。建立链路的概念有助于准确评估各类信号处理算法的潜能,方便芯片设计中做出最佳方案选择。
本章的主题主要针对传统的单载波通信系统,内容安排如下:
第1节从总体上论述什么无线通信系统,讲述通信系统的概念,并给出几种基本的调制方法。本节还对无线链路进行详细说明,强调链路的每一个环节均对发送接收造成影响。并针对算法设计人员对通常对射频了解较少的现状,详细讲述了当前射频发送接收的各种特效,并给出了基带处理三大基本电路:AFC、AGC、APC。
第2节主要讲述非理想信道下,接收机如何与发射机同步的过程。这其中强调从信号本身中提取各类数据特性,从而实现理想解调。本节给出了两个理论极限:香农极限和克拉美-罗极限,后面的算法都将依据这两个极限进行设计。此外,本节给出了适合常规通信系统的通用同步和解调技巧,包括频偏、定时、相偏等方面等。将本节给出的各种方法组合起来,就能形成不同的通信解调套路。
第3节则是在前面两节基础上,讲述数字卫星通信系统(DVB-S)如何进行调制的过程。读者可以通过学习本节,并对照前面两节思考如何对QPSK信号进行调制解调。
第4节给出了DVB-S系统QPSK信号的解调方法,该解调方法充分利用了数据的统计特性,是按照非数据辅助(NDA)解调经典方法实现的。任意的正交调制信号实际都可以采用类似方法实现解调。本节给出QPSK的最终解调算法非常简单,但隐藏在后面的统计算法以及简化推导过程有很深的理论背景。
第5节给出了DVB-S的解调硬件实现,所有复杂算法电路均能通过本节的简单模块搭建实现。
第6节则给出了DVB-S的信道解码实现,包括Viterbi译码和RS译码两类算法,是对前面信道编解码章节的一个硬件实现方法总结。
第7节则给出了不同硬件实现条件下的解调方案,强调通过对信号本质的理解获得简单可靠的解调方法。很多的通信系统解调都可以按照本节介绍的思想进行简化。
第六章 多载波通信芯片设计
本章概要
本章将详细介绍当前宽带通信系统的主流:OFDM多载波系统,从原理上论述OFDM的特点以及对应的调制解调套路。在此基础上,本章给出一个完整的802.11系统(WIFI)芯片设计例子,内容涵盖算法原理、Matlab模型和最终Verilog实现。
本章的内容安排如下:
第1节从总体上论述什么是OFDM,并给出OFDM的标准解调套路。这节的重点是理解OFDM为什么频谱效率高,但为这种特性付出了什么样的代价(高峰均比、子载波正交性敏感、高速移动性问题等)。
第2节则给出了与OFDM结合紧密的MIMO设计方法。由于OFDM解调已经标准化,所以掌握套路以及背后蕴藏的思路是最重要的。
第3节则针对当前流行的无线局域网进行系统性讲解。无线局域网设计的核心理念是降低单个终端成本、简化处理流程、实现分布式无线信道共享。
第4节给出802.11a产品标准以及发射机的实现思路,强调通信标准的发射机设计重点在于简化复杂计算,尽量通过离线计算降低运算量。
第5节给出802.11a接收实现算法以及硬件实现思路。对如何实现OFDM的载波同步、频偏消除以及相位同步做了详细论述,核心思想是通过多次累积相关尽量逼近最优值。此外,尽量用少的bit实现相关运算,也是ASIC设计的一个关键。
第6节给出了802.11b产品标准以及发射机的实现思路,与802.11a发射机设计一样,引入了CCK的概念和直接序列扩频的概念。
第7节给出了802.11b接收机算法以及实现思路。这里面最体现信号处理精华的是CCK序列的最佳似然估计,核心计算算法FWT与FFT一样,采用分而治之的思想,极大降低运算量。
第8节给出了802.11b/g芯片商业化设计方案。这里面强调各种射频和空口条件恶劣对接收机的影响,而商业产品就需要设计针对性的电路消除这些影响。通常这些影响因素以及应对措施都是固定套路,可以继承到类似相关的系统中。
第9节则给出了最新的802.11n以及802.11ac的设计思路以及升级思想。在商业产品中,对老产品的兼容性是最重要的,而如何在设计中体现前后兼容性则体现产品方案的高下。
第10节给出了802.11b的接收机理论推导
第11节给出了802.11a的设计主程序。
第七章 复杂通信系统设计
本章概要
前面的章节给出了简单通信系统的设计方案和实现方法,这些系统在某种意义上都可以通过个人英雄或者小型团队开发完成。但对于大型公众网络而言,通过单个团队或简单人员堆积并不能顺利完成系统开发。这是因为公网系统非常复杂,所有的设计出发点都是为了实现大规模商业运维,不再以追求单点通信效率最高位目标,设备形态进一步分化,形成专业化的分工。例如复杂系统形态上,包括基站、终端、核心网、安全网关等,在软件上也是包含了大量的设备交互协议。最重要的是,每个网络设备都有各自有独立的开发思路,例如终端追求低成本、低功耗、高性能,所以芯片设计演变为高度集成、更新工艺的SoC芯片开发,而基站则追求高性能、节能,所以基站芯片设计在强调功耗节能的基础上,追求通过功能强劲的多核处理器实现高性能。此外,基站设备在没有SoC芯片可用时,则尽量追求通过FPGA内置IP实现高性能计算。
本章的内容安排如下:
第1节从总体上论述什么是复杂的通信系统,介绍当前主流的3G、4G/LTE系统特点:宽带化、高速化;并对当前网络基础设施重点要求的节能技术和便携安装技术要求做了详细说明。
第2节简单介绍了LTE的基本概念,对LTE的系统设计思想进行说明,强调通过强大的基站调度达到整体单站性能最优,通过多站协调或通过添加基站控制器实现整网KPI最优。此外,还对LTE所用到的物理层技术和部分关键技术进行详细说明。
第3节则介绍了LTE各信道的实现流程和调制解调算法;对LTE隐藏的复杂调度算法和高层算法进行简单说明,强调LTE的性能应当通过物理层与高层调度共同实现性能提升。
第4节则介绍当前主流的小基站SoC芯片方案。此类SoC方案均有各自的特点,但都采用多核DSP/CPU实现层2层3的协议处理,物理层关键部分则完全采用纯硬件实现。
第5节则给出了部分LTE终端与基站芯片设计方案,并讲述各自的核心特点。
第6节则依据当前市场上依然存在大量基于FPGA实现LTE基站的现实,介绍如何利用FPGA开发LTE基站,以及基站主芯片与FPGA如何进行功能划分。
第7节则给出了一个低成本开发LTE基站芯片的例子,该例子强调软硬件划分,并通过超长指令与并行多核实现LTE物理层处理。
第8节则介绍一个真实LTE一体化基站的内部结构,从中可用发现主器件高度集成化和协议处理SoC化成为基站开发的主流。
[1]
这里面实际上还隐含了香农极限的概念,该内容将会在无线调制解调原理一章进行详细描述。
[2]本节难度较大,但作者已经尽力用最简单的方法进行表述,大约用了2个月时间进行原理描述优化。
|