电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章FPGA利用FPGA实现多路话音/数据复接设备

利用FPGA实现多路话音/数据复接设备

11-20 16:15:14 | http://www.5idzw.com | FPGA | 人气:485
标签:fpga是什么,fpga教程,fpga培训,http://www.5idzw.com 利用FPGA实现多路话音/数据复接设备,http://www.5idzw.com

摘 要: 本文利用FPGA完成了8路同步话音及16路异步数据的复接与分接过程,并且实现了复接前的帧同步捕获和利用DDS对时钟源进行分频得到所需时钟的过程。该设计的控制模块由VHDL语言完成,最后利用Xilinx公司的ISE工具和Modelsim工具完成了该设计的行为仿真、布局布线仿真及时序仿真。仿真结果验证了输入输出的逻辑关系。


关键词: 数据复接;DDS;数据分接;m序列;FPGA

1.引言

--- 随着现代通信向着多业务方向发展,为了节省信道资源、降低调制解调设备的复杂度,数据复接设备得到了更充分的利用。它能将多路不同类型的数据流复接成一路高速数据流,通过信道传输,在收端分接出发端对应的数据流,以实现多业务双向通信。

--- 这里利用了XILINX公司的VIRTEX-ⅡPRO系列FPGA实现了数据复接、数据分接及帧同步过程。之所以选用FPGA完成设计功能,是由于数据复接、分接涉及大量的时序过程,FPGA综合工具应用了广泛的时序调整与流水处理技术以改善时序电路性能。巧妙地应用流水处理技术,可以实现输入输出端口之间寄存器的移动和均衡实现逻辑的分隔,并且不会对原有设计引入额外的处理等待延迟,可以实现高性能设计的高效率综合,确保最优的时序性能。该设备输入端是8路话音,16路数据,其中8路并行输入的话音均分为V1、V2,16路并行输入的异步数据均分为d1、d2,设备完成将并行输入复接为一路高速数据流(复接后的帧格式见图3)经过信道传送后再由分接模块分解出各个支路。设计流程图见图1所示。

--- 本文结构安排如下:首先,介绍引言部分;其次,对数据复接分接、帧头同步捕获以及由DDS进行时钟分频做了详细的设计分析,并给出了相应的设计流程图和原理图;再次,分析仿真结果,从结论对设计过程进行验证;最后,总结全文。

2.数据复接方法与实现
--- 数字复接的方法主要有按位复接、按字复接和按帧复接三种。按位复接又叫比特复接,即复接时每支路依次复接一个比特。按位复接方法简单易行,设备也简单,存储器容量小,目前被广泛采用,其缺点是对信号交换不利。按字复接,一个码字有8位码,它是将8位码先储存起来,在规定时间对各个支路轮流复接,这种方法比较复杂,具体原因后续分析。还有一种是按帧复接,这种方法的存储容量要求太大,而且不适用于同步与异步复接情况。这里选用按字复接,原因是经过ADPCM编码后进入的话音数据为4bit并入(共2路),这里将一组V1,V2看为8bit(1个字),数据异步接收后出来的数据,每组也为8bit。

--- 在设计数据复接与分接设备过程中,主要有用DDS生成所需时钟、帧结构定义、码速调整、控制模块设计、帧同步头捕获设计几大难点,现分别做一说明:

--- 1) DDS生成时钟:本设计的晶振为30MHz,由总体考虑所需的话音时钟为8kHz,异步数据为117kHz。所以可以先由30MHz时钟源由DDS得到4.096MHz的时钟,再由4.096MHz这个时钟进行512分频得到8kHz时钟,由4.096MHz时钟进行35分频得到117kHz时钟,具体原理图见图2。对于DDS控制字的求解针对此设计可由以下公式得到32位码字:(见书P50)

--- 其中gen_constant为生成控制字的模块,clk_512和clk_35为分频模块。

