3 关键技术实现
适配器的设计难点在于自定义组件适配器模块的实现,具体包括硬件逻辑的实现以及驱动程序的编写,下面主要讨论难度较大的硬件逻辑实现。
1) 适配器模块的实现
实现框图见图3,输入的MPEG-2 TS流先要同步,找到TS流的包头,去掉空包后输入FIFO。包复用模块按照时钟产生模块输出数据,同时插入MIP包。当FIFO中数据不足时,则插入空包模块产生的空包。由于码流重组和速率适配,导致各包在适配器中停留时间不一致,因此要进行PCR校正。本文PCR校正采用置入法,即在输入码流中检测到 PCR包后,将包中的PCR值减去系统27MHz时钟当前的计数值;当输出缓存中检测到PCR包后,将包中已改过的PCR值加上系统27 MHz时钟当前的计数值,这样,用一套计数器就可完成PCR校正和更新。
2) MIP包的计算和插入
如图4所示,根据GPS接收机收到的10 MHz和1 pulse/s信号算出STS值,同时根据Nios II的控制信息产生TPS和最大延时参数,再生成32位的CRC校验值并复合成MIP包。其中,CRC32用的校验多项式为D32+D26+D23+ D22+D16+D12+D11+D10+D8+D7+D5+D4+D2+D+1。由于CRC32校验码的实时性要求较高,因而采用并行算法--查表法。 DTMB系统兆帧的持续时间正好为1 s,MIP中的STS值在理论上应不变,因此第M个MIP包中的STS可表示为第M个兆帧实际开始的时刻与其前面最近的1 pulse/s信号的时间间隔。同时,由于STS的值用GPS的10 MHz时钟计数,精度为100 ns。
3) DS3成帧模块
为使中转站通过SDH网络接收码流,DTMB单频网适配器增加了DS3输出接口。DS3是由复帧构成的,一个复帧分为7个子帧,1个子帧分成8块具有85 bit的比特块,每块的第一个比特是开销比特,其他84 bit用于传送净荷。所以一个复帧有56个开销比特。包复用模块产生的码流是MPEG-2的TS流,因此需要一个DS3成帧模块以实现到SDH网络的适配。DS3成帧模块的实现框图如图5所示。在一个复帧的开销比特中,除奇偶校验比特外,其他开销比特在特定的网络环境中一般都是固定的,所以单独计算奇偶校验比特。复帧内的各比特块以及各比特的确定主要靠2个计数器来实现,一个用来指示比特块,范围是0~55,一个用来指示比特块内的每个比特,范围是 0~84。通过这2个计数器可在适当位置插入开销比特和净荷数据,从而完成到SDH网络的适配。