基于FPGA的数字信号处理模块设计与实现
2020-06-12李聪,向新,王瑞,孙晔
李 聪,向 新,王 瑞,孙 晔
(1.空军工程大学 研究生院,陕西 西安 710038;2.空军工程大学 航空工程学院,陕西 西安 710038)
0 引 言
为了满足社会的需求,各种新技术新方法不断地被提出,通信系统的功能变得越来越多样,结构也越来越复杂[1],这就对通信系统的设计提出了新的要求。而随着半导体工艺技术的进步,FPGA(现场可编程门阵列)器件的设计技术也取得了飞跃性的突破,与传统数字电路相比,FPGA具有集成度高、开发周期短、硬件升级空间大、数据吞吐量大等优点[2],因此FPGA在通信系统的设计中得到了广泛的应用,这些应用主要集中在接口设计、数字滤波、调制解调及编解码等方面,而目前的大多数设计只是完成其中的某一项功能,并没有充分利用FPGA的资源[3]。
在这种背景下,同时为满足某型通信系统的数字信号基带处理模块化设计需求,本文基于软件无线电设计平台,选用大规模FPGA器件,使用VHDL(硬件描述语言)设计了用于某型无线通信系统的数字信号处理关键模块,在较小的硬件平台上通过软件设置实现了语音与短信的发送、短信的编解码、中继功能控制、系统工作状态的选择与切换,以及对外设接口的控制等功能。仿真及测试结果表明,该数字信号处理模块性能良好、可靠性高、使用灵活、功能可扩展且易于升级改造,降低了系统的复杂度[4,5],具有较大的实用价值。
1 系统整体方案设计
该型无线通信系统设计的整体构成如图1所示,设计采用模块化结构,模块之间通过数字总线相连。其中,射频模块提供系统的调制解调及前端处理(接收的前放、发射的功放、滤波等),射频前端模块还包括接地偶极子,作为信号发射接收的天线;系统控制/显示模块提供系统的控制输入和状态显示,包括短信息的输入和输出显示,同时也提供键盘及液晶显示器等外设;电源模块可以通过电池和外部电源输入提供系统各模块的电源;手咪为语音信号的信源和信宿。
图1 系统整体结构框架
数字信号处理模块是无线通信系统的核心部分,模块采用软件无线电设计思想,具有较强的数字信号处理能力[4]。该模块独立安装于通信系统内部,与射频前端模块通过发射信号射频电缆、接收信号射频电缆以及收发控制线相连接,与通信系统其它部分则是通过数字总线的方式相连接。图2为数字信号处理模块的功能框图,主要包括发送和接收处理模块,编译码模块以及对外接口模块,实现系统的包括通信帧帧头的解析、同步、短信编解码以及系统工作状态的选择与切换等数字基带信号处理功能。
图2 数字信号处理模块功能框架
2 硬件电路设计
为了便于调试以及后期升级,FPGA及其配置单元,包括独立电源模块,LED指示单元,时钟单元,复位单元以及程序下载调试接口等放置在一块电路板上,这里称之为数字核心处理板,简称核心板,是数字信号处理模块的载体,负责完成模块的全部数字信号处理功能,包括通信帧帧头的解析、同步、短信编译码等,并提供了外部通信的接口,是系统的核心部件,核心处理板通过两块DIN96欧式插座与主板相连接。主板为系统的主功能板,主要搭载系统的模拟电路部分,是核心板与整个通信系统连接的桥梁,主板在发射时完成语音和短信信号的放大、整形与选通,在接收时完成语音和短信信号的AD变换、放大与选通。根据实际需求,核心板上搭载的是Intel的CycloneⅢ型FPGA,其配置芯片选用EPCS16N。图3是核心处理板的顶层电路图。
图3 数字核心处理板电路顶层视图
3 FPGA系统设计
3.1 通信帧结构
本设计中系统通信采用组帧的方式,组帧的类型主要包括常规语音帧、常规短信帧以及控制信息帧等。
(1)语音信息组帧
语音信息的发射采用模拟数据帧的方式,即有数字化的帧头和帧尾,但帧的内容为模拟调制的语音信号,每帧的长度是不确定的,具体时间以一次有效发射为准,即从按下发射按钮到松开发射按钮的整个时间。
图4为语音组帧的具体结构图,其中,保护帧头是一段连续的“01”chip,速率为1 ms/chip,用于后续帧头检测门限的确定,同时作为发射启动的保护时间。语音帧头和语音帧尾都是一段32chip的M序列(最长线性移位寄存器序列),M序列是一种应用广泛的伪随机序列,它容易产生且规律性强,具有很好的自相关性和较好的互相关性[6,7]。语音帧头和语音帧尾分别是语音信号开始和结束的标志。语音信息为正常发送的语音信号,保护帧头、语音帧头和帧尾是在通信过程中添加的,语音通信为按讲(push to talk,PTT)方式,按下发射按钮,则保护帧头和语音帧头发出,松开发射按钮,则语音帧尾发出[8]。表1为部分码字的功能。
(2)短信息组帧
图5是短信息的组帧结构示意图,保护帧头和语音帧一样,是一段持续120 ms-150 ms的“01”序列,短信帧头是短信信号开始的标志。短信息段包括地址段、标志段、信息段以及校验段,具体信息见表2,其中,地址段以4比特数据作为短信发射/接收地址,系统保留为“0000”;标志段以4比特数据作为业务短信字段,它标志着后面信息段的性质;信息段是16比特的数据,是短信息的具体内容;校验段是8比特的数据,用于短信息内容纠错。
图4 语音组帧结构
表1 码字功能
图5 短信息组帧结构
表2 信源编码
3.2 发送处理模块
发送处理模块主要功能为对语音及短信息信号进行组帧及扩频处理并发送给射频单元,主要包括以下几个功能块:
(1)语音帧头、帧尾及短信帧头识别码的添加
主要功能是在模拟语音信号之前、之后以及短信息之前添加数字帧头识别码并发送,其中语音帧头识别的规格选用32比特M伪随机序列,设计码片速率为1 Kbps,波形成形方式为方波。
(2)短信息扩频调制
该功能主要是将编码后的32比特短信息从高位到低位逐位进行扩频调制并发送,扩频码选用32比特M伪随机序列,码片速率设计为1 Kbps,信息速率为32比特/s,波形成形方式为方波。
(3)发送控制
该模块通过使能信号对上述功能模块进行选择和控制,并对发送信号进行时序控制。其中,语音信号的发送流程如图6所示,首先检查系统的当前状态,当系统正在接收信号时,不允许发送操作,其次判断PTT发射按钮是否有效,有效时则首先发送语音帧头识别码,发送完毕后打开模拟语音通路,发送模拟语音信号,当再次检测到PTT按键电平跳变时说明语音发送已结束,此时程序关闭模拟语音通路,并随后发送语音帧尾识别码。
图6 语音信号发送控制流程
短信息的发送流程相对简单一些,当检测到短信息发送请求后,系统开始接收编码后的32比特短信息,随后短信帧头识别码与32比特短信息形成组帧,并对组帧进行扩频调制然后发送,发送完成后,给出发送成功标志,系统恢复到初始状态。
3.3 接收处理模块
接收处理模块用于信号的捕获、跟踪同步以及接收,主要包括下采样处理、动态门限计算、帧头帧尾识别码捕获、短信息跟踪解扩以及接收控制等功能。
3.3.1 下采样处理
为保证信号处理精度,接收端AD采样使用32倍过采样,但是如果使用32倍过采样的信号进行捕获则将大大增加系统复杂度,这是不必要的。因此在接收端捕获处理之前先要对信号进行下采样,用下采样之后的信号进行捕获处理。下采样处理分为两步:首先是低通滤波,然后是2比1的抽取。
对信号进行数字低通滤波的目的是使下采样后的信号满足低通采样定理,避免混叠。这里使用一个窗函数数字低通滤波器,采用哈明窗,阶数为60阶。实现低通滤波通带截止频率为6 KHz,阻带衰减为-60 dB。最后,对低通滤波后的样点数据进行2比1的抽取,实现2比1下采样[9]。
3.3.2 动态门限计算
在对信号进行捕获和跟踪时,要对信号的相关峰进行判决,这个判决门限不能是一成不变的,需要根据信号能量大小进行调整,否则在信号幅度变化的时候就有可能出现漏捕和误捕。因此,就需要根据信号能量大小动态计算判决门限。
在本系统中,一个码元周期为32 ms,因此动态门限必须在系统初始化之后32 ms以内建立起来,以保证第一个码元周期结束时不出现错捕。所以,这里设计的动态门限计算时间为16 ms,即每统计16 ms的信号能量后计算出门限并进行更新。
3.3.3 帧头帧尾的捕获及短信息跟踪解扩
帧头帧尾包括语音的帧头、帧尾及短信息的帧头,捕获方法采用滑动相关器进行滑动相关匹配,一旦出现相关峰即判断为捕获成功。
捕获到短信息帧头识别码后,需要对32比特的短信息进行跟踪和解扩,跟踪的目的是为了避免频偏的积累导致失同步,跟踪的方法是采用早迟环路。早码环和迟码环分别比跟踪环早和迟半个码片。当早环和迟环相关峰相等时,跟踪环输出最大相关峰;当早环和迟环相关峰不相等时,根据其差值的大小调节跟踪环的位置,直到使跟踪环相关峰达到最大。同步跟踪之后即可进行信息解扩,解调出32比特短信息,送给译码模块。
3.3.4 接收控制
接收控制模块与发射控制模块类似,模块通过使能信号对其它功能模块进行控制,并对接收信号进行时序控制。图7分别为语音与短信息的接收流程。
图7 语音和短信接收控制流程
3.4 编译码模块
编码包括短信息的信源编码和信道编码,最终组成32比特的发送帧格式。译码包括信道译码和纠检错,以及信源译码和系统状态控制。短信息帧的格式如图8所示。
图8 短信帧格式
信源编码是对外部接口模块接收到的信息命令(如键盘输入等)进行编码,差生帧格式的标志段、地址段和信息段[8,9]。其中,标志段是短信息的功能标示,即表示短信息是常规短信还是特殊功能短信(如控制命令)。地址段是区分不同端机的地址码。信息段是用来传输常规信息和特殊功能命令的,其中,常规信息采用BCD码编码,16比特的二进制数可以传输四位十进制数,即可传输1000条不同功能的短信命令[10]。
信道编码采用RS码(Reed-Solomon codes),RS码是一种前向纠错的信道编码,属于多元BCH码,对于连续二进制比特的错误有较好的纠错能力且实时性较好。本系统采用16元的(6,4)RS码编码,即每4个比特是一个RS码符号,在24比特信息后添加8个比特的纠错位,即两个纠错符号。在译码时,可以纠正一个符号的错误,也就是说即使某个符号4比特二进制信息全部传错,也可以通过RS译码实现纠正[11]。
经过信源和信道编码后,即可产生32比特的待发送信息,待发送信息将传送给发送处理模块,处理后发给射频单元。同样,接收模块也将接收到的32比特信息传送给译码模块进行译码,并对译码后的信息进行分析,将常规短息送给液晶屏显示,对特殊功能短信进行相应的响应并改变系统状态。
3.5 对外接口模块
对外接口模块主要包括液晶显示屏和矩阵键盘的连接接口以及对其它外部模块的控制接口。在系统测试中,采用RS232接口与计算机互联实现液晶显示屏和矩阵键盘的连接功能,因此接口模块就是两个基于UART协议的串行接口,一个与计算机串口互联完成短信息的编写与显示,另一个与其它系统模块互联实现功能控制。
4 系统测试
4.1 RS232串口通信功能测试
测试针对系统的对外接口模块,使用串口助手模拟上位机向核心板发送控制指令“0x040000”, FPGA通过其内部串口模块接收到这段指令之后,将依据程序设定通过串口模块返回“0x050000”给串口助手。
测试通过QuartusⅡ软件自带的SignalTap嵌入式逻辑分析仪进行。SignalTap不同于仿真软件,它是一种系统级调试工具,通过软件设置,选择需要捕获的信号及数据样本量,这些信息随主程序一起编译并下载到FPGA上,相当于在器件内部嵌入了一个示波器,在进行相应触发条件的设置后,就可以捕获和显示器件内部的实时信号,需要注意的是,由于逻辑分析仪需要占用FPGA的逻辑资源,因此加入观察的信号不宜过多。图9是串口发送和接收数据的实时采集,由图可以看到,在发送过程中,指令“0×040000”被分为3个8比特的数据包发送出去,每个数据包低位在前,高位在后。从接收数据过程的捕获测试图可以看到,返回的数据是“0×050000”,与程序设定相同。
图9 串口发送及接收数据捕获测试
4.2 短信及语音组帧测试
图10为短信息组帧测试。测试时,使用串口助手将代表特定信息的指令发送给FPGA,逻辑分析仪触发后会捕获FPGA输出的信号。图中第一个信号是系统的最终输出,该信号会被传输至射频前端进行调制并最终发射出去;第二行是短信帧头,包括一段120 ms的保护帧头和短信帧头识别码,其它信号为辅助观察的计数信号。短信帧部分是已经经过扩频调制处理的,经过比对,与程序设定相符。
图10 短信息组帧测试
图11为语音组帧测试。测试时,首先按下外部PTT按键,此时系统会立即输出数字保护帧头和语音帧头识别码,之后会打开模拟语音开关输出模拟调制的语音信号,这段时间FPGA是没有输出的。语音输入结束后,松开PTT按键,系统输出语音帧尾识别码,表示一次语音输入已结束。通过观察图11抓取的实时信号可以看到,系统反应与程序设定是一致的。图12为测试时的硬件环境。
图11 语音组帧测试
图12 硬件实物
5 结束语
本文基于软件无线电设计平台,选用大规模可编程逻辑器件,使用硬件描述语言,采用软件无线电设计思想设计了用于某型无线通信系统上的数字信号处理关键模块,在较小的硬件平台上通过软件设置实现了语音信息的发送与接收、短报文信息的发送与接收、短报文信息的编解码及系统模式切换等功能,节约了大量的硬件资源,提高了系统的实时性能。经测试,该模块性能良好、使用灵活、可靠性高而且功能易于扩展,具有较大的实用价值。