扩频接收机匹配滤波器的设计及FPGA实现
Posted by 天际的荒草 | Posted in Docs | 文档 | Posted on 19-09-2009
标签:FPGA, M序列, 伪码捕获, 匹配滤波器, 折叠式FIR结构
0
目 录
摘 要 III
ABSTRACT IV
第一章 绪论 1
1.1 课题应用背景和意义 1
1.1.1 扩频通信的发展和应用 1
1.1.2 本课题研究目的和意义 2
1.2 扩频接收机匹配滤波器的研究现状 3
1.3 研究思路 5
1.4 论文主要内容 5
第二章 扩频通信系统 6
2.1 扩频通信技术 6
2.1.1 扩频通信定义和理论基础 6
2.1.2 扩频通信特点和工作方式 6
2.2 扩频接收机原理 7
2.3 伪码捕获 9
2.3.1 PN码的捕获方法 10
2.3.2 匹配滤波器原理 11
2.3.3 匹配滤波器性能 13
第三章 数字匹配滤波器 17
3.1 FIR数字滤波器基础 17
3.1.1 FIR数字滤波器原理 17
3.1.2 FIR数字滤波器基本结构 18
3.1.3 FIR数字滤波器设计原则 20
3.2数字匹配滤波器常用设计方案优缺点比较说明 22
第四章 匹配滤波器的FPGA详细设计方案 24
4.1 方案采用说明 24
4.2 匹配滤波器模块划分 24
4.2.2 方案整体叙述 24
4.2.3 方案细节确定 25
4.2.4 匹配滤波器的模块划分 30
4.3 匹配滤波器各个模块的实现 30
4.3.1 累加模块 30
4.3.2 折叠滤波模块 33
4.3.3 时钟模块 37
4.3.4 平方相加模块 38
4.3.5 总调用模块 40
第五章 匹配滤波器的电路综合与仿真结果分析 42
5.1 仿真综述 42
5.2 MODELSIM仿真操作流程 42
5.3 匹配滤波器各个模块的仿真数据分析 45
5.3.1 累加模块的仿真数据分析 45
5.3.2 折叠滤波模块的仿真数据分析 47
5.3.3时钟模块的仿真数据分析 47
5.3.4 平方相加模块仿真数据分析 48
5.3.5总调用模块仿真数据分析 49
5.4 匹配滤波器整体系统性能 51
第六章 结论 52
结束语 54
参考文献 55
附录一 57
附录二 60
附录三 61
摘 要
扩频通信系统与常规的通信系统相比,具有很强的抗人为干扰、抗窄带干扰、抗多径干扰的能力,并具有信息隐蔽、多址、保密通信等特点。目前己从军事领域向民用领域发展。对扩频接收机的研究更成为了扩频通信系统里面的重要课题。
有限冲激响应滤波器(FIR滤波器)是数字信号处理中常用部件,它的最大优点在于:设计任何幅频特性时,可以具有严格的线性相位,这一点对数字信号的实时处理非常关键。现在,大规模可编程逻辑器件为数字信号处理提供了一种新的实现方案。FPGA是常用的可编程器件,它非常适用于实现实时快速可靠的FIR扩频接收机匹配滤波器,在加上VHDL语言灵活的描述方法以及与硬件无关的特点,使得使用VHDL语言基于FPGA芯片实现FIR扩频接收机滤波器成为研究的方向。
基于以上背景,本文针对扩频接收机中伪码捕获部分为研究重点,分析了几种基于FPGA的常用匹配滤波器实现方案,其中包括:直接形式的匹配滤波器、转置结构的匹配滤波器、采用分布式算法的匹配滤波器和折叠式匹配滤波器。通过比较这些方案的优缺点,最终选定了以折叠式匹配滤波器为最优方案来进行设计。折叠式匹配滤波器实际上就是以静止的本地扩频码作为累加器的系数,匹配滤波器相关过程就相当于接收信号滑过本地序列,当滑动到两个序列相位对齐时,就必有一个相关峰值输出。该匹配滤波器采用VHDL语言,通过模块划分来进行设计,整个过程都在Xilinx公司开发的ISE集成软件系统中完成,最后在Modelsim仿真软件上进行了各个模块的仿真。本论文所设计的折叠式匹配滤波器,能够根据实际需要来设置不同的扩频码长度,很好的完成伪码的相关捕获效果。该折叠式匹配滤波器结构能够大大节省FPGA资源的开销,提高伪码捕获时间,提高捕获效率,更重要的是在实际生产中,有很好的实际效果。
关键字:匹配滤波器 ,M序列,伪码捕获,折叠式FIR结构,FPGA
ABSTRACT
The spread spectrum communication system has stronger ability of resisting jamming,narrow band,multipath interference than that of the conservation communication systems.And it also has the characteristics of low probability of intercept and multiple access secure communication.Nowadays,the spread spectrum communication technology has expanded form the military field to the commercial field.Doing research on the spread spectrum receiver is also the most important part of the spread spectrum communication system.
The Finite impulse response filter ( FIR filter) is used for many digital signal processing . Its biggest advantage is that : it has good linear phase character for designing any amplitude frequency characteristic , which is very critical to real time digital signal processing . Right now , the large-scale programmable logic device give a new ways to implement the digital signal processing quickly , and reliably . The field programmable gate array (FPGA) technology is used widely , and it implement the real-time , high-speed and reliable FIR spread spectrum receiver Mached Filter easily . In addition , VHDL can be quickly learned and mastered , and it has nothing to do with hardware , which make it to be a point of research in the FIR of the spread spectrum receiver of the Matched Filter .
Based on this background , making the PN code capture part as a point of the spread spectrum receiver , this paper analyse several common used Matched Filter programs on FPGA , including : the direct form of matched filter , the transposed structure of matched filter , the distributed arithmetic structure of matched filter , and folded structure of matched filter . Compared with the advantages and the disadvantages of these programs , finally we choose the folded structure of matched filter as the best one to complete this design . The folded filter is actually using the PN code as the accumulator coefficients , and then , matched filter correlation process is equivalent to the receiving signal spreading the PN code . When the sliding of two phase sequence is the same , this implies that making a result of correlation . The designs of the matched filter using VHDL and modules . The whole process completed in the development of the company Xilinx ISE Integrated Software System . Finally , every modules simulated in the Modelsim simulation software . The design on this paper , according to the actual need , can set up a defferent PN code length , and make a good effect on the PN code capture of the spread spectrum receiver . The folded matched filter can reduce the cost on FPGA resources or the PN code capture time , and improve the efficiency of the capture process , it also can make a very good practical effects on the production in our lives .
Key words: Matched filter 、 M series 、Acquisition of Pseudo-code 、Folded FIR structure 、Transposed FIR structure 、FPGA
第一章 绪论
1.1 课题应用背景和意义
1.1.1 扩频通信的发展和应用
扩展频谱通信 (简称扩频通信)是应用频谱展宽技术,实现加密、选址通信的一门新学科。由于扩频通信具有很多优点,如抗干扰能力强,隐蔽性好,多址能力强,误码率低,易于实现保密通信以及可以随机接入、任意选址等,使得扩频通信技术越来越受到人们的重视,获得了广泛的应用[1]。
扩频系统主要有直接序列扩频系统和跳频通信系统两种,前者使用伪随机码来扩展频谱,后者载波频率受已知模式的伪随机码控制,快速跳变。此外还有采用多种扩频方式的混和扩频通信系统。
扩频通信系统具备3个主要特征:① 载波是一种不可预测的,或称之为伪随机的宽带信号;② 载波的带宽比调制数据的带宽要宽得多;③ 接收过程是通过将本地产生的宽带载波信号的复制信号与接收到的宽带信号相关来实现的。
频谱扩展的方式主要有以下几种:直序扩频(DSSS)使用高速伪随机码对要传输的低速数据进行扩频调制;跳频系统则利用伪随机码控制载波频率在一个更宽的频带内变化;跳时则是数据的传输时隙是伪随机的;线性调频系统中的频率扩展则是一个线性变化的过程。几种方式组合的混合系统也经常得到应用。
扩频技术未来的发展趋势将会集中在以下几个方面[2]:
(1) 第三代和第四代移动通信
目前第三代移动通信(3G)正在广泛地普及中。3G设计的目标主要是支持多媒体业务的高速数据传输,因此其研究主要集中在新标准和新硬件的开发。而对于3G以后的发展,不同的研究者有不同的观点。对4G的认识不同,采取的技术解决手段也各不一样。目前实现4G观点主要有2种:一种是开发新的无线接口和技术;另一种则是集成现有的及未来的无线系统。展望未来,第四代移动通信系统(4G)的驱动无疑会使扩频技术传输高速数据的能力得到更大的拓展。在4G网络的实现中,有的技术本身就是扩频技术的延伸,有的则能够很好得与扩频技术结合,还有的则能用于扩频系统的实现,因此这些新技术的发展体现着扩频技术的发展趋势。
(2) 超宽带技术
超宽带(UWB)技术可以看作是一种将传输带宽极大扩展以获得高数据传输速率的扩频技术。UWB作为一种短距离通信技术在未来无线通信系统的实现中扮演着重要的角色。UWB技术通过共享频谱,而不是寻找目前存在但实用性不高的频谱来实现短距离高速数据传输,它有效地解决了频谱分配问题,因此自从FCC在2002年2月14日颁布了将UWB技术用于商用的法规以后,UWB技术的研究热潮始终高涨。
(3) 多载波调制技术
多载波调制技术,即正交频分多址(OFDM),是一种有效的传输高速数据的方法,它已经成为一系列重要的高速数据传输应用的标准。OFDM和CDMA的结合也为解决未来无线通信系统的难题提供了技术选择。
组合CDMA和OFDM的多载波CDMA方案主要可分为两大类:一种是频域扩展系统,即MC-CDMA(Multicarrier CDMA),也称为OFDM-CDMA;另一种则是时域扩展系统,包括MC-DS-CDMA以及MT-CDMA(Multitone CDMA)。MC-CDMA的发射机在频域使用一定的扩频码将原始数据扩展到不同的子载波进行传输。时域扩展的多载波调制方案又可分为两类。MC-DS-CDMA的发射机先将原始数据流进行串并变换,然后在时域上使用一定的扩频码对变换后的数据流扩频,再分别调制到不同的子载波上进行传输。MT-CDMA的发射机结构与MC-DS-CDMA相似,不过它采用的扩频码周期更长。对这些多载波调制方案的系统实现、检测算法以及误码性能都有较详细的研究比较。此外,在更通用的MC-DS-CDMA方案则同时在频域和时域对信号进行扩展,并被证明这种调制方案能够适应包括室内、乡村、郊区以及城市在内的各种传播环境,从而适应未来无线通信系统的要求。
(4) 软件无线电
未来的通信系统要求为用户提供通用的平台,以满足用户在任何时间、任何地点通过任何设备接入网络的要求。采用软件无线电的概念,即通过软件加载在一个通用的硬件平台上实现多种功能,为未来通信网络的实现提供了可能的解决方案。
软件无线电就是将模块化、标准化的硬件单元通过标准接口构成基本平台,并借助软件加载实现各种无线通信功能的一种开放式体系结构。软件无线电通过使用自适应的软件和灵活的硬件平台,能够解决无线产业不断演变和技术革新带来的很多问题。它在基站和移动终端的软件下载能力,对于运营商和制造商弥补软件缺陷以及实现新功能和业务非常重要。此外使用软件下载重新配置移动终端是实现多模式终端操作的有效方法,这也为用户通过一个移动终端接入多个通信系统的问题提供解决手段。
1.1.2 本课题研究目的和意义
直接扩频在扩频通信中获得了广泛的应用。捕获电路是整个扩频接收机最重要的环节之一,它主要是用本地的伪码序列和接收的信号进行相关运算,计算信号的相关能量,然后通过与门限的比较进行信号捕获的判决。匹配滤波器是实现本地伪码和采集信号相关运算的重要部件,它完成了信号的并行处理,捕获速度快(小于一个伪码周期),因此被广泛应用于扩频接受机之中。
由于扩频系统复杂,采用分立器件将存在体积大、功耗高的问题,在实际设计中也难以实现;而现有的专用集成电路在扩频增益、数据传输率等方面难以达到要求,并且存在成本高、采购困难等弊端,同时模拟器件受环境影响的因素比较大。现在,大规模可编程逻辑器件为数字信号处理提供了一种新的实现方案。很多数字信号处理可以很好地在FPGA(Field Programmable Gate Array)中实现,然而却不能有效的在DSP处理器中实现,所以采用FPGA 来实现FIR数字滤波器有着很好的发展前景。
采用现场可编程门阵列FPGA来实现FIR数字滤波器,既兼顾ASIC器件(固定功能DSP专用芯片)的实时性,又具有DSP处理器的灵活性。FPGA和DSP技术的结合能够更进一步提高集成度、加快速度和扩展系统功能。用FPGA设计的产品还具有体积小、速度快、重量轻、功耗低、可靠性高、仿制困难、上批量成本低等优点[3]。
本课题主要是围绕扩频接收机匹配滤波器的实现提出一个先进的方案,该方案能够减少FPGA资源的使用,大大提高运行效率,有利于实际应用。
1.2 扩频接收机匹配滤波器的研究现状
匹配滤波器概念的提出已有半个世纪,70年代到80年代,声表面波延迟线和大规模集成电路工艺的发展才使其走向应用。但当时是以声表面波器件为主,数字匹配滤波器仍然代价昂贵,只针对于抗干扰等某些特殊用途。从90年代初开始,美、日等国的多家公司先后开始研制DS宽带扩频芯片,例如美国的Stanford telecom, Zilog和Harris日本的Rohm等,且大多采用直扩方式(如STEL-2000A, STEL-3310,HSP3824等)。这些芯片的共同特点都是:经高速A/D变换后,用数字匹配滤波器完成解扩功能。下表(1.1) 中列出了典型的Stanford公司Stel-3310芯片的主要性能指标[4]。
表1.1 STEL-3310的性能指标
Stanford Telecom公司STEL-3310的性能指标
扩频方式 直扩
伪码长度 1—64位可编程,最长级连4片至256位
伪码速率 最高11Mc/s
信息速率 最高2.048Mb/s
调制方式 BPSK/QPSK
伪码同步捕获时间 1个伪码周期
美国专做软件无线电产品的Sigtek公司,新推出了其扩频匹配滤波器通用板ST-108,其主要性能指标如下表(1.2)所示:
表1.2 ST-108主要性能指标
ST—108主要性能指标
伪码长度 最长1024位
滤波器大小 1024×1bit,512×2bit,256×4bit
伪码速率 2~33MHz
信息速率 64K~2.048Mbytes/sec
中频频率 70或140MHz
操作界面 Windows
随着CDMA移动通信技术的不断发展,匹配滤波码捕获技术作为同步信道的一项关键技术已广泛地被国外各大公司所研究和采用,例如:移动通信中,正向信道在移动台由于某种原因失去连接以及在反向信道中都需要用匹配滤波器来做快速码捕获。在第三代移动通信宽带CDMA技术当中,数字匹配滤波器仍然是其中的一项关键技术。近些年,美日等一些大公司开始研制并推出CDMA无线多媒体通信芯片,如:MSM3300,在扩频通信领域又迈出了一大步。但由于禁运、停产等原因,我们能拿到的ASIC专用芯片只能是民用的早期产品,而且价格昂贵。
随着FPGA芯片的广泛应用,高性能高密度的FPGA在生产工艺、器件的编程和测试技术等方面都有了飞速发展。由于FPGA在性能、成本、灵活性和功耗等方面的优势,基于FPGA的信号处理器已广泛应用于各种信号处理领域,如手机基站、卫星通信系统、交换机、路由器、调制解调器等。 FPGA尤其适合于乘法和累加等复杂的DSP任务。因此在复数乘法、数字滤波器设计和FFT等数字信号处理领域表现出较大的优越性,因此在高速数字信号处理系统中得到了较多的应用。FPGA提供了极强的灵活性,使开发者能够开发出满足多种标准的产品。例如,万能移动电话能够自动识别GSM, CDMA, TDMA等不同的信号标准,并可以自动重配置以适应所识别的协议。FPGA固有的灵活性和性能也使设计者能够紧跟新标准的变化,提供相应可行的方法。开发者使用FPGA技术,结合相应的EDA设计工具,可以很方便的对产品进行改善或升级。由于FPGA内部资源丰富及功能强大,以及相应的EDA软件功能完善和强大,仿真能力便捷实时,并且硬件因素涉及甚少,使得基于EDA的FPGA开发技术将很快成为复杂数字系统设计的主流。
1.3 研究思路
(1)本设计主要是基于Xilinx公司开发的一系列芯片上进行的,这些芯片使用频率高,是目前大规模数字逻辑设计的应用趋势。首先要对该公司的硬件和配套的软件进行熟悉,能够熟练掌握基本的数字逻辑电路设计流程。
(2)在数字信号处理中,能够对FIR数字滤波器的结构和各种实现方法有一定的了解,懂得使用MATLAB软件设计各种参数的FIR滤波器。
(3)本设计主要是用硬件描述语言VHDL来实现整个设计的。所以要学会整个自顶向下的系统设计方法、VHDL编程、ISE编程工具、Modelsim仿真工具等。
(4)本课题中扩频接收机匹配滤波器的设计主要是采用折叠式来实现该数字匹配滤波器,所以要对整个折叠算法有一个清除的认识。最后能够通过仿真得出该滤波器的可实现性。
1.4 论文主要内容
本文主要对扩频接收机中匹配滤波器的实现进行了研究,并提出了一种可行且高效的基于FPGA实现的折叠式匹配滤波器方案。
第一章绪论部分,主要介绍了本课题的背景,指出了目前扩频通信的发展和应用,分析了当前数字匹配滤波器的发展状况。
第二章大略介绍了扩频通信技术的基本原理和扩频接收机的基本组成,重点介绍伪码捕获的原理和各种性能参数描述。
第三章介绍数字滤波器基础,分节介绍数字滤波器的原理、基本结构和设计原则,最后还介绍了常用的数字滤波器设计方案,并比较说明了各种方案的优缺点,最后通过比较得出,选用折叠式匹配滤波器可以很好的达到设计要求,减少FPGA资源的开销,优化系统,提高整体速度。
第四章详细介绍扩频接收机匹配滤波器的FPGA设计方案,其中包括匹配滤波器中的各个模块的设计原理、外部接口图、内部逻辑电路图和程序设计流程图。
第五章对本文设计的扩频接收机匹配滤波器的各个模块进行仿真的数据分析,用手工运算和软件仿真结果进行对比,得出其可行性。
第六章是结论部分,对本设计中的总结。
第二章 扩频通信系统
2.1 扩频通信技术
2.1.1 扩频通信定义和理论基础
(1)定义:扩频是通过注入一个更高频率的信号将基带信号扩展到一个更宽的频带内的射频通信系统,即发射信号的能量被扩展到一个更宽的频带内使其看起来如同噪声一样。扩展带宽与初始信号之比称为处理增益(dB ),典型的扩频处理增益可以从20dB到60dB。
(2)理论基础:扩频系统的基本原理源于信息论和抗干扰理论。信息论中关于信道容量、带宽和噪声之间关系的香农定理指出:在高斯白噪声干扰条件下,通信系统的极限传输速率 (或称信道容量)为:
bit/s
从香农公式可知,在一定的信道容量条件下,可通过增加信号带宽来减小发送信号功率,也可通过增加发送信号功率来减小信号带宽。也就是说,在信道容量不变的条件下,信号功率和信号带宽可以互换。
2.1.2 扩频通信特点和工作方式
(1)特点:
扩频通信具有很多优点,如抗干扰能力强,隐蔽性好,多址能力强,误码率低,易于实现保密通信以及可以随机接入.任意选址等,使得扩频通信技术越来越受到人们的重视,获得了广泛的应用。
扩频通信系统具备3个主要特征:① 载波是一种不可预测的,或称之为伪随机的宽带信号;② 载波的带宽比调制数据的带宽要宽得多;③ 接收过程是通过将本地产生的宽带载波信号的复制信号与接收到的宽带信号相关来实现的。
(2)工作方式:
扩频系统包括以下儿种扩频方式:
1.直接序列扩频,记为DS (Direct Sequence);,直序扩频(DSSS)使用高速伪随机码对要传输的低速数据进行扩频调制。
2.跳频扩频,记为FH (Frequency Hopping),跳频系统则利用伪随机码控制载波频率在一个更宽的频带内变化。
3.跳时扩频,记为TH (Time Hopping),跳时则是数据的传输时隙是伪随机的。
4.线性跳频,记为 (Chirp),线性调频系统中的频率扩展则是一个线性变化的过程。
除了上面四种基本方式,还有这些扩频方式的组合方式,如TH/DS, TH/DS,
FH/TH。
2.2 扩频接收机原理
扩频接收机的原理框图(图2.1)如下:
接收信号为射频信号,首先经由模拟下变频变换为中频信号。中频信号经A/D变换后成为数字信号,再经数字下变频、低通滤波后得到扩频基带信号。本地载波的时钟产生部分还根据载波跟踪环进行调整,补偿收发两地的时钟漂移。扩频基带信号进入匹配滤波器,与本地PN码进行相关运算,得到I、Q两路基带数据信号。PN码发生器的码时钟受码跟踪环的控制,不断进行调整,以消除收发两地时钟漂移对相关峰的影响[5]。
整个接收部分包括解跳频部分、数字下变频、匹配滤波器及微处理控制器等部
分。
图2.1 扩频接收机的原理框图
(1) 数字下变频部分
从A/D转换进来的信号经过增益控制电路后,与本地载波NCO产生的正弦,余弦信号混频,得到扩频基带信号。本地载波的时钟产生部分还根据载波跟踪环进行调整,补偿收发两地的时钟漂移。
数字下变频的组成与模拟下变频类似,包括数字混频器、数控振荡器(Numericaly Controlled Oscillator-NCO)和低通滤波器(LPF)三部分组成,如图(2.2)所示。
图2.2 数字下变频结构
NCO产生的本振信号输入到数字混频器与输入的信号进行混频。数字混频器就是一个乘法器。信号经混频后,输出到低通滤波器以滤除倍频分量和带外信号,然后进行抽取处理。数字下变频数据流速率始终是输入信号的采样速率。由于下变频器工作过程比较简单,可以很方便地利用FPGA或ASIC技术来设计实现,此时虽然用硬件,但FPGA或ASIC设计和修改非常灵活,灵活性和方便性与软件实现相差无几。
从工作原理讲,数字下变频与模拟下变频是一样的,就是输入信号与一个本地振荡信号的乘法运算。数字下变频的运算速度决定了其输入信号数据流可达到的最高速率,相应地也限定了ADC的最高采样速率;另外,数字下变频的数据精度和运算精度也影响着接收机的性能。
在模拟下变频器中,混频器的非线性和模拟本地振荡器的频率稳定度、边带、相位噪声、温度漂移、转换速率等都是人们最关心和难以彻底解决的问题。这些问题在数字下变频中是不存在的,频率步进、频率间隔等也具有理想的性能,另外,数字下变频器的控制和修改较容易等特点也是模拟下变频器所无法比拟的。影响数字下变频性能的主要因素有两个:一是表示数字本振、输入信号以及混频乘法运算的样本数值的有限字长所引起的误差;二是表示数字本振相位的分辨率不够而引起数字本振样本数值的近似取值。 也就是说如果数字混频器和数字本振的数据位数不够宽,就存在着尾数截断的情况:数字本振相位的样本值存在近似的情况,根据截断和近似的程度,会或多或少地影响DDC的性能。
(2) 匹配滤波器
本文中的设计主要是这一部分来进行的。基带扩频信号经低通滤波后,输入匹配滤波器。该信号与本地产生的PN码进行相关运算,得到I、Q两路基带数据信号,并存储在累加存储器中。详细的设计参见第四章。
(3)微处理控制器
完成系统的控制,跳频跟踪环算法,载波跟踪环算法,码跟踪环算法和数据的旋转解调。微处理控制器的结构包括:锁相环、载波跟踪、伪码跟踪、解调数据等。
假若信号被捕获,初始搜索过程即停止,而开始精细的同步与跟踪。接收机中噪声的影响,信道传输时延的变化,扩频序列时钟频率的漂移等会使接收序列相位出现波动甚至很大的改变,结果使本来已经对齐的序列相位又重新出现偏差。为了使扩频通信系统准确可靠地工作,高精度、稳定的扩频序列同步是必需的,这就需跟踪电路来实现。跟踪电路用来维持接收机中PN码发生器与接收信号的同步,包括精细的码片同步和载波的同步。载波的同步与伪随机码的同步一样也包括捕获和跟踪两个过程。载波捕获即多普勒频移的粗略估计通常包含在伪码同步过程中,而精确的载波相位及多普勒频移变化跟踪则通过载波参数估计器或反馈跟踪控制环实现。
锁相环的基本结构图如下(图2.3):
图2.3 锁相环基本结构
锁相环路之所以能够跟踪相位,实现输出与输入信号的同步,是因为它是一个相位的负反馈控制系统。这个负反馈控制系统是由鉴相器(PD)、环路滤波器(LF)和压控振荡器(VCQ)三个基本部件组成的[6][7]。
2.3 伪码捕获
扩频系统除了有一般数字通信系统的载波同步、位同步、帧同步外,还有它特有的码序列同步。即要求收发双方不仅时钟频率要对准,而且要求码序列起点要对齐。因此,同步系统在扩频通信中是很重要的、不可缺少的一部分。
首先分析同步不确定性的来源,然后才能有的放矢的消除不同步因素,达到系统同步的目的。在扩展频谱通信系统中,接收端一般有两类不确定因素,即伪码延时(伪码相位)和载波频率。扩频接收机要能够正常工作,这两个因素的不确定性就必须得到克服。码相位的分辨率必须小于1个码元宽度(又称为一个码片chip);载波中心频率的分辨率(即稳定度与准确度)必须使得解扩后的信号落在相关滤波器带宽之内,以便解调器能正常工作。即同步不确定性表现为时间不定区和频率不定区。
同步过程一般来说包含两个阶段:捕获阶段和跟踪阶段[8][9]。
(1)接收机在一开始并不知道对方是否发送了信号,因此,需要有一个搜捕过程,即在一定的频率和时间范围内搜索和捕获有用信号。这一阶段也称为起始同步或粗同步。
(2)一旦完成捕获后,则进入跟踪过程,即继续保持同步,不因外界影响而失去同步。也就是说,无论由于何种因素两端的频率和相位发生偏移,同步系统能加以调整,使收发信号仍然保持同步。
2.3.1 PN码的捕获方法
同步的起始阶段要在频率和时间(相位)不确定的范围内捕获有用的PN码信号使本地PN码信号与其同步。由于解扩过程通常都在载波同步之前进行,载波相位在这时是未知的。大多数捕获方法都利用非相干检测。所有的捕获方法的共同特点是用本地信号与收到的信号相乘(即:相关运算),获得二者相似性的量度,并与一个门限相比较,以判断其是否捕获到有用信号。如果认为捕获到有用信号,则开始跟踪过程,使系统保持同步。否则,又开始继续搜捕。
PN码捕获方法可分为有源相关和无源相关两种。有源相关时采用了在不同的搜索区间 ,用不同相位的本地码与输入码相关的方法。如果检测不到相关峰,则时钟脉冲驱动本地码移向下一个搜索区间并重复上述的相关过程,一直到检测到正确的相关峰为止。而无源相关是采用一种与已知的扩频码相匹配的无源滤波器,只有当输入码与接收机的匹配滤波器的脉冲响应相匹配时,才可得到最大的相关输出,否则就没有相关输出。有源相关法包括滑动相关法、序贯检测、序列估计法等。无源相关法多使用声表面波器件(SAW)或数字匹配滤波器[10]。
(1)滑动相关:滑动相关法是一种最简单也是最基本的搜索法。本地码发生器同发射产生器的时钟速率有一定的差率,从而使两个码序列从相位上看起来好像在相对滑动。这种滑动过程就是两个码序列逐位进行相关检测的过程。接收信号及噪声与本地的参考伪码相乘,然后通过积分器,把积分器的结果送入门限检测器进行判决,小于门限则按顺序改变参考伪码的相位并消除积分,继续判决。当两个序列的相位一致时,滑动停止。
(2)序贯检测法:设想多驻留的极限情况,取积分时间为连续的,用一个门限的连续判决来代替多驻留的多门限判决。这种可变驻留时间的方法称为序贯检测。可变积分时间系统能够用较短的时间放弃大量的错误相位,而允许在正确的相位处停留较长的时间以获得可靠的判断,从而兼顾了捕获速度和可靠性。
(3)序列估计法:该方法是利用对PN码发生器中的n个可预置移位寄存器进行置位来实现PN码的同步。即用收到的PN码去给本地PN码发生器的移位寄存器置数,使得本地PN码发生器从这一状态产生PN码。设在一个PN码码片长度内信息码不改变符号,则只需要n个PN码元宽度的时间就能使两PN码同步。但此法对噪声和干扰很脆弱,考虑到存在噪声,其捕获速度并不比单步进快。
(4)匹配滤波器:当输入是直接序列扩频信号时,设计一个匹配滤波器,使其单位脉冲响应为PN码的时间反转,当扩频信号输入到达一个PN码周期时,有一个最大相关输出,令该输出对本地PN码发生器置位,使两PN码达到粗同。在理想情况下,DMF捕获系统最多只需要一个扩频序列周期的时间,就可检测出同步相位,实现扩频序列的捕获。但匹配滤波器受器件速度限制,多用于短码捕获,目前超过64码片长度的产品还很少见。
匹配滤波器可以在中频进行,也可以在基带进行。中频多采用模拟器件声表面波(SAW)匹配滤波器来完成,基带多采用数字集成电路来完成。SAW匹配滤波器捕获法采用声表面波器件,该器件在通信领域应用广泛,可以大大减少捕获时间,另外它是无源器件 ,结构简单,稳定性能好。但SAW器件插损大,而且滤波器长度也受限于国内工艺水平,只能对长码的一小段进行匹配,在低信噪比下不可靠。对SAW延迟器件来说,伪码序列是预先确定的,器件制造好了以后伪随机序列就不能改变了。随着大规模数字器件如系列化CPLD(Complex Programmable Logic Device)。FPGA(Field Programmable Gate Array)的不断出现以及全数字化扩频接收机概念的提出,数字化基带匹配滤波器的研究越来越受到人们的重视。在本文主要设计了一种基于FPGA的折叠式数字匹配滤波器。
2.3.2 匹配滤波器原理
所有PN码捕获方法都是基于PN码的自相关特性,自相关函数 在码相差 大于一个码片时接近零,在 小于一个码片宽度时其值与 的大小成反比[11]。为讨论方便,我们假设PN码为m序列,图(2.4)表示了m序列的自相关函数。
图2.4 m序列自相关函数曲线
设用于扩频的扩频码 长度为N, 。 为门函数, 为切谱码片宽度,发送符号信息序列为{ },经过扩频后,发送的信号为 式中, 也为门函数,持续时间 ,若数字匹配滤波器对c(t)相关(正相关或负相关,取决于传送信息 ),则滤波器的冲击响应应为: ,由此可得到匹配滤波器的输出为:
由此可以知道, 是一个相关函数,严格地讲, 是 码的两个部分相关的加权和。加权值为传递的信息 。当 时,数字相关器与接收信号不相关, 的值较小,当 时, 取得最大值有:
表示匹配滤波器与输入信号相关(匹配),由此可通过 的值来判断匹配滤波器是否匹配,从而检测一个码字或信息。
匹配滤波器的基本结构如图(2.5):
图2.5 DMF基本结构
图中延迟抽头数为N,N是DMF进行相关运算的长度,乘法器系数取士1。
在本论文设计中乘法器的系数由本地PN码确定,当本地PN码为“0”时,累加器采用加法运算;当本地PN码为“1”时,累加器采用减法运算。输入信号码流在PN码时钟的作用下向右移位,每向前移动一位,移位寄存器中的N位码元与对应系数相乘,并行送入累加器,即有相关值输出。一旦进入DMF的信号与之相匹配,将会有最大的相关峰输出,其极性由数字符号的极性确定(通常一个数据符号对应一个PN码周期),此时表明收发双方的伪随机码同步,也表明接收到了相应的传输信号。
2.3.3 匹配滤波器性能
接收信号经下变频后分为正交、同相两路信号,则DMF的正交、同相输入为[12]:
其中,A为载波幅度的有效值,d(i)为数据,PN(i)为发射端的伪码, 为载波的相位。它们与本地伪码进行相关累加(积分)后得到的相关值IOTS和QOTS平方相加后得到的值OT作为捕获算法的输入。
当接收伪码与本地伪码完全对齐时,有 = , ,此时OT为:
当多普勒频率相对载波较低时,有 ,即: 。于是有:
当接收伪码与本地码错开一个码片以上时,OT为:
利用式 的特性,重新写上式如下:
可见,获得OT的过程是一个平方率包络检波过程,利用 与 的差异可以检验本地伪码与接收伪码是否对齐。
1.多普勒频移对匹配滤波器的影响
由于接收端时钟源的频率漂移,特别是当收发两端存在相互移动时,会出现多普勒频移。多普勒频移的存在会产生以下问题:
1)多径分量造成接收机信号的多普勒扩散,增加了信号带宽,在接收机带通滤波器带宽一定的情况下,使得有用信号的功率相对减少,干扰信号的功率相对增加。
2)多普勒频率的存在会使下变频后的信号不在基带附近,从而使接收机的相关器的相关峰减小,甚至无法检测到相关峰。
在高动态环境下,由于扩频信号的动态性,多普勒频移较大且不确定,因而扩频伪码相位的初始捕获较难[13]。
下面简要讨论一下多普勒频移对DMF输出的影响。
在没有时间误差的情况下,即 ,此时:
其中 是单位码片信号的平均功率, 为多普勒频移, 为误差相位,N是匹配滤波器的长度。
由于N>>1和 ,所以 , (带宽有限)
下图(2.6)中给出了多普勒频移对DMF相关峰输出的关系图:
图2.6 多普勒频移与DMF输出的关系
从图2.3中可以看出,当多普勒频移增加时,DMF输出相关峰的主峰逐渐减小。在 时,相关峰输出下降了3dB,也就是说,当多普勒频移达到 时,此时的相关峰值输出仅为没有多普勒频移时的一半,此时匹配滤波器已没有多大意义。此外,考虑伪码序列的自相关特性。当码相位相差1/2个码片时,相关值降低到峰值的一半[14]。
因此,在设计中搜索过程采用频率和码相位二维搜索,频移搜索步进量为3KHz,进一步考虑虚警和漏警概率的存在,实际设计中多普勒频移搜索步进量为2KHz,相位搜索量为1/2码片。
2.扩频序列捕获的自适应门限
相关峰的检测是通过对接收码流的匹配滤波、模值运算、门限判决完成的。在无噪声和干扰的条件下,在一个伪码周期内出现一次相关峰值。在有噪声和干扰的条件下,在恢复成数据流的过程中将引入PN码元的误Chip,这必然会使相关峰降低,若相关峰低于门限值,就会产生漏警;如果将门限值降低,又会引起虚警。由于相关峰除了作为同步指示外,还作为解调器的位定时时刻,相关峰的漏警和虚警必然导致误码的产生。
无论那种捕获形式,相关检测器的检测性能是一个基本参数。检测性能主要是两个概率:检测概率和虚警概率。从直观上看,提高检测概率,降低虚警概率,就能减小平均捕获时间。检测器性能与信噪比,检测器形式及检测门限有关。在其它参数都一定的情况下(主要是信噪比),选择一个最佳门限,平均捕获时间最小。如果门限选择不当,可能会大大增加捕获时间。
在实际扩频系统中,系统的参数不可能保持不变。扩频通信系统多址干扰将随着同时工作的用户数而变化。高动态信道的衰减和衰落也使得接收信号的功率发生变化。另外,系统中的其它干扰大小也可能会变化。因此,接收信号的信噪比将在一定范围内变化。这时,捕获系统不同的信噪比应有不同的门限。如果采用一个固定的门限,捕获系统性能会恶化[15]。
匹配滤波器自适应门限捕获系统由图(2.7)所示。
图2.7 匹配滤波器自适应门限捕获电路
捕获过程分为搜索、检测两个阶段。开始搜索时,初始门限 取一个较小的值。匹配滤波器的相关输出信号经包络检波后以 间隔进行抽样。抽样结果与门限 进行比较,一旦门限被超过,该抽样值作为新的门限 ,此相位状态也被存储起来。另外,计时器开始工作,抽样和比较继续进行。如果门限 被超过,则又产生新的门限和存储新的相位状态。当计时器计数满 (L为扩频序列长),最新的同步相位被认为是真的同步相位。
这种自适应门限捕获电路很简单,且能实现快速捕获,在一个扩频序列周期内就能捕获到同步相位。实际上,这是检测 时间内最大的相关峰值,并把对应的相位作为同步相位。
第三章 数字匹配滤波器
3.1 FIR数字滤波器基础
数字滤波器是完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。数字滤波器具有稳定性高、精度高、灵活性大等突出优点。随着数字技术的发展,用数字技术设计滤波器的功能越来越受到人们的注意和广泛的应用[16]。
数字滤波器如果以单位抽样响应h(n)的长度来进行分类可分为两种:一种是无限冲激响应滤波器(IIR滤波器),它的h(n)是无限时宽的, ,体现在差分方程或转移函数中是 。另一种是有限冲激响应滤波器(FIR滤波器),它的h(n)是有限时宽的, ,体现在差分方程或转移函数中是 。
滤波器结构实现的一个原则是应用尽量少的延时单元(存储器)和乘法器,以提高系统的运算速度:另一原则是减小有限字长的影响,即减小量化效应。
3.1.1 FIR数字滤波器原理
一个数字滤波器的系统函数可以表示为:
直接由H(Z)得出表示输入输出关系的常系数线性差分方程为:
可以看出,数字滤波器是把输入序列经过一定的运算变换成输出序列。大多数普通的数字滤波器是线性非时变的(linear time-invariant, LTI)滤波器。对因果的FIR系统,其系统函数仅有零点(除z=0的极点外),并且因为系数 全为零,所以上面的差分方程就简化为:
上式可以认为是x(n)与单位脉冲响应h(n)的直接卷积。
数字滤波器的根据单位脉冲响应h(n)的时间特性可分为无限长单位脉冲响应(IIR, infinite impulse response)数字滤波器和有限长单位脉冲响应(FIR, finite impulse response)滤波器两种。从离散时间域来看,若系统的单位取样响应延伸到无穷之长,称之为IIR系,若系统的单位取样响应是一个有限长序列,则称之为FIR系统。
FIR滤波器相对于IIR滤波器有许多独特的优越性,在保证满足滤波器幅频响应要求的同时还可获得严格的线性相位特性,从而保持稳定。对非线性相位的FIR滤波器一般可以用IIR滤波器来代替。由于在数据通信、语音信号处理、图像处理以及自适应处理等领域往往要求信号在传输过程中不可能有明显的相位失真,而IIR存在频率色散的问题,所以FIR滤波器获得了更广泛的应用。
3.1.2 FIR数字滤波器基本结构
FIR滤波器输入,输出响应函数如下[17]:
k=0,1,2,……,N-1
其中N为滤波器阶数,h(n-k)为FIR数字滤波器的系数。
(1)直接型FIR数字滤波器结构:
下图(3.1)给出了N阶LTI型FIR滤波器的图解。可以看出FIR滤波器是有一个“抽头延迟线”加法器和乘法器的集合构成的。传给每个乘法器的操作数就是一个FIR系数,显然也可以称作“抽头权重”。因此该结构也称为“横向滤波器”。
图3.1 直接型FIR数字滤波器结构
直接FIR模型的一个变种称为转置式FIR滤波器,它是根据转置定理定义如果将网络中所有支路的方向倒转,并将输入x(n)和输出y(n)互换,则其系统传递函数H(n)不变。其转置结构见下图(3.2)。转置式滤波器通常是指FIR滤波器的实现。该滤波器的优点在于我们不再需要给x(n)提供额外的移位寄存器,而且也不必要为达到高吞吐量给乘积的加法器(树)添加额外的流水线级。
图3.2 转置式FIR滤波器结构
(2)级联型
如下二阶实系数因子形式:
便可得二阶级联结构。这种结构每一节控制一对一零点,因而在需要控制传输零点时可以采用。但相应的滤波系数增加,乘法运算次数增加,因此需要较多的存储器,运算H寸间也比直接型增加。
(3)线性相位FIR系统的结构
在许多应用领域,例如通信和图像处理中,在一定频率范围内维持相位的完整性是一个期望的系统属性。因此,设计能够建立线性相位—频率功能的滤波器是必须遵循的规范。系统相位线性度的标准尺度就是“组延迟”,其定义为:
完全理想的线性相位滤波器对于一定频率范围的组延迟是一个常数。可以看到如果滤波器是对称或者反对称的,就可以实现线性相位。
线性相位(相移)表示一个系统的相频特性与频率成正比, 由于不同频率传输速度都一样,所以信号通过它产生的时间延迟等于常数k所以不出现相位失真,对一个数字系统来说,即:
可以证明,线性相位条件为:
即如果单位脉冲响应h(n)为实数,且具有偶对称或奇对称性,则FIR数字滤波器具有严格的线性相位特性。其对称中心在 处。当N分别为奇数和偶数时,其网络结构可以分别用图3.3 (a), (b)的信号流图来实现。由该信号流图可以看出,线性相位结构比直接实现形式少用 个乘法器。
图3.3 线性相位FIR滤波器结构
(a)N=7,(b)=6
3.1.3 FIR数字滤波器设计原则
FIR滤波器设计方法以直接逼近所需离散时间系统的频率响应为基础。设计方法包括窗函数法和最优化方法(等同波纹法)。其中窗函数方法是设计FIR数字滤波器最简单的方法,也是最常用的方法之一[18]。
1. 采用窗函数方法设计线性相位FIR滤波器的方法
任何数字滤波器的频率响应 都是w的周期函数,它的傅立叶级数展开式为:
(3-1)
其中,
傅立叶系数h(n)实际上就是数字滤波器的冲激响应。获得有限冲击相应数字滤波器的一种可能方法就是把(3-1)式的无穷级数截取为有限项级数来近似,而吉布斯现象使得直接截取法不甚令人满意。
窗函数法用被称为窗函数的有限加权系列{w(n)}来修正式(3-1)的傅立叶级数,以求得要求的有限冲激响应序列 ,即有:
是有限长序列,当n>N-1及n<0时,w(n)=0。这里我们仅以冲激响应对称,即 时低通滤波器为例进行说明。低通滤波器的频率响
应函数 如下式所示。
,
在 时为0,其中 为对抽样频率归一化的角频率, 为归一化截止角频率。
利用反傅立叶变换公式求出对应的冲激响应 为:
2. 几种窗函数及窗函数选择原则
设计FIR滤波器常用的窗函数有:矩形窗函数、三角(Bartlett)窗函数、汉宁(Hanning)窗函数、海明(Hamming)窗函数、布拉克曼(Blackman)窗函数和凯塞(Kaiser)窗函数。具体指标参见下表(3.1):
表3.1 窗函数指标
窗的类型 最大旁瓣幅度
(相对值) 过度带宽度 最大逼近误差
等效Kaiser窗
矩形 -13
-21 0
Bartlrtt -25
-25 1.33
Hanning -31
-44 3.86
Hamming -41
-53 4.86
Blackman -57
-74 7.04
窗函数的选择原则是:
(1) 具有较低的旁瓣幅度,尤其是第一旁瓣幅度。
(2) 旁瓣幅度下降速度要快,以利增加阻带衰减。
(3) 主瓣的宽度要窄,以获得较陡的过渡带。
通常上述几点很难同时满足。当选用主瓣宽度较窄时,虽然得到较陡的过渡带,但通带和阻带的波动明显增加:当选用最小的旁瓣幅度时,虽然能得到匀滑的幅度响应和较小的阻带波动,但是过渡带加宽。因此,实际选用的窗函数往往是它们的折中。在保证主瓣宽度达到一定要求的条件下,适当牺牲主瓣宽度来换取旁瓣波动的减少。
3.2数字匹配滤波器常用设计方案优缺点比较说明
下面将会对几种常用的数字匹配滤波器设计方案的优缺点进行比较说明如下[19]:
(1) 直接形式的滤波器实现
如图(3.4)所示,这种结构主要由移位寄存器、加法器、乘法器组成。这种结构在实际使用的时候可以按照流水线的设计思想,使得加法器分级运算,可以提高处理速度。不过这种结构由于大量的加法器和乘法器,消耗了大量的LC(logic element)资源。
(2) 转置结构的FIR滤波器
如图(3.5)所示,这种结构的好处是不用输入信号X[n]提供额外的移位寄存器,而且没有必要为达到高吞吐量而为乘法器添加额外的流水线级。
(3) 采用分布式算法的FIR滤波器
分布式算法是一项重要的FPGA技术,广泛用于乘积和之中,首先分析一下该算法的数学依据:
式中:c(n)为常量,x (n)是变量。
式中: 表示x[n]的第b位,而x[n]也就是x的第n次采样值,因此
变换求和的顺序,就得到了如下简洁形式:
具体的实现方法是通过一个LUT(查找表)来完成的。每次接收N位输入的向量 ,在N次查询与累加运算之后就可以完成对y的计算。分布式算法的好处是对于阶数不高的滤波器占用资源少。缺点是随着级数的增加,LUT会变得很庞大,甚至不可实现。另外,由于每进入一位数据要进行N次查询和累加运算才能得到最后的结果,所以对时钟速度要求很高。
(4)折叠式滤波器设计
如(3.6)所示,折叠式FIR滤波器是在转置结构滤波器的基础上发展起来的,与转置结构滤波器不同的地方在于:FIR滤波器是依靠提高系统工作时钟来完成乘法器和加法器的复用,相对其他结构最合适实现匹配滤波器。其资源消耗主要和下面因素有关:伪码长度、过采样率、信号量化的位宽、折叠的次数。下面以码长127,四倍伪码采样率,8位量化,四次折叠为例来说明一下这种滤波器的实现方法: 本地伪码存储在FIR滤波器当中,每四个时钟周期采集一次数据,每个时钟周期更换一组码。由于本地伪码只有“0”和“1”,因此可以使用带符号的加法器,根据“0”和“1”的情况改变输入信号的符号,放弃使用乘法器,可以大大节省硬件资源。
整个系统的工作速度主要取决于加法器和移位寄存器的工作速度。对于码长很大的序列,可以适当增加折叠次数,以提高系统的工作时钟来减少资源消耗。
从以上方案中可以得出,在这些传统的匹配滤波方案中,采用折叠滤波方法可以大大节省FPGA 资源,提高系统整体运算速度,有利于现实中的实际生产。所以,本论文采用折叠式匹配滤波器来实现。接下来将会详细讨论本人所采用的折叠式滤波器详细方案。
第四章 匹配滤波器的FPGA详细设计方案
4.1 方案采用说明
第三章(3.2)小节比较了常用的数字滤波器方案的优缺点。从中可以看出:
传统FIR结构的匹配滤波器,其设计过程较为复杂,特别是当级数很高时,它的加法结构很难实现,资源耗费非常大,所以一般不采用。
倒置FIR滤波器结构实现容易,在实际捕获匹配滤波器设计中用得较多, 但耗费资源也非常大。若以一个作4倍过采样、伪码长度为256、采样值用8-bit表示的输入数据流为例子来说明,用倒置FIR 滤波器结构设计捕获的匹配滤波器将耗费大约4096 个Slices(Xilinx Virtex II);
同时采用并行匹配滤波器的效果跟倒置FIR滤波器实现的效果基本一致。
如果选用“折叠式”FIR结构的折叠式匹配滤波器,其消耗的资源仅为倒置FIR滤波器结构的1/4,节省了3/4的FPGA资源,并且可以缩短捕获时间,有利于在实践生产中的应用。
所以在本论文设计过程中,采用折叠式匹配滤波器,下面将会详细介绍该匹配滤波器的设计方案。
4.2 匹配滤波器模块划分
4.2.2 方案整体叙述
具体的折叠式匹配滤波器结构图如图(4.1)所示,在该结构图中核心部分是整个折叠滤波结构和累加器部分。扩频码存储在FPGA的RAM区,上图中的扩频码是以128位的M序列,同理,扩频码序列的长度可以根据需要设置,例如可以设置为:16、32、64、128、256、512、1024……都可以。下面就以扩频码长度为128来进行说明。
为了得到四分之一的码片捕获精度,可以采用四倍采样,该折叠式匹配滤波器由32个抽头和32个RAM存储区组成,本地扩频码的每一个码元就可以存储在该RAM区,每一个RAM区的深度为4。
采用该折叠式匹配滤波方法,每4个时钟周期对应采样一个数据。在第一个时钟周期,即第一个上升沿到来时,扩频码Code0、Code1、Code2……Code31同时被加载到滤波器抽头上,同时在Code0的累加器中注入一个0,当各级抽头系数为0时,相应累加器的结果为前级累加值加上信号值,当各级抽头系数为1时,相应的累加器的结果为前级累加值减去接收信号值,在本周起结束后加法器结果送入移位寄存器和保持寄存器中。在第二个时钟周期(即第二个上升沿)到来时,扩频码Code32、Code33、Code34……Code63被加载到相应的滤波器抽头上,此时Code32的累加器的输入来自保持寄存器送来的结果,同理在本时钟累加结束后,累加器的结果也会被送到移位寄存器和保持寄存器。随后的周期运算过程都是如此。知道第4个周期结束后,折叠式匹配滤波器得到一个完全相关的结果并送到输出。
4.2.3 方案细节确定
为了在本论文中,能够方便显示结果的正确性,采用了16位码长的M序列,这样的话,扩频码序列较短,方便用计算机出来的仿真结果与手工计算的结果进行对比,方便演示本设计的正确与否。即在本设计中,折叠式匹配滤波器的结构框图(4.2)可以描述如下:
1.软件平台选择
本设计的软件平台通过Xilinx公司开发的配套软件ISE进行,采用应用广泛的VHDL硬件描述语言来进行设计。
VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多硬件特征的语句外,VHDL的风格和语法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项设计实体分成外部和内部,外部是可视的,是端口,内部是不可视的,是内部功能和算法的完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成之后,其它的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
2.扩频码选择
扩频系统中,不仅要求伪随机序列的随机性好,周期长,不易被外界检测等特性,而且要求可用的伪随机码数要多,因为扩频通信本身具有码分多址的特点。可用的伪码数越多,组网的能力就越强,抗干扰,抗窃听的能力也就越强。m序列具有很好的为随机性,和相关性,但m序列的条数相对较少。而采用M序列不仅比m序列在相同级数移位寄存器的长度多一位,而且产生的序列数远远超过了m序列。故M序列很适合用在扩频接收机中。
本方案采用M序列,M序列是在m序列的基础上构造而成的。为了在本论文中能够较容易地说明本论文设计的折叠式匹配滤波器出来结果的正确性,在本论文中采用了n=4的M序列,这样码个数较少,方便手工运算和计算机仿真出来的结果相比较。
选定一个 的本原多项式,则可以得到 个m序列,然后可以在100……0状态后插入0状态,就可以构成M序列,该M序列的个数为: 个。
本设计中采用的M序列构造说明:
取 的m序列的本原多项式为: ,或者
可以表示成: 。则构成的M序列俄反馈逻辑函数为:
M序列发生器电路图如图(4.3)所示:
图4.3 四级M序列发生器
设初始状态为1111,则其状态过程如下表(4.1)所示。由此可见,全“0”检测电路的作用只是在两个状态有效:一是在(1000)时,检测出 x1=x2=x3=0,则输出一个“1”,与第4为 x4=1进行模2加后得到下一状态,即变为全“0”状态,二是在全“0”状态,使下一个状态的 x1=1。而对于其他状态,由于m序列只是一个n-1长的“0”游程,全“0”检测电路不起作用。最后产生的M序列为:1111000010011010 。
表4.1 四级M序列状态转移表
时 序 X1 X2 X3 X4 时 序 X1 X2 X3 X4
0 1 1 1 1 8 1 0 0 1
1 0 1 1 1 9 1 1 0 0
2 0 0 1 1 10 0 1 1 0
3 0 0 0 1 11 1 0 1 1
4 0 0 0 0 12 0 1 0 1
5 1 0 0 0 13 1 0 1 0
6 0 1 0 0 14 1 1 0 1
7 0 0 1 0 15 1 1 1 0
3.前端输入数据处理
在低信噪比的情况下,送入匹配滤波器的数字信号有3 bit就足够了。因此,可以将来自数字下变频器的8 bit二进制补码信号截断为3 bit,这样,就可以在保证性能的同时,硬件规模大大减少。因此,在本设计中,数据输入的宽度可以设置为3(即为:IndataWidth:=3)。
4。运算数据表示方式选择
在该折叠式匹配滤波器的运算过程中都采用有符号数来进行,在硬件描述语言VHDL中可以表示为:Signed(datawidth),这些数据在运算的时候均采用补码形式来进行的。
下面讨论将输入的数据采用二进制补码方式运算会不会给系统带来偏差。
表4.2 二进制补码的偏移运算
数据 二进制补码偏移值
011 3
010 2
001 1
000 0
111 -1
110 -2
101 -3
100 -4
如上表(4.2)所示,若在匹配滤波器的入口处,将多bit二进制补码信号截断为3 bit。而由于n bit二进制补码表示数的范围是: ~ ,当把关于y轴正负对称的信号量化为二进制补码的时候,会出现负数绝对值变大的情况,这种相对偏差在二进制数位较短的时候表现更为明显。如:3 bit量化,最大正数为:+3,最大负数为:-4,其相对偏差远比8 bit量化时+127和-128之间的相对偏差大的多。在进行某些运算时(如:减法运算),偏差将会相互抵消,不产生影响;但进行另外一种运算时(如:相加运算),将会使得偏差增大。不过,对于数字下变频器进来的3 bit二进制补码基带信号,要在前端处理单元变换成二进制补码,输出的3 bit二进制补码,取值有效范围在: 。这样在后续相加处理的时候,偏差可以忽略,不会给系统带来太大影响。
5.累加器的数据宽度
数字滤波器的移位寄存器每一级抽头进行1次乘法运算,结果输出到累加器进行累加,当运算到最后一级时,输出累加结果,送入门限判决器进行判决。
当2个二进制补码相加时,若2个加数都为B bit,考虑到数据可能溢出,则加法器的输出只需要(B+1)bit;当3个bit二进制补码相加时,输出则需要(B+2)bit。通过观察可以发现一个规律: 个B bit二进制补码的值可以用(B+N)bit二进制来表示。
所以在本设计中,每得到一个输出结果均是有16( )个输入的3 bit采样数据通过累加器运算得到,所以累加模块输出结果的数据长度为:4+3=7 位。
6.折叠滤波器阵列
匹配滤波阵列及累加器单元是整个匹配滤波器的核心,也是占用资源最多的部分。匹配滤波器阵列完成输入扩频信号与本地伪码的匹配。对于QPSK调制,信号通道中包含I、Q两路信号,在发送端,分别对两路信号进行扩频处理,在接收端,也要分别对两路信号进行相应的解扩处理。因此,匹配滤波器中必须包含I、Q两路独立的子匹配滤波器通道。Q路的匹配滤波器阵列与I路的匹配滤波器阵列完全相同,下面以其中的一路为例来进行讨论。
由于此处采用的是0、1的二进制系统,所以将逻辑0映射为实际电平+1V,将逻辑1映射为实际电平-1V。因为本地PN码的电平只有+1和-1,所以通过这种映射,可以简化运算。
图4.4 匹配滤波器阵列结构
如上图(4.4)所示,现将匹配滤波器阵列和累加器,分为两种情况进行分析:
(1)如果匹配滤波器仅仅用于扩频信号的快速捕获,即在同步阶段不需要调剂任何信息的话,则对于任意一段长度的数据段均为相同的伪码序列,只是初始相位不同而已。此时,可以采用“动静互换”的方法,将输入数据存入FPGA内固有的RAM区,而以本地的PN码循环移位与输入的数据逐位相乘,即滑动本地序列来搜索同步相位(匹配相关)。
(2)但如果输入匹配滤波器的扩频信号是经过调制的有数据信息的序列,即每一个扩频码序列“填入”一个信息码元当中,这样由于调制信息的影响,只有在一个信息码元之内,扩频信号的伪码才是完整的、才是和本地伪码匹配的,如果采用“动静互换”的方法,存入RAM区的数据有可能不是一个完整的扩频序列,无法完成匹配解扩的功能。此时,匹配滤波器在电路中要求对扩频信号进行解扩,完成扩频信号的快速捕获,则必须采用固定PN码(本地伪码)用输入的3 bit数据滑过PN码,既可以完成相关捕获功能。
本设计中同样采用第二种方法,即通过在FPGA的RAM区内固定本地扩频伪码序列(PN码),用输入的3 bit信息数据滑过PN码,才能实现相关解扩的功能。
4.2.4 匹配滤波器的模块划分
本设计采用有符号数的二进制补码形式来运算,输入数据为3 bit的采样数据,采用折叠滤波方法来设计。整个匹配滤波器系统可以划分为五个模块:累加器模块、折叠滤波模块、时钟模块、平方相加模块、总调用模块。
各个模块的功能说明如下:
(1) 累加器模块
累加器模块主要是用来实现输入数据和中间结果的累加运算,当加载到抽头的本地扩频码为“0”时,累加器实现输入数据和中间结果相加运算,当加载到抽头的本地扩频码为“1”时,累加器实现输入数据和中间结果的减法运算。
(2) 折叠滤波模块
折叠滤波模块主要是用来把本地扩频码存储在FPGA的存储区,然后在适当的时钟周期加载到相应的抽头上,然后调用累加器模块实现运算,中间不断复用累加器输出的中间结果作为下一个累加器的输入。该模块总体来说,主要是实现了累加模块的复用。
(3) 时钟模块
时钟模块主要是用来计算时钟,每当四个上升沿到来时,相应地输出一个上升沿,该模块主要是与后面的平方相加模块相结合使用。因为本设计的折叠滤波器是每四个时钟周期采样一个数据输入,相应的输出也即为每四个时钟周期得到一个输出。
(4) 平方相加模块
实现的作用类似于平方率包括检波,主要的功能是实现两路信号的平方相加运算。因为本设计的前端输入数字是来自数字下变处理出来的基带信号,包括两路:同相信号和正交信号。因此,需要调用本模块来实现两路信号的平方相加运算。
(5) 总调用模块
总调用模块的作用主要是对前面的各个模块进行总体调用。
下面将会对各个模块进行详细的设计说明。
4.3 匹配滤波器各个模块的实现
4.3.1 累加模块
该模块的作用是用来进行中间结果和输入采样数的有符号数的运算并且实现延时寄存器功能。其核心包括两个部分,一是:有符号数的累加部分;另外一个是延时单元部分。输入数据为3 bit的采样输入数据,输出为:7位的数据。
在Xilinx公司开发的ISE软件里面,使用ISE自带的XST工具综合,当程序编译正确后就可以看到XST工具的检查语法项和逻辑表达项都打上了勾,表示语法编译通过。然后双击“View RTL Schematic”按钮(如图下圆圈部分)就可以看到所编译模块的外部接口表示和内部逻辑结构[20]。
下面是该累加模块的外部接口表示图(4.5)和内部逻辑功能图(4.6):
图4.5 累加器外部引脚图
图4.6 累加器内部逻辑结构图
该累加器中定义了两个进程,一个是用来计算有符号数的累加部分,另外一个是用来实现输出结果的延时部分。下面对这两个部分进行说明。在有符号数的累加部分中, 需要在ieee库中调用一个名为std_logic_arith的包集,在这个包集中就包括了有符号数(signed)和无符号数(unsigned)两种数据类型。无符号数只能表示大于零的数。例如,“0101”表示十进制5,“1101”表示十进制数13。而无符号数则可以表示正数和负数。例如:“0101”表示十进制数5,而“1101”表示十进制 -3 。只有在代码的开头部分声明ieee库中的包集std_logic_arith,才能使用这些数据类型[21]。在累加器中,当进入抽头的本地扩频码为“0”时,程序实现有符号数加法运算,当进入抽头的本地扩频码为“1”时,实现有符号数的减法运算,这样的话就可以把0、1表示的扩频码,映射成相加或者相减运算。下面给出了有符号数累加运算的主要代码:
……………
if(clk’event and clk=’1′) then
if (incode= ‘0′) then
midreg< = signed(midresult) + signed(indata); --抽头系数为“0”时,实现有符号数相加运算;
else
midreg<= signed(midresult) - signed(indata);
end if;
end if;
另外一部分是延时单元,该延时单元的作用类似于D触发器的作用,先定义了一个存储单元,然后把输出结果存放到该存储单元中,并且不断输出该存储单元的第一个数据。核心代码如下:
……………
if(clk'event and clk='1') then
cunchu<=cunchu(1 downto 0)&midreg; --把中间结果存储在存储区域的尾部;
end if;
end process;
Addout<=std_logic_vector(cunchu(2)); --输出存储区域的第一个数据。
下面将给出该累加器的流程图(图 4.7):
图4.7 累加模块的程序流程图
4.3.2 折叠滤波模块
折叠滤波的主要作用是对累加器进行复用。折叠滤波模块主要包括了两个部分。
第一个部分是:把本地扩频码存储在FPGA的存储区,编码控制其输出,由于四倍采样的缘故,每四个上升沿进来系统一个采样数据,因此,可以把本地扩频码分成四组,每到一个上升沿就可以输入一组本地扩频码到滤波器的抽头,也就是说,在下一个采样数据到来之前,前一个数据就可以同存储在FPGA 中的所有本地扩频码进行相关运算,就可以产生一个最大的峰值输出。
在该模块的程序中,(1)numofchips为每一组扩频码的个数,若采用128位的本地扩频码的话,numofchips取值为128/4=32,在本沦为中,扩频码的个数取值为16,相应的numofchips取值为16/4=4;(2)本地扩频码是以常数形式存储在FPGA 的存储区域,常数的定义和设置是为了程序更容易阅读和修改,举个例子来说明,如果将逻辑位的宽度定义为常数的话,只要修改这个常量值就很容易地在程序中改变相应的宽度,从而改变硬件结构。同理,在该模块的设计过程中 ,把本地扩频码定义为常量的话,就可以很方便的随时对扩频码进行修改,方便扩大或者缩小系统容量;(3)控制扩频码的输出采用了“case……when”语句[22],定义了一个临时信号“control”,每到来一个上升沿,control就自动加1,然后就可以运用“case……when”语句控制control在哪个值的时候,输出哪一组本地扩频码。下面给出了这一部分的核心程序如下:
……………
constant rom0: std_logic_vector(0 to numofchips-1):="1111"; --把本地扩频码定义为常量;
constant rom1: std_logic_vector(0 to numofchips-1):="0000";
constant rom2: std_logic_vector(0 to numofchips-1):="1001";
constant rom3: std_logic_vector(0 to numofchips-1):="1010";
……………
case control is
when "00"=>code< =rom0;
when "01"=>code< =rom1;
when "10"=>code< =rom2;
when others=>code< =rom3;
end case;
第二个部分是:对累加器的复用部分。该部分主要使用了VHDL硬件描述语言中的生成语句“for……generate”和元件例化语句。(1)元件例化语句由两部分组成,前一部分是对一个已经设计好的实体定义为一个元件,第二个部分是在当前结构中对此元件进行端口映射。他们的语句表达如下:“Component 元件名……end Component,元件名 port map”语句中“port map”的意思是端口映射的意思,也就是说将例化的元件端口映射成当前设计模块的各个端口[23]。(2)生成语句的作用很大,它有一种复制的作用,在设计的过程中,只要根据某些条件,设定好某一元件或者设计单位,就可以利用生成语句来复制一组或者多组完全相同的元件或者设计好的电路结构。在语法上可以描述成“if……generate,end generate”。该部分在折叠滤波模块的核心语句如下:
……………
component Adder --Adder为累加模块的名称,对它进行元件例化声明;
generic(IndataWidth: integer:=3;
OutdataWidth: integer:=7);
port(clk,clr: in std_logic;
incode: in std_logic;
indata: in std_logic_vector(IndataWidth-1 downto 0);
midresult: in std_logic_vector(OutdataWidth-1 downto 0);
Addout: out std_logic_vector(OutdataWidth-1 downto 0));
end component;
……………
first:Adder port map(clk,clr,code(0),indata,jicun,middle(0));
q:for i in 1 to numofchips-1 generate --采用了生成语句,将例化的累加器模块当成元件使用,复用例化模块;
a:Adder port map(clk,clr,code(i),indata,middle(i-1),middle(i));
end generate;
下面给出了折叠滤波模块的外部引脚图(4.8)如下,输入为3bit的采样数据,输出为7位数据。
图4.8 折叠滤波模块的外部引脚图
该模块的内部逻辑结构图(4.9)如下:
图4.9 折叠滤波模块的内部逻辑结构图
该折叠滤波模块的程序流程图(4.10)如下:
图4.10 折叠滤波模块的程序流程图
4.3.3 时钟模块
时钟模块实现起来不难,它的主要主要作用类似于四分之一的分频器。每四个时钟到来,再输出一个时钟信号,该模块主要是配合后面的平方相加模块使用的。其核心语句说明如下:
……………
if(clr='1') then
count<="00";
elsif(clk'event and clk='1') then
if(count="11") then -- count用作计数;
clk4out<='1';
else
clk4out<='0';
end if;
count<=count+1;
end if;
其外部引脚图(4.11)如下:输入为时钟信号clk,输出为分频后的时钟信号clk4out:
图4.11 时钟模块的外部引脚图
其内部逻辑结构图(4.12)如下:
图4.12 时钟模块的内部逻辑结构图
下面给出时钟模块的流程图(4.13):
图4.13 时钟模块的程序流程图
4.3.4 平方相加模块
由于前端输入数据为经过采样处理的基带信号,基带信号有两路I(t)和Q(t),一路是同相信号,另外一路是正交信号,用数学公式[24]表示如下:
平方相加模块主要是对这两路信号进行平方相加,得到: 。其作用也就是实现平方率包络检波的过程 。
在编程的过程中,主要调用了ieee库中的乘法函数模块和加法函数模块,比较容易实现。不过要注意一点的是,在该模块的运算的过程中,数据都是以有符号数来表示的,实现起来也就是以补码形式来进行运算。所以进来的数据都要进行有符号数的转换,用到Signed()函数。其核心程序描述如下:
……………
if(clr='1') then
y:=(others=>‘0′);
elsif(clk’event and clk=’1′) then
y:=signed(idatain)*signed(idatain)+signed(qdatain)*signed(qdatain)+zero;–有符号数的平方再相加运算;
end if;
还有编程过程中要注意的一点是:在进程process()语句的敏感量表中要添加两个输入信号,即可以描述成:process(clk,clr,idatain,qdatain),否则当输入信号改变时,输出的结果无法立即进行相应的变动。这个细节在编程过程中是要注意的。
该模块的外部引脚图(4.14)如下,进来的是两路信号,然后得出结果进行输出。
图4.14 平方相加模块的外部引脚图
其内部的逻辑结构图(4.15)如下所示:
图4.15 平方相加模块的内部逻辑结构图
平方相加模块的流程图(4.16)如下:
图4.16 平方相加模块的程序流程图
4.3.5 总调用模块
总调用模块主要是对前面各个模块的调用实现,该模块主要使用了元件例化语句。由于四倍采样的 缘故,故输入信号每四个时钟变一次,因此得到的输出结果也会每四个时钟输出一个,也就是说,要对平方相加模块的时钟进行调整,它的时钟信号为系统时钟信号的四分之一,这也就是需要调用时钟模块的原因。
该模块的核心程序描述如下:
……………
begin
t: Timer port map(clk,clr,clk4);
i: Matched_Filter port map(clk,clr,idata,iout);
q: Matched_Filter port map(clk,clr,qdata,qout);
s: Square port map(clk4,clr,iout,qout,dataout);
所以系统的整体外部引脚图(4.17)如下,输入数据为两路的基带信号。
图4.17 总调用模块的外部引脚图
系统的内部路基结构图(4.18)如下,其中包括了复用两个折叠滤波模块、一个时钟模块和一个平方相加模块。
图4.18 总调用模块的内部逻辑结构图
第五章 匹配滤波器的电路综合与仿真结果分析
5.1 仿真综述
数字电路设计中一般流程包括代码输入、综合、实现等3个比较大的阶段。用硬件描述语言VHDL编写程序完成之后,为了验证所编译的程序是否正确、是否符合编程要求,需要将这些编写好的程序在硬件描述语言的模拟器上进行仿真,这些模拟器就叫做仿真工具。本论文设计的过程中,用到的仿真工具是modelsim仿真工具。Modelsim仿真个器在FPGA/CPLD设计中使用得比较广泛。根据设计阶段的不同,仿真可以分为RTL行为级仿真、综合后门级功能仿真和时序仿真等3大类型。
Modelsim是一个独立的仿真工具,它在工作的时候并不需要其他软件的帮助,在Xilinx公司的ISE集成开发环境中给Modelsim仿真软件预留了接口,通过这个接口可以从ISE集成环境中直接启动Modelsim仿真软件工具进行仿真。其实ISE并没有集成Modelsim,只是给Modelsim预留了接口,方便调用其运行。
使用Modelsim工具进行仿真必须具备三个条件:第一,启动ISE集成开发环境并且建立了一个FPGA项目;第二,添加设计源代码并且编译通过;第三,使用ISE的“Test Bench Waveform”工具为当前设计提供一个测试模板(Testbench)。
下面将会详细介绍仿真的具体过程。
5.2 Modelsim仿真操作流程
(1)在ISE集成环境中,新建立工程项目,添加设计程序源代码,并且要编译通过。举个例子,此时要对本设计中的累加器进行仿真,累加器模块(Adder)编译好之后,在ISE中的综合工具XST会打上勾,表示语法编译和逻辑编译通过,如下图(5.1)所示:
图5.1 Modelsim仿真操作流程(一)
(2)使用ISE的测试激励生成器(HDL Bencher)编写测试激励文件。测试激励文件的作用就好比一个激励源,对所编译的模块提供激励源,以供其仿真所用。选择所要仿真的模块,如现以累加模块为例,在工程项目上点击右键,选择“New Source”以后,在左边的选择框里面选择“Test Bench Waveform”,然后填入测试激励文件的名称,点击“下一步”即可。如下图(5.2)所示:
图5.2 Modelsim仿真操作流程(二)
(3)然后对所要测试文件做一些参数调整,如下图(5.3)所示,即可以进行仿真。
图5.3 Modelsim仿真操作流程(三)
(4)接下来,在ISE中,对所要仿真的模块输入一些数据后,在左下方的“Modelsim Simulator”一栏中选择“Simulate Behavioral Model”就可以调用Modelsim进行行为仿真。如下图(5.4)所示:
图5.4 Modelsim仿真操作流程(四)
(5)下面是累加模块的Modelsim行为仿真图(图 5.5),接下来就可以分析程序的正确性。
图5.5 Modelsim仿真操作流程(五)
5.3 匹配滤波器各个模块的仿真数据分析
5.3.1 累加模块的仿真数据分析
累加器中进行的是有符号数的累加运算,运算过程中的所有数据均为有符号数。下面的行为仿真结果图中的数据均是以十进制来显示的。这样方便直观,容易计算。该累加模块的原理是这样的,置位信号“clr”为0的时候赋予中间结果一个0值,为“1”的时候,模块开始工作,由于模块包含了一个“延时单元”所以看到仿真图的前两个时钟,是没有输出结果的,第一个结果为“clr”信号为0时,赋予输出的0值,第一个0值以后的结果均为累加模块的正常工作输出结果。
累加模块正常工作时,若本地存储的扩频码(incode)为“0”值,模块实现“midresule”和输入采样数据“indata”相加运算;当indode为1值时,模块实现“midresule”和输入采样数据“indata”相减运算。
累加模块除了核心的累加运算部分外,还包括一个延时部分,从下面的仿真图可以看出最终从“Addout”引脚出来的结果前面一部分由于延时的作用,正常运算的结果要推迟三个时钟(即上升沿的时间)才能从“Addout”引脚送出来。实现延时功能的部分在该模块的设计中,采用了能存储三个数据的数组来实现,数据采用先进先出的形式传送。具体实现效果如下图(5.6)所示:
图5.6 累加模块的仿真图
接下来对输入的结果进行手工运算,然后就可以对比仿真输出结果(结果均化为十进制表示),以验证其正确与否。见下表(5.1)所示:
表5.2 累加模块的仿真结果与手工运算结果对比验证
Clr置位信号 时钟 Incode(本地扩频码值) Midresult(中间输入值) Incode(采样输入值) 手工运算值 仿真结果
0 1 0 -1 0 -1 + 0 = -1 -1
0 2 1 43 1 43–1 = 42 42
0 3 0 60 2 60+2=62 62
0 4 1 20 -1 20-(-1)=21 21
0 5 1 43 -3 43-(-3)=46 46
0 6 0 43 -3 43+(-3)=40 40
0 7 0 5 -2 5+(-2)=3 3
0 8 1 5 -2 5-(-2)=7 7
0 9 1 5 -4 5-(-4)=9 9
0 10 1 19 0 19-0=19 19
0 11 0 54 3 54+3=57 57
0 12 0 54 -2 54+(-2)=52 52
从结果可以对比到,手工运算结果和仿真结果是完全吻合的。证明该累加模块的累加功能是正确的 。
5.3.2 折叠滤波模块的仿真数据分析
从波形的仿真图可以看出,由于存储在存储区域的扩频码是16位码长的,采样信号进来后,通过modelsim仿真软件的仿真,可以看出,得出的数据中输出相关峰值为16,可以看出,接收信号的相位与本地扩频码的相位完全一致,模块得到的与理论相符。
图5.7 折叠滤波模块的仿真图
5.3.3时钟模块的仿真数据分析
时钟模块的编程原理主要是四分之一分频,每四个时钟输出一个信号。该模块主要是配合后面的平方相加模块来进行数据输入输出的控制的。该模块的Modelsim仿真图如(图5.8)下所示:
图5.8 时钟模块的仿真图
从上面的仿真图可以看出这个模块的正确性。
5.3.4 平方相加模块仿真数据分析
平方相加模块主要是对输入的两个数进行平方相加,其运算的过程也是一个有符号数的运算过程,运算的时候用补码表示。下面是该模块的仿真图(图5.9),数据均用十进制来显示,方便对比。输入数据宽度为7位,输出数据宽度为14位。
图5.9 平方相加模块的仿真图
下面将对这些数据进行分析,见下表(5.2):
表5.2 平方相加模块的仿真结果与手工运算结果对比验证
时钟 Idatain(输入) Qdatain(输入) 手工运算结果 Result(仿真输出结果)
1 -3 19 (-3)×(-3)+19×19=370 370
2 5 27 5×5+27×27=754 754
3 -5 -17 (-5)×(-5)+(-17)×(-17)=314 314
4 -37 -46 (-37)×(-37)+(-46)×(-46)=3485 3485
5 -57 -52 (-57)×(-57)+(-52)×(-52)=5953 5953
6 46 55 46×46+55×55=5141 5141
7 1 -1 1×1+(-1)×(-1)=2 2
8 0 -58 (-58)×(-58)=3364 3364
9 59 -58 59×59+(-58)×(-58)=6845 6845
10 59 19 59×59+19×19=3842 3842
11 33 19 33×33+19×19=1450 1450
12 33 21 33×33+21×21=1530 1530
13 9 -7 9×9+(-7)×(-7)=130 130
从上述表格中可以看出,手工运算的结果跟仿真出来的数据是完全一致的。由此可以看出,该模块的基本功能是符合设计要求的。
5.3.5总调用模块仿真数据分析
总调用模块是对前面各个模块的总体调用。前端进来的数据是四倍速率采样的,也就是说每四个上升沿进来一个3bit的数据,这些数据经过折叠滤波模块得到一个7bit的滤波值,7bit的滤波值再经过平方相加模块,得到平方率包络检波的效果,最后得到的是14位的数据。
为了验证整体模块的行为仿真正确性,下面将会详细说明。
首先从引脚“idata”进来的数据为别为:111、110、010、000、110、010、101;化成有符号数的十进制表示为:-1、-2、2、0、-2、2、-3;从引脚“qdata”进来的数据分别为:101、001、100、101、001、010、111;化成有符号数的十进制表示为:-3、1、-4、-3、1、2、-1;输入的数据如下面的仿真图(图 5.10)所示,其中“dataout”出来的数据,是前面的数据经过折叠滤波模块和平方相加模块最后得到的值。接下来会把看不到的中间结果进行手工运算然后再对比仿真数据。
图5.10 总调用模块的仿真图
引脚“idata”的信号“-1、-2、2、0、-2、2”经过折叠滤波模块分别输出为:1、1、-5、1、5、-9;引脚“qdata”的信号“-3、1、-4、-3、1、2”经过折叠滤波模块分别输出为:3、-4、2、3、-12、-2;这些中间结果是看不到的。见下表(5.3)所示:
表5.3 总调用模块的仿真数据验证
Idata引脚的滤波值 Qdata引脚的滤波值 经过平方相加模块的手工运算值 仿真数据
1 3 1×1+(-3)×(-3)=10 10
1 -4 1×1+(-4)×(-4)=17 17
-5 2 (-5)×(-5)+2×2=29 29
1 3 1×1+3×3=10 10
5 12 5×5+12×12=169 169
-9 -2 (-9)×(-9)+(-2)×(-2)=85 85
由此可以对比得到手工运算的值和仿真数据值是完全一致的,可以判断得出整体模块的行为功能是符合要求的。
仿真出来的相关峰值能量,它是I、Q两路信号的平方和。但在实际中,由于前端信号可能存在噪声,再加上前端的信号都是四倍速率采样的,实际的峰值可能会下降一些。
5.4 匹配滤波器整体系统性能
当存储在FPGA内的扩频码为16位的时候,在ISE集成软件中,可以看出该匹配滤波器的整体性能。该工程项目所用的器件如下图(5.11)所示,器件名称为:VirtexE xcv600e;速度级别为:-6;
图5.11 匹配滤波器的参数设置图
当前占用的FPGA资源如下图(5.12)所示:
图5.12 匹配滤波器的资源占用
从上图可以看出,折叠式匹配滤波器占用FPGA资源较少,当存储在FPGA的rom中的扩频码长度为16是,能够大大地减少FPGA资源的开销,但是随着本地扩频码长度的增长,匹配滤波器占用FPGA资源也会随着增大,相对与其他直接实现的匹配滤波器、转置形式的匹配滤波器和基于分布算法的匹配滤波器来说,采用折叠式都要节约FPGA资源并且可以提高系统整体的速度。
第六章 结论
扩展频谱通信系统由于具有抗干扰、低截获率、可实现码分多址和抗多径效应等特点,在民用、商用和军事领域已经得到广泛应用。扩频系统的解扩是数据解调的前提,要实现解扩就必须是接收机的本地扩频码序列与接收到的扩频码序列相位一致,这就是伪码同步,同步包括:捕获和跟踪。目前对伪码初捕获的常用方法有两种:滑动相关法和匹配滤波法。匹配滤波法的显著优点是:速度快、捕获时间短、容易实现快速捕获;缺点是:当伪码较长时,设计所耗费的FPGA资源较大。
本文主要针对匹配滤波器选用了折叠式匹配滤波法来实现,现在对工作总结如下:
(1)采用VHDL硬件描述语言完成了折叠式匹配滤波器的设计,该匹配滤波器可以根据需要选用不同的扩频码,码长在FPGA资源足够的情况下,可以任意选取。当然越长的扩频码,所消耗的FPGA资源也就越大。在本设计中,选用了四倍采样速录,这样的话,前端输入的数据长度可以设定为3bit;把扩频码分为四组,每到一个上升沿,把其中一组的扩频码输入到抽头系数中。扩频码中的“0”和“1”在程序设计的过程中,可以相应映射为:加法和减法运算。最后得到的相关值经过平方相加模块实现平方率包络检波后输出。所设计的折叠式匹配滤波器可以很好的实现伪码捕获并且所用的FPGA资源在众多方案中是较少的,运算速度也是比较快的。
(2)在设计的过程中,巩固了对硬件描述语言VHDL的掌握程度。更深程度的了解了VHDL的各种语法描述,语句使用方法。VHDL是一门广泛使用的硬件描述语言,究其原因在于它是一种标准语言,是与工具和工艺无关的,从而可以方便地进行移植和重用。VHDL语言的两个最直接的应用领域是可编程逻辑器件和专用集成电路,其中可编程逻辑器件包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。所以,对VHDL语言的熟练掌握对于今后的开发工作是有很大帮助的。
(3)在设计的过程中,熟练了对各种软件的使用,特别是Xilinx公司开发的配套软件ISE集成开发系统有着广泛的使用,该配套软件功能强大,能够大部分的满足对现场可编程门阵列(FPGA)的开发编程工作。Modelsim的配合使用能够很好为设计提供了强而有力的仿真运算,降低了开发的难度,提高了准确性,使得开发由实体硬件转移到了计算机,扩大了应用范围。
(4)在完成该设计的过程中,更深的理解了各种滤波器的设计开发,对他们的内部结构,更为了解。对于常用的设计方案都有了一个很好的掌握。知道滤波器之间的各种设计参数,选择原则。
(5)在设计中采用了层次化、模块化的设计思想,将整个滤波器划分为多个功能模块,利用VHDL语言和原理图输入两种设计技术进行了各个功能模块的设计,最终完成了折叠式匹配滤波器的系统设计。
(6)折叠式匹配滤波器相对于常规的匹配滤波器设计方案来说要大大的节省资源,提高运算速度,但是,随着本地扩频码长度的增长,FPGA的资源开销也会随着增大,所以在实际应用中要根据实际的需要设置不同的本地扩频码长,选择不同的FPGA芯片。
折叠式匹配滤波器能够很好的满足扩接收机里面的伪码捕获要求,它具有速度快,捕获时间短,提高整体系统速度,满足快速捕获的要求,相对于传统的数字匹配滤波器来说,大大减少了FPGA的资源开销,节约资源;但是,具备这些优点的同时,随着本地扩频码长度的增加,系统资源开销也会随着增大,在实际应用中要根据实际需要选用不同的FPGA芯片来实现不同扩频码长的相关捕获。
参考文献
[1] 曾兴雯,刘乃安,孙献璞. 扩展频谱通信及其多址技术[M]. 西安:西安电子科技大学出版社,2005.32~210.
[2] 丁溯泉, 杨知行, 潘长勇, 郭兴波. 扩频技术:历史、现状及发展[N]. 电讯技术,2005,03,16(2).
[3] 任艳颖,王彬. IC设计基础[M]. 西安:西安电子科技大学出版社, 2003.15~160.
[4] 刘凌,胡永生. 数字信号处理的FPGA实现[M]. 北京:清华大学出版社,2003.21~220.
[5] 王文潇. 扩频通信接收机关键技术的FPGA实现[J].无线电工程,2005,35(6):9~11.
[6] 徐峰,李曙坚. FPGA在基带信号处理中的应用[J]. 电子测量技术, 2006,29(3):80~81.
[7] 王光,田斌,吴勉. 数字匹配滤波器的优化设计与FPGA实现[J]. 国外电子元器件,2006,25(5):70~73.
[8] 王爱华,安建平,黄其华. 高动态条件下PN码扩谱接收机的频率跟踪策略[J]. 电子与信息学报,2004,26(4):586~592.
[9] 陈鹤,邵定蓉. 高动态扩频接收机中数字匹配滤波器的FPGA设计[J]. 通信与计算机,2003,24(3):85~87.
[10] 郭经红,尤肖虎,程时昕. WCDMA系统中匹配滤波器的FPGA实现[J]. 通信学报,2001,22(1):52~57.
[11] 步衍冰,曾兴雯,梁敏超. 基于FPGA的快速匹配滤波器[J]. 无线电工程,2003,33(6):31~33.
[12] 郭晓宇,潘登,杨同中. 基于FPGA实现FIR滤波器的研究[J]. 电子技术应用,2004,24(4):61~63.
[13] 周奕. 匹配滤波器的FPGA实现[J]. 移动通信,2003,25(2):172~176.
[14] 杨奎武,魏博. 扩频通信中匹配滤波器的FPGA设计[J]. 电子设计,2005,21(3):117~119.
[15] 沈业兵,安建平,王爱华. 数字匹配滤波器的递归折叠实现[J]. 北京理工大学学报,2006,26(8):733~736.
[16] W.-C.Lin,K.-C.Liu and C.-K Wang, Differential Matched Filter Architecture for Spread Spectrum Communication Systems[J]. ELECTRONICS LETTERS, 1996,1.32,15th.
[17] 叶淦华. FPGA嵌入式应用系统开发典型实例[M]. 北京:中国电力出版社,2005.80~312.
[18] VladanM.Jovanovic,Member,IEEE,and Elvino S.Sousa,Member,IEEE, Analysis of Non-Coherent correlation in DS/BPSK Spread Spectrum Acquisition[J], IEEE TRANSACTIONS ON COMMUNICATIONS , VOL.43.NO2~4.
[19] 李健, 常青,毕存磊,金科. 扩频接收机匹配滤波器的设计及其FPGA实现[A].全国第三届DSP应用技术和第九届信号与信息处理联合学术会议论文集[C]. 北京:北京航空航天大学出版社,2005.328~330.
[20] 王诚,薛小刚,钟信潮. FPGA/CPLD设计工具——Xilinx ISE使用详解[M]. 北京:人民邮电出版社,2005.260~290.
[21] 乔庐峰,王志功. VHDL数字电路设计教程[M]. 北京:电子工业出版社,2005.71~85.
[22] 潘松,黄继业. EDA技术实用教程[M]. 北京:科学出版社, 2002.60~93.
[23] 徐志军,徐光辉. CPLD/FPGA的开发与应用[M]. 北京:电子工业出版社,2002.128~138.
[24] RUPERT B. The DSP bottleneck[J]. IEEE Comm, 1995,33(5):39~45.
附录一
折叠式匹配滤波器部分程序
附录二
折叠式匹配滤波器RTL视图:
附录三
折叠式匹配滤波器FPGA设计内部逻辑结构图:






