科技>电子技术>EDA(电子辅助设计)
XilinxFPGA数字信号处理系统设计指南:从HDL、Simulink到HLS的实现

XilinxFPGA数字信号处理系统设计指南:从HDL、Simulink到HLS的实现"

作者:何宾,张艳辉
ISBN:9787121347474
定价:¥188.0
字数:1318千字
页数:824
出版时间:2019-01
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书从硬件描述语言(VHDL和Verilog HDL)、Simulink环境下的模型构建以及Xilinx高级综合工具下的C/C++程序设计3个角度,对采用Xilinx FPGA平台构建数字信号处理系统的方法进行详细的介绍与说明。全书内容涵盖了数字信号处理的主要理论知识,其中包含通用数字信号处理、数字通信信号处理和数字图像处理等方面。全书共5篇21章,内容包括:信号处理理论基础,数字信号处理实现方法,数值的表示和运算,基于FPGA的数字信号处理的基本流程;CORDIC算法、离散傅里叶变换、快速傅里叶变换、离散余弦变换、FIR滤波器、IIR滤波器、重定时信号流图、多速率信号处理、串行和并行-串行FIR滤波器、多通道FIR滤波器以及其他常用数字滤波器的原理与实现;数控振荡器、通信信号处理和信号同步的原理与实现;递归结构信号流图的重定时,自适应信号处理的原理与实现;数字图像处理和动态视频拼接的原理与实现。

前言

前言 近年来,人工智能、大数据和云计算等新信息技术得到越来越多的应用,它们共同的特点就是需要对海量数据进行高性能的处理。与采用CPU、DSP和GPU实现数字信号处理(数据处理)系统相比,现场可编程门阵列(Field Programmable Gate Array,FPGA)具有天然并行处理能力以及整体功耗较低的优势,使得它成为这些新信息技术普及推广不可或缺的硬件处理平台,被越来越多地应用于这些新技术中。 一般而言,业界将FPGA归结为硬件(数字逻辑电路)范畴,而算法归结为软件范畴。在十年前,当采用FPGA作为数字信号处理平台时,设计者必须使用硬件描述语言来描述所构建的数字信号处理系统模型;而大多数的算法设计人员并不会使用硬件描述语言,这样就对他们使用FPGA实现数字信号处理算法造成了困难,从而限制了FPGA在这些新技术方面的应用普及和推广。当采用FPGA作为数字信号处理实现平台时,软件算法人员希望他们自己只关注算法本身,而通过一些其他工具将这些软件算法直接转换为FPGA硬件实现。 近年来,出现了新的建模工具,它们都是以软件算法人员的视角为出发点来构建数字信号处理系统的,这样显著降低了算法设计人员使用FPGA实现算法的难度,实现了软件和硬件的完美统一。本书将着重介绍Xilinx公司Vivado集成开发环境下提供的两种新的数字信号处理建模工具,即System Generator工具(它使用MATLAB环境下的Simulink)和高级综合工具(High Level Synthesis, HLS)。这两个数字信号处理系统建模工具的出现,使得算法人员可以专注于研究算法本身;然后通过这些建模工具,将算法直接转换成寄存器传输级(Register Transfer Level,RTL)描述;最后下载到FPGA内进行算法实现。这样,当采用Xilinx FPGA作为数字信号处理硬件平台时,显著提高了系统的建模效率,并且可以在性能和实现成本之间进行权衡,以探索最佳的解决方案。 本书从传统的硬件描述语言、Simulink模型设计和C/C++高级综合3个角度,对基于Xilinx 7系列FPGA平台下的通用数字信号处理、通信信号处理和数字图像处理的建模与实现方法进行详细介绍。全书共5篇21章,主要内容包括:信号处理理论基础,数字信号处理实现方法,数值的表示和运算,基于FPGA的数字信号处理的基本流程;CORDIC算法、离散傅里叶变换、快速傅里叶变换、离散余弦变换、FIR滤波器、IIR滤波器、重定时信号流图、多速率信号处理、串行FIR滤波器、并行-串行FIR滤波器、多通道FIR滤波器以及其他类型数字滤波器的原理与实现;数控振荡器、通信信号处理和信号同步的原理与实现;递归结构信号流图的重定时,自适应信号处理原理与实现;数字图像处理、动态视频拼接的原理与实现。 本书所介绍的内容反映了Xilinx FPGA在实现高性能数字信号处理(数据处理)系统时的最新研究成果;力图帮助读者在使用FPGA构建数字信号处理系统时,知道如何在实现性能和实现成本之间进行权衡,如何正确使用不同的数字信号处理系统建模工具和方法,更重要的是知道如何将软件算法转换成硬件实现。 在编写本书的过程中,得到了Xilinx公司大学计划的支持和帮助,提供了最新的Vivado 2017集成开发工具以及《DSP for FPGA Primer》等文档和材料。此外,也得到了Mathworks公司图书计划的支持和帮助,为作者提供了正版授权的MATLAB R2016b集成开发环境,以及相关设计所要使用的工具包。在此,向他们的支持和帮助表示衷心的感谢。在编写本书的过程中,仍然参考了已经毕业研究生张艳辉的研究成果,以及本科生汤宗美和刘仪参与本书教学资源的编写工作,在此向他们的辛勤劳动表示感谢。最后,向电子工业出版社编辑的辛勤工作表示感谢。 编著者2018年12月于北京

