掌握FPGA数字信号处理设计需满足三个条件:熟悉FPGA设计方法、理解数字信号处理理论、掌握理论的工程实现方法。对初学者来讲,每个条件看似都难以逾越。杜勇老师完美融合课程教学与工程设计的需求特点,以独特的视角精心编写章节内容,深入浅出讲解设计的原理、方法、步骤和关键技术,逐步引领读者步入FPGA数字信号处理设计的殿堂。

-----------前言---------------------------

为什么要写这本书

  记得上中学时,每周五下午是作文课,老师常常会要求大家在两节课内完成一篇命题作文。写作文最难的是不知何开头,后来一提笔,无论写什么题目,感觉不写“弹指一挥间,匆匆十几年”就引不出后面的内容。

   弹指一挥间,匆匆近十年。从2012年写第一本数字通信技术的FPGA实现系列著作《数字滤波器的MATLAB与FPGA实现》开始,至今已十年!

这十年间,先后完成数字滤波器的MATLAB与FPGA实现、数字通信同步技术的MATLAB与FPGA实现、数字调制解调技术的MATLAB与FPGA实现三本图书的出版,并完成这一系列图书的Xilinx/VHDL及Altera/Verilog版的改版工作。

  这一系列图书的出版后得到了广大读者的支持与厚爱,为实现与读者的有效沟通交流,我先后在CSDN网站开设了个人博客、开设个人微信公众号“杜勇FPGA”发布图书相关信息,同时与读者就书中一些技术问题进行探讨。系列图书编著初期,由于立足于从工程应用的角度阐述数字信号处理、数字通信知识的MATLAB与FPGA实现的技术问题,主要以高年级本科生、研究生、以及企业工程技术人员为读者对象,图书内容对初学者,尤其自学的读者有一定难度。不少读者感觉这一系列的图书起点较高,内容比较专业和复杂,需要有较好的理论基础和FPGA设计基础才能完成学习,希望能够有更基础及简单的数字信号处理FPGA设计入门图书,以方便自学。在完成入门知识学习,掌握一般数字信号处理的FPGA实现相关知识之后,再深入学习多速率滤波、自适应滤波、通信同步、数字调制解调等知识就容易得多了。

  为此,经过一年的准备,总算完成了《Xilinx FPGA数字信号处理设计——基础版》图书的编写,并计划后续陆续推出《Xilinx FPGA数字信号处理设计——综合版》、《Altera FPGA数字信号处理设计——基础版》、《Altera FPGA数字信号处理设计——综合版》几本图书,以满足有志于从事FPGA数字信号处理设计的初学读者的学习需求。同时,为了便于读者对书中的设计实例进行板载测试,本书的所有FPGA设计实例均与数字滤波器、数字通信同步技术、数字调制解技术的Xilinx版图书采用相同的CXD301硬件开发板平台进行验证。

