GMSK调制器的FPGA实现毕业论文

更新时间:2024-04-26 07:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编号:

毕业设计(论文)说明书

题 目:GMSK调制器的FPGA实现 学 院: 专 业: 学生姓名: 学 号: 指导教师:

职 称:

题目类型:?理论研究 ?实验研究 ?工程设计 ?工程技术研究 ?软件开发

2012年 5 月 10 日

第 I 页 共 II页

摘 要

GMSK是当前现代数字调制技术领域的研究热点之一,它通过在MSK调制器之前加入一个高斯低通滤波器来获得更加紧凑的频谱, GMSK(高斯最小移频键控)信号优良的频谱特性在跳频通信中有广阔的应用前景。本文分析了GMSK调制器的设计理论,并在FPGA上加以实现。仿真结果表明,这种数字实现结构产生的GMSK基带信号具有良好的功率谱,同时能够有效避免I/Q两条支路信号幅度及正交载波相位失衡。高斯滤波最小频移键控,这是GSM系统采用的调制方式。数字调制技术是数字峰窝移动通讯系统空中接口的重要组成部分。GMSK提高了数字移动通信的频谱利用率和通信质量。本设计基于GMSK调制器相关原理,利用MATLAB/FPGA验证自主设计的GSMK调制电路,在以上基础上,自主设计实现了gmsk调制技术的乘法模块、加法模块和抽样判决模块等,通过信号输出比较分析,验证了gmsk调制算法,达到了系统设计要求,取得了良好效果。

关键词:GMSK;FPGA;MATLAB;数字调制

第 II 页 共 II页

Abstract

GMSK is the current modern digital modulation technology of research in the field of one of the hotspots, It through before joining a MSK modulator in gaussian low-pass filter to get more compact spectrum, GMSK (gaussian minimum frequency shift keying) signal excellent spectrum characteristics in frequency hoppingcommunication have broad application prospects. This paper analyzes the design theory GMSK modulator, And FPGA to realization. Simulation results show that, This digital realization structure produces GMSK baseband signal has good power spectrum, Also can effectively avoid two branch signal amplitude and orthogonal carrier phase unbalanced. Gaussian filtering minimum FSK, This is GSM system USES modulation mode. Digital modulation technique is digital peak nest of mobile communication system is an important part of the air interface. GMSK improved digital mobile communication frequency spectrum availability and communication quality. This design based on the GMSK modulator related principles, use of MATLAB/FPGA validation GSMK modulation circuit of independent design, On the basis of the above, Independent design and realize the multiplication of GMSK modulation technology, addition module and sampling module judgment module, Through comparative analysis of its output signal, Verify the algorithm GMSK modulation, Reached system design requirements, Achieved good results.

Key words: GMSK;FPGA;MATLAB;digital modulation

第 I 页 共 II 页

目 录

1 引言 ................................................................................................................. 1

1.1 GMSK的介绍 ........................................................... 1 1.1.1 历史 ............................................................... 3 1.1.2 应用 ............................................................... 3 1 .2 FPGA介绍 ............................................................ 4 1.2.1背景 ................................................................ 4 1.2.2 FPGA芯片结构 ....................................................... 5 1.2.3 FPGA的基本特点 ..................................................... 8 1.2.4 FPGA配置模式 ....................................................... 8 1.2.5 FPGA的应用 ......................................................... 9 1.2.6最新应用 ........................................................... 10

2 本文的主要结构和内容提要 ......................................................................... 11 3 GMSK信号及其调制方案 .............................................................................. 12

3.1 概述 ................................................................. 12 3.2 调制方式 ............................................................. 12 3.2.1 最小频移键控(MSK) .................................................. 12 3.3 高斯最小移频键控(GMSK) ............................................. 12 3.4 GMSK信号的分析 ...................................................... 14 3.4.1 GMSK调制信号的相位路径 ............................................ 14 3.4.2 数字信号功率谱密度的研究 ........................................... 15 3.4.3 已调波占用带宽 ..................................................... 15 3.4.4 码间干扰ISI ....................................................... 16 3.5 GMSK调制器及其实现 .................................................. 16 3.5.1 差分编码 ........................................................... 17 3.5.2 高斯低通滤波器 ..................................................... 18

4 GMSK调制器的实现方案及其比较 .............................................................. 18

4.1 传统的实现方法 ....................................................... 18 4.2全数字实现方法 ....................................................... 19 4.3 GMSK调制原理结构 .................................................... 20 4.3.1 2FSK调制原理 ...................................................... 20 4.3.2 MSK调制原理 ....................................................... 21

第 II 页 共 II 页

4.3.3 GMSK调制原理 ...................................................... 22

5 GMSK调制器的FPGA实现 ............................................................................ 23 6 调制的仿真及调试分析 ............................................................................... 24

6.1 仿真介绍 ............................................................. 24 6.2 数字通信系统的模型 ................................................... 25 6.3 数字通信系统的仿真 ................................................... 25 6.3.1仿真工具软件 ....................................................... 25 6.4 PSK,MSK,GMSK调制方式的仿真和分析 .................................... 28 6.5 软件调试 ............................................................. 32 6.5.1 差分模块 ........................................................... 32 6.5.2 加权模块 ........................................................... 33 6.5.3载波调制相加模块 ................................................... 34 6.5.4 顶层模块 ........................................................... 34 6.6 硬件调试 ............................................................. 35

7 总结 ................................................................................................................. 37 参考文献 ............................................................................................................. 38 附 录 ................................................................................................................. 39

第 1 页 共 46 页

1 引言

1.1 GMSK的介绍

高斯最小频移键控(GMSK)由于带外辐射低因而具有很好的频谱利用率,其恒包络的特性使得其能够使用功率效率高的C类放大器。这些优良的特性使其作为一种高效的数字调制方案被广泛的运用于多种通信系统和标准之中。

其中包括:

(1)依据欧洲通信标准化委员会(ETSI )制定的GSM技术规范研制而成的全球通(GSM)数字蜂窝移动系统;

(2)由欧洲邮政与电信协会(CEPT)制定的作为欧洲通信标准ETS1300一175的无绳通信标准(DECT);

(3)英国和香港,基于无绳电话(CordlessPhones)和电信点(Telepoint )系统的通信标准,CT-2和CT-3系统;

(4)基于爱立信公司提出的Mobitex协议的,Mobitex系统(欧洲)和RAM移动数据系统(美国);

(5)建立在北美高级移动电话系统(AMPS)上实现无线数据业务的蜂窝数字分组数据(CDPD)系统;

(6)第三代个人通信系统(PCs)中,美国的基于GSM标准的PCS1900;以及欧洲的由ETIS开发和制定的个人通信网(PCN )标准DCSI 800;

(7)作为欧洲无线局域网(WLAN)标准的HiperLAN /1以及如今讨论的很多的作为无线个人网络(WPAN)标准的蓝牙(Bluetooth )系统;

(8)专用系统中有根据国际民肮组织(ICAO)制定的卫星通信、导航、搜索/空中交通管理} CNS /ATM )系统等;

(9)通用分组无线服务(GPRS)以及改进数据率GSM服务(EDGE)作为由第二代通信标准向 第三代通信标准过渡方案也是以GMSK作为其调制方案;

(10)1999年,国际电联ITU着手建立的第三代无线通信标准IMT2000体系。根据不同的应用和技术将其分成5大类:(1)IMT 一DS:基于ETSI的W - CDMA技术,采用直序列扩频技术的CDMA方案;(2)IMT一MC:基于北美的cdmaOne,采用多载波CDMA技术;(3)IMT –TC:基于ETSI的TD - CDMA技术,采用时分双工(TDD )和TDMA / CDMA的多址方式;(4)IMT一SC :基于UWC一136 /EDGE网络;(5)IMT一FT:基于采用FDM.4的DECT技术。其中后三类无线接口的调制方式都采用GMSK技术或者与之兼容。

如上所述,GMSK有着广泛的应用。因此,从本世纪80年代提出该技术以来,广大

1

第 2 页 共 46 页

科研人员进行了大量的针对其调制解调方案的研究。

高斯滤波最小频移键控(Gaussian Filtered Minimum Shift Keying - GMSK)调制技术是从MSK

GMSK

(Minimum Shift Keying)调制的基础上发展起来的一种数字调制方式,其特点是在数据流送交频率调制器前先通过一个Gauss滤波器(预调制滤波器)进行预调制滤波,以减小两个不同频率的载波切换时的跳变能量,使得在相同的数据传输速率时频道间距可以变得更紧密。由于数字信号在调制前进行了Gauss预调制滤波,调制信号在交越零点不但相位连续,而且平滑过滤,因此GSMK调制的信号频谱紧凑、误码特性好,在数字移动通信中得到了广泛使用,如现在广泛使用的GSM(Global System for Mobile communication)移动通信体制就是使用GMSK调制方式。

l979年由日本国际电报电话公司提出的GMSK调制方式。有较好的功率频谱特性,较忧的误码性能,特别是带外辐射小,很适用于工作在VHF和UHF频段的移动通信系统,越来越引起人们的关注。GMSK调制方式的理论研究已较成熟,实际应用却还不多,主要是由于高斯滤波器的设计和制作在工程上还有一定的困难。

频率响应

调制前高斯滤波的最小频移键控简称GMSK,基本的工作原理是将基带信号先经过高斯滤波器成形,再进行最小频移键控(MSK)调制(见右上图)。由于成形后的高斯脉冲包络无陡峭边沿,亦无拐点,因此频谱特性优于MSK信号的频谱特性。