目录

第一篇数字信号处理系统的组成和实现方法 第1章信号处理理论基础 11信号定义和分类 12信号增益与衰减 13信号失真与测量 131放大器失真 132信号谐波失真 133谐波失真测量 14噪声及其处理方法 141噪声的定义和表示 142固有噪声电平 143噪声/失真链 144信噪比定义和表示 145信号的提取方法 15模拟信号及其处理方法 151模拟I/O信号的处理 152模拟通信信号的处理 16数字信号处理的关键问题 161数字信号处理系统结构 162信号调理的方法 163模数转换器ADC及量化效应 164数模转换器(DAC)及信号重建 165SFDR的定义和测量 17通信信号软件处理方法 171软件无线电的定义 172中频软件无线电实现 173信道化处理 174基站软件无线电接收机 175SR采样技术 176直接数字下变频 177带通采样失败的解决 第2章数字信号处理实现方法 21数字信号处理技术概念 211数字信号处理技术的发展 212数字信号处理算法的分类 213数字信号处理实现方法 22基于DSP的数字信号处理实现方法 221DSP的结构和流水线 222DSP的运行代码和性能 23基于FPGA的数字信号处理实现方法 231FPGA原理 232FPGA的逻辑资源 233FPGA实现数字信号处理的优势 234FPGA的最新发展 24FPGA执行数字信号处理的一些关键问题 241关键路径 242流水线 243延迟 244加法器 245乘法器 246并行/串行 247溢出的处理 25高性能信号处理的难点和技巧 251设计目标 252实现成本 253设计优化 第3章数值的表示和运算 31整数的表示方法 311二进制原码格式 312二进制反码格式 313二进制补码格式 32整数加法运算的HDL描述 321无符号整数加法运算的HDL描述 322有符号整数加法运算的HDL描述 33整数减法运算的HDL描述 331无符号整数减法运算的HDL描述 332有符号整数减法运算的HDL描述 34整数乘法运算的HDL描述 341无符号整数乘法运算的HDL描述 342有符号整数乘法运算的HDL描述 35整数除法运算的HDL描述 351无符号整数除法运算的HDL描述 352有符号整数除法运算的HDL描述 36定点数的表示方法 361定点数的格式 362定点量化 363归一化处理 364小数部分截断 365一种不同的表示方法——Trounding 366定点数运算的HDL描述库 37定点数加法运算的HDL描述 371无符号定点数加法运算的HDL描述 372有符号定点数加法运算的HDL描述 38定点数减法运算的HDL描述 381无符号定点数减法运算的HDL描述 382有符号定点数减法运算的HDL描述 39定点数乘法运算的HDL描述 391无符号定点数乘法运算的HDL描述 392有符号定点数乘法运算的HDL描述 310定点数除法运算的HDL描述 3101无符号定点数除法运算的HDL描述 3102有符号定点数除法运算的HDL描述 311浮点数的表示方法 3111浮点数的格式 3112浮点数的短指数表示 312浮点数运算的HDL描述 3121单精度浮点数加法运算的HDL描述 3122单精度浮点数减法运算的HDL描述 3123单精度浮点数乘法运算的HDL描述 3124单精度浮点数除法运算的HDL描述 第4章基于FPGA的数字信号处理的基本流程 41FPGA模型的设计模块 411Xilinx Blockset 412Xilinx Reference Blockset 42配置System Generator环境 43信号处理模型的构建与实现 431信号模型的构建 432模型参数的设置 433信号处理模型的仿真 434生成模型子系统 435模型HDL代码的生成 436打开生成设计文件并仿真 437协同仿真的配置与实现 438生成IP核 44编译MATLAB到FPGA 441模型的设计原理 442系统模型的建立 443系统模型的仿真 45高级综合工具HLS概述 451HLS的特性 452调度和绑定 453提取控制逻辑和I/O端口 46使用HLS实现两个矩阵相乘运算 461设计矩阵相乘模型 462添加C测试文件 463运行和调试C工程 464设计综合 465查看生成的数据处理图 466对设计执行RTL级仿真 467设计优化 468对优化后的设计执行RTL级仿真 47基于Model Composer的DSP模型构建 471Model Composer工具概述 472打开Model Composer工具 473创建一个矩阵运算实现模型 474修改设计中模块的参数 475执行仿真并分析结果 476产生输出 48在Model Composer导入C/C++代码作为定制模块 481建立C/C++代码 482将代码导入Model Composer 483将定制库添加到库浏览器中 第二篇数字信号处理的基本理论和FPGA实现方法 第5章CORDIC算法的原理与实现 51CORDIC算法原理 511圆坐标系旋转 512线性坐标系旋转 513双曲线坐标系旋转 514CORDIC算法通用表达式 52CORDIC循环和非循环结构硬件实现原理 521CORDIC循环结构的原理和实现方法 522CORDIC非循环结构的实现原理 523实现CORDIC非循环的流水线结构 53向量幅度的计算 54CORDIC算法的性能分析 541迭代次数对精度的影响 542总量化误差的确定 543近似误差的分析 544舍入误差的分析 545有效位deff的估算 546预测与仿真 55CORDIC算法的原理和实现方法 551CORDIC算法的收敛性 552CORDIC象限映射的实现 553向量模式下CORDIC迭代的实现 554旋转模式下CORDIC迭代的实现 56CORDIC子系统的设计 561CORDIC单元的设计 562参数化CORDIC单元 563旋转后标定的实现 564旋转后的象限解映射 57圆坐标系算术功能的设计 571反正切的实现 572正弦和余弦的实现 573向量幅度的计算 58流水线技术的CORDIC实现 581带有流水线并行阵列的实现 582串行结构的实现 583比较并行和串行的实现 59向量幅值精度的研究 591CORDIC向量幅度:设计任务 592验证计算精度 第6章离散傅里叶变换的原理与实现 61模拟周期信号的分析——傅里叶级数 62模拟非周期信号的分析——傅里叶变换 63离散序列的分析——离散傅里叶变换 631离散傅里叶变换推导 632频率离散化推导 633DFT的窗效应 64短时傅里叶变换 65离散傅里叶变换的运算量 66离散傅里叶算法的模型实现 661分析复数乘法的实现方法 662分析复数加法的实现方法 663运行设计 第7章快速傅里叶变换的原理与实现 71快速傅里叶变换的发展 72Danielson-Lanczos引理 73按时间抽取的基2 FFT算法 74按频率抽取的基2 FFT算法 75Cooley-Tuckey算法 76基4和基8的FFT算法 77FFT计算中的字长 78基于MATLAB的FFT分析 79基于模型的FFT设计与实现 710基于IP核的FFT实现 7101构建频谱分析模型 7102配置模型参数 7103设置仿真参数 7104运行和分析仿真结果 711基于C和HLS的FFT建模与实现 7111创建新的设计工程 7112创建源文件 7113设计综合 7114创建仿真测试文件 7115运行协同仿真 7116添加PIPELINE命令 7117添加ARRAY_PARTITION命令 第8章离散余弦变换的原理与实现 81DCT的定义 82DCT-2和DFT的关系 83DCT的应用 84二维DCT 841二维DCT原理 842二维DCT算法描述 85二维DCT的实现 851创建新的设计工程 852创建源文件 853设计综合 854创建仿真测试文件 855运行协同仿真 856添加PIPELINE命令 857修改PIPELINE命令 858添加PARTITION命令 859添加DATAFLOW命令 8510添加INLINE命令 8511添加RESHAPE命令 8512修改RESHAPE命令 第9章FIR滤波器和IIR滤波器的原理与实现 91模拟滤波器到数字滤波器的转换 911微分方程近似 912双线性交换 92数字滤波器的分类和应用 93FIR滤波器的原理和结构 931FIR滤波器的特性 932FIR滤波器的设计规则 94IIR滤波器的原理和结构 941IIR滤波器的原理 942IIR滤波器的模型 943IIR滤波器的Z域分析 944IIR滤波器的性能和稳定性 95DA FIR滤波器的设计 951DA FIR滤波器的设计原理 952移位寄存器模块设计 953查找表模块的设计 954查找表加法器模块的设计 955缩放比例加法器模块的设计 956DA FIR滤波器完整的设计 96MAC FIR滤波器的设计 96112×8乘和累加器模块的设计 962数据控制逻辑模块设计 963地址生成器模块的设计 964完整的MAC FIR滤波器的设计 97FIR Compiler滤波器的设计 971生成FIR滤波器系数 972建模FIR滤波器模型 973仿真FIR滤波器模型 974修改FIR滤波器模型 975仿真修改后FIR滤波器模型 98HLS FIR滤波器的设计 981设计原理 982设计FIR滤波器 983进行仿真和验证 984设计综合 985设计优化 986Vivado环境下的仿真 第10章重定时信号流图的原理与实现 101信号流图的基本概念 1011标准形式FIR信号流图 1012关键路径和延迟 102割集重定时及其规则 1021割集重定时概念 1022割集重定时规则1 103不同形式的FIR滤波器 1031转置形式的FIR滤波器 1032脉动形式的FIR滤波器 1033包含流水线乘法器的脉动FIR滤波器 1034将FIR滤波器SFG乘法器流水线 104FIR滤波器构建块 1041带加法器树的FIR滤波器 1042加法器树的流水线 1043对称FIR滤波器 105标准形式和脉动形式的FIR滤波器的实现 第11章多速率信号处理的原理与实现 111多速率信号处理的一些需求 1111信号重构 1112数字下变频 1113子带处理 1114提高分辨率 112多速率操作 1121采样率转换 1122多相技术 1123高级重采样技术 113多速率信号处理的典型应用 1131分析和合成滤波器 1132通信系统的应用 114多相FIR滤波器的原理与实现 1141FIR滤波器的分解 1142Noble Identity 1143多相抽取和插值的实现 1144直接和多相插值的比较 1145直接抽取和多相抽取的比较 第12章串行和并行-串行FIR滤波器的原理与实现 121串行FIR滤波器的原理与实现 1211串行FIR滤波器的原理 1212串行FIR滤波器的实现 122并行-串行FIR滤波器的原理与实现 1221并行-串行FIR滤波器的原理 1222并行-串行FIR滤波器的实现 第13章多通道FIR滤波器的原理与实现 131割集重定时规则2 132割集重定时规则2的应用 1321通过SFG共享提高效率 1322输入和输出多路复用 13233通道滤波器的例子 133多通道FIR滤波器的实现 1331多通道并行滤波器的实现 1332多通道串行滤波器的实现 第14章其他类型数字滤波器的原理与实现 141滑动平均滤波器的原理和结构 1411滑动平均滤波器的原理 14128权值滑动平均滤波器的结构和特性 14139权重滑动平均滤波器的结构和特性 1414滑动平均滤波器的转置结构 142数字微分器和数字积分器的原理和特性 1421数字微分器的原理和特性 1422数字积分器的原理和特性 143积分梳状滤波器的原理和特性 144中频调制信号的产生和解调 1441产生中频调制信号 1442解调中频调制信号 1443CIC提取基带信号 1444CIC滤波器的衰减及其修正 145CIC滤波器的实现方法 146CIC滤波器位宽的确定 1461CIC抽取滤波器位宽的确定 1462CIC插值滤波器位宽的确定 147CIC滤波器的锐化 1471SCIC滤波器的特性 1472ISOP滤波器的特性 148CIC滤波器的递归和非递归结构 149CIC滤波器的实现 1491单级定点CIC滤波器的设计 1492滑动平均滤波器的设计 1493多级定点CIC滤波器的设计 1494浮点CIC滤波器的设计 1495CIC插值滤波器和CIC抽取滤波器的设计 第三篇通信信号处理的理论和FPGA实现方法 第15章数控振荡器的原理与实现 151数控振荡器的原理 1511NCO的应用背景 1512NCO中的关键技术 1513SFDR的改善 152查找表数控振荡器的实现 1521使用累加器生成一个斜坡函数 1522累加器精度的影响分析 1523使用查找表生成正弦波 1524分析步长对频率分辨率的影响 1525分析频谱纯度 1526分析查找表深度和无杂散动态范围 1527分析查找表深度和实现成本 1528动态频率的无杂散动态范围 1529带有抖动的无杂散动态范围 15210调谐抖动个数 15211创建一个抖动信号 153IIR滤波器数控振荡器的原理与实现 1531IIR滤波器数控振荡器原理 1532使用IIR滤波器生成正弦波振荡器 1533IIR振荡器的频谱纯度分析 153432位定点IIR滤波器生成正弦波振荡器 153512位定点IIR滤波器生成正弦波振荡器 15368位定点IIR滤波器生成正弦波振荡器 154CORDIC数控振荡器的实现 1541象限修正正弦/余弦 CORDIC振荡器 1542锯齿波驱动正弦/余弦CORDIC振荡器 第16章通信信号处理的原理与实现 161信号检测理论 1611概率的柱状图表示 1612概率密度函数 162二进制基带数据传输 1621脉冲整形 1622基带传输信号接收错误 1623匹配滤波器的应用 163信号调制技术 1631信道与带宽 1632信号调制技术 1633数字信号的传输 164脉冲整形滤波器的原理与实现 1641脉冲整形滤波器的原理 1642升采样脉冲整形滤波器的实现 1643多相内插脉冲整形滤波器的实现 1644量化和频谱屏蔽的实现 165发射机的原理与实现 1651发射机的原理 1652发射机的实现 166脉冲生成和匹配滤波器的实现 1661脉冲生成的原理与实现 1662匹配滤波器的原理与实现 167接收机的原理与实现 1671接收机的原理 1672理想信道接收机的实现 1673非理想信道接收机的实现 第17章信号同步的原理与实现 171信号的同步问题 172符号定时与定时恢复 1721符号定时的原理 1722符号定时的恢复 1723载波相位的偏移及其控制 1724帧同步的原理 1725数字下变频的原理 1726BPSK接收信号的同步原理 173数字变频器的原理与实现 1731数字上变频的原理与实现 1732数字下变频的原理与实现 174锁相环的原理与实现 1741锁相环的原理 1742相位检测器的实现 1743环路滤波器的实现 1744相位检测器和环路滤波器的实现 1745Ⅱ型PLL的实现 1746Ⅰ型和Ⅱ型PLL性能的比较 1747噪声对Ⅱ型 PLL的影响 175载波同步的实现 1751科斯塔斯环的实现 1752平方环的实现 176定时同步的实现 1761匹配滤波器和最大有效点 1762超前滞后门同步器 ⅩⅦ第四篇自适应信号处理的理论和FPGA实现方法 第18章递归结构信号流图的重定时 181IIR滤波器脉动阵列及重定时 1811IIR滤波器的结构变换 1812IIR SFG的脉动化 182自适应滤波器的SFG 183LMS算法的硬件实现结构 1831基本LMS结构 1832串行LMS结构 1833重定时SLMS结构 1834非规范LMS(NCLMS)结构 1835流水线LMS结构 第19章自适应信号处理的原理与实现 191自适应信号处理的发展 192自适应信号处理系统 1921通用信号处理系统结构 1922FIR滤波器性能参数 1923自适应滤波器结构 1924通用自适应数字信号处理结构 1925自适应信号处理系统模拟接口 1926典型自适应数字信号处理结构 193自适应信号处理的应用 1931信道识别 1932回波对消 1933声学回音消除 1934电线交流噪声抑制 1935背景噪声抑制 1936信道均衡 1937自适应谱线增强 ⅩⅧ194自适应信号处理算法 1941自适应信号处理算法类型 1942自适应滤波器结构 1943维纳-霍普算法 1944最小均方算法 1945递归最小二次方算法 195自适应滤波器的设计 1951标准并行自适应LMS滤波器的设计 1952非规范并行自适应LMS滤波器的设计 1953使用可配置的LMS模块实现LMS音频 196自适应信号算法的硬件实现方法 1961最小二乘解的计算 1962指数RLS算法的实现 1963QR-RLS算法的原理与实现 197QR-RLS自适应滤波算法的实现 1971QR算法的硬件结构 1972QR-RLS的三数组方法 1973QR边界单元的实现 1974QR内部单元的实现 1975QR数组的实现 第五篇数字图像处理的理论和FPGA实现方法 第20章数字图像处理的原理与实现 201数字图像处理的基本方法 2011灰度变换 2012直方图处理 2013空间滤波 202System Generator中中值滤波器的实现 2021在Vivado HLS内构建中值滤波器 2022在System Generator中构建图像处理系统 203HLS图像边缘检测的实现 2031创建新的设计工程 2032创建源文件 2033设计综合 2034创建仿真测试文件 2035进行协同仿真 2036添加循环控制命令 2037添加DATAFLOW命令 2038添加INLINE命令 ⅩⅨ第21章动态视频拼接的原理与实现 211视频拼接技术的发展 212图像拼接理论及关键方法 2121图像拼接系统概述 2122图像拼接流程 2123图像的采集和表示 2124图像的配准和融合 2125图像拼接演示 213图像配准算法的原理与实现 2131基于MATLAB的图像配准系统 2132关键点配准法 2133SIFT图像配准算法的流程 2134构建SIFT图像尺度空间 2135SIFT关键点检测 2136SIFT关键点描述 2137SIFT关键点匹配 2138模板匹配法 2139灰度信息法 21310频域相位相关算法 21311具有旋转变换的图像配准 214图像配准方法的对比与评价 2141图像配准方法的对比 2142图像配准方法的评价 2143F-SIFT图像配准方法 215视频拼接系统的设计 2151视频拼接技术 2152视频拼接方法 216视频拼接系统的实现 2161F-SIFT方法的实现 2162视频拼接系统的实现 217FPGA视频拼接系统的硬件实现 2171系统结构 2172系统硬件平台总体设计 2173视频数据采集模块 2174视频数据存储模块 2175视频显示接口介绍 2176视频显示模块整体设计 218系统硬件平台的测试 2181视频数据采集模块的测试 2182视频显示模块的测试 219FPGA视频拼接系统的软件设计 2191系统软件设计概述 2192系统中断部分设计 2193视频采集模块软件设计 2194视频存储模块软件设计 2195视频显示模块软件设计 2196系统整体测试 2110Vivado HLS图像拼接系统的原理与实现 21101OpenCV和HLS视频库 21102AXI4流和视频接口 21103OpenCV到RTL代码转换的流程 21104Vivado HLS实现OpenCV的方法 21105Vivado HLS实现图像拼接

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个