本书的内容安排

  全书分为上、下两篇,共9章。上篇共4章,主要包括FPGA基本概念、设计语言及环境、FPGA设计流程、常用接口设计等内容。通过上篇的学习,使对读者初步建立FPGA设计的概念和基本方法,了解数字信号处理FPGA设计的常用知识。下篇共5章,主要包括FPGA中数字的运算、典型IP核设计、FIR滤波器设计、IIR滤波器设计和FFT变换设计。数字信号处理设计的基石是滤波器设计和频谱分析。

  掌握原理是完成FPGA设计的基础,与其它几本图书相比,在编写本书过程中对这部分重点内容进行了大幅的简化,并着重从概念和基本运算规则入手,以简单的实例逐步讲解FPGA设计的原理、方法、步骤及仿真测试过程。通过下篇的学习,使读者掌握数字信号FPGA设计的核心基础知识:滤波器设计和频谱分析,从而为继续学习数字信号处理的综合设计打下坚实的基础。

  第1章介绍了FPGA技术的基本概念及特点。有对比,对设计平台才能有更精准的把握和理解。FPGA、ARM、DSP、ASIC等常用数字信号处理平台各有特点,在详细了解FPGA器件的结构特点之后,才能明了FPGA技术在数字信号处理领域里独特的优势地位。

  第2章介绍了VerilogHDL设计语言及ISE14.7开发环境。工欲善,必先利其器。全面了解FPGA设计环境,熟知我们所要利用的工具,用最简单的招式加上你独特的思想,才能完成最完美的FPGA工程设计。

  第3章用一个完整的流水灯FPGA设计实例,详细讲解从读硬件原理图、形成设计方案、进行代码设计、建立测试激励文件、进行ModelSim仿真、完成程序综合、完成程序下载、完成系统测试,这一系列复杂又充满挑战和乐趣的FPGA项目设计流程。

  第4章详细讨论了常用接口程序的FPGA设计。我们设计的FPGA产品不只是一个孤岛,要与外界实现无缝对接。接口是对外交流的窗口。掌握了串口、AD/AD、数码管等常用接口,才有机会尽情地向世界展示设计作品的美妙。

  第5章讨论FPGA中的数字运算。数的运算就是加、减、乘、除。FPGA中只能对二进制数进行运算,生活中我们更习惯于对十进制的实数进行运算。运算的本质和规律是相同的,彻底掌握FPGA中的符号数、小数、数据位扩展等设计方法,才有可能完成更为复杂的数字信号处理算法。其实我们已经掌握了运算的本质,只是需要将这些规律运用到FPGA设计中去而已。

  第6章介绍了典型的IP(Intellectual Property)核设计方法。IP核,就是知识产权核,很高大上的名字,就是一个个功能完备、性能优良、使用简单的功能模块。我们所要做的主要工作是理解它的用法,直接拿过来用到设计中就可以了。

  第7章详细讨论了FIR(Finite Impulse Response,有限脉冲响应)滤波器设计。滤波器设计和频谱分析是数字信号处理中最为基础的专业设计。所谓专业,因其为经典的信号处理专业知识;所谓基础,是说这是应用最为广泛的必备知识。而FIR滤波器因其结构简单、严格的线性相位特性等优势,几乎成为信号处理中的必备电路。

  第8章讨论了IIR(Infinite Impulse Response,无限脉冲响应)滤波器设计。滤波器中的“无限”两个字,听起来有点高深,其实与FIR的结构没有太大的差别。虽然IIR的应用没有FIR广泛,但自有其特点,有FIR无法比拟的优势。IIR因其反馈结构,使得设计中的数字运算更具有挑战性,也更有趣味性。掌握了FIR、IIR滤波器设计,才算对经典的滤波器设计有比较全面的了解。

  第9章讨论了FFT变换设计。频谱分析和滤波器设计是数字信号处理的两大基石。DFT(Discrete Fourier Transform,离散傅里叶变换)的理论很早就非常成熟了,后期出现的FFT(Fast Fourier Transform,快速傅里叶变换)快速算法才使得这DFT的理论在工程中得以应用。FFT的算法和FPGA实现结构相当复杂,幸运的是有免费的IP核可以应用。设计者的工作只不过是理解信号的频谱分析原理,调用现成的FFT核完成设计而已。

关于FPGA开发环境的说明

众所周知,目前两大厂商Xilinx和Altera的产品约占据全球90%以上的FPGA市场。可以说,在一定程度上正是由于两家FPGA公司的相互竞争态势,有力地推动了FPGA技术的不断发展。虽然硬件描述语言(HDL)的编译及综合环境可以采用第三方公司所开发的产品,如ModelSim、Synplify等,但FPGA器件的物理实现必须采用各自公司开发的软件平台,无法通用。Xilinx公司推出的开发平台是Vivado和ISE系列套件,Altera公司目前的主流开发平台是Quartus系列套件。与FPGA开发平台类似,HDL也存两种难以取舍的选择:VHDL和VerilogHDL。

