首页>参考读物>电子电工>电子工程

DSP嵌入式实时系统权威指南
作者 : [美]罗伯特·奥沙纳(Robert Oshana)编著
译者 : 王建群 李玲 刘元 黄晨曦 等译 姚琪 审校
出版日期 : 2017-09-29
ISBN : 978-7-111-57641-9
定价 : 129.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 455
开本 : 16
原书名 : DSP for Embedded and Real-Time Systems
原出版社: Elsevier (Singapore) Pte Ltd
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

这是一本针对高级读者的书。它的内容主要包含如何在DSP上开发嵌入式实时系统,并对其进行优化。文中内容大多来自作者日常嵌入式系统开发中的积累,堪称此领域的百科全书。同时,作者是从一个完整的解决方案的角度去讲述相关知识的,而非针对技术本身进行探讨。书的主要内容有:
? DSP开发技术
? 最大发挥DSP性能的优化技巧和提示
? 使用一些组件搭建复杂DSP系统的方法
? DSP应用开发工具的使用
? 作者长期的应用开发经验的分享

图书特色

本书由该领域的多位专家学者撰写,是一本针对数字信号处理的专业指导书籍。
内容涵盖了当今嵌入式实时系统的大部分DSP优化,以全方位视角解析相关技术。
理论与案例分析相结合,从常见技术到前沿科技,从理论深度的探讨到实践经验的传播,帮助读者形象地理解相关知识。

封底
本书介绍了数字信号处理(DSP)的相关技术,旨在帮助读者优化嵌入式系统的设计与实现。本书由DSP领域的专家编写并提供了解决方案的重点,有助于你在使用DSP进行嵌入式系统开发时解决日常面临的问题。
本书可作为嵌入式系统初学者和有经验的嵌入式系统开发者的参考书籍,书中涵盖了当今DSP技术的主要方面,有助于设计和实现优化的嵌入式系统。

通过本书,你可以学到:
开发DSP代码的一系列技术
用于优化DSP软件的重要提示和技巧
从很多软件组件中构建DSP系统的各种选项
用于开发DSP应用程序的工具
富有DSP应用开发经验的专家提供的很多实用指南


作者简介

罗伯特·奥沙纳
(Robert Oshana)
拥有30年的软件行业经验,主要专注于国防和半导体行业的嵌入式和实时系统。他拥有BSEE、MSEE、MSCS和MBA学位,是IEEE的高级会员。Robert是多个咨询委员会(包括Embeded Systems Group)的成员,同时他也是国际演讲者。他经常在各种技术领域发表演讲和发表论文,著有嵌入式软件技术方面的书籍。Robert在南卫理公会大学担任兼职教授,教授软件工程研究生课程。他是Freescale半导体公司网络和多媒体技术方面杰出的技术专家和全球软件研发主管。

图书前言

DSP嵌入式系统软件开发遵循标准的嵌入式系统软硬件协同设计模型,如图1所示。

