Wishbone最先是由Silicore公司提出,现在已被移交给OpenCores组织维护。Wishbone总线规范是一种片上系统IP核互连体系结构,定义了一种IP核之间共公的逻辑接口,可用于软核、固核和硬核,对开发工具和目标硬件没有特殊要求,并且几乎兼容已有所有的综合工具,可以用多种硬件描述语言来实现。
TDM控制模块的设计
● TDM在VoIP语音网关系统中的作用
TDM控制模块同时接收来自ISDN(综合业务数字网)、E1专线或者语音编码器等不同信源的串行语音数据。如图1,VoIP语音网关的基本功能是完成以太网数据与外部语音设备数据的转换,TDM接口与以太网接口分别为外部语音设备的数据、以太网上数据与网关系统的通信桥梁。该网关SoC系统的处理器采用的是同济大学微电子中心自主沿发的高性能低功耗的32位嵌入式CPU BC320。
图1 TDM控制模块的作用
● 时分复用原理与TDM数据频率
时分复用是把对信道的使用时间划分为多个时间帧,进一步把时间帧划分为n个时间隙(时间间隔)。每一个时间隙分配给一个子信道,从而实现在一个信道上同时传输多路信号。时分复用循环使用时间帧,各路信号循环顺序插入时间帧中的时间隙传输。TDM控制模块的主要作用就是复用多路信号与解复用混合有多路信号的TDM数据,如图2所示。
图2 时分复用的时隙
本设计的串行语音数据针对E1专线标准,E1主要应用于欧洲,中国也采用该标准。E1标准的数据率为2.048Mb/s,每一个时间帧包括30个B子信道,一个D子信道和一个同步子信道,共32个子信道。以语音模拟信道为例,信道带宽限制为3.4kHz,根据奈圭斯特定律,子信道采样速率至少是信号最高频率的两倍,通常选择采样速率为8kHz。因此,整个TDM信道的比特速率可以达到:
8kb/s×8×32=2048kb/s=2.048 Mb/s,即E1标准规定的TDM数据率。
● 模块设计
模块的主要功能是完成多路数据的复用和复用数据的分解,其关键部分就是复用和分解。本设计采用缓存器辅助完成复用和分解,实现两种协议数据跨时钟域的转换。本设计模块主要分三部分,见图3。
图3 TDM接口控制模块的基本结构
串行数据接口主要负责串行数据与8位宽并行数据的转换,因为存放数据的FIFO是以8bit为一地址空间的。转换由设计的状态机来控制:接收 (receive)操作、发送(transmit)操作和等待,接收就是将串行数据转换成8bit位宽数据的过程,发送与之相反。由于语音数据要求双工机制,由时钟高低电平来作为发送和接收状态的切换信号,即当时钟为低时由发送状态转为接收状态,当时钟为高时,由接收状态切换为发送状态,这样可以看作接收与发送是同时进行的。
发送、接收缓存器不仅包括用于暂时存储数据的FIFO,而且还设计有状态机来控制接收、发送数据流。由于跨时钟域,由双口RAM组成的FIFO可能会带来地址比较冲突的问题,本设计采用乒乓机制来完成FIFO,当一个缓存器进行读操作时,另一个缓存器则进行写操作,两者的切换由硬件来完成。以下以接收缓存器为例(数据方向从TDM串行数据到Wishbone总线并行数据)来描述本设计。缓存器的大小设计为包含四帧TDM数据,因此每个FIFO的大小为8bit×32×4=1024bit,如图4。选用乒乓FIFO以及FIFO大小设计的原因如下。
图4 乒乓FIFO
串行数据的时钟相对于Wishbone总线的时钟要慢,当两时钟域上的数据相互转换时,Wishbone总线可以在很短时间内读写FIFO,而串行总线需要相对较长的时间读写相同数据量。尽管如此,在Wishbone总线时钟频率相对较慢时,Wishbone总线很可能在下一批串行数据写进FIFO前不能完全读空FIFO。以接收缓存器为例,如果不考虑处理器(BC320)中断响应时间和从RAM读数据的时间(待处理的数据都要先暂存在Wishbone 总线上挂的RAM中),从Wishbone总线读空一个FIFO中的四帧数据需要时间为:
1/25M x 32 x 4 = 5.12 x 10-6 s= 5.12us
25M是本设计在FPGA开发板进行测试时所采用的时钟频率,即测试系统时Wishbone总线上的时钟频率。
而在另一边串行数据,当四帧写满FIFO后,第五帧的第一个字节数据开始写入FIFO的准备时间为:
1/24M x 8 = 4 x 10-6?s = 4us
FIFO中的四帧数据被读空时间大于第五帧的第一个字节写入FIFO的准备时间,FIFO的写满与读空都是有硬件产生信号标识,此时FIFO读空信号标识未产生,不能对同一FIFO进行写操作,导致待写数据丢失。因此选用两个FIFO采用乒乓机制来切换读写操作,如图4所示。
在解复用时,数据的地址恢复很重要,一个TDM数据帧含有32个时隙,每一时隙中的数据均来自不同的信道源,本模块要将复用在一路的TDM数据恢复出32路。TDM数据的每个时隙含8个bit,而Wishbone总线的数据位宽是32位,因此需要四帧的TDM数据才能拼接成一路完整32位宽数据。相邻时隙数据由于来自不同信道源,暂存在FIFO中的地址不能相邻,前一时隙中数据和后一时隙中数据在地址空间上相差4(如图4),这样从初始地址开始,每相邻四个地址对应的数据拼接成一路完整的信号,在Wishbone总线读取FIFO中数据时的地址是按顺序的。
本文着重讨论了接收缓存器的设计,发送缓存器与之类似,这里就不再赘述。
Wishbone接口连接TDM控制模块与Wishbone总线,它的主要功能是设计正确的状态机产生有效控制信号来同步数据交换。
验证与结论
用Verilog语言描述完成TDM控制模块的设计,并以VoIP语音网关系统为验证平台,利用Candence公司的NC-verilog仿真器进行代码仿真。仿真波形表明,处理器(BC320)对FIFO写满产生信号标识的反应时间大约为60个Wishbone总线时钟周期,这一时间加上Wishbone总线读空第一个FIFO所用时间后,串行语音数据仍在写进另一个FIFO,Wishbone总线有足够的空闲等待这个FIFO写满标示信号的产生,不会有任何数据丢失。
VoIP语音网关系统在型号为Virtex-II Pro FF1152的FPGA开发板上进行了硬件验证,TDM控制模块外接型号为Le88221的SLIC(用户线接口电路)芯片作为语音信源,利用Chipscope在线扫描TDM控制模块内部、Wishbone总线和处理器(BC320)寄存器的信号变化,并用示波器对SLIC芯片信号进行捕捉。从观察的信号来看,所设计的TDM控制模块能够与系统的其他IP模块,尤其是处理器(BC320)和以太网模块正确有效地协同工作,模块的功能达到设计要求。