本发明的目的是提供一种帧定位查找及码流转换电路和方法,可以使多路(例如四路)码流同时实现变速率信号(N×64K)复用到恒速率信号(2M)的转换,在低速侧的一路码流转换可以输出输入一路N*64K的时钟和信号(N为1到30任选),而克服了现有技术只能提供单一64K时钟和32路64K信号的不足,因此有更广泛的用途。可以实现无论哪一种转换,其后续处理能够统一,同时可使软硬件结构得到简化,进而提高MCU的处理容量。
本发明的目的是这样实现的,构造一种帧定位查找及码流转换电路,用于多路H.221帧定位和复帧定位的搜索以及N*64K与2M信号两种码流的转换,包括用FPGA实现的多路接收转换模块和多路发送转换模块,其中:
每一路的接收转换模块包括,速率检测单元、时钟发生单元、写地址单元、读地址单元、多路开关(MUX)、存储器单元、复帧定位查找控制单元以及帧定位和复帧定位比较单元,其中:
所述时钟发生单元接收来自V.35接口收时钟信号和包含有2M、8K、40M的系统时钟信号,提供整形后的V35接口收时钟、驱动信号和写信号给所述写地址单元,提供2M时钟和采样信号给所述读地址单元,以及提供采样信号和屏蔽信号给所述复帧定位查找控制单元以及帧定位和复帧定位比较单元;
所述速率检测单元接收来自V.35接口收时钟信号和包含有2M、8K的系统时钟信号,提供接收到数据流的速率检测值给所述写地址单元和所述读地址单元;
所述写地址单元提供存储器单元的写地址给所述多路开关;
所述读地址单元提供存储器单元的读地址给所述多路开关;
所述多路开关还根据帧定位、复帧定位信号,向所述存储器单元提供其读写地址及读写控制信号;
所述存储器单元的入端接收V.35接口的数据输入,所述存储器单元的出端还提供数据给所述帧定位和复帧定位比较单元;
所述帧定位和复帧定位比较单元接收来自复帧定位查找控制单元的复帧定位信号而提供帧定位指示给所述复帧定位查找控制单元;
所述复帧定位查找控制单元提供帧定位、复帧定位给所述多路开关;
每一路的发送转换模块包括,速率检测单元、时钟发生单元、写地址单元、读地址单元、多路开关以及存储器单元,其中:
所述时钟发生单元接收来自V.35接口发送时钟信号和包含有2M、8K、40M的系统时钟信号,提供2M系统时钟和写信号给所述读地址单元,提供整形后的V.35接口发时钟和采样信号给所述读地址单元,提供整形后的V.35接口发时钟、写信号和读信号给所述多路开关;
所述速率检测单元接收来自V.35接口发时钟信号和包含有2M、8K的系统时钟信号,提供时钟速率检测值给给所述写地址单元和所述读地址单元,
所述写地址单元提供存储器单元的写地址给所述多路开关;
所述读地址单元提供存储器单元的读地址给所述多路开关;
所述多路开关向所述存储器单元提供其读写地址及读写控制信号;
所述存储器单元的入端接收2M码流,而在输出端输出速率为N*64K的H.221的码流。
在按照本发明提供的帧定位查找及码流转换电路中,所述接收码流的存储器单元为FPGA的内部2048bit*1随机存储器,所述发送码流的存储器为FPGA内部512bit*4的随机存储器。
在按照本发明提供的帧定位查找及码流转换电路中,所述速率检测单元包括一个8级的计数器对来自交换板的8K时钟周期内接收到的时钟个数进行计数,所述计数器连接有一个数值为4的初始值设置电路,所述计数器的高5位输出传输到所述写地址单元和所述读地址单元。
在按照本发明提供的帧定位查找及码流转换电路中,所述帧定位和复帧定位比较单元包括:对来自所述存储器出口的接收码流中的每一个BIT上逐一搜索H.221的基本帧定位的帧查找电路;在所述查找电路找到基本帧定位时即开始计数并每隔40960个Bit控制所述查找电路进行下一次查找的基本帧定位计数电路。所述复帧定位查找控制单元包括:在所述帧定位和复帧定位比较单元连续找到H.221的基本帧定位同时对奇帧的相应Bit搜索H.221的复帧定位的复帧定位查找电路;控制电路,所述复帧定位查找电路找到复帧定位时,如果所述帧定位计数电路计数值达到16前,便控制EAB进行接收码流转换;如果所述帧定位计数电路计数值达到16前失去基本帧定位,或者在H.221的基本帧定位计数值到16后,还没有找到H.221的复帧定位,便重新启动所述帧定位和复帧定位比较单元。
本发明的另一个目的是这样实现的,构造一种帧定位查找及码流转换方法,用于多路H.221帧定位和复帧定位的搜索以及N*64K与2M信号两种码流的转换,包括以下步骤:
对输入码流进行速率检测,计算出码流速率的64K的整倍数(N);
对接收码流进行转换,包括以下步骤:1)第一次帧定位;2)建立复帧同步;3)帧定位丢失处理;
对发送码流进行转换,将其时钟为系统锁相时钟的2M码流中相应时隙取出放入时钟为接口N×64K时钟的N×64K码流。
实施本发明提供的帧定位查找及码流转换电路和方法,由于利用了FPGA内的RAM而不是触发器,实现了在一片FPGA(ALTRA 10K20)上做到四路码流转换,使得应用本发明的实际产品的集成度和经济性均优于现有技术,同时,也使针对不同的接口后续处理单元得到统一。也就是说,经过这一片FPGA,具有V.35和RS449接口的会议电视MCU的处理H.221帧单元与E1/T1接口的会议电视MCU的处理H.221帧单元(串并变换电路和CPU的硬件软件)可以是一样的,进而有助于提高MCU的容量。由于本发明的电路和方法还在FPGA内还加入了自动速率检测,H.221幀定位和复幀定位的查找和锁定,使转换成的2M码流除E1幀结构外,还有H.221幀结构。即根据H.221幀结构确定了字节边界。使得实施本发明的电路可以有效应用于现有技术所无法应用的会议电视领域的MCU。此外,2M码流字节的边界只是靠不同的64K码流来确定,简化和节省了操作。
结合附图和实施例,进一步说明本发明的特点,附图中:
图1为一个实际应用电路系统的框图。它是会议电视多点控制单元(MCU)中的一个带四路V.35接口会议电视协议(H.221,H.242)处理板。它由V.35电接口电路101、FPGA或ASIC实现的码流转换电路102、串并转换器(serial/parallel converter)103和CPU104组成。其中,V.35电接口电路101可收发四组标准V.35接口信号Sig1-4。V.35电接口电路101与码流转换电路102之间传送的信号为TTL电平的四组V.35接口信号Sig①-④。码流转换电路102输出到串并转换器103的HW1-4为四条TTL电平的2M bit/s IOM-2或ST-BUS总线(称为HW线),承载H.221幀的E1码流。
在图2示出的四路E1接口会议电视协议(H.221,H.242)处理板电路框图中,包括E1接口电路201、串并转换器202和CPU203。与图1示出的带四路V.35接口会议电视协议(H.221,H.242)处理板相比,CPU及其处理软件、串并转换器芯片的结构完全相同。前者在前端只有一个单元,即四路E1接口电路201。两种电路板上的HW1-HW4都为承载H.221幀的E1码流。由此可见,本发明的关键就是用电路实现对承载H.221幀的V.35码流和承载H.221幀的E1码流进行相互转换。更具体地说,通过FPGA芯片(如:ALTRA FLEX10K20),实现四路下述两种码流的相互转换,其中一种码流是速率为N×64K(N=1-30)bit/s的连续、无字节边界定位的H.221码流;另一种为速率为2Mbit/s,H.221幀定位字节固定在TS1的bit0,具有PCM30幀结构的码流。
图3示出按照本发明电路的用FPGA实现的内部一路接收模块的电路框图。其中,存储器单元306为FPGA的内部RAM(或EAB),换言之,该存储器单元(EAB)可以是FPGA中增强型阵列框,其基本结构就是一个2048bit的存储器,作为寻找帧定位码FAS及建立帧同步的工作区间。此处,存储器单元306输入信号为V.35接口数据输入;时钟发生单元302的输入信号为V.35接口收时钟以及包含系统2M时钟(HW线上2M码流时钟)、系统8K时钟、系统40M时钟的时钟信号;存储器单元306(EAB)的输出信号为转换后的2M码流,与带H.221幀结构的E1码流幀在结构上相同。
图3示出的内部接收模块中速率检测单元301用于输入的四路NX64K无字节边界码流进行速率检测,它输入V.35接口收时钟及系统8KHz参考时钟,速率检测单元301输出信号为其输入信号的速率检测值(二进制),表示64KHz的倍数。这个检测值也给图4所示的发送模块使用。
对于图3中内部接收模块中时钟发生单元302,其输入为V.35接口收时钟以及系统40MHz时钟,其输出包括整形后的V.35接口收时钟、写信号、采样信号、驱动信号、屏蔽信号。
写地址单元303,用于对四路N×64K无字节边界码流转换为四路2M有帧结构码流过程中,对存储器单元306(EABX4)进行数据写控制;输出V.35码流写入存储器单元306地址,幀定位查找阶段时,从存储器单元306读出码流到幀定位和复幀定位比较单元307的读地址。
读地址单元304,用于对四路N×64K无字节边界码流转换为四路2M有帧结构码流过程中,对存储器单元306进行数据读控制;输出码流转换阶段时,从存储器单元306读出2M码流的读地址。
读地址单元304和写地址单元303通过多路开关(MUX)305,提供存储器单元306的读写控制信号。
幀定位和复幀定位比较单元307用于对输入码流进行H.221基本帧定位,其输入为来自存储器单元306转换后的2M码流;输出信号为第一次找到幀定位指示,以及找到复幀定位指示。
复幀定位查找控制单元308用于对经过H.221基本帧定位的码流进行复帧定位及复帧同步,输出复幀定位采样控制信号和幀定位和复幀定位信号后,从幀定位查找模式切换到码流转换模式的指示。
图4为按照本发明的发送模块的一种实现电路;存储器单元402(EAB)的输入信号为CPU发出的2M码流(带H.221幀结构的E1码流);存储器单元402的输出信号为V.35接口数据输出,输入到速率检测单元401和时钟发生单元404的信号为V.35接口发时钟和系统2M时钟(2M码流时钟)、系统8K时钟、系统40M时钟,速率检测单元401的输出信号为发送时钟速率检测值,时钟发生单元404的输出信号包括各个模块的定时信号,写地址单元405用于对四路2M有帧结构码流转换为四路N×64K无字节边界码流过程中,对存储器单元402(EAB)进行数据写控制,通过多路开关(MUX)403提供存储器单元402写地址,读地址单元406用于对四路2M有帧结构码流转换为四路N×64K无字节边界码流过程中,对存储器单元402进行数据读控制,即通过多路开关403提供存储器单元402的读地址。
存储器单元402为FPGA的内部RAM。
更具体地说,通过FPGA芯片(如:ALTRA FLEX10K20),实现四路下述两种码流的相互转换,其中一种码流是速率为N×64K(N=1-30)bit/s的连续、无字节边界定位的H.221码流;另一种为速率为2Mbit/s,H.221幀定位字节固定在TS1的bit0,具有PCM30幀结构的码流。
下面,结合本发明提出的电路和方法,对V.35接口板上的FPGA的工作流程详述如下:
1、速率检测
采用计数器的方式进行速率检测:用一个8级的计数器来计算8K(来自于交换板)时钟周期内的接收时钟个数。
将计数器初值置为4,并把结果的高5位送出,丢掉低3位;送出的5位数就是接收码流速率为64K的倍数N。这样处理,即使两个时钟不同源,只要精度不是太差,也能保证计算出的接收码流速率(64K的整数倍)的正确性。
2、接收码流转换
接收码流转换首先得寻找帧定位码FAS并建立帧同步,在此基础上才能进行码流转换。
寻找FAS码,很直观的方法就是用触发器级联的方式。在这里,速率可达1920K,包含一个完整FAS码的数据流也可达1920bit。这样多的触发器级联,在FPGA内部难于实现,而且四路接收码流转换触发器也不够。在本发明中,采用RAM方式来进行。ALTERA的FLEX10K系列的FPGA内部都包含多个增强型阵列框EAB,存储器单元基本结构就是一个2048bit的存储器,因此使用起来非常方便。
FPGA的系统时钟使用40M的,一路接收码流转换使用一个EAB,构造成2048×1的RAM。接收码流转换的处理分为三个步骤:
1)第一次帧定位
a.写RAM
需要一个8级+3级的计数器作为地址指针。8级计数器的初值为8,并且达到8N+8时就向3级计数器进位;每来一个接收时钟8级计数器向上计数一次并对RAM写操作一次。
存储器单元(以下也用RAM代替)的地址如以下表一所示:2048个单元分为8块(Block),每块256个单元。写RAM时每块只使用一部分,即表中的粗重体部分。
表1:接收码流转换的RAM地址分布
Block 1 | 0,...,7 |
8,...,8(N+1)-1 |
8(N+1),...,255 |
Block 2 | 256,...,263 |
264,...,256+8(N+1)-1 |
256+8(N+1),...,511 |
Block 3 | 512,...,519 |
520,...,512+8(N+1)-1 |
512+8(N+1),...,767 |
Block 4 | 768,...,775 |
776,...,768+8(N+1)-1 |
768+8(N+1),...,1023 |
Block 5 | 1024,...,1031 |
1032,...,1024+8(N+1)-1 |
1024+8(N+1),...,1279 |
Block 6 | 1280,...,1287 |
1288,...,1280+8(N+1)-1 |
1280+8(N+1),...,1535 |
Block 7 | 1536,...,1543 |
1544,...,1536+8(N+1)-1 |
1536+8(N+1),....,1791 |
Block 8 | 1792,...,1799 |
1800,...,1792+8(N+1)-1 |
1792+8(N+1),...,2047 |
注:粗重体表示写RAM的区域,即每块8N个单元。
b.读RAM
也需要一个8级+3级的计数器作为地址指针,在一个接收时钟内由系统时钟驱动从RAM里读7次。读计数器的初值为当前的写计数器值,每读一次3级计数器向上计数一次。
如表1所示,7次读RAM的地址是不同的块,但在每块中的相对偏移是相同的。
c.FAS码检测
将得到的7bit数据与FAS码的前7个比特进行比较,以确定是否帧定位码。如果得到了帧定位码,就将当前计数器值存储下来并置帧标记SFLG1。
2)建立复帧同步:
在帧标记SFLG1置位后,建立复帧同步。具体有:
a..写RAM
写RAM与第一次帧定位的相同。
b.读RAM并进行FAS码检测
用一计数器来记录写RAM循环的次数,每20次循环且在第一次找到帧定位码的位置处才进行读操作,其余位置不进行读操作。
读RAM的方法与第一次帧定位的相同,读出的7bit数据进行FAS码比较,非FAS码就清除帧标记SFLG1,重新寻找FAS码。
c.读RAM并进行复帧定位检测
用一计数器来记录写RAM循环的次数,每20次循环且在第一次找到帧定位码的位置后10个循环后才进行读操作,其余位置不进行读操作。
读RAM的方法与第一次帧定位的相同,但每次只读出的一个bit数据(第7bit)到六位移位寄存器。与复帧定位字比较。
以上操作连续16次都还没有找到复帧定位,表明找到假帧定位,则清除帧标记SFLG1,重新寻找FAS码
d.找到复帧定位
在找到帧定位后,就置帧同步完成标记,并调整写计数器和读计数器:写计数器低8位先置位,再加1(即9,对应着32时隙的TS1时隙之第2bit);读计数器的高3位在写计数器高3位的基础上加4(一半)。
3)接收码流转换
帧步建立后,就可进行接收码流转换了。
a.写RAM
写RAM操作与前两个步骤的相同。
b.读RAM
2M时钟(来自于交换板)每来一次,就从RAM读出1bit并输出。读计数器的范围是连续的从0到2047,即表一的RAM空间是全部使用的。在8K时钟(来自于交换板)的下降沿,使计数器的低8位清零。
4)帧定位丢失
帧定位丢失的判决由CPU软件来进行。CPU一但检测到帧定位丢失,就通过状态口输出标记,此标记清除相应的接收码流帧同步标记,使接收码流重新又回到寻找FAS码的起点。
3、发送码流转换
使用一个EAB构成512×4的RAM,供四路发送码流转换使用,每路占用1位。写和读均使用8+1的计数器作为地址指针。写计数器是连续的0到511,读计数器的低8位是8到8N+7。
8K时钟下降沿,使写计数器的低8位为0;2M时钟来一次,对RAM写操作一次,并调整写计数器值。公共发送时钟来一次对RAM读操作一次,并调整读计数器值;读出的四bit数作为四个触发器的输入,由各自的发送时钟控制输出。
发送码流转换的RAM使用情况与接收码流转换的RAM使用情况类似,不同点在于:发送码流转换写RAM时是全部使用,而读RAM时是部分使用,这点正好与接收码流转换的相反。
通过将本发明的电路和方法应用在一种实验性的系统中,使E1/T1接口板和V.35/RS449接口板的大部分硬件电路,以及全部软件都无须改动,大大节省开发的人力资源和时间。维护的复杂程度和费用也降低。