前言
为什么要写这本书
进入21世纪以来,通信产品朝着数字化、综合化、宽带化、智能化和个人化的方向迅速发展。1992年由Jeo Mitola提出的软件无线电技术早已不再只停留在理论研究的层面上,越来越多的基于软件无线电思想的电子产品被设计并制造出来,并在很大程度上改变着我们的工作和生活方式。毫无疑问,基于软件无线电的通信产品的最终实现必须以微电子技术为支撑,需要具备达到相应性能的硬件实现平台。ASIC(Application Specific Integrated Circuit,专用集成电路)、DSP(Digital Signal Processor,数字信号处理器)、以ARM(Advanced RISC Microprocessor,高级精简微处理器)技术为代表的CPU(Central Processing Unit,中央处理单元)以及本书所采用的FPGA(Field Programmable Gate Array,现场可编程门阵列)技术已成为当今电子信息技术设计的四大基石。其中,FPGA以其功能强大、开发周期短、投资小、可重复修改,以及高度灵活的使用特性和无与伦比的并行运算能力,在电子通信领域得到了越来越广泛的应用,并已逐渐成为产品实现的首选方案。
近年来,随着FPGA技术的普及和广泛应用,每年均会有大量介绍FPGA开发工具、仿真工具或硬件编程语言的书籍出版,而专门讨论如何采用FPGA来实现数字通信技术的书籍相对欠缺。作者在进行数字通信相关产品的研发时,深感具有参考意义的专著资料的匮乏,通常需要阅读大量的期刊论文来获取帮助。在查阅文献资料时,一方面需要耗费大量的时间和精力来甑别切实有用的文献;另一方面,由于篇幅的原因,文献资料通常无法详尽讨论工程实现的过程和细节,更无法提供具体的代码和完整的仿真测试过程,而这恰好是工程实现时极其重要的参考内容。因此,十分有必要以专门著述的形式,将采用FPGA进行数字通信技术的工程实现细节加以阐述,以便于为相关领域的从业人员提供更为直接有用的参考。
FPGA是一种广泛应用的技术手段和途径,而数字通信技术本身是一门相对专业的知识领域,要将两者有机地结合起来,并熟练应用到产品的设计中,不仅需要工程师熟练掌握FPGA技术,还需要具有较扎实的通信专业理论知识。目前市场上有少量几本介绍FPGA实现数字通信技术的书籍,但数字通信技术本身十分复杂,且种类繁多,在一本书中全面介绍数字通信技术的FPGA实现难免有所遗漏,且内容难以详实。作者最初的写作计划也是涉及FPGA实现整个数字通信技术的内容,但在拟定写作提纲的时候,确实感到内容过于浩大,因而迟迟没有动笔。因为写出的书对技术人员具有工程实现细节上的参考价值是写作的本意,如果内容涉及过于广泛,就难以做到对每个技术实现细节的详细论述。
既然全面论述数字通信实现技术的难度太大,自然想到缩小范围,正所谓“攻其一点,不及其余”。数字通信技术的关键技术大致可分为滤波器技术、同步技术、调制解调技术,而其中的同步技术是数字通信以及数字信号处理技术中的核心技术之一,是数字通信系统不可或缺的重要组成部分,其性能的优劣很大程度上直接决定了系统的性能。虽然论述FPGA实现数字通信同步的学术论文很多,但国内目前还没有专门讲解这一主题的教材,只有少量对数字通信技术的FPGA实现进行全面阐述的著作,针对同步技术FPGA实现的探讨还不够充分。鉴于同步技术在数字通信及数字信号处理领域的重要作用及应用的广泛性,十分有必要从工程实践角度出发,对同步技术的FPGA实现进行专门的著述讨论。
从作者的个人从业经验来看,刚毕业的工科院校学生极少有机会参加实际工程设计,工作中往往感到学校所学的理论知识很难与实际工程产品的实现联系起来。教科书上多是讲解通信原理性的内容,即使可以很好地解答教材后面的习题,或者说能够熟练地对书中的基本公式进行推导,在实际进行产品设计时,如何将这些理论及公式用具体的电路或硬件平台实现出来,仍然是摆在广大工程师面前的一个巨大难关。尤其对于数字通信专业来讲,由于涉及的理论知识比较复杂,真正进行工程设计时才发现根本无从下手。采用MATLAB、System View等软件对通信理论进行仿真,虽然可以直观地验证算法的正确性,并查看仿真结果,但这类软件的仿真毕竟只停留在算法或模型的仿真上,与真正的工程设计及实现还完全是两个不同的概念。FPGA技术很好地解决了这一问题。FPGA技术本来就是基于工程应用的技术,其仿真技术可以很好地仿真产品的实际工作情况,尤其是时序仿真技术,在计算机上通过了时序仿真的程序设计,几乎不再需要修改就可以直接应用到工程中。这种设计、验证、仿真的一体化方式可以极好地将理论与工程应用结合起来,从而提高学习兴趣。因此,完全有必要从工程应用的角度,详细讲解采用FPGA进行数字通信同步设计的原理、方法、手段、仿真、测试及实现过程。
本书的内容安排
第1章首先对数字通信同步技术的概念及FPGA基础知识进行简要介绍。通信技术的实现方法和平台很多。其中,FPGA因其强大的运算能力以及灵活方便的应用特性,在现代通信、数字信号处理等领域得到越来越广泛的应用,并大有替代DSP等传统数字信号处理平台的趋势。为更好地理解本书后续章节的内容,本章接下来简要介绍Xilinx公司的FPGA器件,以及ISE开发环境、MATLAB软件等内容。如果读者已经具备一定的FPGA设计经验,也可以跳过本章,直接阅读本书后续章节的内容。
第2章介绍FPGA中数的表示方法、数的运算、有限字长效应及常用的数字信号处理模块。数字信号在FPGA等硬件系统中实现时,因受寄存器长度的限制,不可避免地会产生有效字长效应。设计工程师必须了解字长效应对数字系统可能带来的影响,并在实际设计中通过仿真来确定最终的量化位数、寄存器长度等内容。本章最后对几种常用的运算模块IP核进行介绍,详细阐述各IP核控制参数的设置方法,并给出几个简单的模块应用实例。IP核的应用在FPGA设计中十分普遍,尤其在数字信号处理领域,采用设计工具提供的IP核进行设计,不仅可以提高设计效率,而且可以保证设计的性能。因此,在进行FPGA工程设计时,工程师可以先浏览一下选定的目标器件所能提供的IP核,以便于通过使用IP核来减少设计工作量并提高系统性能。当然,工程师也可以根据设计需要,根据是否具有相应的IP核来选择目标器件。这一章讨论的都是一些非常基础的知识,但正因为基础,所以显得尤其重要。其中讨论的有效数据位运算,以及字长效应等内容在后续的工程实例讲解中都会多次涉及,因此建议读者不要急于阅读后续章节的工程实例讲解,先切实练好基本功,才可以达到事半功倍的效果。
第3章主要讨论锁相环技术的基本理论,这大概也是本书阅读起来最为乏味的章节。阅读理论和一大堆公式,很容易让人感到厌烦。对于数字通信技术来说,锁相环技术的工作原理大概是最难以弄清的知识点之一。但是,要想设计出完美的同步环路,对理论的透彻理解是必须具备的能力,而一旦理解透了,工程设计时就会有得心应手的感觉。本章的大部分内容均参考自张厥盛等老师编著的《锁相技术》一书,只是更为注重从工程应用的角度,全面介绍锁相环的原理、组成,以及工程应用中需要经常使用的公式和参数设计方法。建议读者先耐心地对本章所介绍的内容进行深入的推敲理解,因为在后续章节讲解同步技术的FPGA实现时,可能需要反复翻阅本章的内容。通过在各次工程设计实践中反复体会锁相技术的原理及工作过程,当读者真正理解锁相环的基本理论及分析方法后,就会发现设计出性能优良的锁相环电路也不是一件多么困难的事。
第4章开始讨论载波同步技术的FPGA实现。这一章仍然有一些概念及工作原理的介绍,主要在于讲清数字化载波锁相环的参数设计及计算方法。实现数字锁相环的关键步骤在于构造合适的数字化实现结构及模型。本章重点内容在于以一个完整的载波环路工程设计实例,详细讲解数字载波锁相环系统的设计步骤、方法,并进行比较全面的性能仿真测试。载波同步环路的数字化设计与实现,本身比较复杂,初学者往往难以理解数字化模型与模拟电路之间的对应关系。数字化实现方法中各组成部件、参数的设计比较灵活,本章最后对载波环路的一般设计步骤、环路参数对系统性能的影响进行归纳整理。读者可以完全按照本章所讨论的流程进行系统的设计及仿真,并反复理解载波同步技术的数字化实现方法,以及VHDL编程的思路,必要时可以重复阅读第3章的内容,切实掌握锁相环路的工作原理及设计过程。同时,本章用较大的篇幅详细讲解了工程设计时的仿真测试步骤,读者尤其要切实掌握ISE环境与MATLAB联合应用的方法,以便于提高设计效率。
第5章首先简要介绍三种抑制载波同步环的工作原理,随后对三种同步环路的FPGA设计方法、结构、仿真测试过程进行详细讨论。从抑制载波环的FPGA实现过程可以看出,三种环路设计所采用的环路模型、参数设计方式均十分相似,其中的环路滤波器只需简单修改即可通用。平方环与同相正交环的性能是等价的,但同相正交环(COSTAS环)显然在解调BPSK等抑制载波调制信号时更具优势。判决反馈环比其他两种环路的噪声性能更好,环路锁定后的稳态相差更低,但载波环路同步需要以位同步作为前提条件,从而影响了环路的稳定性。因此,对于抑制载波调制信号来讲,工程上通常采用同相正交环来实现信号的载波同步及数据解调。
第6章首先介绍自动频率控制的基本概念,然后分别对最大似然频偏估计及FFT载频估计两种算法的原理、MATLAB仿真、FPGA实现方法进行详细的讨论。FSK是现代数字通信中常用的一种通信调制方式,本章对数字频率调制的原理及信号特征进行介绍,并采用MATLAB对FSK信号进行了仿真。FSK信号的解调方法很多,非相干解调法因为实现简单,性能优良而得到更为广泛的应用。为便于读者更好地理解锁相环与AFC环的差别,本章对常规二阶锁相环无法实现FSK信号解调的原因进行分析,并采用与锁相环类似的分析方法,对AFC环的模型进行讨论。这也进一步说明,读者在进行FPGA工程设计之前,必须充分理解系统的工作原理等理论知识,才能更好地把握FPGA实现过程中的参数设计、数据截位、时序控制等工程设计细节。本章最后详细阐述采用相乘微分型AFC环路实现FSK解调的原理、方法、步骤及仿真测试过程。
第7章主要讨论采用数字锁相环实现位同步的原理、方法、步骤及仿真测试过程。数字锁相法实现位同步是数字通信中使用最为广泛的方法,其基本工作原理与载波锁相环类似,均是通过鉴相器提取输入信号与本地位同步信号的相位差,并据此对本地同步信号的相位进行调整。微分型位同步环是最简单的数字锁相环路,其他位同步环均是在其基础上进行改进和完善,以增加其抗干扰性能及稳定性能。本章以工程实例讲解的方法,对微分型、积分型和改进型位同步环的各个功能部件均进行详细的讨论,尤其对环路各节点的信号波形进行说明。读者在阅读本章时,需要切实弄清各环路各节点波形的时序关系,当完全理解环路的工作过程及实现方法后,采用VHDL代码进行实现就比较容易了。读者可以将本章所讨论的实例以独立模块的形式,嵌入到前面章节的实例中,以完成基带解调后的位同步功能。
第8章首先介绍同步传输及异步传输的概念,并对两种传输方式的同步原理、方法、步骤及仿真测试过程进行详细讨论。异步传输的速率及效率都比较低,典型的应用是串口通信,本章对RS-232串口传输的收/发端均进行FPGA实现。RS-232串口传输协议定义了较多的握手信号,有兴趣的读者可以在实例8-1的基础上对串口通信进行完善。本章的重点是帧同步系统的FPGA实现。完整的帧同步包括搜索、校核和同步状态。一个看似复杂的系统,只要合理划分功能模块,在编写程序之前理清编程思路,最终的代码实现反而变得比较简单。读者在阅读帧同步系统的程序代码时,重点在于理解各模块之间的信号接口关系,以及接口信号之间的时序关系,进而深刻理解程序的编写思路和方法,以提高复杂系统的VHDL程序编写水平。
本书的目标
通常来讲,一名电子通信专业的技术人员,在从业之初都会遇到类似的困惑:如何将教材中所学的理论与实际中的工程设计结合起来?如何能够将这些教材中的理论转换成实际的电路?绝大多数数字通信类教材对通信的原理讲解十分透彻,但理论与实践之间显然需要有一些可以顺利通过的桥梁。一个常用的方法是通过采用MATLAB等工具进行软件仿真来加深对理论的理解,但更好的方法显然是直接参与工程的设计与实现。FPGA技术因其快速的并行运算能力,以及独特的组成结构,在电子通信领域已成为必不可少的实现平台之一。本书的目的正是架起这样一座桥梁,通过具体的设计实例,详细讲解从理论到工程实现的方法、步骤和过程,以便于工程技术人员尽快掌握和利用FPGA平台实现通信同步技术的方法。
目前,市场上已有很多介绍ISE、QuartusⅡ等FPGA开发环境,以及VHDL、Verilog HDL等硬件编程语言的书籍。如果我们仅仅是使用FPGA来实现一些数字逻辑电路,或者理论性不强的控制电路设计,那么掌握FPGA开发工具及VHDL语法就可以开始工作了。数字通信同步技术的理论性要强得多,采用FPGA平台实现通信同步技术的前提条件是对理论知识首先要有深刻的理解。在理解理论知识的基础上,关键的问题是根据这些通信理论或公式,利用FPGA的特点,找到合适的算法实现结构,理清工程实现的思路,并采用VHDL等硬件编程语言对其进行正确的实现。显然,要顺利地读懂本书,掌握用FPGA实现数字通信同步技术的知识和技能,读者还需要对FPGA的开发环境和设计语言有一定的了解。
写作过程中,本书兼顾数字通信同步技术的理论,以及工程设计过程的完整性,重点突出FPGA设计方法、结构、实现细节,以及仿真测试方法。在讲解理论知识时,重点从工程应用的角度进行介绍,主要介绍工程设计时必须掌握和理解的知识点,并且结合FPGA的特点进行讨论,便于读者尽快地找到理论与工程实现之间的结合点。在讲解实例的FPGA实现时,不仅绝大多数实例给出完整的VHDL程序代码,并且从思路和结构上对每段代码均进行详细的分析和说明。根据自己的理解,针对一些似是而非的概念,结合工程实例的仿真测试加以阐述,希望能够对读者提供更多有用的参考。相信读者在按照书中讲解的步骤完成一个个工程实例时,会逐步感觉到理论与工程实现之间完美结合的畅快。随着读者掌握的工程实现技能的提高,对通信理论知识的理解也必将越来越深刻,如果重新阅读以前学过的通信原理,头脑中就更容易构建起理论与工程实现之间的桥梁。
关于FPGA开发环境的说明
众所周知,目前两大厂商Xilinx和Altera的产品占据全球90%的FPGA市场。可以说,在一定程度上正是由于两家FPGA公司的相互竞争态势,有力地推动了FPGA技术的不断发展。虽然HDL的编译及综合环境可以采用第三方公司所开发的产品,如Modelsim、Synplify等,但FPGA器件的物理实现必须采用各自公司开发的软件平台,无法通用。Xilinx公司目前的主流开发平台是ISE系列套件,Altera公司目前的主流开发平台是QUARTUS Ⅱ系列套件。与FPGA开发平台类似,HDL也存两种难以取舍的选择:VHDL和Verilog HDL。
如何选择开发平台以及HDL语言呢?其实,对于有志于从事FPGA技术开发的技术人员,选择哪种平台及HDL语言并不重要,因为两种平台具有很多相似的地方,精通一种HDL语言后,再学习另一种HDL语言也不是一件困难的事。通常来讲,可以根据周围同事、朋友、同学或公司的主要使用情况进行选择,这样在学习的过程中,可以很方便地找到能够给你指点迷津的专业人士,从而加快学习进度。
本书采用的是Xilinx公司的FPGA器件作为开发平台,而采用VHDL语言作为实现手段。由于VHDL语言并不依赖于某家公司的FPGA产品,因此本书的VHDL程序文件可以很方便地移植到Altera公司的FPGA产品上。如果程序中应用了IP核资源,两家公司的IP核通常是不能通用的,这就需要根据IP核的功能参数,在另外一个平台上重新生成IP核,或编写HDL代码来实现。
有人曾经说过,“技术只是一个工具,关键在于思想。”将这句话套用过来,对于本书来讲,具体的开发平台以及HDL语言只是实现通信同步技术的工具,关键在于设计的思路和方法。因此,读者完全不必要过于在意开发平台的差别,相信只要掌握本书所讲述的设计思路和方法,加上读者已经具备的FPGA开发经验,采用任何一种FPGA平台都可以很快地设计出满足用户需求的产品。
如何使用本书
本书讨论的是数字通信同步技术的MATLAB与FPGA实现。相信大部分工科院校的学生和电子通信的从业人员对MATLAB软件都会有一个基本的了解。由于它的易用性及强大的功能,已经成为数学分析、信号仿真、数字处理必不可少的工具。由于MATLAB具有大量专门针对数字信号处理的常用函数,如滤波器函数、傅里叶分析函数等,十分有利于对一些通信的概念及信号进行功能性仿真,因此,在具体讲解某个实例时,通常会采用MATLAB作为仿真验证工具。虽然书中的MATLAB程序相对比较简单,主要应用一些数字信号处理函数进行仿真验证,如果读者没有MATLAB的知识基础,建议最好还是先简单学习一下MATLAB的编程概念及基本语法。考虑到程序及函数的兼容性,书中所有MATLAB程序的开发验证平台均为MATLAB 7.0版软件。
在讲解具体的FPGA工程应用实例时,通常会先采用MATLAB对所需设计的工程进行仿真,一方面仿真算法过程及结果,另一方面生成FPGA仿真所需要的测试数据;而后在ISE平台上编写VHDL程序对实例进行设计实现,为便于讲述,通常会先讨论程序的设计思路,或者先给出程序清单,再对程序代码进行分析说明;完成程序编写后,需要编写TestBench测试激励文件,根据所需产生输入信号的种类,可以直接在TestBench文件中编写代码来产生输入信号,也可以通过读取外部文本文件的方式来产生输入信号;接下来就可以采用Modelsim工具对VHDL程序进行时序或行为仿真,查看Modelsim仿真波形结果,并根据需要将仿真数据写入外部文本文件中,通常还会对仿真波形进行讨论,分析仿真结果是否满足要求;如果Modelsim波形不便于精确分析测试结果,则需要再次编写MATLAB程序,对Modelsim仿真结果数据进行分析处理,最终验证FPGA设计的正确性。
本书主要以工程应用实例的方式讲解各种数字通信同步技术的原理及FPGA实现方法和步骤。大部分实例均给出了完整的程序清单,限于篇幅,不同工程实例中的一些重复或相似的代码没有完全列出,随书配套的光盘上收录了本书所有实例的源程序及工程设计资源,并按章节序号置于光盘根目录下。本书在编写工程实例时,程序文件均放置在“D:\SyncPrograms”的文件夹下,读者可以先在本地硬盘下建立“D:\SyncPrograms”文件夹,而后将配套光盘中的程序压缩包解压至该文件夹下,大部分程序均可直接运行。需要说明的是,在大部分工程实例中,需要由MATLAB产生FPGA测试所需的文本数据文件,或者由MATLAB读取外部文件进行数据分析,同时FPGA仿真的TestBench文件通常也需要从指定的路径下读取外部文件数据,或将仿真结果输出到指定的路径下。文本文件的路径均指定为绝对路径,如“fid=fopen('D:\ SyncPrograms\Chapter_4\E4_1_DirectCarrier\Sn0dB_in.txt','w')”。因此,读者运行实例程序时,请将程序文件中指定文件绝对路径的代码进行修改,以确保仿真测试程序在正确的路径下对文件进行读/写操作。
致谢
2012年3月由电子工业出版社出版了由我编著的《数字滤波器的MATLAB与FPGA实现》一书,随后陆续收到不少读者的电子邮件,不仅提出了一些很好的建议,同时也极大地鼓舞了作者。在此首先要感谢广大的读者,正是你们的关注和鼓舞越发增强了我继续将数字通信与FPGA实现相结合的技术写下去的信心。
经过近一年的时间,总算完成了全书的写作。很高兴能够再次与电子工业出版社合作出版本书,能与这样一家专业的出版社合作,对于从事电子通信行业的技术人员来讲,本身就是一件十分荣幸和高兴的事。本书得以顺利出版,尤其要对出版社田宏峰编辑热情的态度及极高的工作效率表示感谢。
在写作本书的过程中查阅了大量的资料,在此对资料的作者及提供者表示衷心的感谢。由于写作本书的原故,重新阅读一些经典的数字通信理论书籍时,再次深刻感受到前辈们严谨的治学态度和细致的写作作风。虽不能至,心向往之。希望这本书的出版能够对电子通信领域的从业人员有所帮助。
最后要感谢我的妻子刘帝英女士,她不仅是一位尽心尽职的优秀妻子和母亲,也是一位严谨细致的科技工作者,同时也是本书的第一位读者,在工作之余对本书进行了详尽而细致的校对。特别值得一提的是,我上小学二年级的女儿,晚上我在家写作本书时,她常常会陪在一旁做作业,完成作业后就会过来要求我陪她玩,或者自告奋勇地说帮我做作业,使得漫长的写作过程始终充满着一种平和、充实的快乐。
FPGA技术博大精深,数字通信同步技术种类繁多且实现难度大。本书虽尽量详细讨论了FPGA实现数字通信同步技术的相关内容,仍感觉到难以详尽叙述工程实现的所有细节。相信读者在实际工程应用中经过不断的实践、思考及总结,一定可以快速掌握数字通信技术的工程设计方法,提高应用FPGA进行工程设计的能力。由于作者水平有限,不足之处在所难免,敬请读者批评指正。欢迎广大读者与作者就相关技术问题进行交流,交流请发邮件至duyongcn@yahoo.com.cn,也可以访问网址http://duyongcn.blog.163.com以获得与该书相关的课件等资料及信息。
杜勇
2013年4月