东北林业大学课程设计
铃和第二声振铃之间发送给电话终端,具体波形如图 2—2所示[3]。
空闲时50V来电时50VFSK信号振铃信号振铃信号振铃信号通话时语音信号5V坐标图例子:横纵坐标必须标注量、单位,坐标名置于图的下方居中,五号宋体加黑 图 2—2 不同状态下的电话信号波形
2.3.3 来电数据的解调解码
对于FSK调制波,有很多种成熟的解调方案,如使用模拟或数字滤波器,或使用锁相环,然而这些方案在具体实现时都比较复杂。在本系统中,考虑到来电数据的传输速率较慢而且是单位传输,同时数据传输速率与载波频率的对应关系也较为单一,因此我们没有用传统的解调方案,而是将FSK调制波整形成矩形波后直接送入了FPGA,然后由FPGA根据波形的特性进行0、1判断,完成解调过程。
来电信息是用UART的方式以1200bps发送的,因此在数据解调完毕后几乎不需要额外的解码处理,解调模块可直接将输出通过RS232接口发送给上位机。
2.4 去电号码识别
电话终端是以DTMF(双音多频)的方式将呼叫号码发送给电话交换机的,为了获知用户拨出的号码,下位机需要完成DTMF解码。DTMF解码过程中需要完成对多种频率的识别,并将这些频率的组合方式译码成有效的数据,这一过程的实现非常复杂,因此在本系统中我们选用了专用的解码芯片MT8870[4]。
MT8870 能将DTMF 信号译为四位二进制码,表 2—2是该芯片的译码表。其中Digit为实际的按键,TOE是输出使能信号,Q1-Q4为4位数字输出,每当解码芯片检测到有效载波时,就会进行解码,解码完成后Q4~Q1的值会立即被更新,同时STD输出一个高电平信号,下位机可以根据STD的状态判断是否有按键,当检测到有按键按下时,通过读取Q4~Q1的值即可获得按键代码,从而识别用户拨出的电话号码。
4
东北林业大学课程设计
表 2—2 MT8870译码表
Digit ANY 1 2 3 4 5 6 7 8 9 0 * # A B C D A B C D
TOE L H H H H H H H H H H H H H H H H H H H H
INH X X X X X X X X X X X X X L L L L H H H H
STD H H H H H H H H H H H H H H H H H L L L L
Q4 Z 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
没有检测到按键时Q4~Q1保持不变 STD返回低电平
Q3 Z 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
Q2 Z 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
Q1 Z 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
2.5 语音记录方式
本系统的语音采集工作,由下位机通过FPGA内部集成的ADC完成,下位机采样到的语音数据通过RS232接口发送给上位机,然后由上位机保存成WAV格式。
2.5.1 WAV格式简介
WAV格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持。WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz的采样频率,16位量化位数,因此WAV的音质与CD相差无几,但WAV格式对存储空间需求太大不便于交流和传播[5]。
WAV来源于对声音模拟波形的采样。用不同的采样频率对声音的模拟波形进行采样可以得到一系列离散的采样点,以不同的量化位数(8位或16位)把这些采样点的值转换成二进制数,然后存入磁盘,这就产生了声音的WAV文件,即波形文件。该格式记录声音的波形,故只要采样率高、采样字节长、机器速度快,利用该格式记录的声音文件能够和原声基本一致,质量非常高,但这样做的代价就是文件太大。但电脑的存储空间很大,而且文件可以随时进行清理与删除,对于本设计文件大并不是问题,我们还可以进行进一步的改进,如将WAV文件进行压缩后再保存等。
由于只需要对声音进行采样,即将模拟信号送入FPGA的内部进行A/D采样后再经串口传给计算机,并以WAV格式进行保存,以这种方式我们就能将语音信号保存并进行播放,因此语音记录方式采用的是WAV格式文件。
5
东北林业大学课程设计
2.5.2 WAV文件头
为了创建标准的WAV文件,上位机程序用结构体定义了一个WAV文件头,程序如下。
typedef struct {
char RIFFID[4];
DWORD FileSize; char WAVEfmt[8];
DWORD sizeofPCM;
WORD WAVE_FORMAT; WORD Chanel;
DWORD SamPerSec; DWORD DatPerSec; WORD ALian;
WORD SamBitL; WORD SamBitH; char factID[4];
WORD factSizeL; WORD factSizeH; WORD factDataL; WORD factDataH; char dataID[4];
WORD dataSizeL; WORD dataSizeH;
} WaveHead;
文件头中包含了文件大小、采样速率、通道数等信息,其中有些成员的值是固定的,如采样速率SamPerSec和通道数SamPerSec,而有些成员的值则需要在程序运行过程中动态计算,如文件大小FileSize。关于WAV文件头中各个成员的进一步介绍,在此不再赘述。
2.6 通信协议定义
本系统的程序主要有下位机和上位机程序两大部分组成,下位机负责来电和去电信息的解码以及语音的采样,而上位机则负责对这些数据进行记录和管理。在系统的运行过程
6
东北林业大学课程设计
中,下位机共有三种类型的数据需要上传,分别是来电信息数据,去电信息数据和语音数据,为了让上位机能够将这些数据区分开来,需要定义一组简单的通信协议[6]。
下位对引导字符的发送和上位机对引导字符的识别是本系统通信协议的核心,具体的实现机制是,当下位机有数据需要上传时,首先要向上位机发送一段引导字符,上位机识别到引导字符后要根据引导字符的类型进入相应的数据接收准备状态。引导字符的定义如表 3—3所示。 表 3—3 引导字符定义 引导字符类型 1024个AAH 1024个BBH 1024个CCH
功能描述 拨号信息前导,指示上位机准备接收拨号信息数据 来电信息前导,指示上位机准备接收来电信息数据 语音数据前导,指示上位机准备接收语音数据
由表 3—3可以看出,下位机与上位机的通信过程非常简单,上位机只需要接收下位机发送的引导字符,然后根据引导字符的类型进入相应的状态并等待下位机上传的数据即可。协议中数据传输的结束是通过等待超时来实现的,当上位机在超过了规定的时间后还未接收到数据时则认为传输结束,然后会返回到空闲状态。
7
东北林业大学课程设计
3 硬件设计
3.1 系统硬件设计框图
如图 3所示,整个系统由Fusion FPGA和外围电路两大部分组成,其中外围电路又分为摘机检测电路、FSK提取电路、DTMF解码电路和语音提取电路四个单元。
摘机检测电路用于检测话机的状态,挂机时检测电路会输出高电平,摘机时检测电路会输出低电平。振铃检测及FSK提取电路用于提取振铃信号以及电话交换机发送的FSK来电信息,并将其处理为规则的矩形波信号,然后送由FPGA解码处理。DTMF解码电路用于解码用户的拨号的信息,当电路检测到有效的载波时,会自动对载波进行解码,并后将解码得到的数据通过一个四位总线并行输出。语音提取电路用于提取和处理通话过程中的语音信号,经过处理后的信号会被直接送至FPGA的ADC输入端口进行采样。
Fusion FPGA是整个系统的核心,它对外围电路的输入信号进行逻辑判断,然后执行对应的操作并完成所需的功能。
由于电话系统与PC机是共地的,因此当上位机与下位机通过RS232接口直接相连时,上位机会对下位机产生很大的干扰,如图3—1中的串口隔离模块用于实现上位机与下位机的电气隔离,从而有效避免干扰。
图 3—1 系统硬件框图
3.2 电源设计
系统的电源电路如图 3所示。外接电源通过线性稳压器7805和SPX1117-3.3后得到VCC_5和VCC_33两路电源,VCC_5用于对外围模拟电路供电,VCC_33则用于对FPGA的数字IO等供电。VCC_5通过DC-DC模块BS0505S隔离后得到UART_VCC,该路电源用于对UART发送模块供电。
Fusion系列FPGA内部集成了一个1.5V的电压调整器,通过它可以给FPGA的内核以及其它1.5V外设供电。集成电压调整器最大可以输出20mA的电流,为了使其具有足够的驱动能力,需要用一个三极管进行电流放大。在图 3—2中,Q1的基极和发射极分别连接到了FPGA的PTBASE和PTEM引脚,电压调整器会根据PTEM反馈的电压自动调整PTBASE电压,从而在Q1的发射极得到稳定的1.5V输出。
8