新書推薦:
《
人格阴影 全新修订版,更正旧版多处问题。国际分析心理学协会(IAAP)主席力作
》
售價:NT$
305.0
《
560种野菜野果鉴别与食用手册
》
售價:NT$
305.0
《
中国官僚政治研究(一部洞悉中国政治制度演变的经典之作)
》
售價:NT$
286.0
《
锂电储能产品设计及案例详解
》
售價:NT$
505.0
《
首辅养成手册(全三册)(张晚意、任敏主演古装剧《锦绣安宁》原著小说)
》
售價:NT$
551.0
《
清洁
》
售價:NT$
296.0
《
组队:超级个体时代的协作方式
》
售價:NT$
352.0
《
第十三位陪审员
》
售價:NT$
245.0
|
內容簡介: |
本书以Xilinx公司的FPGA为开发平台,以Verilog HDL及MATLAB为开发工具,详细阐述数字信号处理技术FPGA实现的原理、结构、方法及仿真测试过程,并通过大量的实例分析FPGA实现过程中的具体技术细节。本书主要包括FPGA概述、设计语言及开发工具、FPGA设计流程、常用接口程序的设计、FPGA中的数字运算、典型IP核的应用、FIR滤波器设计、IIR滤波器设计、快速傅里叶变换的设计等内容。本书思路清晰、语言流畅、分析透彻,在简明阐述设计原理的基础上,重点追求对工程实践的指导性,力求使读者在较短的时间内掌握数字信号处理技术FPGA实现的知识和技能。
|
關於作者: |
杜勇,四川省广安市人,高级工程师、副教授,现任教于四川工商学院,居住于成都。1999年于湖南大学获电子工程专业学士学位,2005年于国防科技大学获信息与通信工程专业硕士学位。发表学术论文十余篇,出版《数字滤波器的MATLAB与FPGA实现》《数字通信同步技术的MATLAB与FPGA实现》《数字调制解调技术的MATLAB与FPGA实现》《锁相环技术原理及FPGA实现》等多部著作。
|
目錄:
|
上篇 基 础 篇
第1章 FPGA概述 3
1.1 FPGA的发展趋势 3
1.2 FPGA的结构 5
1.2.1 可编程输入输出单元(IOB) 5
1.2.2 可配置逻辑块(CLB) 6
1.2.3 数字时钟管理模块(DCM) 7
1.2.4 块RAM(BRAM) 8
1.2.5 布线资源 8
1.2.6 专用硬IP核 8
1.3 FPGA的工作原理 9
1.4 FPGA与其他处理平台的比较 10
1.4.1 ASIC、DSP、ARM的特点 10
1.4.2 FPGA的特点及优势 11
1.5 FPGA的主要厂商 12
1.5.1 Xilinx公司 12
1.5.2 Intel公司 13
1.5.3 Lattice公司 13
1.5.4 Actel公司 14
1.5.5 Atmel公司 15
1.6 如何选择FPGA 15
1.7 小结 16
1.8 思考与练习 16
第2章 设计语言及开发工具 17
2.1 Verilog HDL简介 17
2.1.1 HDL的特点及优势 17
2.1.2 选择VHDL还是Verilog 18
2.1.3 Verilog HDL的特点 19
2.2 Verilog HDL的基本语法 20
2.2.1 Verilog HDL的程序结构 20
2.2.2 数据类型及基本运算符 23
2.2.3 Verilog HDL的运算符优先级及Verilog HDL的关键词 25
2.2.4 赋值语句与块语句 26
2.2.5 条件语句和分支语句 29
2.3 常用的FPGA开发工具 30
2.3.1 ISE开发工具 30
2.3.2 ModelSim仿真软件 32
2.4 MATLAB软件 34
2.4.1 MATLAB的简介 34
2.4.2 MATLAB的工作界面 35
2.4.3 MATLAB的特点 36
2.5 FPGA数字信号处理板CXD301 37
2.6 小结 39
2.7 思考与练习 39
第3章 FPGA设计流程 41
3.1 FPGA设计流程概述 41
3.2 流水灯实例设计 44
3.2.1 明确项目需求 44
3.2.2 读懂电路原理图 44
3.2.3 形成设计方案 46
3.3 流水灯实例的Verilog HDL程序设计与综合 47
3.3.1 建立FPGA工程 47
3.3.2 Verilog HDL程序输入 48
3.3.3 程序综合及查看RTL原理图 52
3.4 流水灯实例的功能仿真 54
3.4.1 生成测试激励文件 54
3.4.2 采用ModelSim进行仿真 55
3.4.3 ModelSim的仿真应用技巧 57
3.5 流水灯实例的设计实现与时序仿真 59
3.5.1 添加约束文件 59
3.5.2 设计实现并查看分析报告 60
3.5.3 时序仿真 61
3.6 程序文件下载 62
3.6.1 bit文件下载 62
3.6.2 mcs文件下载 64
3.7 小结 66
3.8 思考与练习 67
第4章 常用接口程序的设计 69
4.1 秒表电路设计 69
4.1.1 数码管的基本工作原理 69
4.1.2 秒表电路实例需求及电路原理分析 70
实例4-1:秒表电路设计 70
4.1.3 形成设计方案 71
4.1.4 顶层文件的Verilog HDL程序设计 71
4.1.5 数码管显示模块的Verilog HDL程序设计 72
4.1.6 秒表计数模块的Verilog HDL程序设计 75
4.1.7 按键消抖模块的Verilog HDL程序设计 77
4.2 串口通信设计 79
4.2.1 RS-232串口通信的概念 79
4.2.2 串口通信实例需求及电路原理分析 81
实例4-2:串口通信电路设计 81
4.2.3 顶层文件的Verilog HDL程序设计 81
4.2.4 时钟模块的Verilog HDL程序设计 82
4.2.5 接收模块的Verilog HDL程序设计 84
4.2.6 发送模块的Verilog HDL程序设计 86
4.3 AD接口和DA接口的程序设计 87
4.3.1 AD转换的工作原理 87
4.3.2 DA转换的工作原理 87
4.3.3 AD接口和DA接口的实例需求及电路原理分析 88
实例4-3:AD接口和DA接口电路设计 88
4.3.4 AD接口和DA接口的Verilog HDL程序设计 89
4.4 常用接口程序的板载测试 90
4.4.1 秒表电路的板载测试 90
4.4.2 串口通信的板载测试 91
4.4.3 通过ChipScope对AD接口和DA接口进行板载测试 92
4.5 小结 99
4.6 思考与练习 100
下篇 设 计 篇
第5章 FPGA中的数字运算 103
5.1 数的表示 103
5.1.1 定点数的定义和表示 104
5.1.2 定点数的三种形式 105
5.1.3 浮点数的表示 106
5.1.4 自定义的浮点数格式 108
5.2 FPGA中的四则运算 110
5.2.1 两个操作数的加法运算 110
实例5-1:在Verilog HDL中同时使用有符号数及无符号数进行运算 111
5.2.2 多个操作数的加法运算 113
5.2.3 采用移位相加法实现乘法运算 113
5.2.4 采用移位相加法实现除法运算 114
5.3 有效数据位的计算 114
5.3.1 有效数据位的概念 114
5.3.2 加法运算中的有效数据位 115
5.3.3 乘法运算中的有效数据位 116
5.3.4 乘加运算中的有效数据位 117
5.4 有限字长效应 117
5.4.1 有限字长效应的产生因素 117
5.4.2 AD转换器的有限字长效应 118
5.4.3 数字滤波器系数的有限字长效应 119
实例5-2:采用MATLAB仿真二阶数字滤波器的频率响应 119
5.4.4 滤波器运算中的有限字长效应 121
实例5-3:采用MATLAB仿真一阶数字滤波器的输出响应 122
5.5 小结 124
5.6 思考与练习 124
第6章 典型IP核的应用 127
6.1 IP核在FPGA中的应用 127
6.1.1 IP核的一般概念 127
6.1.2 FPGA设计中的IP核类型 128
6.1.3 CMT与FPGA时钟树 130
6.2 时钟管理IP核 131
6.2.1 全局时钟资源 131
6.2.2 利用IP核生成多路时钟信号 132
实例6-1:时钟管理IP核设计 132
6.3 乘法器IP核 135
6.3.1 实数乘法器IP核 135
实例6-2:通过实数乘法器IP核实现实数乘法运算 136
6.3.2 复数乘法器IP核 138
实例6-3:通过复数乘法器IP核实现复数乘法运算 139
6.4 除法器IP核 141
6.4.1 FPGA中的除法运算 141
6.4.2 测试除法器IP核 142
实例6-4:通过除法器IP核实现除法运算 142
6.5 存储器IP核 144
6.5.1 ROM核 144
实例6-5:通过ROM核产生正弦波信号 144
6.5.2 RAM核 147
实例6-6:采用RAM核完成数据速率的转换 147
6.6 数控振荡器IP核 152
6.6.1 数控振荡器工作原理 152
6.6.2 采用DDS核设计扫频仪 154
实例6-7:采用DDS核设计扫频仪 154
6.7 小结 157
6.8 思考与练习 157
第7章 FIR滤波器设计 159
7.1 数字滤波器的理论基础 159
7.1.1 数字滤波器的概念 159
7.1.2 数字滤波器的分类 160
7.1.3 滤波器的特征参数 161
7.2 FIR滤波器的原理 162
7.2.1 FIR滤波器的概念 162
7.2.2 线性相位系统的物理意义 163
7.2.3 FIR滤波器的相位特性 164
7.2.4 FIR滤波器的幅度特性 166
7.3 FIR滤波器的FPGA实现结构 167
7.3.1 滤波器结构的表示方法 167
7.3.2 直接型结构的FIR滤波器 168
7.3.3 级联型结构的FIR滤波器 169
7.4 基于累加器的FIR滤波器设计 170
7.4.1 基于累加器的FIR滤波器性能分析 170
实例7-1:基于累加器的FIR滤波器的FPGA设计 170
7.4.2 基于累加器的FIR滤波器设计 173
7.4.3 基于累加器的FIR滤波器FPGA实现后的仿真 174
7.5 FIR滤波器的MATLAB设计 177
7.5.1 基于fir1函数的FIR滤波器设计 177
实例7-2:基于fir1函数的FIR滤波器设计 178
7.5.2 各种窗函数性能的比较 180
7.5.3 各种窗函数性能的仿真 181
实例7-3:通过MATLAB仿真由不同窗函数设计的FIR滤波器性能 181
7.5.4 基于firpm函数的FIR滤波器设计 183
实例7-4:采用firpm函数设计FIR滤波器 184
7.5.5 基于FDATOOL的FIR滤波器设计 185
实例7-5:使用FDATOOL设计带通FIR滤波器 186
7.6 FIR滤波器系数的量化方法 187
实例7-6:利用MATLAB设计低通FIR滤波器并进行系数量化 187
7.7 并行结构FIR滤波器的FPGA实现 189
7.7.1 并行结构FIR滤波器的Verilog HDL设计 189
实例7-7:采用并行结构设计15阶FIR滤波器 189
7.7.2 并行结构FIR滤波器的功能仿真 192
7.8 串行结构FIR滤波器的FPGA实现 193
7.8.1 两种串行结构原理 193
7.8.2 全串行结构FIR滤波器的Verilog HDL设计 194
实例7-8:采用全串行结构设计15阶FIR滤波器 194
7.8.3 串行结构FIR滤波器的功能仿真 198
7.9 基于FIR核的FIR滤波器设计 200
7.9.1 FIR滤波器系数文件(COE文件)的生成 200
实例7-9:采用FIR Compiler v5.0核设计61阶低通FIR滤波器 201
7.9.2 基于FIR核的FIR滤波器设计步骤 203
7.9.3 基于FIR核的FIR滤波器功能仿真 206
7.10 FIR滤波器的板载测试 207
7.10.1 硬件接口电路 207
实例7-10:FIR滤波器的CXD301板载测试 207
7.10.2 板载测试程序 207
7.10.3 板载测试验证 211
7.11 小结 212
7.12 思考与练习 213
第8章 IIR滤波器设计 215
8.1 IIR滤波器的理论基础 215
8.1.1 IIR滤波器的原理及特性 215
8.1.2 IIR滤波器常用的结构 216
8.1.3 IIR滤波器与FIR滤波器的比较 219
8.2 IIR滤波器的MATLAB设计 220
8.2.1 采用butter函数设计IIR滤波器 220
8.2.2 采用cheby1函数设计IIR滤波器 221
8.2.3 采用cheby2函数设计IIR滤波器 221
8.2.4 采用ellip函数设计IIR滤波器 222
8.2.5 采用yulewalk函数设计IIR滤波器 222
8.2.6 几种IIR滤波器设计函数的比较 223
实例8-1:采用不同IIR滤波器设计函数设计IIR滤波器并进行性能比较 223
8.2.7 采用FDATOOL设计IIR滤波器 225
实例8-2:采用FDATOOL设计带通IIR滤波器 225
8.3 直接型结构IIR滤波器的FPGA实现 226
8.3.1 直接型结构IIR滤波器系数的量化方法 226
8.3.2 直接型结构IIR滤波器的有限字长效应 228
实例8-3:仿真测试不同量化字长对滤波器性能的影响 228
8.3.3 直接型结构IIR滤波器的FPGA实现方法 230
|
內容試閱:
|
为什么要写这本书
记得上中学时,每周五下午是作文课,老师通常会要求大家在两节课内完成一篇命题作文。写作文最难的是不知如何开头,无论写什么题目,感觉不以弹指一挥间,匆匆近十年开头就引不出后面的内容。
弹指一挥间,匆匆近十年。从2011年开始编写《数字滤波器的MATLAB与FPGA实现》(数字通信技术的FPGA实现系列图书的第一本),至今已近十年!
在这十年间,先后完成《数字滤波器的MATLAB与FPGA实现》《数字通信同步技术的MATLAB与FPGA实现》《数字调制解调技术的MATLAB与FPGA实现》这三本图书的编写,这三本图书是基于Xilinx公司的FPGA和VHDL编写的(简称XilinxVHDL版),后来又基于Intel公司(原Altera公司)的FPGA和Verilog HDL改写了上面三本图书(简称AlteraVerilog版)。
数字通信技术的FPGA实现系列图书出版后,得到了广大读者的支持与厚爱,为了与读者进行更加有效的交流,作者先后在CSDN开设了个人博客、在微信上开设了个人微信公众号杜勇FPGA,用于发布与图书相关的信息,同时与读者就图书中的一些技术问题进行探讨。在编写数字通信技术的FPGA实现系列图书时,作者是从工程应用的角度来阐述数字信号处理、数字通信技术的MATLAB与FPGA实现的,主要面向高年级本科生、研究生,以及工程技术人员。对初学者,尤其是自学者来说,图书内容有一定的难度。不少读者感觉这一系列的图书起点较高,内容比较专业和复杂,需要有较好的理论基础和FPGA设计基础,因此希望作者能够编写基于FPGA的数字信号处理设计的入门图书,以便初学者和自学者学习,在掌握数字信号处理FPGA实现的基础知识之后,再深入学习多速率滤波、自适应滤波、通信同步、数字调制解调等知识,就会变得容易得多。
为此,经过一年多的准备,总算完成了《Xilinx FPGA数字信号处理设计基础版》的编写,并计划后续陆续推出《Xilinx FPGA数字信号处理设计综合版》《Intel FPGA数字信号处理设计基础版》《Intel FPGA数字信号处理设计综合版》等图书,以满足初学者的需求。同时,为了便于读者对书中的实例进行板载测试,本书与XilinxVHDL版图书中的实例都采用CXD301进行板载测试。
本书的内容安排
本书分为上、下两篇,共9章。上篇共4章,主要包括FPGA概述、设计语言及开发工具、FPGA设计流程、常用接口程序的设计等内容。通过上篇的学习,读者可以初步建立FPGA设计的概念和基本方法,了解数字信号处理FPGA设计的常用知识。下篇共5章,主要包括FPGA中的数字运算、典型IP核的应用、FIR滤波器设计、IIR滤波器设计、快速傅里叶变换的设计等内容。数字信号处理设计的基石是滤波器设计和频谱分析,掌握数字信号处理的原理是完成FPGA设计的基础。本书在编写过程中对数字信号处理的原理进行了大幅简化,着重从概念和基本运算规则入手,以简单的实例逐步讲解数字信号处理FPGA设计的原理、方法、步骤及仿真测试过程。通过下篇的学习,读者可以掌握数字信号处理FPGA设计的核心基础知识,从而为学习数字信号处理的综合设计打下坚实的基础。
第1章主要介绍FPGA技术的基本概念及特点。常用的数字信号处理平台有FPGA、ARM、DSP、ASIC等,每个平台都有各自的特点,在详细了解FPGA的结构特点之后,才能明白FPGA在数字信号处理中的独特优势。只有通过对比,才能对平台有更精准的把握和理解。
第2章主要介绍Verilog HDL及ISE14.7。工欲善其事,必先利其器。全面了解FPGA设计环境,熟悉要利用的工具,加上独特的思想,才能实现完美的FPGA设计。
第3章通过一个完整的流水灯FPGA设计实例,详细地讲解设计准备、设计输入、设计综合、功能仿真、设计实现、布局布线后仿真和程序下载,这一既复杂又充满挑战和乐趣的FPGA设计流程。
第4章详细讨论常用接口程序的设计。FPGA产品不是一个孤岛,而是要与外界实现无缝对接。接口是与外界对接的窗口,掌握了串口、AD接口、DA接口等,才有机会向外界展示设计的美妙之处。
第5章讨论FPGA中的数字运算。数字运算主要包括加、减、乘、除等运算。FPGA只能对二进制数进行运算,虽然在日常生活中我们习惯用十进制数进行运算,但运算的本质和规律是相同的。只有掌握FPGA中的有符号数、小数、数据位扩展等设计方法,才能实现更为复杂的数字信号处理算法。
第6章主要介绍典型IP(Intellectual Property)核的应用。IP核,就是知识产权核,是指功能完备、性能优良、使用简单的功能模块。我们所要做的主要工作是理解IP核的用法,在设计中直接使用IP核。
第7章详细讨论FIR(Finite Impulse Response,有限脉冲响应)滤波器设计。滤波器设计和频谱分析是数字信号处理中最为基础的专业设计。所谓专业,因它们涉及信号处理的专业知识;所谓基础,是指它们的应用非常广泛。由于FIR滤波器具有结构简单、严格的线性相位特性等优势,已成为信号处理中的必备电路之一。
第8章详细讨论IIR(Infinite Impulse Response,无限脉冲响应)滤波器设计。滤波器中的无限两个字,听起来有点高深,其实IIR滤波器与FIR滤波器的结构没有太大的差别。虽然IIR滤波器的应用没有FIR滤波器广泛,但有其自身的特点,具有FIR滤波器无法比拟的优势。IIR滤波器具有反馈结构,使得其中的数字运算更具有挑战性,也更有趣味性。掌握了FIR滤波器和IIR滤波器的设计,才能对经典滤波器的设计有比较全面的了解。
第9章讨论了FFT设计。频谱分析和滤波器设计是数字信号处理的两大基石。离散傅里叶变换(Discrete Fourier Transform,DFT)的理论很早就非常成熟了,后期出现的快速傅里叶变换(Fast Fourier Transform,FFT)算法使得DFT理论在工程中得以应用。虽然FFT算法及其FPGA实现结构相当复杂,但幸运的是可以使用现成的IP核,设计者在理解信号频谱分析原理的基础上,调用FFT核即可完成FFT的FPGA实现。
关于FPGA开发工具的说明
众所周知,目前Xilinx公司和Intel公司的FPGA产品占据全球90%以上的FPGA市场。可以说,在一定程度上正是由于两家公司的相互竞争,才有力地推动了FPGA技术的不断发展。虽然硬件描述语言(HDL)的编译及综合环境可以采用第三方公司所开发的产品,如ModelSim、Synplify等,但FPGA的物理实现必须采用各自公司开发的软件平台,无法通用。例如,Xilinx公司的FPGA使用Vivado和ISE系列开发工具,Intel公司的FPGA使用Quartus系列开发工具。与FPGA的开发工具类似,HDL也存在两种难以取舍的选择:VHDL和Verilog HDL。
学习FPGA开发技术的难点之一在于开发工具的使用,无论Xilinx公司还是Intel公司,为了适应不断更新的开发需求,主要是适应不断推出的新型FPGA,开发工具的版本更新速度很快。
自Xilinx公司推出ISE3.x版以来,历经十余年,已形成庞大的用户群。虽然Xilinx公司自2013年10月2日发布ISE14.7后,宣布不再对ISE进行更新,但由于ISE14.7仍然支持Xilinx公司的Spartan-6、Virtex-6、Artix-7、Kintex-7、Virtex-7等系列中高端FPGA,因此仍然是广大FPGA工程师首选的开发工具。Vivado是Xilinx公司于2012年开始推出的开发工具,与ISE相比,Vivado在架构及界面方面都有很大的变化,版本的更新主要是为了解决开发工具本身的功能性问题。Xilinx公司几乎每年都会推出3~4个版本的Vivado,截至目前已陆续推出了20多个版本的Vivado,但过多的版本不可避免地会增加开发FPGA的难度。
应当如何选择HDL呢?其实,对于有志于从事FPGA开发的技术人员,选择哪种HDL并不重要,因为两种HDL具有很多相似之处,精通一种HDL后,再学习另一种HDL也不是一件困难的事。通常来讲,可以根据周围同事、朋友、同学或公司的使用情况来选择HDL,这样在学习过程中,可以很方便地找到能够给你指点迷津的专业人士,从而加快学习进度。
本书采用Xilinx公司的FPGA作为开发平台,采用ISE14.7作为开发工具,采用Verilog HDL作为实现语言,使用ModelSim进行仿真测试。由于Verilog HDL并不依赖于具体的的FPGA,因此本书中的Verilog HDL程序可以很方便地移植到Intel公司的FPGA上。如果Verilog HDL程序中使用了IP核,由于两家公司的IP核不能通用,因此就需要根据IP核的参数,在另外一个平台上重新生成IP核,或重新编写Verilog HDL程序。
有人曾经说过,技术只是一个工具,关键在于思想。将这句话套用过来,对于本书来讲,具体的开发平台和HDL只是实现技术的工具,关键在于设计的思路和方法。读者完全没有必要过于在意开发平台的差别,只要掌握了设计思路和方法,加上读者已经具备的FPGA开发经验,采用任何一种FPGA都可以很快地设计出满足用户需求的产品。
本书的目标
数字信号处理FPGA设计知识的学习难度较大,读者不仅需要具备较扎实的理论知识,还要具备一定的FPGA设计经验。本书的目的正是架起理论知识与工程实践之间的桥梁,通过具体的实例,详细讲解工程实现的方法、步骤和过程,以便读者尽快掌握采用FPGA平台实现数字信号处理技术的基本方法,提高学习效率,为后续学习数字信号处理、数字通信技术的FPGA设计等综合设计打下坚实的基础。
|
|