学习FPGA开发技术的难点之一即在于掌握开发工具,无论是Xilinx还是Altera公司,为了适应不断更新的开发需求,主要是适应不断推出的新型器件,开发工具的版本更新速度很快。

Xilinx自最初推出ISE 3.x版以来,历经十余年,已形成强大的用户群。虽然Xilinx公司自2013年10月2日发布最新的ISE 14.7版本后,宣布不再对ISE进行更新,由于ISE 14.7仍然支持Xilinx公司的Spartan-6、Virtex-6、Artix-7、Kintex-7、Virtex-7等中高端主流器件,因此仍然是广大FPGA工程师的首选设计工具。Vivado是Xilinx公司于2012年开始推出的平台,与ISE相比在架构及界面方面都有很大的变化,版本的更新主要是为了解决设计套件本身的功能性问题,Vivado设计套件自2012年首次推出后,几乎每年都会推出3~4个版本,截止目前已陆续推出20余个版本之多!过多的软件版本不可避免地增加了FPGA工程师适应开发工具的难度。

如何选择开发平台以及HDL语言呢?其实,对于有志于从事FPGA开发的技术人员,选择哪种平台及HDL语言并不重要,因为两种平台具有很多相似的地方,精通一种HDL语言后,再学习另一种HDL语言也不是一件困难的事。通常来讲,可以根据周围同事、朋友、同学或公司的主要使用情况进行选择,这样在学习的过程中,可以很方便地找到能够给你指点迷津的专业人士,从而加快学习进度。

本书采用的是Xilinx公司的FPGA器件作为开发平台,采用ISE 14.7作为开发环境,采用VerilogHDL语言作为实现语言,采用XST综合工具,使用ModelsimSE 10.1进行仿真测试。由于VerilogHDL语言并不依赖于某家公司的FPGA产品,因此本书的Verilog HDL程序文件可以很方便地移植到Altera公司的FPGA产品上。如果程序中应用了IP核资源,由于两家公司的IP核不能通用,这就需要根据IP核的功能参数,在另外一个平台上重新生成IP核,或编写Verilog HDL代码来实现。

有人曾经说过,“技术只是一个工具,关键在于思想”。将这句话套用过来,对于本书来讲,具体的开发平台和HDL语言只是实现技术的工具,关键在于设计的思路和方法。读者完全不必要过于在意开发平台的差别,相信只要掌握本书所讲述的设计思路和方法,加上读者已经具备的FPGA开发经验,采用任何一种FPGA平台都可以很快地设计出满足用户需求的产品。

本书的目标

数字信号处理FPGA设计知识的学习难度较大,不仅需要读者具有较扎实的理论知识,还要具备一定的FPGA设计经验。本书的目的正是架起一座教科书理论与工程设计实践之间的桥梁,通过具体的设计实例,详细讲解从理论到工程实现的方法、步骤和过程,以便于工程技术人员尽快掌握利用FPGA平台实现数字信号处理技术的基本方法,提高学习效率,为后续继续学习数字信号处理、数字通信技术FPGA设计等综合知识打下坚实的基础。

通常来讲,一名电子通信专业的技术人员,在从业之初都会遇到类似的困惑:如何将从教材中所学的理论与实际中的工程设计结合起来?如何能够将这些教材中的理论转换成实际的电路?绝大多电子信息类教材对原理讲解十分透彻,但理论与实践之间显然需要有一些可以顺利通过的桥梁。一个常用的方法是通过采用MATLAB等工具进行软件仿真的方法来加深对理论的理解,但更好的方法是直接参与工程的设计与实现。

