1、课题布景:
课题来历:传统的播送体系从传送音频信号到播送点,都须铺设专门的线路且传送的事模仿音频信号,模仿音频信号抗搅扰才干弱,长距离的信号传输必然构成信号的衰减,很难确保声响质量。一同为了对播送的办法进行操控,操控信号有必要经过别的的操控线来传送,布线杂乱,本钱高,施工及修理困难。选用互联网技能和音频流技能完结在以太网上以数字化办法传输多路音频信号,使播送点能够接连、实时地收听高品质声响,完结零布线规划。以太网数字音频播送体系定坐落共用播送体系,首要运用于车站、机场、码头号广场和学校、大型商场等场合的播送。首要选用以太网络技能,将音频信号以TCP/IP协议办法在以太网上进行传送和接纳,处理了传统播送体系存在的音质欠安、易受搅扰、保护办理杂乱、互动功用差等问题。
需求剖析:以太网数字音频播送体系可广泛运用于车站、机场、学校、大厦等场合,具有低失真度、传输距离远、高牢靠性、易于装置布线等长处,可完结实时播送、自在点播、多路分区播音,具有宽广的运用远景。以太网作为一种比较老练的网络现已广泛运用于各个领域,其TCP/IP协议也成为事实上的规范网络协议。传统以PC机为中心的互联网运用现已开端转向以嵌入式为中心。运用FPGA来完结嵌入式体系规划,能够战胜定制电路的缺乏,体系规划愈加灵敏,易于依不同的需求进行修正。引进软处理器和嵌入式操作体系,并结合运用LwIP协议栈,能够下降体系渠道的规划杂乱度,可缩短开发周期,进步体系的稳定性和牢靠性,软硬件系部分可别离的规划架构,使得对体系进行修正和重构十分便利。
国内外研讨现状:以太网数字音频播送体系定坐落共用播送体系,首要运用于车站、机场、码头号广场和大厦等场合的播送。首要特点选用当今世界最广泛运用的以太网络技能,将音频信号以TCP/IP协议办法在以太网上进行传送和接纳,彻底处理了传统播送体系存在的音质欠安简略遭到搅扰,保护办理杂乱,互动功用差等问题。现有的播送体系可选用多路定向寻址等技能完结对播送节目播出、接纳的智能化办理,装置在不同区域的播送终端能够实时接纳播送数据,突破了传统播送体系只能对悉数区域进行公共播送的限制,而且播送终端能够是移动的(在局域网范围内),并涵盖了传统播送体系的一切功用,包括音乐播映、实时说话、播送告诉和转播电台节目等。以太网播送体系具有杰出的牢靠性、稳定性、低失真度、易于装置布线等长处,有着宽广的开展及运用远景,现在已广泛运用于学校播送、大型商场及公司内部播送。以太网数字音频播送体系可完结的功用有:多路分区播音、自在点播、实时插播、移动播音,并可完结远程办理及监控。
2、功用描绘:
功用:本体系将实时录制的音频文件运用以太网,以UDP传输办法完结实时的信号的发送、接纳与播映。
- 实况音频流服务器:完结模仿语音信号的收集,将模仿信号转化为数字信号,经过以太网上,发送到终端进行接纳和播映,满意用户播映实时声响的需求;
- 依据FPGA的播送终端:实时接纳以太网传送的数字音频信号,存储并转发至音频D/A转化器,将所接纳到的数字信号解码转化成模仿信号,并输出到音响设备进行播映。
- 扩展功用:完结多个播送终端的一同作业;播送从前已存储的音频文件数据。
技能指标:实时传输并播映语音信号,可用于远程办理,具有低失真度,高牢靠性的特征。
3、总体规划:
以太网数字音频播送体系分为两个部分:音频数据收集发送端和音频数据接纳播映端,经过以太网发送实时语音信号完结远端实时接纳和播映功用。
体系硬件结构结构:
图1以太网音频播送体系框图
数据流程:
图2音频数据收集与发送模块数据流程图
图3音频数据接纳与播映模块流程图
各模块功用:
①音频数据收集与发送模块:经过编程完结语音信号的收集、存储,依据接纳端的IP地址,将语音信号压缩成播送包以UDP传输办法发送出去。
②音频数据接纳与播映模块:由Spartan3E FPGA开发板接纳以太网传来的IP包,进行存储,转发到音频D/A转化器进行解码,送交音响设备播映。
4、计划证明:
规划思维:选用FGPA模块接纳以太网传来的数字语音信号,并进行存储,再经过音频D/A转化器将数字信号转化为模仿信号在音响设备上进行播映。分为两个部分完结:语音信号收集与发送部分和信号接纳与播映部分。①语音信号收集模块(编程完结)在PC机上进行,然后选用UDP传输办法以IP播送包办法经过以太网发送出去。②接纳端是在FPGA开发板上完结语音数据包的接纳,并将数据处理后送给音频解码芯片进行解码,转化成模仿信号进行播映。
计划证明:本体系选用服务器端和播送终端的架构,由音频流服务器收集、处理语音信号,经过以太网进行传输,然后由Spartan 3E作为播送终端来接纳以太网传输的数据,并进行D/A转化处理后输送到播映设备。
服务器端的规划:服务器端在PC机上完结,首要完结语音数据的收集、存储和发送。其间,语音数据的收集和存储选用WAVE音频函数来完结。运用WAVE初级音频函数,可直接与音频驱动程序交互,经过窗口音讯或回调函数来办理音频数据块的录入和存储,并供给了一个设备无关接口。在运用音频设备之前,有必要翻开设备驱动程序,确认体系音频设备的才干,用完之后有必要封闭音频设备。详细流程如下:
①查询设备数目。运用waveInGetNumDevs函数来获取波形输入设备的个数。只要确认设备存在,才干翻开、运用设备。
②翻开波形输入设备。运用waveInOpen函数,该函数翻开与指定设备ID相关联的设备,并以给出指定内存句柄的办法放回翻开波形设备的句柄。需求在waveInOpen中指定的一个回调函数或许线程,其效果是在一个数据缓冲区被录满后被调用,以对这些数据进行处理,和其他一些相关的操作。
③预备音频数据块。在音频数据录入之前,有必要预备好音频数据块。将数据块传送给设备驱动程序就能够开端录音了。运用waveInPerpareHeader函数为输入缓冲区预备头部,运用waveInAddBuffer函数增加一个输入用的数据缓冲区。在用完数据块后,有必要用waveInUnprepareHeader函数来铲除对音频数据块的预备。
④开端录音。运用waveInStart函数。
⑤中止录音,封闭设备。调用waveInReset和waveInClose函数。完毕录音时,在waveInClose之前先调用waveInReset,以铲除尚在等候录音的缓冲区。
录音过程中,若缓冲区已满,但录音还在持续,为防止语音数据丢掉,就需求再参加一个缓冲区进去。考虑到增加缓冲区的处理是有时间推迟的,而音频对时间很灵敏,所以要预先设置好至少两个数据缓冲区。当一个缓冲区满时,就调用别的一个,即可确保所录得的音频数据不会有断开的距离。录制波形音频时假如缓冲区已满,体系将发送MM_WIM_DATA音讯给运用程序,程序接纳到这个音讯后,就能够从音讯带回的参数中得到缓冲区的指针,然后读出缓冲区的数据,或对数据进行处理,而且该缓冲区的数据读完后要用waveInAddBuffer函数将缓冲区从头送入设备,循环运用。在本规划中选用两个缓冲区来寄存语音数据。
音频数据的发送:数据发送选用MFC的CSocket类来完结。CSocket类是由CAsyncSocket类承继而来,与CSocketFile类和CArchive类一同作业来发送和接纳数据。软件完结:当数据缓冲区满时,需求将已收集到的语音数据经过以太网发送出去,这就要用到Socket网络传输。运用CSocket类创立一个套接字,然后将录音缓冲区中收集到的语音数据顺次封装成IP包进行发送。语音数据发送流程图如图4所示:
图4 数据发送流程图
要完结语音信号的实时播映,有必要对语音信号进行实时传输,所以在以太网上传输数据选用UDP传输办法。尽管TCP供给一种面向衔接的、牢靠的字节省服务,能够完结数据的牢靠传输与犯错重传,可是这也导致了TCP协议对资源的占用更多。TCP首要适用于对数据的完好性要求很高的网络传输的运用。UDP不一定供给牢靠的数据传输,它仅仅把运用程序传给IP层的数据报发送出去,并不确保它们能抵达意图地。因为UDP在传输数据报之前不用在客户和服务器之间树立衔接,没有超时重发机制,所以传输速度很快。当某个程序的方针是尽快地传输尽可能多的信息,着重传输功用而不是传输的完好性时,如音频和多媒体运用,UDP是最好的挑选。
录音缓冲区的巨细为1024个字节,这样才干防止语音信号丢掉,可是在体系终端对语音数据包进行处理的时分,假如数据包过大,则发生严峻的噪音,因而体系终端要求接纳到的语音数据IP包不能过大,规划中终端处理IP包的巨细为128个字节,这样当服务器端录音缓冲区满时,需求对数据进行切割,封装成IP数据包,然后再发送。这儿要选用播送地址。在局域网内完结播送,只需将IP地址中主机部分设为全1,本规划中IP播送地址设为192.168.1.255。
播送体系能够有多个播送终端,既可完结全区域的播送,还能够完结局域播送,即对指定的终端进行播送。要完结对指定的终端的播送,服务器端有必要知道各个终端的IP地址,然后才干施行对应的播送。考虑到终端数量不多而且是在相对固定的局域网中,选用静态IP地址分配,其特点是IP地址对每一台计算机都是固定的。能够将各个终端的IP地址写入一个装备文档,如:“IPADDR.txt”。服务器首要读取装备文档中的IP地址,将终端IP地址与服务器端的终端号进行绑定,然后每次选定播送终端时也得到了对应终端的IP地址,即可完结区域播送了。另一方面,也有必要使终端能够判别出所接纳到的IP包是不是发给自己的。是则存储并转发给音频解码器;不是则丢掉。能够在IP包头进行设置,播送终端依据IP数据包包头来判别数据是否发给自己。IP数据包选用播送包的办法进行数据传输。
能够将播送的内容保存下来以便在今后能够运用。本规划对每次播送的内容进行了存储,存储文件设置为Record.wav。每次录音缓冲区满时,行将IP播送包发送出去,一同对其进行存储,在文件结尾将数据写入文件,并改动文件的长度。
播送终端的规划:要完结FPGA与以太网的通讯,能够将FPGA终端规划为一个嵌入式体系,即选用依据FPGA的嵌入式体系完结以太网的互联。能够运用Xilinx的MicroBlaze微处理器软核和相应的外设,经过Xilinx EDK树立体系所需的软硬件渠道,完结嵌入式体系的规划。FPGA操控着以太网物理层的操作,内置一个契合MII规范的以太网操控器MAC,FPGA经过MII衔接到开发板上的LAN83C185 Ethernet PHY,以便和以太网进行通讯,接纳以太网发送给本终端的IP数据包,进行存储,并转发给音频解码芯片进行播映。
硬件部分:
硬件电路结构分为两个部分,依据Spartan 3E开发板的音频数据接纳模块和音频解码模块。
Xilinx Spartan 3E开发板上的XC3S500E FPGA作为操控芯片,在EDK中装备MicroBlaze微处理软核作为CPU,装备FPGA内置Ethernet MAC IP核(MAC是EDK开发渠道的一部分),外部存储器选用DDR SDRAM,选用Xilkernel嵌入式操作体系和LwIP协议栈,构建一个完好的嵌入式体系完结以太网互联。
硬件结构图如图5所示:
图5 硬件结构图
MicroBlaze微处理器软核是可嵌入在FPGA中的RISC处理器软核,选用哈佛结构的32位指令和数据总线,具有运转速度快、占用资源少、可装备性强等长处,支撑CoreConnect总线,和其他外设一同能够完结可编程片上体系的规划。特征:32个32位通用寄存器和2个专用寄存器;32位指令体系,支撑3个操作数和2种寻址办法;别离的32位指令与数据总线,契合IBM的OPB总线规范;经过本地存储器总线(LMB)直接拜访片内块存储器;具有高速的指令和数据缓存(cache),三级流水线结构;具有硬件调试模块;带8个输入输出快速链路接口。
EDK开发流程:
EDK:一切的体系规划包括后边的运用程序开发规划均在嵌入式开发套件软件EDK内完结。EDK(Embedded Development Kit)是针对FPGA内部32位嵌入式处理器开发而推出的开发套件,EDK东西包中集成了硬件渠道发生器、软件渠道发生器、仿真模型生成器、软件编译器和软件调试等东西,运用其集成开发环境XPS(Xilinx Platform Studio)能够很便利、快速地完结嵌入式体系开发的整个流程。EDK以IP核的办法供给LMB、OPB总线接口、外部存储操控器、SDRAM操控器、UART中止操控器、定时器及其他一些外围设备接口等资源,运用这些资源能够构建一个完善的嵌入式处理器体系。这些IP核都有相应的设备驱动和运用接口,运用者只需运用相应的函数库,就能够编写自己的运用软件和算法程序。
首要完结体系硬件渠道的树立和相应的驱动装备。在EDK的XPS中先运用根本的体系生成导游BSB,主动生成MicroBlaze体系的根本构架,设置处理器时钟频率为50MHz,总线时钟频率为50MHz,设置片上读写调试模块为调试接口。生成完毕时XPS能够主动地生成对硬件进行例化的微处理器硬件规范文件MHS和描绘软件体系结构的微处理器软件规范文件MSS以及一些相关的文件,对这两个文件进行修正,以便完结对体系的优化。生成的体系经过归纳、布局布线无误后生成bit文件下载到方针开发板上。
体系软件渠道:
在硬件体系树立后,运用XPS的集成东西,完结网标的生成核软件的装备,存储器地址映射默许由体系主动生成,主动分配地址。
为了能够更好地办理体系资源,挑选Xilinx 精简嵌入式操作体系Xilkernel,它是一种可定制的简略高效体系,能够与用EDK构成的硬件体系紧密结合,并支撑可移植操作体系界面POSIX敞开结构。Xilkernel体系的设置能够在开发环境EDK中手动设置,需求装备调度原则为SCHED_RR(simple round-robin scheduling),并设置一个静态线程用于初始化要运用的LwIP协议栈。Xilkernel操作体系经过移植LwIP协议栈就能够完结依据Socket的网络通讯。LwIP协议栈支撑服务器形式和客户机形式,供给RAW和Socket两种API,是现在运用最为广泛的TCP/IP协议栈。本规划中选用Socket API形式,运用Libgen东西对LwIP库进行链接和编译。
在Xilkernel中设置一个静态线程serverThread来初始化LwIP协议栈,即能够运用协议栈供给的功用函数。调用LwIP的线程生成函数sys_thread_new()生成并发动一个线程。在这个线程中设置开发板硬件的MAC地址、网关、IP地址和子网掩码等参数。分配内存空间开发板的网络接口,再将MAC地址、网关、IP地址等信息增加到内存空间,初始化网络接口。
在设置好体系的软件渠道后就能够编写各种关于网络传输操控的运用程序了。运用规范C言语进行运用程序开发,编写相应的算法软件,将编写的程序代码运用mb-gcc编译东西,依据体系软件环境,生成.ELF文件,完结体系功用的完结,经过JTAG接口连到方针开发板上,将软件程序下载到体系中进行调试。
程序规划思路:
终端相同需求Socket编程,以接纳从以太网传送来的音频数据。为了完结数据的次序存储与转发,界说一个循环行列来存储接纳到的数据。
struct Queue
{ int front; //队首
int rear; //队尾
int count;
char DATA[QueueSize][SIZE];
};
初始化一个Socket,将它与IP地址和端口号绑定,然后开端监听网络,一旦监听到网络上有数据到来,就生成一个线程去处理。先界说一个结构体struct CSTRING,包括意图终端的IP地址,终端经过判别其成员变量,与自己的IP地址进行比较。若有成员变量与自己的IP地址相同,则存储数据包中数据到循环行列中。还需求界说一个接纳数据结构体struct RECVBUFFER,来寄存所接纳到的音频数据,而且struct CSTRING IP作为它的一个成员用于判别意图IP包地址。
struct RECVBUFFER
{ INT32 count;
struct CSTRING IP; //用来判别IP包是不是发给自己的
INT8 recvbuffer[SIZE]; //接纳数据缓冲区
}RecvBuffer; //接纳数据的结构体
Socket接纳函数接纳数据到一个数据缓冲区,然后对数据包进行判别,依据IP数据包头判别该包是不是发给自己的,若是,将数据放入循环行列以待转发,不然丢掉。在以太网范围内完结音频播送,终端以太网操控器IP地址要和服务器处在同一个网段内,设置本地IP地址和端口号,并绑定到服务器地址。
播送终端的完结还需求衔接一个音频D/A转化器,将开发板上输出的数字音频信号转化为模仿音频信号。在本规划中选用VS1003音频解码器。VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器,包括一个高功用、自主产权的低功耗DSP处理器核VS_DSP,作业数据存储器,串行的操控和数据接口,4个惯例用处的I/O口,一个UART,一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。VS1003经过一个串行口来接纳输入的比特流 。数据流程:首要音频数据从SDI接纳并解码,若其SCI_AIADDR非零则运用代码从寄存器所指向的地址开端履行;然后数据流是否经过低声/高音增强器,取决于SCI_BASS寄存器;之后数据流向音量操控单元,一同复制数据进音频FIFO,锁存住数据,经过音频中止将数据送进采样率变换器和DAC;采样率变换器将一切不同的采样率变为XTALI/2或128次最高可用采样率;过采样的输出被片上的模仿滤波器进行低通滤波;滤波后的信号前往耳机放大器。
VS1003经过一个串行接口来接纳输入的比特流,所以要完结VS1003与FPGA的互连,还需求在开发板上模仿完结SPI总线接口。SPI——串行外设接口总线体系是一种同步串行外设接口,答应MCU与各种外设以串行办法进行通讯、数据交换。在内部硬件实际上是两个简略的移位寄存器,传输的数据为8位。一般运用4条线:串行时钟线(SCK)、主机输入从机输出数据线(MISO)、主机输出从机输入数据线(MOSI)和低电平有用的从机挑选线/SS,即可完结与具有SPI总线接口功用的各种I/O器材进行通讯,而扩展并行总线则需求8根数据线、8~16位地址线、2~3位操控线,因而选用SPI总线接口能够简化电路规划,进步规划的牢靠性。在本规划中,从器材是vs1003音频解码器,在主器材发生的从器材时能和移位脉冲效果下,才干接纳主机传送的数据,其数据传输格局是高位(MSB)在前,低位(LSB)在后。
FGPA为主控芯片,vs1003为从芯片,挑选开发板上与FPGA衔接的Hirose FX2扩展衔接器模仿完结SPI接口,实际上是对SPI时序的模仿。FPGA的I/O口与Hirose FX2扩展衔接器相连,双向I/O口都能够驱动或接纳信号。挑选FX2衔接器上的FX2_CLKOUT模仿完结SPI接口的时钟输出线,一个I/O(如FX2_IO1)口模仿完结MOSI数据线,一个I/O(如FX2_IO2)口模仿完结/SS挑选线。SPI数据传输形式选用形式0(CPOL=0,CPHA=0)。数据传输流程:首要主控芯片FPGA要使能相应的/SS信号(FX2_IO2,直到数据发送完毕),告诉从芯片即VS1003数据传输要开端了;主控芯片发生SPI时钟脉冲,将数据从每个时钟下降沿发送出去,每次发送1bit,从高位开端发送;待数据发送完毕,主控芯片复位/SS信号,SPI传输完毕。
体系规划中的难点与要点:
(1)音频信号的收集;
(2)IP播送包的UDP传输;
(3)播送终端对音频信号的接纳;
(4)FPGA操控芯片与VS1003解码芯片之间的数据传输。
5、项目预期效果:
完结音频数据的以太网上实时UDP传输,同步播映,支撑多个播送终端一同作业,完结网络播送功用。