通常将高斯滤波器的3dB带宽B和输入码元宽度T的乘积BT值作为设计高斯滤波器的一个主要参数。BT值越小,相邻码元之间的相互影响越大。理论分析和计算机模拟结果表明。BT值越小,GMSK信号功率频谱密度的高额分量衰减越快。主瓣越小,信号所占用的频带越窄,带外能量的辐射越小,邻道干扰也越小。

2

第 3 页 共 46 页

1.1.1 历史

l979年由日本国际电报电话公司提出的GMSK调制方式.有较好的功率频谱特性,较忧的误码性能,特别是带外辐射小,很适用于工作在VHF和UHF频段的移动通信系统,越来越引起人们的关注。GMSK调制方式的理论研究已较成熟.实际应用却还不多,主要是由于高斯滤波器的设计和制作在工程上还有一定的困难。

功率谱密度

调制前高斯滤波的最小频移键控简称GMSK,基本的工作原理是将基带信号先经过高斯滤波器成形,再进行最小频移键控(MSK)调制。由于成形后的高斯脉冲包络无陡峭边沿,亦无拐点,因此频谱特性优于MSK信号的频谱特性。 1.1.2 应用

GMSK信号具有很好的频谱和功率特性,特别适用于功率受限和信道存在非线性、衰落以及多普勒频移的移动突发通信系统。 为了适应无线信道的特性,由该调制方式所产生的已调波应具有以下两个特点:第一,包络恒定或包络起伏很小。第二,具有最小功率谱占用率。高斯最小频移键控(GMSK)调制方式正好具有上述特性。GMSK调制使在给定的带宽和射频信道条件下数据吞吐量最大。GMSK是当前现代数字调制技术领域研究的一个热点。采用高斯滤波器作调制前基带滤波器,将基带信号成型为高斯脉冲,再进行MSK调制,这种调制方式称为GMSK。由于成形后的高斯脉冲包络无陡峭边沿,亦无拐点,经调制后的已调波在MSK的基础上进一步得到平滑其相位路径。因此它的频谱特性优于MSK,但误比特率性能不如MSK。

Mobitex网络的调制解调器:CMX909B芯片的典型应用是Mobitex网络的调制解调器(MODEM)。它是半双工的BT=0.3的GMSK调制解调器的数据泵,芯片集成了分组数据处理的功能。GMSK调制在给定的带宽和射频信道条件下数据吞吐量最大。集成的分组数据处理能力接收主控制器的一些有规律的处理任务,包括保持比特同步、帧同步、块的编排、循环冗余检测(CRC)和前向纠错编码(FEC)错误处理、数据交织、扰频输出等。解调器采用反馈平衡技术减小信道失真(畸变),同时增强接收机在没有最大似然估计方法的计算前提下的接收性能。

GMSK调制/解调;芯片内集成分组检测功能;接收/发送速率可达38.4kbps;并行uc(主处理器)接口;数据包帧结构短、无填充;低的驱动电压(3/5伏)操作;与Mobitex兼容(包括R14N短帧);操作灵活和节能模式。

3

第 4 页 共 46 页

通常将高斯滤波器的3dB带宽B和输入码元宽度T的乘积BT值作为设计高斯滤波器的一个主要参数。BT值越小,相邻码元之间的相互影响越大。理论分析和计算机模拟结果表明 。BT值越小,GMSK信号功率频谱密度的高额分量衰减越快。主瓣越小,信号所占用的频带越窄,带外能量的辐射越小,邻道干扰也越小。

1 .2 FPGA介绍

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 1.2.1背景

目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简

单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。

4

第 5 页 共 46 页

1.2.2 FPGA芯片结构

目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。如图1-1所示(注:图1-1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构),FPGA芯片主 要由6部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。

图1-1 FPGA芯片的内部结构

每个模块的功能如下:

(1)可编程输入输出单元(IOB)

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-2所示。 FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。

图1-2 典型的IOB内部结构示意图

外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。

为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有 一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。 (2)可配置逻辑块(CLB)

5

第 6 页 共 46 页

CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些 选型电路(多路复用器等)和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图1-3所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。

图1-3 典型的CLB结构示意图

Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图1-4所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现 2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生 器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的两个输入函数为6输入,可以实现6输入LUT或 64比特移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。

(3)数字时钟管理模块(DCM)

图1-4 典型的4输入Slice结构示意图

业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。

6

第 7 页 共 46 页

(4)嵌入式块RAM(BRAM)

大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器 (CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将 FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。

单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽 深度)不能大于18k比特;其次,位宽最大不能超过36比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而 不再受上面两条原则约束。 (5)丰富的布线资源

布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片 Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。 (6)底层内嵌功能单元

内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(SoftCore)。现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。

DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。PLL 和DLL可以通过IP核生成的工具方便地进行管理和配置。DLL的结构如图1-5所示。

7

第 8 页 共 46 页

图1-5 典型的DLL模块示意图

(7)内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。

Xilinx公司的高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目 的。

1.2.3 FPGA的基本特点