然而,刚毕业的工科院校学生极少有机会参加实际工程设计,工作中往往感到学校所学的理论知识很难与实际工程产品的实现联系起来。教科书上多是讲解原理性的内容,即使可以很好地解答教材后面的习题,或者说能够熟练地对书中的基本公式进行推导,在实际进行产品设计时,如何将这些理论及公式用具体的电路或硬件平台实现出来,仍然是摆在广大工程师面前的一个巨大难关。尤其对于数字信号处理专业来讲,由于涉及的理论知识比较复杂,真正进行工程设计时才发现根本无从下手。采用MATLAB、System View等软件对理论进行仿真,虽然可以直观地验证算法的正确性,并查看仿真结果,但这类软件的仿真毕竟只停留在算法或模型的仿真上,与真正的工程设计及实现完全是两个不同的概念。FPGA技术很好地解决了这一问题。FPGA技术本来就是基于工程应用的技术,其仿真技术可以很好地仿真产品实际的工作情况,尤其是时序仿真技术,在计算机上通过了时序仿真的程序设计,几乎不再需要修改就可以直接应用到工程中。这种设计、验证、仿真的一体化方式可以极好的将理论与工程应用结合起来,从而提高学习兴趣。

   目前,市场上已有很多介绍ISE、Vivado、Quartus等FPGA开发环境,以及VHDL、Verilog HDL等硬件编程语言的书籍。如果我们仅仅是使用FPGA来实现一些数字逻辑电路,或者理论性不强的控制电路设计,掌握FPGA开发工具及Verilog HDL语法就可以开始工作了。数字信号处理技术的理论性要强得多,采用FPGA平台实现数字信号技术的前提条件是对理论知识首先要有深刻的理解。在理解理论知识的基础上,关键的问题是根据这些理论或公式,利用FPGA的特点,找到合适的算法实现结构,理清工程实现的思路,并采用Verilg HDL等硬件编程语言对其进行正确的实现。

  在写作本书的过程中,兼顾数字信号处理的理论,以及工程设计过程的完整性,重点突出FPGA设计方法、结构、实现细节,以及仿真测试方法。在讲解理论知识的时候,重点从工程应用的角度进行介绍,主要介绍设计时必须掌握和理解的知识点,并且结合FPGA的特点进行讨论,便于读者尽快地找到理论与工程实现之间的结合点。在讲解实例的FPGA实现时,不仅绝大多数实例给出了完整的Verilog HDL程序代码,并且从思路和结构上对每段代码均进行了详细的分析和说明。根据作者的理解,针对一些似是而非的概念,结合工程实例的仿真测试加以阐述,希望能够对读者提供更多有用的参考。相信读者按照书中讲解的步骤完成一个个工程实例时,会逐步感觉到理论与工程实现之间完美结合的畅快。随着读者掌握的工程实现技能的提高,对数字信号处理理论知识的理解也必将越来越深刻,重新阅读以前学过的数字信号处理原理时,头脑里就更容易构建起理论与工程实现之间的桥梁。

如何使用本书

完成数字信号处理FPGA设计知识的学习,需要读者同时具备一定的FPGA设计和数字信号处理理论知识。为便于读者快速熟悉FPGA设计知识,本书前4章对Verilog HDL语言、ISE14.7开发环境等内容进行了精心编排,并以一个完整的流水灯设计实例详细介绍了FPGA设计的流程,为读者阅读后续章节打下基础。

与普通的逻辑电路不同,数字信号处理的专业性强,掌握原理是完成FPGA设计的前提。MATLAB是完成数字信号处理设计不可或缺的工具,由于其易用性和强大的功能,在工程设计中的应用十分广泛。为准确理解数字信号处理知识的相关原理,书中部分实例采用MATLAB完成了理论仿真,并对代码进行了注释和说明,读者即使完全没有MATLAB设计基础,也很容易理解MATLAB程序的设计思路。

完整的数字信号处理FPGA设计过程一般包括几个步骤:先采用MATLAB对需要设计的工程进行仿真,一方面仿真算法过程及结果,另一方面生成FPGA测试仿真所需的测试输入数据;而后在ISE14.7平台上编写Verilog HDL程序对实例进行设计实现;编写测试激励文件,采用ModelSim软件对Verilog HDL程序进行仿真;查看ModelSim仿真波形结果,验证程序功能的正确性;完成FPGA程序综合及布线,将程序下载到开发板上最终验证FPGA设计的正确性。

验证工程实例程序是否正确,最直观的方法是采用示波器测试AD/DA端口的模拟信号,观察信号处理前后的变化是否满足要求。例如验证FIR低通滤波器电路,示波器通道1测试滤波前端DA信号的波形,通道2测试滤波处理后DA端信号的波形,对比分析滤波前后信号的波形就可以验证FIR低通滤波器功能是否正确。如果读者没有示波器,即使ModelSim仿真正确,毕竟不是真实的电路工作波形,这种情况下如何验证板载测试电路的功能呢?

ISE14.7提供了功能强大的在线逻辑分仪软件工具ChipScope。将FPGA程序下载到开发板上以后,ChipScope可以实时地读取FPGA芯片的内部信号,以及指定管脚信号的波形。也就是说,采用ChipScope观察到的波形是电路实际工作的波形,而不是仿真的波形。因此,读者可以采用ChipScope工具测试工程实例下载到开发板上的工作情况。本书第4章介绍AD/DA接口设计时,详细讨论了ChipScope的使用方法和步骤,读者在掌握了ChipScope的使用方法之后,可以在板载测试程序中添加ChipScope核,实现电路工作波形的在线测试。

致谢

有人说,每个人都有他存在的使命,如果迷失他的使命,就失去了他存在的价值。不只是每个人,每件物品也都有其存在的使命。对于一本书来讲,其存在的使命就是被阅读,并给阅读者带来收获。数字信号处理的FPGA设计系列图书,能够对读者在工作及学习中有所帮助,是作者莫大的欣慰。

作者在写作本书的过程中查阅了大量的资料,在此对资料的作者及提供者表示衷心的感谢。

时间过得太快,大女儿这段时间正在全力准备中考,本书与读者见面时,她已经踏入高中阶段的学习了;小女儿正在牙牙学语,每天都在以她独特的语言和行为与这个世界进行友好交流。祝愿她们快乐成长。

FPGA技术博大精深,数字信号处理技术理论难度大。本书虽尽量详细讨论了FPGA实现数字信号处理基本理论技术的相关内容,仍感觉到难以详尽叙述工程实现所有细节。相信读者在实际工程应用中经过不断的实践、思考及总结,一定可以快速掌握数字信号处理技术的工程设计方法,提高应用FPGA进行工程设计的能力。由于作者水平有限,不足之处在所难免,敬请读者批评指正。欢迎大家就相关技术问题进行交流,或对本书提出改进意见及建议。建议读者关注我的微信公众号以获得与该书相关的资料及信息,也可以发邮件与我进行交流。

交流邮箱:duyongcn@sina.cn

杜勇

2020年6月

