基于PC机声卡的数据传输系统设计与实现毕业论文.docx
《基于PC机声卡的数据传输系统设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《基于PC机声卡的数据传输系统设计与实现毕业论文.docx(45页珍藏版)》请在冰豆网上搜索。
基于PC机声卡的数据传输系统设计与实现毕业论文
基于PC机声卡的数据传输系统设计与实现毕业论文
1绪论
1.1选题背景意义
近年来随着技术的进步,特别是超大规模集成电路技术和工艺的发展,个人计算机等多媒体终端不仅在性能上大幅度提升,而且制造成本的降低也使得计算机等多媒体终端更为普及。
而另一方面,设计并实现一个通信系统必须专业的通信设备支持,虽然专业设备性能更好,但专业设备较为复杂、开发难度高、开发周期较长、成本高,这对于学生通信实验及研究、通信功能仿真与验证、简单通信系统设计与开发等非常不利。
软件无线电概念从90年代提出至今,发展迅速;并由于其灵活性和可重配置性特点符合通信的发展趋势,所以其一直是通信领域的研究重点[1]。
它的出现已然使无线电通信经历了由硬件到软件的第三次变革,其创新及意义丝毫不亚于无线电通信由固定到移动、由模拟到数字的两次变革。
软件无线电是基于软件定义的无线通信协议而非硬件连线实现,换而言之,频带、空中接口协议和通信功能均由软件实现,并可进行修改、更新和动态加载[2]。
其核心思想就是构造一个具有开放性、标准化、模块化的通用通信平台,将各种通信功能如频带、波形、调制解调类型、信道编解码、通信协议等用软件来实现,通过动态加载软件来实现不同的通信功能,从而研制出具有高度开放性、灵活性和可重配置的无线通信系统[3]。
软件无线电的一般组成框图如图1.1.1所示,主要由前端的射频模块和高速A/D-D/A转换器,以及后端的实时信号处理器和各功能软件模块组成[4]。
软件无线电由于其开放性的系统结构、功能的模块化及软件化、平台的通用性及兼容性强等技术特点,其必然会成为未来无线电的发展方向。
图1.1.1软件无线电基本结构
由于软件无线电发展还不够成熟,现今的软件无线电设备特别是高带宽的软件无线电设备还非常的昂贵。
而得益于超大规模集成电路技术等的进步,计算机和声卡的性能得到大幅度提升,且制造成本的降低也使得计算机得以普及[5]。
PC声卡可进行A/D-D/AD的转换,其采样频率和采样精度均可编程控制。
采样频率能够满足一般的基带信号的采样,市场现有声卡最高可达200KHz;而采样位数可达24位,分辨率高;采样通道为多通道,灵活性强且计算机可为其分配较大的缓存空间。
专业的DSP数字信号处理器虽然处理信号速度快,但它也有一些弊端,比如开发难度较高、周期长、成本较高、需要其它器件如存储器的辅助支持。
而现在的CPU性能已经大幅度提升,CPU的处理速度和内存的容量已经能够完全代替DSP胜任常规数字信号的实时处理[6]。
所以本文基于软件无线电思想,利用计算机和声卡来构建一个通信仿真验证平台。
该通信仿真验证平台用软件来实现并动态加载各通信功能模块,并以DQPSK为例验证了整个系统功能的可行性。
该平台基本架构与软件无线电的基本架构相似,声卡对应于高速A/D-D/A转换器,计算机CPU对应于DSP。
基于计算机和PC声卡搭建的这个通信仿真验证平台具有很多优势:
平台结构是标准化、模块化的,具有较强的开放性,易于新技术的应用。
其硬件可以随着技术的发展而更新,而其软件部分也可以不断的升级,其兼容性也较强,可以同其它通信设备进行通信。
平台是用面向对象的高级语言VC++编写的,开发简单、开发周期短;
平台是基于软件无线电思想搭建的,通信功能均由模块化软件实现,通用性、、可重配置性、灵活性更强,可以实现ASK、PSK、FSK等多种通信方式;
平台可编写噪声信号程序仿真信道特性等,能够很好的进行抗干扰性能测试等仿真验证;
PC声卡作为计算机的一个模拟信号输入输出接口,其作用不同于串口和USB口传输数据信息,它可以直接输出经过调制好后的模拟信号到电台或电话网进行传输。
这在短波通信领域特别是应急通信领域作用非常大,可以直接在计算机上用软件实现多种短波通信,如CW、RTTY、PACTOR、PSK31等,并通过音频线连接到电台进行远程传输;同样也可以通过有线信道进行传输,如电话线和音频线等,可利用现有电话网进行传输[7]。
平台的硬件设备是计算机和PC声卡,普及率极高,不需另外购置硬件设备,相对于昂贵的专业软件无线电设备,更适合学生进行通信实验及研究、通信系统仿真验证、简单通信系统的开发。
1.2论文主要内容
本论文基于软件无线电思想,利用声卡和计算机的硬件平台来搭建一个通信仿真验证平台,并在此平台用软件实现DQPSK双工通信。
整个通信系统的调制与解调、信源编译码、信道编译码等通信功能均由软件实现并动态加载,并最终利用MFC生成相应通信软件。
主要内容:
可变长度编解码、卷积码编码和维特比译码原理及软件实现;
DQPSK信号调制与解调原理及软件实现
载波同步、锁相环、脉冲成型原理及软件实现
VC++对声卡的编程控制;
基于PC声卡的仿真验证平台的搭建及整体通信系统的MFC实现。
1.3总体方案设计
要实现基于PC声卡的通信系统,如图1.3.1为通信方案结构图。
图形用户界面层主要用于输入输出消息、命令、通信参数、波形等信息。
而通信接口层主要用于上层图形用户界面层与下层通信执行层的一个接口层,传递各种参数、指针、消息、启动接收或发射线程等。
下层通信执行层即通信协议层,主要执行相应通信方式的具体功能,有编译码和调制解调,还有控制声卡将调制后的数字信号转换成模拟信号输出,或者控制声卡对输入模拟信号进行采样转换成数字信号。
图1.3.1通信方案结构图
如图1.3.2、图1.3.3和图1.3.4为三种通信实物连接图,声卡在其中的主要作用是将数字信号转换成模拟信号输出或对模拟信号采样转换成数字信号输入。
而信号的信道传输可以直接通过3.5mm音频线连接两台电脑,进行传输如图1.3.2;也可以用音频线连接一台电脑的输入输出,在一台电脑上进行发送和接收信号;还可以通过音频线将信号连接到射频端如电台将信号通过无线信道进行传输,这种可以用短波电台进行远程传输非常方便。
图1.3.2音频线连接两台电脑通信
图1.3.3音频线连接一台电脑的输入输出进行通信
图1.3.4连接电台进行无线通信
有了可实现通信的平台,仍需要一个具体的通信方式来在这个平台进行实现。
查阅了一些相关资料之后,最终选择了差分四相键控(DQPSK),它是较为常用的数字信号调制方式,具有频谱利用率低、抗干扰性强、实现简单等优点,被广泛应用于无线通信中。
通信流程如图1.3.5所示,而具体的每一个通信模块原理及实现方式将在后续章节详细介绍。
图1.3.5主通信流程
2数字编译码
2.1信源编译码
信息源将消息转换成原始电信号之后,为了提高信息传输效率、减小输出序列的剩余度、提高平均信息量,通过某种数据压缩编码技术对信源输出符号序列进行压缩变换,减少码元数量降低码元速率,最终降低传输带宽提高通信有效性,而信源译码或称解码是其逆过程。
具体说来,就是针对信源输出的统计特性寻找一种编码方法将序列变成最短码字并输出,使码元平均信息量增大同时又保证能无失真的恢复原始序列。
信源编码有多种,此处采用了编码效率很高的Varicode码,Varicode码是一种哈夫曼编码(HuffmanCoding)。
哈夫曼编码属于可变字长编码(VLC),即用长度不等的码字提高有效性。
该方法完全依据字符出现的概率来构造长度最短、最佳的码字,有时候又称其为最佳编码[8]。
该编码是一种基于符号的概率分布来进行编码的,符号在信息源中出现概率越大码字长越短,即最常出现的符号相应的码字越短;同样,出现概率越小的符号相应的码字越长,从而使信源在传输信息时传输的码最短即传输效率最高,它在可变字长的编码中也是最佳的。
而在计算机信息处理中,哈夫曼编码是一种一致性编码,用于无损耗数据压缩。
程序中我们用一张特殊码表如图2.1.1,采用查表法对信源数据进行编码。
这张码表特别之处是建立在源字符出现估算的概率上的,为了提高效率,将常用字符分配短的编码,如字母“e”是英语中经常使用的字符分配二进制11,而将长的编码分配给不常用的字符,如“z”分配111010101。
可变长度编码方式提高了编码效率,加快了字符传输速度。
图2.1.1可变长编码
在CPSKMode类中有:
m_TsShiftReg=VARICODE_TABLE[ch&0xFF],其中变量ch是从键盘输入得到的8bit的ASCII字符。
而VARICODE_TABLE[256]是一个256个元素的数组即为编码表,程序通过ch&0FF对数组VARICODE_TABLE进行查表并将得到的可变长码字输入变量m_shiftReg保存用于后面进行信道编码。
而信源译码同样是采用查表技术,只不过是信源编码的逆过程。
2.2信道编译码
2.2.1差错控制技术概述
一个通信系统的性能指标最为主要的就是有效性和可靠性,而有效性和可靠性的提高往往存在一定矛盾,必须根据系通信统实际要求折中考虑。
一般来说在满足一定的可靠性指标下,尽量提高通信的有效性即提高信息的传输速度。
上一小节讲的“信源编码解码”技术,主要作用是提高通信的有效性;而这一小节讲的“信道编解码”技术即“差错控制编码”技术,主要是用于提高数字通信系统的可靠性传输技术。
由于数字信号在传输的过程中,必然会受到各种干扰的影响,而致使其码元波形产生了变形,故当接收端收到变形的码元波形之后可能会产生错误的判决而导致误码的产生。
信号传输中的干扰有两种,第一种“乘性干扰”,由于信道传输特性的不理想产生的误差,通常采用频域均衡或时域均衡技术加以纠正抵消干扰;二种“加性干扰”,信号在传输过程中叠加的噪声信号产生了误差导致了误码,需要采用其它方法加以解决,如合理选择调制解调方以及发送功率,当达不到误码率要求时通常采用差错控制编码技术来加以纠正。
从差错控制的角度来看,按照加性干扰引起的错码分布规律不同,可将信道分成三类,即突发信道、随机信道和混合信道。
不同信道类型采用不同的差错控制技术,常采用的差错控制技术有以下几种:
检错重发法(ARQ)
如图2.21,当接收端检测出接收到的信码出错时,即设法通知发送端让发送端重发,一直到正确接收为止。
而所谓的检测到错码,是指在接收到的码组中发现有一个或多个错码,但是又不知道具体是哪个码错了,也不能对错码进行纠正而只能要求发端重发。
接收端要通知发端重发必须一个反向信道,所以这种差错控制方法需具备双向信道,这也是一个缺陷。
图2.2.1ARQ系统原理框图
前向纠错法(FEC)
在发送端序列通过差错控制编码,即在发送序列中按照一定的规律加入冗余码即监督码元,而接收端利用这些监督码元和他们的关系不仅能够发现错码,还能纠正错码。
对于二进制系统,只要能确定错码位置,就能够纠正它。
采用前向纠错法无需反向信道传输指令,也不会因为反复重发而造成大的延时,实时性好,所以此次采用了前向差错控制编码。
反馈校验法(IF)
此法不需加入差错控制编码,接收端将收到的码元原封不动传回给发端,并在发送端与原码进行逐一比对,如果发现错码再重发。
此法原理和设备都简单,但是需要双向信道,而且传输效率也低。
以上三种差错控制方法也可以结合使用,如将ARQ和FEC结合使用,当发现较少的错码时采用FEC进行纠正,当发现较多的错码而超过FEC纠正能力则采用ARQ重发机制重发。
此外,某些特定场合可以采用检错删除机制,此法只能适用于信息内容有大量冗余度或者多次重发的场合。
在信息码元序列中加入的监督码元称差错控制编码也常称纠错编码,一般说来加入的监督码元越多检错纠错能力也越强,但编码效率也越低。
根据著名的香农编码理论,对于有噪信道,存在信道编码可以实现可靠的通信,它能在发射速率R不同的编码方式有不同的检错纠错性能和编码效率,现在较为常见的编码有分组码、卷积码和Turbo码。
每种码都有自己的优缺点,根据具体通信系统、具体信道和具体要求来选择不同的编码方式。
卷积码又称连环码是一种非分组码,对于前向纠错特别适用。
在许多实际情况下它的性能更由于分组码,并且运算也简单,所以此次我们也采用了卷积编码。
虽然卷积码也是将k个信息码元编成n个码元的码组,但是不同的是,监督码元不仅与当前的k个信息段相关,而且还同时和前面的m=(N-1)个信息段相关[9]。
所以其中任一码组的监督码元都监督着N组信息段,N即为编码约束度而nN则称为编码约束长度,将卷积码记为(n,k,N)[10]。
卷积码中,n和k值一般较小,而N一般视通信性能具体要求而定,当然N越大检错纠错性能越好,但译码延时和运算也会越大。
相比较而言,在同种复杂度情况下卷积码性能明显优于分组码,而Turbo码译码又过于复杂,并且卷积码很适用于前向纠错法,所以选择了卷积编码方式,编译码简单且性能又比较好。
2.2.2卷积码编码的实现
卷积编码的描述方式有多种,大体可以分为两大类:
解析法和图形法。
其中解析法常用于编码器部分的描述和说明,包括有矩阵生成法、离散卷激法和码多项式法等。
而译码器部分则用图形法进行描述和说明,包括有状态图描述法、网格描述法和树图描述法。
综合考虑,此次通信中采用了(2,1,5)卷积编码,但由于(2,1,5)编码器有24=16种状态并有25=32种情况,复杂度较高不易讲解,所以暂以(2,1,3)编码器举例进行说明。
如下图2.2.2为卷积编码器结构图,由移位寄存器、模二加法器和开关组成。
它的编码方法为,信息序列依次移入一个两级的移位寄存器中,每输入一组信息序列
,输出端开关就旋转一周输出编码后的码组即
和
。
输出码组C就由下式(2.2.1)确定:
(2.2.1)
图2.2.2(2,1,3)卷积编码器
因为卷积编码器的记忆性是有限的,m级寄存器既有
个状态,每个状态代表寄存器不同值,输入K值时,根据不同寄存器状态输出不同值C1C2,据此画成状态转移图,如下图2.2.3。
图2.2.3(2,1,3)编码器状态转移图
程序中,我们采用了查表法来实现(2,1,5)卷积编码,有24=16个状态并有25=32种情况,所以可以生成一个有32个元素的数组进行查表生成卷积码。
在数组中,把5个比特(当前输入1个比特及先前输入存储的4个比特)涉及的情况罗列出来,按照每个输入对应一个输出(输出为2个比特)形式写成表格即数组。
在进行编码时,直接用当前的1个比特输入和先前输入存储的4个比特来查表,得到编码后的2比特输出。
查表法简单、运算速度快。
下式(2.2.2)即为此次设计的卷积编码器的表达式,式(2.2.3)即为对应的多项式,式(2.2.4)为对应的脉冲冲击响应式。
(2.2.2)
(2.2.3)
(2.2.4)
进行卷积编码的代码为:
symb=ConvolutionCodeTable[m_TxShiftReg&01F]其中变量m_TxShiftReg是用来存储当前1bit输入和前4bit输入,再根据5bit输入对ConvolutionCodeTable进行查表得到卷积编码后的2bit输出,表中输出结果3表示输出11,结果2表示输出10,结果1表示输出01,而结果0表示输出00,编码简单、快速。
2.2.3维特比译码的实现
发送端的信道编码器对信码进行卷积编码后,接收端的信道译码器对其进行译码,卷积码的译码方式主要有两大类:
代数译码和概率译码。
代数译码是利用生成矩阵和监督矩阵来译码,是一种不考虑信道的统计特性而直接利用编码器本身的结构进行译码而。
而概率译码又可称其为最大似然译码,是利用信道的统计特性和卷积码码元特性进行计算译码的。
实用的有序列译码和维特比译码(Viterbi),当码的约束长度较短时,维特比译码效率更高、速度更快,目前得到广泛应用,所以此次也同样选用维特比进行译码。
维特比译码是一种最大似然译码算法,即译码器的输出总是选择条件概率最大的码字。
其基本思想是将接收序列与所有可能的发送序列进行比较,从中选择与接收序列汉明距最小即最大概率的发送序列对应的原始信息码作为译码输出。
维特比译码常采用网格图描述卷积码,如下图2.2.4其中每一种可能的发送序列都与网格图中的一条路径对应。
如在某一节点发现某一条路径已不可能与接收序列具有最短汉明距的话就舍弃。
即对于k=1的每个节点只有两种走向,每次均可舍弃一条,也就是译码每次舍弃一半的可能序列,这样一直到最后一级仅保留了一条路径即为最终的译码输出。
图2.2.4(2,1,3)卷积码对应的网格图
维特比译码算法设计为以下三步:
从时刻l=m(m为存储器级数)开始,计算进入每一个状态的单路径的部分度量值,并且存储每一状态的幸存路径及度量值。
当序列L增加1即l=m+1进入下一时刻,将进入的某状态分支度量值与前一时段度量值进行累加并计算进入此状态所有路径的度量值,保存度量值最大的(汉明距最小的)一条路径,删除其它路径。
若l在进行Viterbi译码时,理论上来说必须接收完完整的数据块后才能进行判决输出,但这需要很大的存储空间并且也会造成比较大的延时,所以在实际运用中需要对接收序列进行截断判决法,截断长度即为译码深度,越长越深其误码判决概率越小但时延也越大,所以综合考虑此次译码深度为约束长度的4倍即收到20个符号之后判决输出,之后一直这样分段处理直至译完整个序列。
调用函数BOOLCPSKMode:
:
ViterbiDcode(doubleangle)实现维特比译码。
程序是根据接收端解调器计算的前后符号相位差angle进行译码,其核心思想就是将所有可能的原始信息码进行编码ConvolutionCodeTable[j]]得可能的相位差,再与收到的相位差相减即可以计算其度量,差值越大偏离越大,有点类似于汉明距,不过更为精确,为软解调。
3数字调制解调与同步
3.1DQPSK数字调制实现
3.1.1DQPSK调制
调制过程就是将低频信号调制搬移到高频的过程,一般是未调信号控制载波的某些参数如幅度、相位或频率随未调信号变化来实现调制,解调是其反过程。
而调制又分数字调制和模拟调制,数字调制相对模拟调制来说具有更好的抗干扰性能,而常见的数字调制方式有幅值键控(ASK)、相移键控(PSK)和频移键控(FSK)。
其中PSK综合性能最好,所以选用QPSK进行调制,QPSK调制简单实用、性能优良,其频带利用率也较高。
MPSK信号均可用式(3.1.1)表示:
(3.1.1)
式中
为基带信号包络波形,理论上来说为矩形波,但由于频带较宽易产生码间干扰等原因,常常需要进行波束成型滤波,后面再具体进行叙述。
TS为码元时间宽度即周期,而
为载波的角频率,
为第n个码元对应的相位,对于QPSK来说有四种情况即有四个相位。
式(3.1.1)进行展开得到式(3.1.2),这样调制信号也可以表示为正交形式的两I\Q支路。
(3.1.2)
其中
,
,
,
。
QPSK信号的单边功率谱密度的主瓣比BPSK窄,其频谱利用率也高,这也是选用QPSK进行调制的原因。
QPSK调制后的每个码元含有2bit信息,用a、b表示2bit的信息则共有四种组合,即00、01、10、11。
他们对相位
的控制是按格雷(Gray)码进行排序的,这样可以减小误码率,如果邻近相位误判那么最多也就错1比特,如表3.1.2所示。
表中I和Q表示要生成相应相位的载波调制信号,需脉冲发生器产生双极性信号对载波
和
进行调制。
QPSK编码表
表3.1.2
a
b
I
Q
1
1
45o
1
1
0
1
135o
-1
1
0
0
225o
-1
-1
1
0
315o
1
-1
图3.1.1为DQPSK信号的产生方法,其中的差分编码器是为了让QPSK变成DQPSK差分调制。
由于对于PSK信号在相干解调时容易产生相位模糊现象导致误码严重,所以我我们采用了差分相位键控可以很好的解决这一问题。
差分相位键控即调制前后码元的相位差,即使相干解调时载波初相出错也不影响后面的解码,因为是检测前后码元的相位差来进行解码的。
表3.1.4为DQPSK编码规则,注意的是调制的是相位变化值,必须基于前面码元的初相,而I/Q值是对应载波的绝对相位的。
图3.1.1DQPSK信号产生方法图
DQPSK编码表
表3.1.4
a
b
0
0
0o
0
1
90o
1
1
180o
1
0
270o
3.1.2脉冲成型
脉冲成型其实就是信道信号成型,在前面已经提到过理论上来说基带信号波形一般为矩形波,但是它并不适合于信道传输。
矩形波频谱很宽,经过带限信道或带限滤波器时会有频谱损失,进而导致解调后的基带波形出现严重的失真和码间干扰,对抽样判决产生严重干扰,最终导致误码率急剧上升。
为了解决这个问题,奈奎斯特第一准则指出,只要把通信系统(包括接收发机和信道)的整个相应设计成在接收端的每个采样时刻只对当前的符号有相应,而其它符号在此处的相应均为零,码间干扰就可以抵消。
无码间串扰时的基带传输特性因满足公式(3.1.3),此即为奈奎斯特第一准则。
(3.1.3)
而理想的低通滤波器虽然满足此公式,但这种特性在物理上是不可实现的,为了解决这个问题可以使理想低通滤波器的边缘缓慢下降称为“滚降”。
较为常用的为余弦滚降特性,只要
在滚降端频率中心
处呈奇对称振幅特性就能满足3.1.3式从而实现无码间串扰传输。
按照余弦滚降特性设计的脉冲成型设计的波形后可以明显发现在载波相位跳变处幅度很小,也就是说频带也确实变窄了。
但是这样的设计对位同步要求很高,要想没有码间串扰,在接收端采样判决时间点必须严格的落在每个符号的中间,否则仍会产生码间串扰。
为此,采用了一种特殊的脉冲成型,其基本规则如果是发送连1或连0码时,相位未变,脉冲成型输出为+1或—1,只有当前后码元不一样发生跳变时,才从前一码元的中间点开始到后一码元的中间点,用正弦或余弦函数来过度,其过度点幅值为0,而且在这过程中只能单调下降或上升一次。
这种设计频带也会很窄,经过带限信道或滤波器也不会造成太大的损失。
同时这样的设计也使一个符号的波形限制在了一个符号周期内,不会延展到其它符号周期内,同样也不会造成码间串扰。
最大好处还有,在收端采样点处不需严格对准符号中点,只要在符号周期内找一个最大点,再进行采样判决就行了。
DQPSK调制的程序实现框图如图3.1.2所示,调制器的相关参数为:
采样速率8000采样点/s,符号速率为31.25符号/s(根据常规打字速度确定的速度),载波频率200-2000Hz范围(可自行设定),信号带宽31Hz左右[11]。
在实现时为了减小系统运算量,脉冲成型和载波生成均采用查表法来实现。
图3.1.2DQPSK调制器的程序实现框图
脉冲成型表如图3.1.3所示,由于信号采样率为8K,而符号速率为31.25符号/s,因此每个符号共有8000/31.25=256个采样点,脉冲成型表共8个符号宽度即2048个采样点。
系统每输入一个符号,脉冲成型表就输出256个点与后面载波相乘进行数字调制,但输出的这256点的数据段并不是一个符号,而是前面符号的半段和后面符号的一半段。
这样设计有两方面的作用,一是在完成波形成型的同时可以进行差分编码,其二是因为本身这种脉冲成型的设计就是当前符号波形与前后符号波形相关的。
其对应的程序数组为PSKShapeTble[2048]。
图3.1.3脉冲成型波形表
具体在进行脉冲成型查表时是根据脉冲地址生成函数进行的,即是利用相