关键词:声霸卡 串口通信 wav文件
1 引 言
在通信系统的研发过程中,一般都要先进行计算机仿真,以便验证设计方案的正确性和可行性 。然而,在计算机仿真过程中,常常因为数学模型过于理想化而不能反映实际系统研制中可能碰到的问题,使仿真并不真实,不能起到应有的作用,例如:在无线通信系统中,发射机和接收机的时钟频率各自随机飘移,理想的波形并不理想,正弦波相位随机抖动等等,这些因素在仿真中很难用数学表达式表达。本文提出了一种较为真实的仿真方法,用两台带声霸卡的PC机分别模拟发射机和接收机。“发射机”通过D/A输出模拟信号连接到“接收机”A/D输入端,以模仿连续信号在信道中的传输。在多个项目中的仿真实验应用表明,这种做法能够比较真实地进行仿真实验,可以使实际通信系统中可能碰到的一些问题得以暴露,取得了很好的效益。本文通过一个数字通信系统的仿真来介绍上述方法。
2 系统硬件结构
本文介绍的数字通信仿真系统是一个基于连续信道传输的数字通信系统,它由“发射机”、“接收机”和连续信道仿真器三部分组成。“发射机”由PC软件实现的编码、数字调制、上变频、D/A变换器构成;“接收机”由A/D变换器、PC软件实现的数字下变频、解调、译码、数据输出等部分构成;连续信道用一个带“信道”噪声接口的简单的加法器模仿。编程工具主要用MATLAB、C++Builder 5.0。此外,两台PC机还通过RS232串行口相连,构成信令信道,用于同步地启动实验。
2.1 A/D和D/A
该系统的A/D、D/A由创新公司的SoundBlaster AWE64声卡来完成,这是一种话音采集和处理卡 ,可通过编程来控制。它的A/D、D/A支持8位和16位立体声录音和回放以及5kHz至44.1kHz用户可选的采样率。AWE64带有语音处理DSP,可完成A律、μ律语音压缩以及3D效果合成等功能,是一种专业性很强的高效处理芯片。数字信号是连续信号的离散采样得到的,同一个数字信号所表示信号的最高频率只与采样间隔有关,而在进行各种数字信号算法时不需直接使用采样间隔这个值,因此 ,通过声霸卡的A/D、D/A的连续信号可以代表从0到几万兆赫兹中任一频带的信号。这就是说,这种仿真系统可以逼真地模仿各种频段的通信系统 。
软件编程控制声卡执行A/D、D/A *** 作有两种选择:一是声卡配套的专用开发环境,所开发的系统只能运行在配套支持的声卡上;二是Windows应用开发软件,如VisualC++、C++Builder等,所开发的系统能够适应不同的声卡。本系统采用C++Builder 5.0,将要发送和接收的数据按Wave格式写成文件,利用Medi aPlayer控件完成A/D、D/A转换。
Wave格式是Microsoft公司开发的一种声音文件格式,它符合RIFF(Resource Interchange File For mat)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持。Wave格式支持MSADPCM、A律、μ律和其他压缩算法,支持多种音频位数、采样频率和声道 ,是PC机上最为流行的声音文件格式。一般来说,改变wave格式是修改采样频率标志位、数据长度和语音长度标志位。WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0。
2.2 同步握手控制电路
同步握手信号是通过RS232串行通信接口来传递的。串行口每次由CPU得到8位数据,然后通过一条线路,逐位将该数据发送出去。PC上一般有两个这样的串口:COM1和COM2,程序每次能对其中一个接口进行存取,本文就是将两个COM1连接,实现了握手信号的互传。
2.3 声卡连接
一般地,PC机所配的声卡提供四个接口:线性输入、线性输出、麦克风输入、扬声器输出。通常是用音频线将作为发送端电脑的扬声器输出和作为接收端电脑的麦克风输入连接起来。
3 系统软件流程
软件是系统的核心部分,完成调制、解调以及对A/D、D/A和握手信号的控制。其工作流程描述如下。
3.1 系统总体流程
整个系统的工作由两台计算机非实时地完成。需通过串口进行握手以保证系统处于协调的工作状态,其详细流程如图1所示。
3.2 发送端软件流程
发端将MATLAB产生的调制信号进行量化,并转换成wav格式,D/A转换频率为19.2kHz。流程如图2所示。
3.3 接收端软件流程
接收端采样频率为22.05kHz,将信号接收后存成wav文件(在接收数据前加wav头文件),利用MATLAB命令wavread读取,得到数据文件,收端处理流程如图3所示。
3.4 串口编程
RS-232串口组成简单、编程控制方便,因而应用极为广泛。在软件编程控制方面, *** 作系统提供了对应的编程接口,使得开发者能灵活地控制串口工作。WINDOWS系统采用消息驱动和设备统一管理,并利用消息对列进行程序控制,因此比DOS更具优势。同时,Windows的SDK提供了完备的API(应用程序接口)函数和以中断方式驱动的通信驱动程序,使编程变得更为容易。Windows通信一般都以WOSA(即Windows开放式服务体系)模型为基础,此模型中位于上层的应用程序通过调用各种通信API与位于下层的设备驱动程序进行数据交换。Windows对串行口的读写也不例外,通过调用Win32的串口通信API函数,即可编写串行通信程序。在Win32环境下,对串口的读写就象是对1个文件进行读写,只不过此时的文件句柄指向1个串口。另外,可充分利用Win32的多任务的特点,编写出实时性较好的通信程序。Windows平台下串行通信有4种主要方式,即:同步方式、异步方式、查询方式、事件驱动方式。其中事件驱动方式是一种高效的串口读方式,这种方式的实时性较高,特别是对扩展了多个串口的情况,并不要求象查询方式那样定时地对所有串口轮流查询,而是象中断方式那样,只有当设定的事件发生时,应用程序得到Windows *** 作系统发出的消息后,才进行相应处理,避免了数据丢失。在本实验中,串口通信采用事件驱动方式,当接收到字符$时启动串口接收程序,处理发端发送的信息并作出相应 *** 作,这就要求发送握手信号时,基本格式为$+握手信号,实验结果表明,这种串口握手通信较好地解决了系统协同工作问题,同时,实验也取得了良好的效果。
4 结束语
本文提出了一种通信系统仿真方法,这种方法用带声霸卡的两台PC机分别模仿发射机和接收机 ,声霸卡D/A到A/D的连接代表连续信道传输。这种仿真方法可以逼真地模仿各种不同频段的通信系统 ,其中所有的发送、接收信号处理都用高级语言编程实现。它比基于一台计算机的任何仿真系统更能暴露出实际通信系统中可能碰到的特殊问题,使仿真实验的真实性和实际工作效率大大提高,是一种值得推广的好方法。 参考文献
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)