图1 DSP软件开发遵循嵌入式软硬件协同设计模型
这个开发过程可分为6个阶段;
第1阶段:产品规格定义
第2阶段:算法建模
第3阶段:软硬件划分
第4阶段:迭代与选择
第5阶段:实时软件设计
第6阶段:软硬件集成
本书将涵盖以上每个DSP软件开发的重要阶段。
第1阶段:产品规格定义
第1阶段是嵌入式和实时系统的概述,向读者介绍这一类型软件开发的独特方面。
我们需要先理解几个关于嵌入式系统的挑战,才可以基于数字信号处理展开讨论。这些挑战涉及非常复杂的环境,以及系统之间的交互,嵌入式组件内比重渐增加的软件,软件代码复用及快速再造工程的需求,快速创新和不断变化的市场需求推动下的产品发布周期,众多实时的要求和需求管理的需要,及对于质量和过程成熟度日益的关注。
第1章和第2章会提供DSP以及嵌入式系统的概述,简要说明一般嵌入式系统和DSP的主要区别。
第2阶段:算法建模
第2阶段的重点在于对信号处理基本算法本质的理解。数字信号处理是使用数字或符号组成的序列来代表离散时间信号,并处理这些信号。DSP涉及音频和语音信号处理、声呐和雷达信号处理、统计信号处理、数字图像处理、通信、系统控制、生物医学信号处理等诸多领域。DSP算法用于处理这些数字信号。在信号处理中有一组基本算法,例如傅里叶变换、数字滤波器、卷积和相关性。第7章将会介绍和解释一些最重要和最基本的DSP算法,作为本书后面许多主题的基础。
第3阶段:软硬件划分
系统的硬件和软件组件划分在任何嵌入式开发项目中都是重要的一步。
大部分DSP是可编程的。数字信号处理的可编程架构有多种形式,每个都对成本、功耗、性能和灵活性有所权衡。在谱系的一端,数字信号处理系统设计人员通过使用专有的汇编语言可以实现应用的高效率和高性能。在谱系的另一端,系统开发人员可以使用普遍的ANSI C或C++或其他领域特定的语言,并在商用台式电脑上执行所实现的算法,实现数字信号处理软件栈。第4章详述在一连续体不同的点上实现的权衡:一端的最大数字信号处理性能以及另一端由软件实现的灵活性和便携性。每个解决方案的权衡都一步步详细描述,以带领数字信号处理系统开发者找到满足他们特定用例需求的解决方案为目标。
DSP可采用现场可编程门阵列(Field Programmable Gate Array,FPGA)实现。作为一个例子,第5章讨论关于空间复用和不同增益架构上的挑战,并介绍FPGA的一些架构,报告使用FPGA实现这些系统的实验结果。第5章将介绍一个灵活的架构和空间复用MIMO检测器的实现、Flex-sphere及其FPGA实现。我们还介绍WiMAX系统中的波束形成硬件架构,作为给下一代无线系统增加多样性和提高性能的方法。
用于数字信号处理系统的硬件平台有很多种不同的设计,每个都有其固有可编程性、功耗和性能的权衡。适合一个系统设计师的可能不适合另一个。第6章详细描述多种数字信号处理平台以及相关系统的可配置性和可编程性设计。在谱系的一端,详细了解特定应用集成电路(Application Specific Integrated Circuit,ASIC)这种高性能、低可配置的解决方案。在谱系的另一端,作为高度可配置的解决方案介绍具有SIMD扩展的通用型嵌入式微处理器,这种解决方案支持强大的软件可编程性。不同的设计重点逐个介绍,如基于可重新配置的现场可编程门阵列解决方案,以及有不同程度软件可编程性的高性能特定应用集成处理器(Application Specific Integrated Processor,ASIP)。第6章将介绍每个系统的设计权衡,作为一种指导系统开发人员的方法,帮助他们选择适合当前和未来系统部署的数字信号处理硬件平台和组件。
第4阶段:迭代与选择
DSP开发的另一个关键问题是嵌入式生命周期管理。这个周期始于DSP解决方案的选择,要制定一个嵌入式系统以满足性能以及成本、上市时间及其他重要的系统约束。正如前面提到的,嵌入式系统是一个整合在大系统中的专门计算机系统。许多嵌入式系统使用数字信号处理器来实现。DSP将与其他嵌入式元件连接,以执行特定的功能。具体的嵌入式应用将决定其需使用的DSP。例如,如果嵌入的应用程序执行视频处理,系统设计人员可以选择定制的DSP来执行媒体处理,包括视频和音频处理。第3章将讨论嵌入式生命周期和DSP的各种选项,以及如何来确定整个系统的性能和能力。
第5阶段:实时软件设计
实时软件设计遵循的五个步骤如图1所示。
1.识别要进行处理的激励和激励所需的响应。
2.确定每个激励和响应的时序约束。
3.在并发进程中集中处理激励和响应。
4.设计算法来处理激励和响应,满足给定的时间要求。
5.设计一个调度方案,确保进程的及时调度,以满足时间期限。
我们将详细讨论这一阶段的每个过程。
1.识别要进行处理的激励和激励所需的响应
首先,我们需要识别信号处理的系统激励以及它们的响应。不管使用硬件还是软件,这都是必须做的。
在案例分析2中,我们介绍一个简单实用但非常强大的规格说明技术,为开发者在这个规格层次提供一些指引。重点是DSP开发过程中针对采用DSP的嵌入式系统行为的指定。设计需求的正确性、完整性及可测试性是软件工程中的基本原则。设计要求的质量会影响功能上及财务上的成功。这些成功始于良好的设计要求。需求的范围可能会从对于服务或系统约束的高层次抽象语句到详细的数学功能规范。指定系统外部行为、指定实现约束,作为维修参考工具,记录系统生命周期的预期(即变化的预测),及表征突发事件的响应,都需要相关要求。该案例分析介绍了一种严谨的行为规范技术,它可以暴露含糊的设计要求并发布显性或隐性信息来大大降低风险。这样的外部或“黑匣子”规格,可以系统化的方式通过过程序列枚举从行为要求得到。这个过程可以得到一个完整的、一致的、可溯源的系统外部行为规范。序列抽象提供了强有力的手段来管理和集中枚举过程。一个简单的手机设计用来加强这些概念。
有一些可用于包括硬件和软件的更先进技术。第8章重点讨论设计和综合实时数字信号处理系统的系统级方法。这是DSP开发领域的另一个挑战。DSP系统当前的硬件设计和实现在新DSP应用算法的开发和硬件实现之间有一个巨大的时间差距。高层次的设计和综合工具从高抽象级别为复杂DSP处理硬件创建特殊应用的DSP加速器硬件,从而大大缩短了设计周期,同时仍保持面积和功耗效率。该章介绍了两个高级设计方法,1)DSP系统的C到RTL的ASIC/ FPGA实现高层次综合(High Level Synthesis,HLS)和2)用于DSP系统FPGA实现的System Generator。在这些案例分析中,我们将使用高级设计工具介绍三种复杂DSP加速器设计:1)使用PICO C的低密度奇偶校验(Low Density Parity Cheek,LDPC)解码加速器设计;2)使用Catapult C的矩阵乘法加速器设计;3)使用System Generator 的QR分解加速器设计。
2.确定每个激励和响应的时序约束
优化DSP软件的一个关键部分是适当地分析DSP内核和DSP系统的性能并进行基准测试。通过对DSP内核坚实的基准测试和性能分析,才能对最佳情况及系统正常运行的性能进行评估。正确的性能分析和基准测试往往是一种艺术。通常情况下,一个算法在接近理想的条件下进行测试,然后在性能预算里使用其性能测试结果。要真正理解一个算法的性能,需要掌握该算法最好情况下的性能,然后对系统影响进行建模。系统影响包含着变化,如一个正在运行的操作系统,内存不足时执行有着不同的延迟、缓存开销,及管理内存一致性。所有这些影响都需要精心制作的基准测试,它可以用独立方式模拟这些行为。如果建模正确,独立的基准测试几乎可以再现一个DSP内核的运行状况,相当于它在一个运行系统中的行为。第9章讨论如何执行这种基准测试。
3.在并发进程中集中处理激励和响应
一旦理解了输入和输出,就要设计并开发DSP的软件解决方案。DSP的软件开发同样有其他类型软件发展面临的制约因素和开发挑战。这些包括缩短的上市时间、烦琐和重复的算法集成周期、实时应用的时间密集的调试周期、同一个DSP上运行多个差别化任务的整合,以及其他的实时处理要求。高达80%的DSP系统开发工作涉及分析、设计、实施,及软件组件整合。
第15章将涵盖多个关于管理DSP软件开发工作的主题。该章的第一节将讨论DSP系统的工程和问题,讨论框架是DSP和实时软件开发涉及的问题。然后讨论DSP应用开发背景下的高级设计工具,也对集成开发环境和原型环境进行讨论,回顾DSP应用程序开发人员面临的挑战,如代码性能调整、性能分析和优化。本章最后面讨论DSP和实时系统的开发、集成和分析的相关主题。
4.设计算法来处理激励和响应,满足给定的时间要求
编写DSP软件以满足实时约束是具有挑战性的,所以有几个重点关注这方面内容的章节。从前,DSP软件用汇编语言编写。然而,现代编译器问世后,使用C语言编写高效的DSP代码已经成为标准。但是,由于大多数的DSP特性不能完全用C语言表达,存在各种加强标准C和C + +语言的替代品,如语言扩展、更高级的语言,及自动向量化编译器。第10章说明用于编写DSP软件的高级语言和编程模型。
优化是转换一段代码并使它更有效(无论是在时间、空间或功耗上)的过程,而不改变其输出或副作用。代码用户唯一可见的差异,是增加的运行速度和消耗更少的内存或功率。说优化有些用词不当,在某种意义上说,顾名思义,优化会尝试找到“最优”的解决方案,但在现实中,优化的目的是改善,而不是达到完美的结果。
DSP的重中之重就是优化,这包括优化性能、内存,及功耗。
第11章重点讨论代码的性能优化。这是开发过程中关键的一步,因为它直接影响系统完成其拟定工作的能力。执行速度更快的代码意味着需要更多的数据通道、完成更多的工作和竞争优势。该章旨在帮助程序员写尽可能最高效的代码。该章先介绍工具链的使用,涉及在优化前理解数字信号处理器架构的重要性,然后讨论各种优化技术。这些技术适用于所有可编程DSP架构——C语言优化技术和一般循环转换。该章介绍的都是现实世界的例子,通过讨论德州仪器公司和Freescale公司的DSP来说明概念。
第12章重点讨论内存优化。围绕内存系统性能的应用程序代码优化,在可执行代码的篇幅以及运行时性能方面往往能产生巨大的收益。该章介绍了应用开发者可以用于在资源有限的嵌入式系统中缩减其可执行文件静态大小的方法。此外,该章说明的代码优化技术,通过提高软件构建工具在编译、汇编,及链接时优化代码的能力,可以提供应用程序代码显式的性能收益或隐式收益。
第13章重点讨论功耗优化。该章的目的是给需要使用纯软件方法优化DSP功耗的程序员提供资源。为了提供最全面的DSP软件电源优化源头,该章提供了一个基本的功耗背景介绍、测量技术介绍,然后讨论电源优化的细节。该章将重点讨论三个主要领域:算法优化、软件控制的硬件电源优化(低功耗模式、时钟控制、电压控制)和数据流优化,并讨论使用快速SRAM类型存储器(常见的缓存)和DDR SDRAM时的功能和功率考虑。
5.设计一个调度方案,确保进程的及时调度,以满足时间期限
DSP应用有着非常苛刻的数据速率和实时计算要求。这些应用程序还可以有非常不同的实时要求。为了获得最高性能,DSP设计者必须了解实时设计的问题。而且,由此产生的复杂性要求使用实时操作系统(Real Time Operating System,RTOS)。一个DSP RTOS的主要特点包括:速度极快的上下文切换,非常低的中断延迟时间,优化的调度、中断处理程序、任务、事件、消息、循环队列,定时器管理,资源和信号灯处理,固定块和内存管理,这些特点和完整的先发功能也有合作和时间片调度。第14章将深入讨论DSP RTOS,以便在应用程序的开发上有效地利用DSP RTOS。
在整个实时软件设计和开发阶段,工程师需要使用软件开发工具以迭代步骤建立和调试系统。DSP调试技术包括硬件和软件技术。调试硬件包含了DSP芯片上的功能,DSP芯片有收集数据的能力。此数据提供状态行为和其他系统可见性。硬件还需要以高速率从DSP器件提取此信息并格式化数据。调试软件为主机提供了额外的更高级控制和一个接口,通常从调试器接口方面来说。调试器让开发工程师简单地从编译过程(编译、汇编和链接一个应用程序)迁移到执行环境。调试器将编译过程的输出镜像加载到目标系统中。工程师使用调试器与仿真器进行交互来控制和执行应用程序,并发现和解决问题。这些问题可能是硬件和软件的问题。为此,调试器被设计成为一个完整的集成和测试环境。第17章讨论了调试复杂的DSP系统的一系列活动和技术。
案例分析1将通过一个DSP系统性能工程的优秀案例分析把所有这一切融合在一起。重点是分析性能工程案例。系统性能评估发生在软件开发周期的早期可以避免严重损失。当于实现之前评估替代设计时,应用普遍有更好的性能。软件性能工程(SPE)是一组用于收集数据、构建系统性能模型、评估性能模型、管理不确定风险、评估替代品,并验证模型和结果的技术。SPE也包括有效利用这些技术的战略。软件性能工程的概念已用于同时开发数字信号处理应用程序与新一代基于DSP的阵列处理器。算法性能和高效的实现为程序标准的推进动力。当软件应用程序和处理器同时开发时,数量可观的系统和软件开发会在物理硬件可用前完成。这使得SPE技术纳入开发生命周期。这些技术被跨职能地纳入系统工程组织(负责开发信号处理算法)以及软硬件工程组织(负责在嵌入式实时系统中实现算法)。
第6阶段:软硬件集成
在集成阶段系统整合成一个功能齐全的实时系统。这里选择描述几个案例分析来巩固前面章节讨论过的多个重点。我们将介绍系统集成中涉及DSP系统的更有用且更重要的方面。在这个阶段的主题领域包括:
多核DSP系统的集成
基站DSP系统的集成
医疗DSP系统的集成
IP语音电话(Voice over IP,VoIP)DSP系统的集成
软件定义的无线电DSP系统的集成
多核数字信号处理器的重要性近年来逐渐提升,主要是因为数据密集型应用程序的出现,比如移动设备上的视频和高速互联网的浏览。这些应用需要显著的计算性能和较低的成本和功耗。第16章将讨论这些话题,并讲解由一个单核应用程序移植到多核环境的例子,除了执行所需的处理算法之外,还需要考虑复杂的编程与进程调度。该章讨论两个基本多核编程方法:多单核和真多核。真多核模型用于移植一个运动JPEG(MJPEG)应用程序到多核DSP器件,并用于说明提出的概念。该章还谈到了向多核环境移植应用程序时会出现的问题并提出了解决这些问题的解决方案。
针对越来越多的以信号处理为中心的应用程序,越来越多的DSP算法组件开发了出来,对于编程模型和标准的需求也开始出现。正如其他编码标准一样,DSP编程标准可以提高工程效率、缩短集成时间和提高有效性。它也可以更有效地整合来自多个供应商的DSP组件。
第6阶段还包括一个案例分析,描述的是长期演进(Long Term Evolntion,LTE)基站的第一层和第二层软件设计以及用于开发这个应用多核的实现技术(案例分析1)。它汇集了在本书前面提出的多个重点。该案例分析总结了从单核嵌入式应用软件到多核SoC(System on a Chip,片上系统)迁移的各种挑战和应对方法。以LTE eNodeB协议栈的迁移为案例分析主题。
该案例分析介绍了基本的软件工程实践,涉及复杂嵌入式平台软件开发的工程团队用这些实践可以提高项目的可行性。
此后,这个案例分析介绍定义明确的3步过程,以及借助每一步中相关示例开发多核SoC的嵌入式应用所需的步骤。每个步骤进一步细分为子步骤,以确保在每个开发阶段结束时,有一个可衡量的进展。在此使用一个高性能的多核SoC的例子讲解其中的各种技术挑战及其解决方案并提出建议。
有一个案例分析(案例分析3)与DSP的IP语音电话系统有关。相比基于铜缆的传统电话,VoIP提供了许多与成本相关的优势,物理端(设备布线材料),以及逻辑端(考虑增加服务和区分成本模型的灵活性)皆是如此。该案例分析说明了DSP在过去十年中如何让VoIP尽可能普及。
一旦从双绞线和E1/T1中继接线的迁移给以太网LAN和光纤骨干网腾出空间,很多基于数据包的语音技术便重塑了电信网络。VoIP网关就是过渡时期的主力系统基础设施。网络段被基于IP的技术取代,但遗留技术和新技术相撞时服务仍然必须正常。VoIP媒体网关处理不同侧的网络接口技术所需的语音和信令信息,例如,由一个数据包网络的TDM(时分复用)网络。全双工实时语音或传真/调制解调通信由DSP引擎压缩并编码成IP数据包,然后发送到IP网络。从网络接收到的数据包解码,然后向TDM端进行解压。动态抖动缓冲区自动补偿网络延迟变化,实现实时语音通信。语音处理包括回音消除、语音压缩、语音活动检测、语音打包。其他功能包括信号检测、继电器和传真/调制解调器中继。DSP技术使所有这些底层技术能够实现。这个案例将描述媒体网关的架构。
还有一个关于医疗领域DSP的案例分析(案例分析2)。使用的示例是一个实时超声系统。实时超声检查系统已有40余年历史。在这段时间内,系统的体系结构显著变化,在质量和运营模式方面引入了新的功能。
在这个案例分析中,我们给出一些常见操作模式的概述,这些操作模式专注于以工程方法来回答一些频繁出现的设计问题。该案例的重点是现代DSP架构上波束成形和B模式的实施,其中讨论了权衡和硬件功能。
当今这代DSP有强大的处理能力,更适合医疗超声波应用。案例分析2中的案例和实例将展示DSP可以实现什么,瓶颈在哪里,优势在哪里。
有一个关于软件定义无线电(Software Defined Radio,SDR)的案例分析(案例分析6)。数字信号处理已成为无线通信的一个大前提。所有最新的技术(包括OFDM、CDMA、SC-FDMA),它们代表3 G~4 G网络(如HSPA,LTE或WiMAX)的核心基础,现在都可以通过高密度数字算法,在一个小型低功耗的芯片上实现。更重要的是,额外的信号处理技术,如波束成形或空间复用,对实现每秒几百兆位的吞吐量和每赫兹每秒几十位的频谱效率有很大的贡献。此外,在信道估计器、均衡器和比特解码器中可以找到的一些其他复杂算法允许恶劣的无线电环境中应用所有这些技术,这些环境包括具有高移动性,甚至是远距离情况下的非视距通信。
大规模的整合使手持设备包括一个多标准的终端来兼容大量的各种无线标准。设想一款智能手机,根据其服务需求和信道条件,很方便地为数据和语音传输选择最好的技术。这就是为什么你的智能手机可以通过GSM、EDGE、UMTS或LTE基站连接到BTS。在同一时间,手机可以与Wi-Fi、蓝牙、GPS连接,所有这些功能都在一个非常小的终端实现,而且电池的寿命也较长。在将来,这种服务的选择和复用可以仅通过软件定义。如果没有数字信号处理,仅仅依靠模拟组件,这样的性能将不可能实现。现在,收发机中的模拟部分正被数字部分取代。越来越多的操作都可以在数字部分用较低的价格和更好的性能实现,包括滤波、
上/下变频、模拟链中产生的失真的补偿。此外,可以预计在未来模拟部分在高速A / D和D /
A转换器的帮助下将被彻底征服,从而将使数字收发机直接连到天线。这部分称为收发机前端,而十几年前,它曾经是完全模拟的,现在则越来越数字化。该案例分析(案例分析6)试图揭示数字收发机前端一些现有的数字信号处理技术。
在多数应用里,DSP系统需要准确规范的处理要求。在本书中,我们有一个案例分析涉及使用DSP技术的手机应用的规范步骤。详细和精确的规范技术可以使系统满足客户要求,并且在现场良好工作。该案例分析将带领读者在规范软件系统中经历这些有趣的实际步骤。
最后,还有几个案例分析概述软件性能工程(Software Performance Engineering,SPE)。SPE是满足系统性能要求并带来成本效益的软件系统开发的系统、定量方法。SPE是一个面向软件的方法,它专注于架构、设计和实现所选方案。本书有一个很好的案例分析重点讨论在具有硬实时期限的大规模DSP应用中SPE的使用。

