内容简介
本书以Xilinx公司的FPGA为开发平台,以Verilog HDL及MATLAB为开发工具,详细阐述数字信号处理技术FPGA实现的原理、结构、方法及仿真测试过程,并通过大量的实例分析FPGA实现过程中的具体技术细节。本书主要包括FPGA概述、设计语言及开发工具、FPGA设计流程、常用接口程序的设计、FPGA中的数字运算、典型IP核的应用、FIR滤波器设计、IIR滤波器设计、快速傅里叶变换的设计等内容。本书思路清晰、语言流畅、分析透彻,在简明阐述设计原理的基础上,重点追求对工程实践的指导性,力求使读者在较短的时间内掌握数字信号处理技术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 A/D接口和D/A接口的程序设计 87
4.3.1 A/D转换的工作原理 87
4.3.2 D/A转换的工作原理 87
4.3.3 A/D接口和D/A接口的实例需求及电路原理分析 88
实例4-3:A/D接口和D/A接口电路设计 88
4.3.4 A/D接口和D/A接口的Verilog HDL程序设计 89
4.4 常用接口程序的板载测试 90
4.4.1 秒表电路的板载测试 90
4.4.2 串口通信的板载测试 91
4.4.3 通过ChipScope对A/D接口和D/A接口进行板载测试 92
4.5 小结 99
4.6 思考与练习 100
下篇 设 计 篇
第5章 FPGA中的数字运算 103
5.1 数的表示 103
5.1.1 定点数的定义和表示 104
前言/序言
为什么要写这本书
记得上中学时,每周五下午是作文课,老师通常会要求大家在两节课内完成一篇命题作文。写作文最难的是不知如何开头,无论写什么题目,感觉不以“弹指一挥间,匆匆近十年”开头就引不出后面的内容。
弹指一挥间,匆匆近十年。从2011年开始编写《数字滤波器的MATLAB与FPGA实现》(“数字通信技术的FPGA实现系列”图书的第一本),至今已近十年!
在这十年间,先后完成《数字滤波器的MATLAB与FPGA实现》《数字通信同步技术的MATLAB与FPGA实现》《数字调制解调技术的MATLAB与FPGA实现》这三本图书的编写,这三本图书是基于Xilinx公司的FPGA和VHDL编写的(简称Xilinx/VHDL版),后来又基于Intel公司(原Altera公司)的FPGA和Verilog HDL改写了上面三本图书(简称Altera/Verilog版)。
“数字通信技术的FPGA实现系列”图书出版后,得到了广大读者的支持与厚爱,为了与读者进行更加有效的交流,作者先后在CSDN开设了个人博客、在微信上开设了个人微信公众号“杜勇FPGA”,用于发布与图书相关的信息,同时与读者就图书中的一些技术问题进行探讨。在编写“数字通信技术的FPGA实现系列”图书时,作者是从工程应用的角度来阐述数字信号处理、数字通信技术的MATLAB与FPGA实现的,主要面向高年级本科生、研究生,以及工程技术人员。对初学者,尤其是自学者来说,图书内容有一定的难度。不少读者感觉这一系列的图书起点较高,内容比较专业和复杂,需要有较好的理论基础和FPGA设计基础,因此希望作者能够编写基于FPGA的数字信号处理设计的入门图书,以便初学者和自学者学习,在掌握数字信号处理FPGA实现的基础知识之后,再深入学习多速率滤波、自适应滤波、通信同步、数字调制解调等知识,就会变得容易得多。
为此,经过一年多的准备,总算完成了《Xilinx FPGA数字信号处理设计——基础版》的编写,并计划后续陆续推出《Xilinx FPGA数字信号处理设计——综合版》《Intel FPGA数字信号处理设计——基础版》《Intel FPGA数字信号处理设计——综合版》等图书,以满足初学者的需求。同时,为了便于读者对书中的实例进行板载测试,本书与Xilinx/VHDL版图书中的实例都采用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产品不是一个“孤岛”,而是要与外界实现无缝对接。接口是与外界对接的窗口,掌握了串口、A/D接口、D/A接口等,才有机会向外界展示设计的美妙之处。
第5章讨论FPGA中的数字运算。数字运算主要包括加、减、乘、除等运算。FPGA只能对二进制数进行运算,虽然在日常生活中我们习惯用十进制数进行运算,但运算的本质和规律是相同的。只有掌握FPGA中的有符号数、小数、数据位扩展等设计方法,才能实现更为复杂的数字信号处理算法。
第6章主要介绍典型IP(Intellectual Property)核的应用。IP核,就是知识产权核,是指功能完备、性能优良、使用简单的功能模块。我们所要做的主要工作是理解IP核的用法,在设计中直接使用IP核。
第7章详细讨论FIR(Finite Impulse Response,有限脉冲响应)滤波器设计。滤波器设计和频谱分析是数字信号处理中最为基础的专业设计。所谓专业,因它们涉及信号处理的专业知识;所谓基础,是指它们的应用非常广泛。由于FIR滤波器具有结构简单、严格的线性相位特性等优势,已成为信号处理中




