--- 2) 帧结构定义:对于输入话音V1和V2其写入时钟为8kHz的同步时钟,数据d1和d2其写入时钟为117kHz的异步时钟。帧同步头选用2个255bit的m序列后补一个0作为256bit同步头,并存放在ROM中。他们经过复接后得到117kHz的高速数据流,送入信道,接收端通过同步头捕获模块进行帧同步,捕获后由数据分接模块进行分路,得到发端对应的8路话音,16路数据。由于本设计输入端还需要插入数据指示、话音信令等码元(以供区分业务类别),在此,我分析了复接端多路输入时钟与合路后读取时钟的关系,同时综合考虑同步话音的解复接后的连续性以及异步数据的重要性等问题,定义如图2的帧格式。

--- 这里需要强调的是异步数据在帧格式里的定义,数据是突发性质的异步数据,虽然数据的传输速率很高为117kbps,但是其平均速率很低,经过实际分析其平均速率约0.6K×8bps,而且该数据作为控制指令所以在帧格式设计时要特别注意,此处定义帧格式时对数据每字重复传送3次以提高可靠性。

--- 3) 码速调整:码速调整部分主要是缓冲存储器,还包括一些必要的控制电路,这里缓冲器选用Asynchronous FIFO。在很多设计中,是通过扣除一个读取脉冲的方法来防止缓存器的信息被取空,这样做的问题是需要判断写入写出时钟的相位关系,并且输出同类型数据将存在不连续性。在设计中通过利用帧定义格式以及设计一个读时钟控制模块来避免缓冲读空问题,保证了各类数据的连续性。缓冲的深度与输入有很大关系。现计算FIFO要求具备的最低深度(其宽度话音为4bit,数据为8bit):

--- 首先对FIFO的工作过程做一个简要说明,Asynchronous FIFO是一个先入先出存储器,并具有支持读写时钟不同步的功能,在输出口有empty指示(empty=1,表示下一时钟所读的数据为无效数据,反之为有效)。这里在控制模块中要求在最后一位即第211个bit处对设备中所有FIFO复位,目的是防止缓冲存储器被取空。

--- 输入端单路话音是以8×4(Kbit)传送,成帧后每个数据包512(bit)中包含单路话音40×4(bit),数据包以117kbps传送,则话音写入FIFO的速率与读取FIFO的速率可以表示为(1)、(2)两式所示。
V话音=8×4(kbps) (2)
Vread=[40/(512/117)]×4=9.14×4(kbps) (3)
ΔV=1.14×4(kbps) (4)

--- 设缓冲区深度为X,则在7个数据包完成时间内由速率差完成的深度为:
ΔX=1.14×7×512/117=34.92 (5)

---这个即话音FIFO的最小深度,这里选择深度为64,宽度为4bit的Asynchronous FIFO。

--- 对于异步数据在每个数据包512bit中留出了8×3×3bit空间,由于数据量很小,且考虑到每帧开始会对设备所有FIFO复位一次,在此不需要考虑写入读出的时钟问题,FIFO的深度只要大于7×3就可以。对于加强数据可靠性,重传3次的问题在FIFO中不加考虑,由控制模块完成。最后定义数据FIFO深度32,宽度8bit的Asynchronous FIFO。









--- 4) 控制模块的设计:这部分设计关键是对时钟的控制以及时隙的安排,这个也是整个复接设备设计的主要难点,同步报头的插入使能信号、帧格式的定义都有控制模块中一个12位计数器来统一控制。对于异步数据每个字节重复3次传送这个过程的设计,这里主要引入模块设计,它通过前后时隙空余期间,利用时钟上升沿与下降沿一起促发,将FIFO的输出扩展为1个与FIFO输出同相的信号并存入本地RAM,这样解决了FIFO的先入先出的工作特点(同个数据无法返回再读)。对于分接模块,难点同样也是在异步数据部分,由于在帧格式中预定了数据重复3次发送,所以在分解模块中采取的是3中取2的方法,对异步数据进行判决。

[1] [2]  下一页

,利用FPGA实现多路话音/数据复接设备
关于《利用FPGA实现多路话音/数据复接设备》的更多文章