上架指导

电子与电气工程

封底文字

本书为你提供了数字信号处理(DSP)的相关技术,用于优化嵌入式系统的设计与实现。本书由DSP领域的专家编写并提供了解决方案的重点,会给你提供大量帮助,从而协助你在使用DSP进行嵌入式系统开发时解决日常面临的问题。

本书可作为嵌入式系统初学者和有经验的嵌入式系统开发者的参考书籍,涵盖了当今DSP技术的主要方面,以此设计和实现一个最佳的嵌入式系统。

通过本书,你可以学到:
·开发DSP代码的一系列开发技术
·用于优化DSP软件的有价值提示和技巧,从而获得最佳性能
·从很多软件组件中构建DSP系统的各种选项
·用于开发DSP应用程序的工具
·富有DSP应用开发经验的专家提供的很多实用指南



译者序

2004年左右,我作为国内较早接触并使用Freescale 多核DSP MSC8102进行产品开发的工程师,跑遍了北京海淀图书城中工具书的摊位,都没有找到一本介绍Starcore或多核产品的中文工具书。项目的开发选择了最新款芯片,但熟悉该芯片的工程师几乎没有,这注定我就是吃螃蟹的人。无奈之余,我只好乖乖地回去啃厚厚的英文产品手册。
短短几年时间,Freescale 的多核DSP产品凭借其优异性能得到了通信设备厂商的认可,Freescale 多核DSP产品的身影不断地出现在他们的各类通信产品中。闲暇时和同事们聊起有关Starcore多核产品的成功市场推广,我们都有共同的感慨,那就是如果市面上能够有关于Starcore多核产品的入门级工具书,将对Freescale 多核DSP产品的普及大有益处。这既能让更多的高校学生有机会了解并接触它,也能为开发者提供参考。
作为Freescale 的应用工程师,我和同事们曾有过出版一本关于Starcore多核DSP应用开发书籍的想法,由于诸多原因,始终未能实现这个愿望。偶然机会,通过我们大学计划的同事马莉得到机械工业出版社编辑的邀请,翻译本书,让我得偿夙愿。原书作者Robert Oshana在嵌入式软件行业拥有超过30年的工作经验,他主要侧重于国防工业和半导体行业的嵌入式实时系统设计。他拥有电子工程学士学位、电子工程硕士学位、计算机科学硕士学位和MBA学位,同时他还是IEEE资深会员。阅读之后,我认为这是一本非常好的多核DSP开发的工具书。作者侧重于解决方案,它是你不可缺少的类似百科全书的参考书目,它可以帮助你解决嵌入式DSP系统应用开发过程中遇到的问题。于是我欣然接受了出版社的邀请,有幸成为翻译团队中的一员。
我们的翻译团队由王建群、李玲、刘元、黄晨曦、姚琪组成。其中王建群老师是难得一见的数字信号处理专家,而姚琪则是前BEEcube公司的核心研发工程师,软硬兼通,刘元、黄晨曦和我则浸淫DSP产品线多年,拥有非常丰富的多核DSP开发经验和现场技术支持经验,翻译团队可谓阵容强大。我坚信,在翻译团队成员的一致努力下,必然会为广大读者奉上一本内容实用、知识丰富的DSP工具书。
本书涵盖了嵌入式DSP系统开发所需的多方面内容,其中包括DSP系统设计,DSP软件架构设计,DSP系统开发中常用的实时操作系统,DSP软件开发调试工具、调试手段、DSP软件优化等诸多实用性强的内容,并附以工业应用实例。
本书包括17章及6个案例分析。第1章主要介绍数字信号处理;第2章介绍实时系统与嵌入式系统;第3章讲述嵌入式DSP系统的开发阶段;第4章讲述可编程DSP体系结构;第5章讲述FPGA在无线通信系统中的应用;第6章讲述DSP软硬件协同;第7章讨论DSP算法;第8章介绍DSP高级设计工具;第9章讲述DSP系统基准测试和性能分析;第10章讲述DSP软件中的高级语言和编程模型优化;第11章讲述DSP优化之代码优化;第12章讲述DSP优化之内存优化;第13章讨论如何从功耗角度出发对DSP进行优化;第14章介绍DSP操作系统;第15章讨论如何管理DSP软件开发流程;第16章讲述多核DSP软件开发;第17章介绍DSP应用程序的开发和调试手段;案例分析1介绍LTE 基带软件设计;案例分析2介绍医疗设备中的DSP应用;案例分析3介绍VoIP中的DSP软件系统;案例分析4介绍嵌入式DSP应用系统的软件性能;案例分析5介绍嵌入式系统的行为定义;案例分析6介绍软件无线电中DSP的应用。
在翻译任务的划分上,我们秉持取长补短的原则,翻译人员选择自己擅长的内容进行翻译,尽量做到翻译准确、翔实。其中王建群老师承担文前第1章、第5章、第6章、第7章、第8章的翻译;刘元承担第3章、第13章、案例分析1的翻译;姚琪承担了第2章、第11章、第14章的翻译并审校了全书;黄晨曦承担了第9章、第10章、第12章、案例分析2、案例分析3的翻译,李玲承担了第4章、第15章、第16章、第17章、案例分析4、案例分析5、案例分析6的翻译。
新书付梓之际,我心怀喜悦,太多的人需要感谢。感谢为本书贡献过力量和提供过帮助的人!尽管我和整个翻译团队对本书的翻译投入百倍的热情和认真,我们非常希望能够呈现给读者一本精致的技术专著,然而由于时间和精力所限,某些疏忽和错误在所难免。我代表整个翻译团队恳请广大读者和DSP开发领域的专家在阅读本书的过程中把书中的问题及时反馈给我们,并就书中内容与我们进行交流,具体可以发邮件至b19714@freescale.com。