(1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。

(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 (3)FPGA内部有丰富的触发器和I/O引脚。

(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 (5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

1.2.4 FPGA配置模式

FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模

8

第 9 页 共 46 页

式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。

如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。

例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。

幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度地帮助系统设计工程师以更快、更高效的方式应用65nm FPGA器件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛,最近FPGA的配置方式已经多元化。

1.2.5 FPGA的应用

(1)电路设计中FPGA的应用

连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石.事实上在电路设计中应用FPGA的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术,新产品的开发成功的产品将变成市场主流基础产品供产品设计者应用在不远的将来,通用和专用IP的设计将成为一个热门行业!搞电路设计的前提是必须要具备一定的硬件知识.在这个层面,干重于学,当然,快速入门是很重要的,越好的位子越不等人电路开发是黄金饭碗. (2)产品设计

把相对成熟的技术应用到某些特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户接受的产品这方面主要是FPGA技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能,后者对价格敏感产品设计以实现产品功能为主要目的,FPGA技术是一个实现手段在这个领域,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计将是FPGA技术应用最广大的市场,

9

第 10 页 共 46

具有极大的爆发性的需求空间产品设计对技术人员的要求比较高,路途也比较漫长不过现在整个行业正处在组建"首发团队"的状态,只要加入,前途光明产品设计是一种职业发展方向定位,不是简单的爱好就能做到的!产品设计领域会造就大量的企业和企业家,是一个近期的发展热点和机遇 (3)系统级应用

系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用Xilinx V-4, V-5系列的FPGA,实现内嵌POWER PC CPU, 然后再配合各种外围功能,实现一个基本环境,在这个平台上跑LINUX等系统这个系统也就支持各种标准外设和功能接口(如图象接口)了这对于快速构成FPGA大型系统来讲是很有帮助的。这种"山寨"味很浓的系统早期优势不一定很明显,类似ARM系统的境况但若能慢慢发挥出FPGA的优势,逐渐实现一些特色系统也是一种发展方向。若在系统级应用中,开发人员不具备系统的扩充开发能力,只是搞搞编程是没什么意义的,当然设备驱动程序的开发是另一种情况,搞系统级应用看似起点高,但不具备深层开发能力,很可能会变成爱好者,就如很多人会做网页但不能称做会编程类似以上是几点个人开发,希望能帮助想学FPGA但很茫然无措的人理一理思路。这是一个不错的行业,有很好的个人成功机会。但也肯定是一个竞争很激烈的行业,关键看的就是速度和深度当然还有市场适应能力。

1.2.6最新应用

北京时间2010年12月30日消息,美英两国科学家联合开发了一款运算速度超快的电脑芯片,使当前台式机的运算能力提升20倍。

当前的个人电脑使用双核、4核、16核处理器来执行各项任务。如今,美英研究人员开发的中央处理器(CPU)将1000个内核有效集成于一个芯片上。这项突破或将在今后几年开启一个超高速运算的新时代,使家庭用户不再对运行缓慢的电脑系统感到沮丧。虽然速度更快,但由于新型“超级”电脑的能耗远低于当前电脑,所以更加环保。

研究人员采用了一种名为“现场可编程门阵列”(以下简称“FPGA”)的芯片,使得微晶片就像都含有数百万个晶体管一样,而晶体管则是任何电路的基本组成部分。不过,FPGA芯片可由用户安装到特定电路,它们的功能不是在出厂时就设定好的。这样一来,用户可以将晶体管划分成一个个“小群体”,要求每个“小群体”完成不同的任务。

通过在FPGA芯片内创建逾1000个微电路,研究人员便将这个芯片变成了1000个内核的处理器——每个内核都可以遵照自己的指令工作。在测试中,FPGA芯片每秒能处理5GB的数据,处理速度大概相当于当前台式机的20倍。这项研究由英国格拉斯哥大学的韦姆·范德堡韦德(Wim Vanderbauwhede)博士和美国马萨诸塞

10

第 11 页 共 46

大学卢维尔分校的同行共同实施。

范德堡韦德说:“FPGA芯片没有应用于标准电脑上,原因是对FPGA芯片编程相当困难。FPGA芯片的处理能力强大,由于速度更快,能耗相当低,是我们更为环保的选择。”虽然当前市场上销售的电脑大多数内核超过一个,可以同时实施不同任务,但传统多核处理器只能共用一个存储源,这降低了运算速度。范德堡韦德的研究团队给每个内核分配一定量的专用存储空间,从而加快了处理器的运算速度。

一名用户坐在运算速度很慢的台式机前面,看上去一筹莫展。在测试中,FPGA芯片每秒能处理5GB的数据,处理速度大概相当于当前台式机的20倍

范德堡韦德博士说:“这只是初期概念验证研究,我们试图展示对FPGA编程的便捷方式,令其超高速处理的潜力可以更为广泛地应用于未来的运算器和电子设备上。虽然现有许多技术充分使用FPGA芯片,如等离子电视、液晶电视和电脑网络路由器,但它们在标准台式机上的应用却十分有限。

但是,我们看到,包括英特尔和ARM在内的一些厂商已经宣布将开发集成传统CPU与FPGA芯片的微晶片。我认为此类处理器会得到更广泛的应用,有助于在今后几年进一步提升电脑运算速度。”范德堡韦德希望在2011年3月应用重构运算国际研讨会上详细介绍他的研究发现。

2 本文的主要结构和内容提要

本文在深入研究基于前人所作的工作后,尝试利用等增益输出组合,判决反馈均衡以及非冗余纠错技术来提高GMSK调制的性能。以满足当今移动通信对通信设备小型化,低成本的需求。尽量简化设计方案减少复杂度,以期望降低今后利用数字信号处理器实现的难度。

在引入GMSK概念之后,分别从时域一相位路径和频域一功率谱密度对GMSK信号进行了分析。阐述了由于预调制高斯低通滤波器带来的码间干扰的问题,介绍了差分编码技术。最后还具体介绍几种实用的GMSK调制器的实现方案。

利用计算机仿真分析GMSK各种调制方案和无线传输环境下的性能。根据GMSK,MSK,PSK调制原理,在Matlab/FPGA环境下给出了三种方式的信号传输仿真模型,比较他们的各项性能,为后面的内容提供试验依据。

论文的最后总结了课题研究过程中的主要工作、理论结论。

11

第 12 页 共 46

3 GMSK信号及其调制方案

3.1 概述

首先对GMSK以及GMSK信号进行分析,解释了高斯预调制滤波器对GMSK信号的影响。同时还细化了具体实施中的几个问题。比如,高斯低通滤波器的设计,差分编码等。本文的一个主要工作是在深刻地理解GMSK信号的特性的基础上设计好的调制方案。最后列出了GMSK调制信号的几种实现方案。

3.2 调制方式

3.2.1 最小频移键控(MSK)

MSK是连续相位频移键控(CPFSK)中的一种特殊的形式。其调制指数h=0.5,对于正交信号来说,MSK在一个码元时间T内产生最小的频率偏移(假设为相干解调)。MSK信号也可以视为利用正弦脉冲形成的交错四相相移键控(OQPSK)。

为了满足无线通信的要求,一个成功的调制方案需要满足以下特性: (1)紧凑的输出功率谱; (2)适应C类非线性放大器;

(3)对噪声和干扰有着较强的免疫性; (4)易于实现。

MSK的许多性质都令人满意。这使得它很适合作为无线通信的调制方案。它也有自身的缺点,其功率谱密度的旁瓣较大。为了使得其的输出功率谱更加紧凑,下面我们引入预调制低通滤波器的概念。

3.3 高斯最小移频键控(GMSK)

为了使MSK信号的输出功率谱更紧凑,该预制低通滤波器应该满足以下条件: (1)带宽窄,且对高频分量锐截止;

(2)具有较低的脉冲相应,用来防止过度的瞬间频率偏移; (3)能保持输出的脉冲响应曲线下面积对应于π/2的相位。

因此,GMSK采用满足以上条件的高斯地同滤波器作为脉冲形成滤波器。数据流通过高斯低通滤波器,然后再进行MSK调制。滤波器的带宽由时间带宽常数BT决定。[1]表明,在没有载波漂移以及邻道的带外辐射功率相对于总功率小于-60dB的情况下,选择BT=0.28比较适合于常规的(IEEE定义频段为300~1,000MHz)的移动无线通信系统。预调制滤波器的引入使得信号的频谱更为紧凑,但是他同时在时域上展宽了信号脉冲,引

12

第 13 页 共 46

入了码间干扰(ISI)。具体地说,与调制滤波器使得脉冲展宽,使得波形在时域上大于码元时间T,因此我们有时候将GMSK信号归入部分响应信号。 高斯低通滤波器的脉冲响应h(t)可以表示为:

??t2h(t)?exp??2?2T22??T?1??? (3-1) ?高斯低通滤波器的方波脉冲响应g(t)为:

?t?g(t)?h(t)?rect?? (3-2)

?T?其中矩形函数rect(x)定义为:

?1T?t??rect?????T???0当0?t?T其他 (3-3)

计算后,脉冲响应g(t)可以表示为:

g(t)?1T?t?Tth(?)d?1?t?T2?2B2?2?Bexp(?)d? (3-4) Tln2?tln21tt?T?[Q(2?BT)?Q(2?BT)]2TTln2Tln2其中,Q(t)为Q函数:

Q(t)???21exp(??)d? (3-5)

22?t已调信号的相位写做:

???ai?h???g(u)du (3-6)

it?iT其中ai???1?是被调制的非零码(NRZ)。调制指数h=0.5。这保证在一个码元时间内的相位的最大改变量为?2。因此,GMSK信号的最终表达式为:

S(t)?2EbTcos(2?fct??(t)?Z0) (3-7)

其中,Eb为单位比特信号的能量,Zq是随机初始相位。为了便于分析,通常情况下,我们可以假设Zq=0。

13

第 14 页 共 46

3.4 GMSK信号的分析

公式4-2给出了GMSK信号的解析表达式。下文将具体针对其相位路径,功率谱密度,已调波占用带宽等几个方面进行分析。 3.4.1 GMSK调制信号的相位路径

由公式4-5我们不难看得出,GMSK信号的相位路径有脉冲响应波形的形状决定。换言之,一个码元内已调波相位变化的值取决于其间脉冲的面积。由于高斯低通滤波器的引入,导致脉冲波形在时域上的展宽,使得相邻脉冲之间有重叠,因此在决定一个码元内脉冲面积是需要考虑相邻码元的影响。这样,在不同的码流图案下,一个码元时间内脉冲的面积不同,对应的相位路径也不同。于是得到图2-2-A所示的不同码流对应的相应轨迹图。图中近似的认为脉冲的宽度为3T,脉冲波形的重叠只考虑相邻一个码元的影响。

确定相位路径的规则是:

(1)一个码元内向为变化增加还是减少,取决于这个码元内脉冲波形叠加后面积的正负极性。若面积为正,这相位增加,反之则减少。

(2)一个码元内相位变化取决于这个码元内叠加后脉冲面积的大小。(以脉冲宽度为3T为例)当相邻3个码元为+1,+1,+1时,则一个码元相位增加π/2;当相邻3个码元都为-1时,则一个码元内相位减少π/2;在其他码流图下,由于正负极性抵消,叠加后的脉冲波面积比上述两种情况要小,即相位的变化小于?π/2。 图4-1-B同时给出了GMSK信号和MSK信号的相位轨迹图。通过比较和分析我们可以下定性的结论:基带的脉冲形成技术平滑了MSK信号的相位曲线,因此稳定了信号的频谱变化,这将使得发射频谱上的旁瓣高度大大降低。下面我们通过对GMSK信号功率谱密度的研究来进行定量的分析。

图4-1 GMSK与MSK的相位轨迹比较

(A)GMSK信号相位迹线图 (B)GMSK与MSK相位迹线图比较

14

第 15 页 共 46

3.4.2 数字信号功率谱密度的研究

令一个数字调相信号表示如下:

Z(t)?Acos(2?fct??(t)??0) (3-8) 其中,?(t)是一个含有信息的随机过程,也就是相位路径。?0为初始相位(分析中可以将其设为0)。功率谱分析方法较多,且各有其特点以及用途。主要方法大抵有以下几种[3]:

(1)直接傅立叶变换法。通过直接推求Z(t)截断信号的傅立叶变换获得其振幅谱。再运用符号统计的特征以及平稳随机过程的基本原理将其转化为功率谱。这是一种确定信号向随机信号谱分析过渡的直接而经典的方法。

(2)相关函数法。利用维纳-辛欣定理利用自相关函数的估计值得傅立叶变换来获得功率谱。

(3)转移概率法(信号流图法)。首先列出个符号的转移状态并计算出相应的转移概率矩阵,然后利用包含该转移概率的功率谱密度分析式直接计算其功率谱分布。 (4)其他近代普估计法。最大熵法,最大似然谱估计法,自回归谱估计法等。 上文介绍了直接法。该方法利用了带通信号Z(t)的截短形式直接求出Z(t)的双边功率谱度。GMSK信号的功率谱密度相同,随着BT常数的减小,旁瓣的衰落非常快。例如,当BT=0.5时,第一旁瓣比主瓣低20dB。这里我们再次指出,频谱的紧凑是一引入码间干扰,增加误码率为代价的。

3.4.3 已调波占用带宽

在规定接收机所需要接受的已调波总功率的百分比的情况下,接收机带通滤波器所需的归一化带宽时间常数BT,就定义为已调波占用的带宽。表3-1显示当BT取不同值时,GMSK信号中包含给定百分比功率所占用的归一化带宽。 BT 0.2 0.25 0.5 MSK 90% 0.52 0.57 0.69 0.78 99% 0.79 0.86 1.04 1.20 99.8% 0.99 1.09 1.33 2.76 99.99% 1.22 1.37 2.08 6.00 表格3-1 GMSK信号占用的归一化带宽

表3-1的物理意义十分清楚。当预调制滤波器的时间带宽常数BT以及已调波的总功率一定时,若要求接收机收到的功率越大,则其占用的带宽要求越宽,反之越窄;当接收机牵制前置检测滤波器的带宽BT一定时,发送端滤波器时间带宽常数BT越小,接收机越能够通过的已调波功率的百分比就越大。

15

第 16 页 共 46

3.4.4 码间干扰ISI

矩形脉冲经过预调高斯低通滤波器的脉冲形成之后,脉冲在时间上延伸,每个码元的脉冲将延伸到相邻码元的时间间隔。这就会造成码间干扰,并导致接收机在检测一个码元时发生错误的概率增加。图4-2为BTb=0.3时,第K个码元与相邻两个码元在时域上输出得分解图。图中三段曲线分别代表第K-1,K,K+1个码元的时域波形。这里

ak?ak?1?ak?1,高斯低通滤波器的输出是第K个码元时间内三个脉冲相应波形的线性叠

加。这就是码间干扰。

图3-2 高斯低通滤波器的时域分解(BT=0.3)

可是,由式3-1得知高斯滤波器的传递函数不满足奈奎斯特准则,因此我们不能利用奈奎斯特准则消除码间干扰。因此,在希望得到的射频带宽和由于码间干扰造成的误码性能的下降之间的折衷,是选择高斯滤波器时面临的问题。尽管我们不能完全消除码间干扰,但是后面的章节我们将深入地讨论在接受端如何利用等增益合并,判决反馈均衡(DFE)以及非冗余纠错技术来尽可能的减少码间干扰的负面效应。

3.5 GMSK调制器及其实现

围绕着GMSK信号的产生,人们不断探寻,并且提出了多种地调制方式。其中包括:直接数字调频;环路(PLL)调制器,也就是在一个?2BPSK调制器后面跟随一个锁相环电路组成的相位平滑滤波器;利用数字波形生成器的正交调制器等。下文我们将具体分析GMSK调制器设计的几个方面:差分编码,高斯低通滤波器等。并对几种主要的实现方法进行介绍和比较。

图3-3 GMSK调制器原理框图

16

第 17 页 共 46

3.5.1 差分编码

图3-3是直接数值调频方案的原理框图。首先对信息流进行差分编码,编码后的信号经过高斯低通滤波器脉冲形成之后,直接进行频率调制。

差分编码将信息存储在相位得变化中,而不是相位得本身上。在有些情况下,在解调和检测的过程中使用的同步和载波恢复技术会产生??的相位模糊。差分编码中信息由相位的差值来表示,因而克服了相位模湖带来得影响。但是这也使得误码率增加。因为,每一个比特的错误会失相邻的比特也出错。最终实际的误码率Pb(差分解码后)和解调前的误码率Pe之间的关系是Pb?2Pe(1?Pe)。

如果输入信号是一个二进制单极性序列a??0,1?,则编码序列定义为:

bi?ai?bi?1 (3-9)

其中,i是比特序列的指数。解码序列定义为:

a?bi?bi?1 (3-10)

如果输入的数据是双极性或非归零(NRZ)二进制序列ai???1?,则编码序列定义为:

b??aibi?1 (3-11)

这种编码方式也就是所谓的NRZ-1,相应的解码序列定义为:

ai??bi?1bi (3-12)

图3-4-A为差分编码的实现框图。图4-4-B为码元序列为101110001011时,NRZ,NRZ-1以及上文中的差分编码进行比较。可以看出该差分编码也就是NRZ-1。第二章中还会介绍针对不同的解调方案的其它的差分编码的方法。

(A)差分编码实现框图 (B)码形比较

图3-4 差分编码实现框图和码形

最后我们再次强调,对于一个具体的调制解调系统来说差分编码并不是必须的。这

17

第 18 页 共 46

里我们对它进行分析是因为作为本文中重点研究的非相干差分解调器需要在调制器端采用差分编码。

3.5.2 高斯低通滤波器

在GMSK调制器中前面分析的高斯低通滤波器的作用在于对基带信号进行频谱整形。从而降低信号频带宽度提高频谱利用率,同时降低对相邻信道的干扰(ACI)。我们通过对高斯低通滤波器的脉冲响应的一个参数B(也就是3dB带宽)的调整达到对信号的带外辐射进行不同程度的抑制的效果。

图3-5,我们直观地给出高斯低通滤波器的冲击响应的时域波形

图3-5 高斯低通滤波器的响应

具体的模拟滤波器的设计方法这里我们不不赘述了。如今数字信号处理DSP技术越来越多的用于数字高斯低通滤波器的设计上。这里以BT = 0.3为例,也就是仅考虑前后相邻码元的影响。由于高斯低通滤波器输出需要通过积分器后再引入三角函数来产生基频信号,而积分器响应的相邻三位码元输出总共有八种。因此,通常的方法是预先将积分器的输出响应存在RAM中,再以延迟得方式获得前后码元的信息,最后查表取出积分器的输出。这样可以避免设计复杂的滤波器并且大大减少运算量以及时间。

4 GMSK调制器的实现方案及其比较

4.1 传统的实现方法

在工程实现上,最简单的方法是用基带高斯脉冲序列直接调制VCO的频率。这种实现方式的结构较简单,但是VCO频率的稳定性较差,难以保证GMSK信号的性能。另一种实现方法是采用锁相环的PLL型调制器,如图4-1所示。锁相技术的采用解决了频率稳定性的问题,但为了平滑BPSK移相器的相位突变,使得码元转换点的相位连续且没有尖角,锁相环的传递函数应具有良好的平滑性能和快速响应能力,这增加了实现的复

18

第 19 页 共 46

杂程度,因而实际应用有一定局限。

?2移相数据BPSKLPFVCO输出

图4-1 PLL型GMSK调制器

实际应用较多的实现方法是波形存储正交调制法。由公式(3-4)可知,在计算?(t)后,即可算出GMSK信号。在时刻t,?(t)只与输入数据和g(t)有关,而g(t)只取决于其截短长度,因此?(t)的状态是有限的,这样由?(t)形成的cos[?(t)]和sin[?(t)]也只有有限个波形。波形存储正交调制法的基本思想就是将cos[?(t)]及sin[?(t)]离散化,制成表,储存在ROM中,根据输入的二进制数据查找波形存储表获得基带I/Q信号,再分别经数模变换(DAC)、低通滤波后进行混频。调制器的原理结构如图4-2所示。这种方法的优点是利用数字技术可以产生具有任何响应特性的基带脉冲波形和已调信号,缺点是两条支路的基带信号的振幅误差以及支路上载波的正交相位误差和幅度误差均会引起已调输出信号的振幅波动和相位误差,即所谓的I/Q支路信号幅度及正交载波相位不平衡。在输入数据{di}为随机序列的情况下,会导致已调信号包络起伏。限幅前其功率谱不受影响,而限幅后的功率谱有扩展现象。所以,在工程实现上必须尽量避免这一问题。

cos?ctcos?(t)ROMDACLPFI(t)+GMSK信号{di}预编码{?i}地址逻辑象限计数器-sin?(t)ROMDACLPFQ(t)sin?ct

图4-2 波形存储正交调制法原理框图

4.2全数字实现方法

如果在查找波形存储表获得基带I/Q信号以后不做DAC,就能避免因为模拟滤波而产生的I/Q支路信号幅度失衡。这样的I/Q数字信号经过低通滤波器(LPF)抑止高频分量后,再通过DDS(数字频率合成器)进行数字混频,就能够得到GMSK数字已调信号。因为DDS完全可以保证载波相位的正交性,因此在采样精度允许的范围内,数字化实现GMSK调制器,就能有效避免I/Q两条支路信号幅度及正交载波相位失衡。

19

第 20 页 共 46

cos?(t)内插LPFI(t)cos?ct+DDSGMSK数字已调信号{di}预编码{?i}地址逻辑ROM相位路径表?(t)LUT正弦余弦查找表象限计数逻辑sin?(t)内插LPFQ(t)sin?ct-

图4-3 基于FPGA的改进实现结构

在作者从事的项目中,整个系统工作在短波段,硬件上完全可以由FPGA来实现这样的GMSK数字调制器,如图4-3所示。FPGA包含丰富的IP core资源,其中就有正弦余弦查找表和DDS,可以为硬件实现带来极大的便利。将相位路径?(t)离散化,存储在图中的相位路径表中,由输入的二进制数据查找相位路径表获得相位路径?(t),正弦余弦查找表计算出相应的cos[?(t)]及sin[?(t)],这样就得到了基带I/Q信号。经过内插并抑止高频分量后,再进行数字混频,最后就能得到GMSK数字已调信号。

按照图5-3所示结构实现GMSK数字调制器,我们在Altera公司的EP2C5T144C8芯片上进行了测试与仿真,综合工具选用Synplify Pro v7.6,仿真工具为Modelsim 5.8b。选取输入码元序列为二进制贝努利序列,码元宽度为Tb(1Tb?2.4kbit/s),g(t)的截短长度为5Tb,BTb?0.3,?(t)的抽样速率fs?8fb(fb?1Tb?2.4kbit/s),量化电平

Q?10bit/抽样。

该GMSK数字调制器的最高时钟频率达到202.8 MHz,对FPGA资源占用分别为:4输入查找表(即LUT)71个,Slices 293 个,BlockRAMs 1个。 4.3 GMSK调制原理结构 4.3.1 2FSK调制原理

设输入到调制器的双极性比特流为{bn},n∈(-∞,+∞)。FSK的输出信号形式为:

bn?1?s1(t)?cos(2?f1t??1) s?t??? (4-1)

b??1s(t)?cos(2?ft??)n22?2即当输入符号为“1”时,输出频率为f1的载波;当输入符号为“-1”时,输出频率为f2的载波。2FSK调制的框图如图所示。

载频振荡器f1 输出 发送滤波器 VCO 载频振荡器f2

(a)相位不连续的2FSK信号产生器 (b)利用VCO产生相位连续的2GFSK信号产生器

20

第 21 页 共 46

为了得到MSK和GMSK,先考虑2FSK信号的功率谱,令宽度为Tb的矩形脉冲的频谱为G?w?,则2FSK的功率谱表达式为:

11222fsG(f?f1)?G(f?f1)?fsG(0)??(f?f1)??(f?f1)??1616 (4-2)

11222fsG(f?f2)?G(f?f2)?fsG(0)?(f?f2)??(f?f2)1616Ps(f)???????第1、2项表示2FSK信号功率谱的一部分由G?w?从0搬到f1得到,并在f1处有载频分量;第3、4项表示2FSK信号功率谱的一部分由G?w?从0搬到f2得到,并在f2处有载频分量。如果(f2- f1)小于Rb(Rb=1),则功率谱将会变成单峰;如果(f2-

Tbf1)逐步增大,则功率谱会出现双峰。2FSK信号的带宽约为:

BFSK=f2?f1?2B (4-3)

这里,B为数字基带带宽, 另外,s1(t)和s2(t) 正交时 两载频的最小频率间隔为

f2?f1=1??。当f2?f1》Rb,可以认为s1(t)和s2(t)近似正交。

2Tb

4.3.2 MSK调制原理

当连续相位2FSK两信号正交时的频率间隔为1?2Tb?时,即为MSK。故MSK是一种

特殊形式的FSK,具有最小频移键控。定义其调制指数为:

h =

2?f=0.5 (4-4) 1Tb式中,Tb为输入数据流的比特宽度。

因此MSK是连续相位频移键控的特例,当h=0.5时,满足在码元交替点相位连续的条件,是FSK为保证良好的误码性能所允许的最小调制指数,且此时波形的正交的。因此,在限带系统中,能够保持恒包络特性。

MSK信号的表达式:

X(t)?Acos(bk?t2Tb??k)cos?ct?Asin(bk?t2Tb??k)sin?ct (4-5)

式中,bk是信息位,bk=1或-1,?k是积分常数。

21

第 22 页 共 46

由式(4-5)可以直接得到MSK调制器的原理框图,如图所示

??cos??2T?b?t?? ?cos(wct) ?bi? 串 并 交 换 Tb 输出 Tb ?t?? ???sin ??2T?bsinwct

输入二元码bk经过差分编码后得到ak= bk+bk?1,再经过串并交换后变成两路并行不归

??零码,且相互差一个TS,定义为ai和aq,再分别乘以cos??2T?b????t?和sin??2T??b?t??,以及 ?载波分量cos(wct)和sinwct,上下两路相加,即求得MSK信号X(t):

??X(t)= ai(t) cos??2T?b????t?cos()—a(t) sin wtcq??2T??b?t?? sinwct (4-6) ?MSK信号的特点是已调信号幅度恒定;在一个码元周期内,信号应包含1/4载波周期的整数倍;码元转换时,相位连续无跳变;调制指数为0.5;以载波相位为基准的信号相位在一个码元周期内准确地变化?π/2。 4.3.3 GMSK调制原理

尽管MSK信号已具有较好的频谱和误码率性能,但仍不能满足无线通信中邻道辐射低于主瓣达到60dB以上的要求。因此,需要在MSK的基础上采取一定的措施,加快其带外衰减速度。

实际上,MSK是2电平矩形基带信号进行调制得到的,MSK信号在任一 码元间隔内,其相位变化π/2,而在码元转换时刻则保持相位连续。但MSK信号相位变化率为一折线,在码元转换时刻会产生尖角,从而使其频谱特性的旁瓣滚将缓慢,带外辐射较大。

为了解决这一问题,可将数字基带信号先经过一个高斯滤波器整形,由于成形后的高斯脉冲包络无陡峭边沿,于是经调制后的已调频波相位路径在MSK基础上获得平滑。这便称为GMSK调制,

GMSK调制就是在MSK调制前加了一个高斯低通滤波器,其结构图如5-4所示。通过GMSK调制器的信号就称为GMSK信号。

22

第 23 页 共 46

高斯低通滤波器 MSK调制器

图4-4 GMSK调制器结构图

该高斯低通滤波器也被称为预调制滤波器,假设其3dB带宽为Bb,则其冲激响应为:

h(t)=?2Bbexp(??2a2t2) (4-7) ln2单个矩形脉冲通过该滤波器的响应为:

T?T??2?Bb?2?Bbg(t)=Q?(t?b)?—Q?(t?b)? (4-8)

2?2??ln2?ln2 Q(x)=?GMSK信号的表达式:

?12?xexp(??2/2)d? (4-9)

??s(t)=cos?wct?2Tb??t??[?big(??iTb??Tb)]d?? (4-10) 2?GMSK信号的带外衰减由BbTb决定,BbTb的值越大,带外衰减越大。当BbTb=0.3时,即可满足GSM系统带外衰减60dB的要求,在BbTb一定时,频道间隔?f和Tb的乘积?fTb越大,则邻道干扰越小;在?fTb一定时,BbTb越小则邻道干扰越小。

5 GMSK调制器的FPGA实现

实现MSK信号调制器包括下面几个环节:首先,将输入数据进行差分编码;其次,把差分编码器的输出用串/并交换合成两路,并相互错开一个码元宽度,形成I、Q两路信号;第三,用cos(?t2Ts)和sin(?t2Ts)分别对I、Q路信号进行加权;最后,将加权数据用正交载波cos(wt)和sin(wt)分别进行相乘并相加得到MSK信号。在实现时,包括差分编码串并交换、I/Q路加权模块、载波调制相加模块以及MSK顶层模块。

MSK模块综合后得到的RTL结构图

23

第 24 页 共 46

6 调制的仿真及调试分析

因为GMSK信号的功率谱密度可看为将基带波形I(t)或Q(t)的功率谱搬移到载频上,所以求GMSK信号功率谱只需计算基带信号功率谱即可。用MATLAB对FPGA时序仿真后所得的数据进行处理,这里采用Welch法对GMSK基带信号进行功率谱估计。如图6-1所示,曲线(a)表示图示中正弦余弦查找表输出端的谱估计图。可以看出,曲线(a)存在着由于抽样造成的副瓣,影响了功率谱性能。因此必须加低通滤波器来抑止高频分量。选用3dB带宽为2.88KHz的32阶数字低通滤波器,使得基带已调信号经低通滤波后的功率谱如图6-1的曲线(b)所示。由仿真得到的功率谱和眼图可以证明,这种GMSK数字调制器产生的基带已调信号具有良好的功率谱特性,完全能够实用。

图6-1 GMSK基带已调信号功率谱密度及仿真眼图

6.1 仿真介绍

系统仿真是用模型代替实际系统进行试验。它是在不破坏真实系统环境的情况下,为研究系统的特性而构造并运行这种真实系统的模型的方法。

仿真工作的目的就是在合理的构造系统模型的基础上,采用有效的方案对系统的性能进行评估。通常我们可以根据公式进行计算;利用计算机进行波形级的仿真;或者通过用硬件构成样机进行测量来对通信系统性能进行评估。

用基于公式的方法可以透彻的了解设计参数和系统的性能之间的关系。但是,除了一些理想的和过分简化的情况外,仅用解析的方法评估通信系统的性能是非常困难的。根据设计样机时得到的测量数。

据评沽性能当然是准确可信的方法。但是,其缺点是费时、开销大、不灵活。这在早期的设计阶段也显得有些不合适。而将基于计算机仿真的方法用于性能评价,几乎可以按任意详细程度的要求建立模型。而且可以很容易的将数学和经验的模型结合起来,把测量的器件的特性和实际信号都组合到分析和设计当中去。虽然在许多情况下,计算机仿真是系统分析的一种较好的方法,特别是大多数具有随机性的复杂系统无法用准确的数学模型并用解析方法求解时,仿真通常成为解决这类问题的有力工具。但是,仿真在实际应用中还仍然不足之处。诸如,构造和确认仿真模型需要耗费较多的时间:在初步设计中,确认复杂模型,可能会很困难;系统模型中往往有不少随机变量,而在系统

24

第 25 页 共 46

仿真时,受到样本量的限制,使得仿真的精度受到限制。这些缺点,只有通过仔细的选择建模和仿真技术才能予以缓解。 6.2 数字通信系统的模型

图6-2 数字通信系统的模型

一个数字通信系统通常由信源、信宿、通信信道以及调制和解调模块组成。尽管现实条件下的信源的特性取决于其具体的应用,但在一般情况下信源可以建模为一个独立同一分布的随机序列。现实中的通信信道无论传输介质是无线电波、电缆线还是光纤都是模拟的。为了便于计算机仿真的实现,我们在分析数字通信系统时可以将信道建模为一个离散时间信道。

需要指出的是现实中的信源产生的序列取决于信源的性质。而且由于其中包括一些冗余信息,该序列将并不满足一个独立同一分布的随机序列的特性。但是,该比特序列在经由通信系统传输之前,编码器将尽可能的去掉数据中的冗余信息以获得最大的信息量(嫡)。这时编码器的输出的序列可以建模为一个独立同一分布的随机比特序列。也就是上图中的信源模块。

数字通信系统的调制、解调模块还有可能包括信道编码、解码等部分。但是,本文的仿真目的在于对各种通信环境下调制,解调方案性能的分析和比较,为了突出其性质因此我们不考虑信道编码、解码部分对系统性能的影响。

通信的目的在于及时正确地在信源和信宿之间传递信息。可是由于信道以及噪声的限制,使得误码永远相对地存在。在无线通信的环境下,由于信道产生的影响更为明显。因此,我们在全面地分析解调方案性能时,以其在各种无线信道中的性能为考察的重点。 6.3 数字通信系统的仿真 6.3.1仿真工具软件

本文中仿真程序的编写是以MA TLAB作为开发工具的。MATLAB是由美国MathWork公

25

第 26 页 共 46

司推出的用于数值计算和信号处理的科学计算软件包。随着其版本的升级,其功能越来越大,应用范围也越来越广泛。本文主要是使用MATLAB中的SIMULINK功能。 6.3.2衰落信道的建模和计算机仿真

当一个信号经由多径信道传播后,造成接收到的信号为原信号经过散射和反射后的叠加。这些经过不同延迟的原信号,其振幅以及相位呈现随机变化。

一般用来描述移动信道特性的信道模型有以下几种:瑞利(Rayleigh)模型、莱斯(Rician)模型、中上(Nakagami)模型等。其中,瑞利衰落信道用来描述多径传播信道,每一路径的信号振幅呈现瑞利分布。莱斯信道用来描述接收到的信号振幅表现为瑞利多径加上一个视距信号分量的通信环境。在微蜂窝信道,室内通信以及卫星通信,其衰落特性均属于莱斯衰落。中上信道则适用于描述都市区的通信。本文主要着眼于对瑞利和莱斯模型的分析。

利用计算机仿真衰落信道的方法有很多。本文中是把高斯白噪声通过一个线性时变的滤波器,该滤波器的传递函数等于多普勒功率谱密度函数S(f)。这种方法易于理解,但很难实现。好在MATLAB功能强大,我们可以调用SIMULINK中现有的模块,步骤如下。

高斯白噪声信道的仿真 打开MATLAB:

图6-3 MATLAB对话框

打开SIMULINK窗口:

图6-4 MATLAB对话框

26

第 27 页 共 46

新建系统:

添加模块:

图6-5 MATLAB对话框

图6-6 MATLAB对话框

图6-7 SIMULINK对话框

27

第 28 页 共 46

瑞利衰落信道的仿真

用相同的方法,模拟一个,多普勒频移fd=100Hz,载波中心频率为fc=1000Hz的信号经过瑞利衰落信道的过程,观察其功率谱。

图6-8 瑞利衰落信号的功率谱

莱斯衰落信道的仿真

用相同的方法,模拟一个,多普勒频移fd=100Hz,载波中心频率为fc=1000Hz的信号经过莱斯衰落信道的过程,观察其功率谱。

图6-9 莱斯衰落信道的仿真

6.4 PSK,MSK,GMSK调制方式的仿真和分析

在最简单的情况下如果仅仅考虑接收端热噪声带来的影响我们可以将信道建模为加性高斯白噪声信道,如下图。

28

第 29 页 共 46

图6-10 MATLAB软件环境下的三种调制方式的框图

三种调制方式的性能比较如下:

图6-11 三种调制方式的功率谱密度

29

第 30 页 共 46

图6-12 三种调制方式的误码率

由上图可得,MSK信号比2PSK有更高的频谱利用率,并且有更高的抗噪声性能。和二者相比,GMSK信号的频谱最高,同时,它的误码率却是最差的。因为,此刻GMSK信号的BT=0.01,此时,会使基带波形中引入严重的码间干扰,从而降低性能。

BT取不同值时,各种GMSK的性能分析

图6-13 MATLAB环境下,BT=0.01,0.1,1的系统框图

30

第 31 页 共 46

图6-14 BT=0.01,0.1,1的误码率比较

图6-15 BT=0.1,0.01,1的功率谱密度比较

31

第 32 页 共 46

图6-16 GMSK,BT=0.25与MSK的误码率比较

由上面的仿真试验,我们发现:在恒参信道,加性高斯白噪声条件下,测得的GMSK相干解调误比特率曲线如图6-16所示。由图可以看出,当BT=0.25时,GMSK的性能与MSK差不多,仅比MSK下降一点点。由于,移动通信系统是快速瑞利衰减信道,因此误比特性能要比理想信道下的误比特性能下降很多。所以,我们可以认为,BT=0.25时的GMSK调制方法更为可行。 6.5 软件调试

软件调试主要是针对各个模块,整个系统分为四大模块,分别是顶层模块、差分模块、IQ路加权模块、载波调制相加模块。 6.5.1 差分模块

由于输出的数据序列是由{0,1}序列组成的二进制数据序列。GMSK调制之前,

需要先进行差分编码,然后将归零信号(RTZ)转化为不归零序列(NRZ),GMSK调制是由MSK(最小频移键控)衍生出的一种调制方式,它们均为CPFSK(连续相位移频键控)调制方式。GMSK调制就是将MSK信号的相位更好地平滑,使其频率谱宽度进一步缩小,从而减小导致BER上升的符号间干扰(ISI)。

差分编码,又称增量编码,是以序列式资料之间的差异储存或传送资料的方式(相对于储存传送完整档案的方式)。在需要档案改变历史的情况下的差分编码有时又称为差分压缩。 差异储存在称为“delta”或“diff”的不连续档案中。由于改变通常很小(平均占全部大小的2%),差分编码能大幅减少资料的重复。一连串独特的delta档案在空间上要比未编码的相等档案有效率多了。

32

第 33 页 共 46

在输入完程序之后,按照步骤进行编译,发现运行出现错误,经检查是d_x=(x_t==2'b11) ? 0:(x_t==2'b00) ? 1:0出错,语句本来的意思是判断该语句的真假,若为真则选择冒号前面的,结果,无论该语句是真还是假都不能实现功能,查阅资料后只需要把1:0改为0:1就可以实现其判断功能。在差分编码中,最重要的一部分就是把一路信号进行差分,在该设计中用到的是x_t[1:0]<={x_t[1],x}和d_t[1:0]<={d_t[1],d_x}语句,,但是在编译完成之后没有看到理想中的两路信号,设计的本意是将x_t的低位赋值给高位,然后高位存进来的基带信号X,将d_t的低位赋值给高位,然后高位存进来的d_x。经分析发现,在信号的高低电平中,把高位看成了低位,于是将{x_t[1],x}和{d_t[1],d_x}中的1改为0,即{x_t[0],x}和{d_t[0],d_x},修改完后编译成功。 6.5.2 加权模块

加权主要是将一路输入信号分别乘以加载的正弦和余弦信号以及正交载波分量cos(wct)和sinwct,该模块中主要用到的是累加器和MATLAB。在运算器中,累加器是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器。能进行加、减、读出、移位、循环移位和求补等操作。是运算器的主要部分。 在中央处理器CPU中,累加器(accumulator)是一种暂存器,它用来储存计算所产生的中间结果。如果没有像累加器这样的暂存器,那么在每次计算(加法,乘法,移位等等)后就必须要把结果写回到内存,然后再读回来。然而存取主内存的速度是比从数学逻辑单元(ALU)到有直接路径的累加器存取更慢。 在汇编语言程序中,累加器——AX是一个非常重要的寄存器,但在程序中用它来保存临时数据时,最好将其转存到其它寄存器或内存单元中,以防止在其它指令的执行过程中使其中的数据被修改,从而得到不正确的结果,为程序的调试带来不必要的麻烦。在实现累加的时候用到了accum2 <= {0'b0,accum2[31:0]} + data2语句,当编译时,没有能实现累加的功能,进入都了死循环,跟同学讨论和查阅资料,原来是没有把最高位清零,语句本来的意思的频率字累加,当最高位为1的时候就致0,为下次累加做准备,应当把原来语句改为accum2 <= {1'b0,accum2[31:0]} + data2就可以了。在该模块中还用到了MATLAB,因为要产生正弦和余弦信号,用MATLAB来生成比较简单,在产生的一路正弦信号当中包括512的等间距的点,如果我取512来产生正弦信号,工作量比较大,为了合适,我在其中等间距的抽取9个点来产生信号。在取完值之后产生的正弦信号并不是太理想,突然间想到在512点当中取的是9个点,可能存在一定的问题,9个点需要9位,我按照一般的原则取的是【8:0】这9位,在询问老师之后才了解,因为在FPGA中我们经常使用的是32位,为了实现累加进位的方便,我取【31::23】高9位,把address(accum1[8:0])改为address(accum1[31:23]),再次观察波形就比较正常,最后再把等到的采样信号

33

第 34 页 共 46

输出,此时用到了最简单的语句cos = b_q ? cos1 : -cos1和sin = b_q ? sin1 : -sin1,根据b_q信号的高低位判断,为1的时候不做变化,为0的时候翻转信号 。输入程序后编译成功。 6.5.3载波调制相加模块

设计本来就是对输入信号的调制,载波调制相加模块主要是将原始信号差分出去的2路信号经过加权后相加到一起,组成一个新的信号。在经过信号加权之后,这里就用到了ROM核文件以及乘法器。刚开始,对题目没有分析清楚,在编写该模块时遇到了困难,经过查找资料和问老师,知道要用宏模块。建立宏模块需要定制LPM_ROM元件。在该设计中,LPM_ROM元件只要选择ROM1-PORT和乘法器,在之前的实验和实训中我都没有用到过LPM_ROM元件,所以现在用起来还比较难,ROM创建各种查找表,从而简化电路设计,提高电路的处理速度和稳定性。真正意义上的ROM应具有掉电后信息不丢失的特性,因此利用FPGA实现的ROM只能认为器件处于用户状态时ROM具备的功能,在建立ROM的时候,选择比特那里,因为之前没有用到过就选择了8、8,为了精确和保险起见,查阅了资料才知道,对于ROM是要选择12、512,而乘法器是要选择12、12。再相对应的选择rom_mif_sin12w10d.mif和rom_mif_cos12w10d.mif文件。按照资料上的步骤建好了宏模块,再编译就成功了。 6.5.4 顶层模块

传统的电子设计技术通常是自底向上的,即首先确定构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合成更大的功能模块,使它们的结构和功能满足高层系统的要求。在FPGA设计应用中,自顶向下的设计方法,就是在整个设计流程中各级设计环节逐步求精的过程。在该FPGA的设计,是一种自顶向下的设计方法。所以必须有一个顶层模块来把各个模块联系起来,用到了最基本的例化语句,元件例化语句由两部分组成,第一部分是将一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件做出的调用声明。这一部分可以称为是元件定义语句,相当于对一个现成的设计实体进行封装,使其只留出对外的接口界面。第二部分则是此元件与当前设计实体中元件间及端口的连接说明。该模块就是把差分模块、加权模块、载波调制相加模块进行一个整合。因为在其他的3个模块中都有自己的输入输出口,定义自己的信号,在使用FPGA时钟方面也有比较特殊的讲究,因为是在一个大环境下,所用时钟就要统一,根据时钟再转换成频率字,按照递进关系(差分、加权、调制相加)分别做好各自的模块信息,三个模块都一起编译成功之后,实例化三个模块,使其成为顶层模块的一个元件,在顶层模块中也用到了累加器,主要是产生1M和2M信号,因为用到的是100M的输入信号,我就按照常理,取累加50为1M,累加25为2M,在编写好程序之后编译,发现不成功,显示是3个例化的模块不能成为顶层的元件,在查阅实例化的相关资料才知道,在引用实例化的时候要把模块的输入输出都写清楚,不然的话找

34

第 35 页 共 46

不到相应的语句来实现,在完善实例化的语句之后再编译,通过了。再仿真波形,发现波形不对,相位挪位了,回头检查用100M来生成1M和2M信号的语句,语句是没有错,经过跟同学分析发现,累加器的累加次数不对,生成1M的时候,我们应该累加49次就可以,多加的一次就把信号相位偏移了,修改相关数据之后,编译通过。在一般的设计当中,设计层次比较多,在实现的过程中比较麻烦,主要是输入输出口比较多,之前总是因为不匹配而没有成功,所以我们要用到RTL电路图,是在各个模块都成功的情况下,首先各自生成模块图,利用FPGA自带的软件把模块都连接起来,在画了RTL电路图之后就好多了,RTL电路图反应了多模块的连接形式。最终能够实现功能。

6.6 硬件调试

对于FPGA的内部逻辑测试是应用设计可靠性的重要保证。由于设计的复杂性,内部逻辑测试面临越来越多的问题。设计者通常不可能考虑周全,这就需要在设计时加入用于测试的部分逻辑,即进行可测性设计(Design For Test,DFT),在设计完成后用来测试关键逻辑。在差分和加权模块中都用到了逻辑器件,多以对这些逻辑器件的测试还是很有必要的,只有通过测试的才能保证底层的准确。

该设计的最后输出是波形,最原始的是用示波器来显示,主要是将生成的数字信号通过D/A模块转化成模拟信号,硬件的调试是在软件调试的基础之上来进行的,因为所用的开发板上面没有D/A模块,无法用示波器来显示,所以改用逻辑分析仪采集数据来显示。我用的是QuartusⅡ软件编的程序,所以用Altera公司的FPGA 开发板。用到了QuartusⅡ中SignalTapⅡ。连接好开发板自后,下载程序到板子,各项模块编译成功,打开SignalTapⅡ编辑窗口、调入待测信号、SignalTapⅡ参数设置、文件存盘、编译下载、启动SignalTapⅡ进行采样,观察1个信号,结果正确,若再加一路观察信号,则时序中有错误。好像是signaltapⅡ对原来的逻辑造成了影响,又或者是signaltapⅡ采样出来并传上电脑来的数据出错。

SignaltapⅡ的原理是在设计的网表中插入触发逻辑和存储逻辑以及用于和PC机通讯的虚拟JTAG链路实现嵌入式逻辑分析仪功能的。这一插入过程是由QUARTUS软件完成的,对用户是不可见的。由于用户无法控制和约束这一过程,加入signaltapⅡ后的电路功能与用户设计初衷相违背也是可能的。

被观察的信号扇出变大,造成设计的时序余量发生变化。实现触发逻辑需要在信号路径上加入触发器和组合逻辑,这样一来必然造成被观察信号的扇出变大,信号的输出延时增大。如果被观察信号的时序很紧张的话,加大信号的延时可能使时序关系变好,也可能恶化其时序。

由于“抢占”的存在,造成设计的时序余量发生变化。由于触发逻辑和存储逻辑的加入,FPGA的资源要重新分配。原设计在FPGA内的布局位置和布线资源会发生变化,

35

第 36 页 共 46

时序也会受到影响。往往加入signaltapⅡ后,布局布线后的时序分析结果会比原来差。 我解决上述矛盾的方法是尽可能少地添加被观察信号。我常用的几个方法是:在每次重新编译之前,对信号的保留做一个评估,如果被观察信号被证明与要查找的问题无关,就删除这个信号。 在每次编译成功之后,要查看编译报告,如果系统的逻辑资源利用比例在95%以上,就要考虑去除一些被观察信号或去除几个触发级别,或者减小采样深度。如果有必要的话,把仅需要作为触发条件的信号的采样使能关闭也能显著减少逻辑资源的占用。系统存储资源的占用比例也要考虑在内,不可占用太多。与此相关的选项是采样深度、信号个数、信号的采样使能是否关闭。

编译成功后,要查看时序分析报告。如果系统时序下降很大或者被观察信号的时序不能满足,要考虑采用上面的方法减少对逻辑资源的占用。另外,采样时钟的选择对系统的整体时序影响也很大。选取的原则是:尽可能从设计的顶层选择信号作为采样时钟,而不是随便把哪个module的输入时钟作为采样时钟,以利于QUARTUS优化全局时钟资源的利用。在保证观察精度的前提下,选择较低频率的时钟。采样时钟本质上是触发条件之一(最基本的触发条件),如果恰当的选取非时钟信号(没有确定频率的信号)作为采样时钟,可以起到事半功倍的效果。 数字信号:

signaltapⅡ检测信号:

36

第 37 页 共 46

7 总结

根据收集来的资料,进行本设计要用到verilog写程序,对于verilog 我没有接触过,以前的课程设计用的都是VHDL,于是我在网上下载了一些视频教程学习。在熟悉了verilog的语法之后就开始了设计。本设计主要是调制,就是加载一个新的频率进去。把余弦信号分解cos(a+b)=cosacosb-sinasinb,倒推过去就是要有两路信号,而两路信号就是由一路输入信号差分而来,这就是基本思想。

在整体设计的时候要有一定的思路,设计必须文档化,要将设计思路,详细实现等写入文档,然后经过严格评审通过,后才能进行下一步的工作。这样做乍看起来很花时间,但是从整个项目过程来看绝对要比一上来就写代码要节约时间,且这种做法可以使项目处于可控、可实现状态。端口信号排列要统一,一个信号只占一行,最好按从哪个模块来到哪个模块去的关系排列。信号的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。一个模块尽量只用一个时钟,这里的一个模块是指一个module 。在多时钟域的设计中涉及到跨时钟的设计最好有专门一个模块做时钟的隔离。这样做可以让综合器综合出更优的结果。尽量在底层模块上做逻辑,在高层尽量做例化,顶层模块只到做例化。一般来说,进入FPGA的信号必须先同步,所有模块的输出都要寄存器化,以提高工作频率,这对设计做到时序收敛也是极有好处的。

在调试FPGA硬件电路时要遵循一定的原则和技巧,才能减少调试时间,避免误操作损坏电路。首先在焊接硬件电路时,只焊接电源部分。使用万用表进行测试,排除电源短路等情况后,上电测量电压是否正确。然后焊接FPGA及相关的下载电路。再次测量电源地之间是否有短路现象,上电测试电压是否正确,然后将手排除静电后触摸FPGA有无发烫现象。如果此时出现短路,一般是去耦电容短路造成,所以在焊接时一般先不焊去耦电容。FPGA的管脚粘连也可能造成短路,这时需要对比电路图和焊接仔细查找有无管脚粘连。如果出现电压值错误,一般是电源芯片的外围调压电阻焊错,或者电源的承载力不够造成的。若是后者,则需要选用负载能力更强的电源模块进行替换。如果FPGA的I/O管脚与电源管脚粘连,也可能出现电压值错误的现象。如果出现FPGA发烫,一般是出现总线冲突的现象。这种情况下需要仔细检查外围总线是否出现竞争问题。特别是多片存储器共用总线时候。以上步骤均通过后,将电路板上电运行。然后把下载电缆接到JTAG接口上,在主机中运行Quartus II软件,并打开Programmer编程器,单击其中的“Auto Detect”按钮进行FPGA下载链路自动检测。若能正确检测到FPGA,说明配置电路是正确连接的。焊接时钟电路、复位电路及数码管电路,并向FPGA下载一个数码管跑马灯程序。若程序能够正确运行,说明FPGA已经可以正常工作了。最后焊接所有其他电路,并进行整体功能测试

37

第 38 页 共 46

参考文献

[1] 张辉,曹丽娜.现代通信原理与技术.西安:西安电子科技大学出版社,2003. [2] 陈如明.信号系统与高速无线数字传输.科学出版社,2000,1.

[3] Theodore S.Rappaport著,蔡涛译.无线通信原理与应用.电子工业出版社,1999,11 [4] 郑智勤.Simulink电子通信仿真与应用.北京:国防工业出版社,2002.

[5] 彭伟军,宋文涛,罗汉文.GMSK在跳频通信中的应用及其性能分析.通信学报,P41-47, [6] 2000,11.郑继禹,万心平,张厥盛.锁相环路原理与应用.北京:人民邮电出版社,1984. [7] 万福; 赵云波.一种GMSK调制算法及其实现. 通信与广播电视, 2003 . [8] 赵青.基于MATLAB的GMSK仿真系统设计. 南通职业大学学报, 2010 . [9] 汪敏;肖斌.基于FPGA的数字中频系统设计. 通信技术, 2011. [10] 熊文彬; 蒋泉.基于FPGA实现的视频显示系统. 液晶与显示, 2011 . [11] 陈淑融;王勇.GMSK调制及其在软件无线电上的应用. 电子测试, 2010 . [12] 杨力生;赵清华.OQPSK调制信号的FPGA实现. 中国新通信, 2010 . [13] 陈亮;韩方景.GMSK调制器的FPGA实现. 微计算机信息 ,2007 .

[14] 黄玉琴;李金平.移动通信系统中的GMSK调制模型. 黑龙江科技学院学报 ,2008 . [15] 娄莉;GMSK数字调制的仿真与分析. 现代电子技术, 2004 . [16] 曹志刚,钱亚生.现代通信原理.北京:清华大学出版社,2002.

[17] Rodger E.Ziemer and Carl R.Ryan.Minimum-shift keyed modem implementations for high data

rates.IEEE Communications Magazine, VT-21(4)28-37, October 1983.

[18] A.M.D Turkmani and P .P .S .Carter..Software investigation of co-channel interference in a digital

cellular radio system. Technical report.The University of Liverpool, UK, 1990.

[19] Dornstertter JL.Verhulst D.Cellular efficiency with slow frequency hopping: analysis of the digital

SFH900 mobile system. IEEE Journal on Selected Areas in Commun, 1987.

[20] Carl Erik Sundberg.Continuous phase modulation. IEEE Communication Magazine,

VT-24(2)56-66, April 1986.

[21] Masahiko Hirono, Toshio Miki, and Kazuaki Murota.Multilevel decision method for band-limited

digital FM withlimiter-discriminator detection. IEEE Transactions On Vehicular Technology, VT-33(3)1 14-122, August 1984.

[22] John G.Proakis著,张力军 等译.数字通信(第三版) .电子工业出版社,2001年4月. [23] Domstetter J, Verhulst D.Cellular efficiency with slow frequency hopping:analysis of the digital

SFH900 mobile system.IEEE Journal on Selected Areas in Commun, 1987Msac-5(5)-835-845.

38

第 39 页 共 46

[24] Kazuaki Murota and Kenkichi Hirade GMSK modulation fordigital mobile radio telephony IEEE

Transactions On Communications, VT-29(7)345-355, July 1981.

附 录

顶层模块:

module GMSK_model(

input clk_100m,//100m时钟,系统时钟 output [22:0] gmsk_out,//MSK输出

output b_i,//测试信号,差分编码信号的其中一路 output b_q,//测试信号,差分编码信号的其中一路 output [11:0] sin,//测试信号,正弦信号 output reg clk_1m,//测试信号,1m时钟 output reg clk_2m,//测试信号,2m时钟 output reg x,//测试信号,输入的基带信号 output [11:0] cos//测试信号,余弦信号 );

reg reset;//复位信号 reg [5:0] count_1; reg[4:0] count; reg tag;

wire [32:0] accum1; always @(posedge clk_100m) begin

if(!reset) begin

count <= count + 1;

if(count==5'd30)//当Count计数到30的时候,保持count计数位20不变,

begin

count<= 4'd20;

tag<=1;//标志位

reset至1,产生复位信号

reset<= 1'd1;

end

39

第 40 页 共 46

end

else begin if(count_1 == 6'd49)//计数到49的时候产生1m的时钟 begin clk_1m<=~clk_1m; clk_2m<=~clk_2m;

count_1<=6'd0;

end else if(count_1 == 6'd24)//计数到25的时候产生2m的时钟

begin if(tag==1) begin clk_2m<=~clk_2m;//翻转时钟 clk_1m<=~clk_1m;//翻转时钟 count_1<=0;

tag<=0;

end else

begin clk_2m<=~clk_2m; count_1<=count_1+1;

end

end

else

begin

count_1<=count_1+1;

end

end

end always @(posedge clk_2m)

begin

x<=accum1[8];//随机的取X得值 end

40

第 41 页 共 46

s2p s2p_u1(//产生差分编码模块 .clk(clk_2m),//2m的时钟 .clk_div2(clk_1m),//1m的时钟 .reset(reset),//复位信号 .x(x),//基带信号

.b_i(b_i),//差分编码输出到iq模块 .b_q(b_q));//差分编码输出到iq模块

iq iq_u2(

.clk(clk_100m),//100m的时钟 .reset(reset),//复位信号

.b_i(b_i),//从s2p模块来的差分编码信号 .b_q(b_q),//从s2p模块来的差分编码信号 .sin(sin),//输出的正弦信号1m .cos(cos));//输出的余弦信号1m iq_mod iq_mod_u3(

.clk(clk_100m),//100m的时钟 .i_i(cos),//从iq模块来的余弦信号 .q_q(sin),//从iq模块来的正弦信号 .reset(reset),

.gmsk_out(gmsk_out),//最终的msk调制输出信号 .accum1(accum1));//累加值,为了X取随机值

endmodule

差分模块:

module s2p(//产生差分编码的模块 input clk, input clk_div2, input reset, input x,

output reg b_i,//输出的差分编码

output reg b_q//输出的差分编码

41

第 42 页 共 46

);

reg [1:0] x_t,d_t;//用于计算差分编码 wire d_x;//差分输出信号 reg s_flag; reg b_i1;

always @(posedge clk)

begin

if(!reset)

begin

x_t<=2'b00; d_t<=2'b00;

end begin

x_t[1:0]<={x_t[0],x};//将x_t的低位赋值给高位,然后高位存进来d_t[1:0]<={d_t[0],d_x};//将d_t的低位赋值给高位,然后高位存进

else

的基带信号X 来的d_x

end

end

assign d_x=(x_t==2'b11) ? 0:(x_t==2'b00) ? 0:1;//判断模块,真,冒号前面 always @(posedge clk)

begin

if(!reset)

begin

s_flag<=1'b0;//复位的时候初始化三个变量 b_i<=1'b0; b_q<=1'b0;

end begin

if(d_t[1]==d_t[0])//当二者相等的时候

begin

s_flag<=s_flag; end

42

else

第 43 页 共 46

值 值

else

if(clk_div2)

begin

s_flag<=!s_flag;//当clk_div2为1的时候,s_flag取非

end begin

s_flag<=s_flag;//当clk_div2为0的时候,s_flag取非

else

end begin

b_i<=s_flag;//当clk_div2为1的时候,b_i取s_flag end begin

b_q<=s_flag ^ d_t[1];//当clk_div2为0的时候,b_q取

if(clk_div2)

else

s_flag与d_t的模值

end

end

end

endmodule

I/Q加权模块: module iq(

input clk, input reset, input b_i, input b_q, output [11:0]sin, output [11:0]cos);

wire [11:0]sin1; wire [11:0]cos1;

43

第 44 页 共 46

reg [31:0] reg1;

reg [32:0] accum1;//sin信号的频率累加寄存器 reg [31:0] reg2;

reg [32:0] accum2;//cos信号的频率累加寄存器 reg tag;

parameter data1=32'd375809638;//32'd42949673;

parameter data2=32'd375809638;//d21474836;//产生1M的频率字 always @(posedge clk) begin

if(!reset) begin

reg1 <= data1; reg2 <= data2; accum1 <= 33'd0; accum2 <= 33'd0;

end

else begin

accum2 <= {1'b0,accum2[31:0]} + data2;//频率字累加,当最高位为1的时候就致成0,为下次累加做准备 end

end

); );

.address(accum2[31:23]), .clock(clk), .q(cos1)

.address(accum1[31:23]), .clock(clk), .q(sin)

gmsk_sin gmsk_sin(//存储sin信号的Rom核,里面存有512个正弦信号的采样点

gmsk_cos gmsk_cos(

assign cos = b_q ? cos1 : -cos1;//根据b_q判断,为一的时候不做变化,为0的时候翻转信号 endmodule

44

第 45 页 共 46

载波调制相加模块: module iq_mod(

input clk, input reset, input [11:0]i_i, input [11:0] q_q, output [22:0] gmsk_out, output reg [32:0] accum1 );

parameter data=32'd75161928;//32'd150323855;//32'd429496730;//频率字,产生3.5M的信号 wire [11:0] sin; wire [11:0] cos; wire [23:0] q1; wire [23:0] q2;

reg [31:0] reg1; always @(posedge clk) begin

if(!reset) begin

reg1 <= data; accum1 <= 33'd0;

end

else begin

accum1 <= {1'b0,accum1[31:0]} + reg1;//频率字累加,当最高位为1的时候就致成0,为下次累加做准备 end

end

dds_modu dds_modu(//存储sin信号的Rom核,里面存有512个正弦信号的采样点,根据频率字的不用产生不同频率的信号

.address(accum1[31:23]),

45

本文来源:https://www.bwwdw.com/article/xl3p.html

Top