新书预告:Xilix FPGA数字信号处理设计——基础版相关推荐

  1. 2021-03-18新书《Xilinx FPGA数字信号处理设计——基础版》已上市

    特别说明:杜勇老师的新书<Xilinx FPGA数字信号处理设计--基础版>已上市,亲们可在各售书网站选购.新书的配套板载程序均可直接在CXD301平台上验证.凡购买CXD301开发板的亲 ...

  2. FPGA数字信号处理(三)串行FIR滤波器Verilog设计

    该篇是FPGA数字信号处理的第三篇,选题为DSP系统中极其常用的FIR滤波器.本文将在上一篇"FPGA数字信号处理(二)并行FIR滤波器Verilog设计" https://blo ...

  3. MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列

    FPCA.数字IC笔试题系列 不容错过的FPGA/数字IC秋招笔试面试汇总帖(2022届) 1. FPGA.数字IC系列(1)--乐鑫科技2021数字IC提前批笔试 2. FPGA.数字IC系列(2) ...

  4. FPGA数字信号处理(二)并行FIR滤波器Verilog设计

    该篇是FPGA数字信号处理的第二篇,选题为DSP系统中极其常用的FIR滤波器.本文将简单介绍FIR滤波器的原理,详细介绍使用Verilog HDL设计并行FIR滤波器的流程和方法.接下来几篇会介绍串行 ...

  5. FPGA数字信号处理(十六)单级CIC滤波器Verilog设计

    该篇是FPGA数字信号处理的第16篇,选题为多速率信号处理系统中常用的CIC滤波器.本文将详细介绍使用Verilog HDL设计单级CIC滤波器的方法.接下来几篇会介绍多级CIC滤波器的Verilog ...

  6. FPGA数字信号处理(六)直接型IIR滤波器Verilog设计

    该篇是FPGA数字信号处理的第六篇,2-5篇介绍了DSP系统中极其常用的FIR滤波器.本文将简单介绍另一种数字滤波器--IIR滤波器的原理,详细介绍使用Verilog HDL设计直接型IIR滤波器的方 ...

  7. FPGA数字信号处理(20)单级半带(HB)滤波器设计

    本篇是FPGA数字信号处理的第20篇,前面介绍了多速率信号处理系统中用到的多速率FIR滤波器.CIC滤波器,本文将介绍另一种常用的半带滤波器(Half-Band Filter)的相关知识及设计方法.本 ...

  8. FPGA数字信号处理(21)多级半带(HB)滤波器设计

    本篇是FPGA数字信号处理的第21篇,上一篇介绍了半带滤波器的相关知识以及单级半带滤波器的设计方法.单级半带滤波器只能实现2倍抽取,本文将介绍可实现2^N倍抽取的多级半带滤波器的设计方法. 多级半带滤 ...

  9. FPGA数字信号处理(七)级联型IIR滤波器Verilog设计

    该篇是FPGA数字信号处理的第七篇,上一篇介绍了直接型IIR滤波器的原理,详细介绍使用Verilog HDL设计直接型IIR滤波器的方法.本文会介绍如何用Verilog HDL设计级联型IIR滤波器. ...

最新文章

  1. IBM 存储RAID硬盘离线和数据库损坏的恢复处理办法
  2. android--------Socket的简单了解
  3. [转帖]IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?...
  4. Git的sourcetree找不到git
  5. 云南计算机专业知识真题,2014年云南省事业单位考试专计算机专业知识模拟真题.doc...
  6. 隐藏鼠标指针_Mac鼠标光标消失怎么办?苹果电脑鼠标指针不显示的解决方法
  7. 纸牌三角形(蓝桥杯)
  8. Nagios之linux监控windows主机
  9. 程序定义了多个入口点。使用 /main (指定包含入口点的类型)进行编译
  10. css base64 图片背景
  11. 华为 “OSPF” 认证配置
  12. SVN 分支与主干的合并
  13. STM32F4之SDIO接口
  14. 《剑来》语句摘录(六)
  15. strongswan与sangfor的ikev2配置
  16. 软件工程之他见——鲍周晓
  17. 简单的制作一个钓鱼网页!
  18. 使用视频监控摄像头的语音对讲功能,在视频平台,配置符合GB28181协议国标视频对讲
  19. 微信小程序/网站 上传图片到腾讯云COS
  20. 空间实景三维可视化设计

热门文章

  1. Linux gsoap生成onvif框架(C语言客户端代码)一
  2. DNA数字信息存储的研究进展
  3. bootstrap-table的refresh查询
  4. iPhone 13 用塑料瓶做天线, 网友炸了!!
  5. [转]Windows Shell 编程 第十章
  6. 4.1_[Java 输入输出]-全网最全 Java 控制台输入输出
  7. mysql 存储过程 总结_Mysql存储过程总结
  8. 坐标西安 面试中电后端Java岗 被面试官狂问mybatis
  9. Android 9 wifi PNO 扫描
  10. 网络安全“攻防战”:“魔”“道”大盘点