李玲

图书目录

译者序
前言
作者简介
第1章 数字信号处理简介 1
1.1 何谓数字信号处理 1
1.2 DSP的优势 2
1.3 DSP系统 2
1.3.1 模数转换 3
1.3.2 奈奎斯特准则 4
1.3.3 数模转换 6
1.4 DSP的应用 6
1.5 低功耗DSP应用 8
1.6 总结 9
第2章 实时系统与嵌入式系统概述 11
2.1 实时系统 11
2.1.1 软实时和硬实时系统 11
2.1.2 实时系统和分时系统的区别 11
2.1.3 DSP系统是硬实时系统 12
2.1.4 实时事件特征 13
2.2 高效运行和运行环境 14
2.3 实时系统设计的挑战 14
2.3.1 响应时间 15
2.3.2 从故障中恢复 15
2.4 分布式和多处理器构架 16
2.4.1 系统初始化 16
2.4.2 处理器接口 16
2.4.3 负载分配 16
2.4.4 集中的资源分配和管理 16
2.5 嵌入式系统 17
2.6 总结 18
第3章 嵌入式DSP系统开发生命周期概述 20
3.1 嵌入式系统 20
3.2 嵌入式DSP系统的生命周期 20
3.2.1 步骤1:研究系统的整体需求 20
3.2.2 步骤2:选择系统所需的硬件组件 21
3.2.3 硬件门电路 22
3.2.4 软件可编程 22
3.2.5 通用处理器 22
3.2.6 微控制器 23
3.3 FPGA解决方案 23
3.4 一个通用的信号处理解决方案 27
3.5 DSP加速决策 28
3.6 DSP处理的模型 32
3.6.1 输入/输出选择 33
3.6.2 计算DSP性能 34
3.6.3 DSP软件 36
3.7 代码的调整和优化 37
3.8 典型的DSP开发流程 38
3.9 总结 43
第4章 可编程DSP体系结构 44
4.1 可编程DSP体系结构的共性 44
4.2 内存体系结构 48
4.2.1 内存访问宽度 49
4.2.2 对齐问题 49
4.3 数据操作 49
第5章 FPGA在无线通信中的应用 51
5.1 概述 51
5.1.1 空间复用的MIMO系统 52
5.1.2 Flex-Sphere 检测器 53
5.1.3 改良实数分解排序 55
5.1.4 软件无线电手机可配置检测器的FPGA设计 56
5.1.5 改良实值分解 58
5.1.6 MT=3的Xilinx FPGA实现结果 58
5.1.7 MT=4的Xilinx FPGA实现结果 59
5.1.8 仿真结果 59
5.2 针对WiMAX的波束成形 61
5.2.1 在宽带系统中的波束成形 61
5.2.2 波束成形系统的计算要求和性能 63
5.2.3 使用WARPLab的波束成形实验 65
5.2.4 实验设置及结果 67
5.3 总结 69
参考文献 69
第6章 DSP软硬件协同 72
6.1 概述 72
6.2 嵌入式设计中的FPGA 72
6.3 ASIC与FPGA 74
6.4 软件可编程数字信号处理 75
6.5 通用型嵌入式内核 76
6.6 总结 76
6.6.1 架构 76
6.6.2 以应用为导向的设计 77
参考文献 77
第7章 DSP算法概述 78
7.1 DSP应用 78
7.2 信号与系统 78
7.2.1 DSP系统 79
7.2.2 混叠 79
7.3 基本的DSP系统 80
7.4 频率分析 81
7.4.1 卷积 81
7.4.2 相关性 82
7.4.3 FIR滤波器设计 82
7.4.4 加窗 83
7.5 算法实现:DSP架构 85
7.5.1 数字格式 86
7.5.2 溢出和饱和 86
7.6 FIR滤波器的实现 86
7.6.1 利用片上RAM 88
7.6.2 特别的乘积累加指令 88
7.6.3 块滤波 88
7.6.4 分离的程序和数据总线 88
7.6.5 零开销循环 89
7.6.6 循环缓冲器 89
7.7 系统问题 90
7.8 总结 90
第8章 复杂DSP应用的高层次设计工具 91
8.1 高层次综合设计方法 91
8.2 高层次设计工具 92
8.3 Catapult C 92
8.3.1 PICO 94
8.3.2 System Generator 95
8.4 案例分析 96
8.5 使用PICO的LDPC译码器设计案例 96
8.6 使用Catapult C 的矩阵乘法器设计案例 99
8.7 使用System Generator的QR分解设计实例 101
8.8 总结 104
参考文献 104
第9章 DSP软件优化:DSP系统的基准测试和性能分析 107
9.1 概述 107
9.2 编写测试框架 107
9.3 隔离DSP内核函数 110
9.3.1 提防激进的编译工具 110
9.3.2 灵活放置代码 111
9.4 真实系统行为的建模 111
9.4.1 缓存带来的影响 111
9.4.2 内存延迟带来的影响 112
9.5 系统方面的影响 112
9.6 多核/多设备环境下的执行情况 112
9.7 分析测试方法带来的额外开销 113
9.7.1 排除无关事项 114
9.7.2 中断 114
9.7.3 基准测试中运行的库函数 114
9.7.4 使用仿真工具测试 114
9.7.5 基于硬件模块的测试 115
9.7.6 性能分析结果 116
9.7.7 如何解读获取的测试结果 116
第10章 DSP软件优化:高级语言和编程模型 117
10.1 汇编语言 117
10.2 带内联函数和编译指示的C编程语言 118
10.2.1 C语言编写的FIR滤波器 119
10.2.2 内联函数 119
10.2.3 编译指令 121
10.3 嵌入式C语言 122
10.4 C++语言在嵌入式系统中的应用 122
10.5 自动矢量化编译技术 123
10.5.1 MATLAB、Labview和类FFT-W的生成器套件 124
10.5.2 MATLAB和本地编译的代码 124
10.5.3 本地代码到MATLAB和硅片上的仿真 125
第11章 优化DSP软件:代码优化 126
11.1 优化过程 126
11.2 使用开发工具 126
11.2.1 编译器优化 126
11.2.2 编译器基本配置 127
11.2.3 启用优化 127
11.2.4 其他的优化配置 128
11.2.5 使用分析器 128
11.2.6 分析生成的汇编代码 129
11.3 背景知识:理解DSP架构 129
11.4 基本C语言优化技巧 130
11.5 用内联函数发挥DSP特性 131
11.6 指针和内存访问 135
11.6.1 确保对齐方式 135
11.6.2 restrict和指针别名 136
11.7 循环 137
11.8 硬件循环 138
11.9 其他的提示和技巧 139
11.9.1 内存争用 139
11.9.2 使用未对齐访问 139
11.9.3 访问缓存 139
11.9.4 嵌入小函数 139
11.9.5 使用供应商DSP库 139
11.10 一般的循环转换 139
11.11 循环展开 140
11.11.1 背景知识 140
11.11.2 实现 140
11.12 多重采样 140
11.12.1 背景知识 140
11.12.2 实现过程 141
11.12.3 实现 141
11.13 部分求和 141
11.13.1 背景知识 141
11.13.2 实现过程 142
11.13.3 实现 142
11.14 软件流水化 143
11.14.1 背景知识 143
11.14.2 实现 143
11.15 优化技巧的应用示例:互相关 144
11.15.1 创建 144
11.15.2 原始实现方案 144
11.15.3 步骤1:用内联函数执行小数计算并指定循环计数 145
11.15.4 步骤2:指定数据对齐方式并修改成多重采样 146
11.15.5 步骤3:汇编语言优化 148
第12章 DSP优化:内存优化 151
12.1 概述 151
12.2 代码量优化 151
12.2.1 编译器标记和标记挖掘 151
12.2.2 针对ISA的代码量与性能权衡 152
12.2.3 针对代码量优化调整ABI 153
12.2.4 告诫购买者:编译器优化与代码量互不相关 160
12.3 内存布局优化 161
12.3.1 内存优化概述 161
12.3.2 集中优化工作 162
12.3.3 向量化和动态代码计算比例 162
12.3.4 数据结构、数据结构数组及其混合 164
12.3.5 针对内存性能的循环优化 166
12.3.6 数据对齐方式的连锁效应 166
12.3.7 选择合适的数据类型会获得丰厚回报 166
第13章 针对功耗的软件优化 168
13.1 概述 168
13.2 了解功耗 168
13.3 测量功耗 171
13.3.1 使用电表测量功率 171
13.3.2 使用霍尔传感器型IC测量功率 171
13.3.3 稳压器模块电源IC 172
13.4 分析应用程序的功耗 173
13.5 降低功耗 174
13.6 时钟和电压控制 177
13.7 优化数据流 182
13.7.1 优化内存访问以降低功耗 182
13.7.2 DDR概述 183
13.7.3 通过优化DDR数据流来降低功率 185
13.8 外设/通信的使用 193
13.8.1 数据的DMA和CPU的对比 195
13.8.2 算法优化 197
13.8.3 递归消除 200
13.9 总结 202
参考文献 203
第14章 DSP操作系统 204
14.1 概述 204
14.2 DSP操作系统基础 204
14.3 实时性 205
14.4 多核 208
14.5 内存管理 213
14.5.1 内存分配 213
14.5.2 虚拟内存和内存保护 213
14.6 网络 214
14.6.1 处理器间通信 214
14.6.2 网络互联 216
14.7 调度 217
14.7.1 参考模型 217
14.7.2 抢占式调度与非抢占式调度 218
14.7.3 阻塞作业与非阻塞作业 218
14.7.4 协作式调度 218
14.7.5 调度类型 219
14.7.6 调度时的多核考虑 219
14.7.7 离线调度及其可能的实现 219
14.7.8 在线调度(基于优先级的调度) 224
14.7.9 静态优先级调度 224
14.7.10 动态优先级调度 226
14.7.11 离线调度与在线调度的比较 227
14.7.12 优先级反转 227
14.8 DSP OS辅助工具 229
14.9 总结 231
参考文献 232
第15章 DSP软件开发管理 234
15.1 概述 234
15.2 开发DSP应用面对的挑战 234
15.3 DSP开发流程 235
15.3.1 概念和规范定义阶段 235
15.3.2 DSP算法标准和指导原则 236
15.3.3 高级系统设计和工程性能 237
15.3.4 软件开发 238
15.3.5 系统创建、集成和测试 238
15.3.6 工厂和现场测试 238
15.4 DSP系统的设计挑战 238
15.5 DSP高级设计工具 239
15.6 DSP工具箱 239
15.7 DSP的主机开发工具 240
15.8 通用数据流实例 242
15.9 代码调整及优化 246
15.9.1 典型DSP开发流程 246
15.9.2 新手入门 248
15.10 总结 248
第16章 DSP多核软件开发 251
16.1 概述 251
16.2 多核编程模型 252
16.2.1 多个单核系统 252
16.2.2 真正的多核系统 254
16.3 移植向导 255
16.3.1 设计上的考虑 255
16.3.2 MJPEG案例分析 256
16.3.3 实现细节 259
16.4 总结 262
第17章 DSP应用程序的开发与调试 263
17.1 集成开发环境概述 263
17.2 新建项目 263
17.3 多核DSP环境下进行编译与链接 267
17.3.1 DSP SDOS操作系统 267
17.3.2 应用程序内存映射 268
17.3.3 应用程序的编译器配置 270
17.3.4 应用程序的链接器配置 274
17.4 在多核DSP上执行和调试应用程序 277
17.4.1 创建新连接 277
17.4.2 建立运行配置 279
17.4.3 调试器使用 280
17.5 使用软件和硬件专用资源跟踪与剖析多核应用程序 285
17.5.1 软件分析设置 286
17.5.2 跟踪 287
17.5.3 重要的代码 288
17.5.4 代码覆盖 289
17.5.5 性能 290
案 例 分 析
案例分析1 LTE 基带软件设计 294
案例分析2 DSP在医疗器械上的应用 346
案例分析3 VoIP DSP软件系统 365
案例分析4 嵌入式DSP应用系统软件性能 401
案例分析5 定义嵌入式系统的行为 412
案例分析6 DSP在软件无线电领域的应用 421

教学资源推荐
作者: 宋焕明,赵俊霞,周志祥 编
作者: [英]马克·凯尔伯特(Mark Kelbert),[俄]尤里·苏霍夫(Yuri Suhov)著
作者: [伊朗]哈米德 D.塔吉拉德(Hamid D. Taghirad)著
参考读物推荐
作者: 李悦城 野火 编著
作者: (美)Steven F. Barrett 著
作者: 陆佳华 潘祖龙 彭竞宇 肖雄 孙宏滨 编著