本发明涉及400g otucn信号解析处理,尤其涉及一种实现400g otucn信号时隙交叉的方法。
背景技术:
1、在对400g otucn信号进行解析处理时,需要完成不同时隙的交叉,将属于同一组的时隙放在一起,以便后续完成信号解析。对于400g的otucn信号,其总时隙数为80个,一个时钟周期输入20个时隙,分4拍输入。时隙交叉的含义是将这80个时隙按照指定顺序重新排列。itu-t g.709的协议规定,otucn信号一个时隙数据位宽为128bit,这样大的数据位宽,如果采用通常的交叉方式会消耗大量的逻辑资源,目前通常的实现方法是使用选择方法实现交叉,即,待输出的时隙0位置的数据在80个时隙数据中选一个,同样待输出的时隙1位置的数据也在80个时隙数据中选一个,每个待输出的时隙选择哪一个可进行配置,通过这样的选择实现80个时隙的重排,从而完成时隙交叉功能。这样的方法在时隙数据位宽较小时是非常适用的,因为方法简单且消耗逻辑资源不多。但当时隙数据位宽很大,例如上述的400g otucn信号的时隙数据位宽则为128bit,对这样的时隙数据进行交叉,若还采用选择的方法会消耗大量的逻辑资源,从而给整个工程设计带来很大的资源与时序压力。
技术实现思路
1、鉴于上述的选择方法实现不同时隙的交叉存在的消耗逻辑资源多的问题,本发明提供一种实现400g otucn信号时隙交叉的方法,通过数据打斜、调序写到crs_bram、按路由顺序读crs_bram、数据再次调序、数据平滑对齐完成信号不同时隙的交叉,可很好的解决在解析400g otucn信号时,为完成信号的时隙交叉需要消耗大量的逻辑资源问题,为400gotucn信号解析处理技术提供有益参考。
2、本发明采取的技术方案是:一种实现400g otucn信号时隙交叉的方法,基于fpga的硬件平台实现,所述方法包括数据打斜、调序写到crs_bram、按路由顺序读crs_bram、数据再次调序、数据平滑对齐五个步骤;
3、第一步,数据打斜,400g otucn信号的时隙排布是一个时钟周期输入20个时隙,分4个时钟周期传输,共80个时隙,ts_num表示一个时钟周期的时隙数据的个数,mult_ts表示信号时隙持续的时钟周期的个数;规定一个时钟周期内的各时隙数据从上到下的标号为0到ts_num-1;数据打斜表示不同时隙数据延迟打拍,标号为0的时隙数据打0*mult_ts拍,标号为1的时隙数据打1*mult_ts拍,以此类推,标号为ts_num-1的时隙数据打(ts_num-1)*mult_ts拍;
4、第二步,调序写到crs_bram,对打斜后的数据进行调序,并将调序后的数据按不同时隙写入各自crs_bram中,具体为:
5、1)定义循环周期计数器cnt,其值按ts_num-1到0递减的方式变化,cnt值每mult_ts个时钟周期变化一次;
6、2)定义运算符<<<<为循环左移;
7、3)在cnt值相同的计数周期调整方式一致;
8、4)各时隙数据从上到下为d0、d1、以此类推、dts_num-1,调序的方法表示为{dts_num-1,dts_num-2,...,d0}<<<<cnt;
9、5)将调序后的各时隙数据写入各自crs_bram中;
10、第三步,按路由顺序读crs_bram;按指定的时隙交叉顺序从crs_bram中读出数据;
11、第四步,数据再次调序,将crs_bram中读出的数据按第二步的调序方式再次调序;
12、第五步,数据平滑对齐,对再次调序后的数据进行平滑对齐,完成信号不同时隙的交叉,具体为,标号为0的时隙数据打(ts_num-1)*mult_ts拍,标号为1的时隙数据打(ts_num-2)*mult_ts拍,以此类推,标号为ts_num-1的时隙数据打0*mult_ts拍;
13、通过如上步骤,实现了400g otucn信号的时隙交叉。
14、第三步中所述的按指定的时隙交叉顺序从crs_bram中读出数据的方法为,
15、1)时隙总数为ts_num*mult_ts,待交叉顺序ts_config=[c1 c2 ...cts_num*mult_ts],c取值为1到ts_num*mult_ts中的一个;
16、2)第二步调序后的时隙数据写入crs_bram中时,各时隙排列顺序按如下规律再现,定义变量ts_sft_ram表示调序后的时隙在crs_bram中的顺序,令ts_sft_ram的第一个元素为1,即ts_sft_ram(1)=1,那么第i个(i取值从2到ts_num*mult_ts)元素可用伪代码表示为,
17、ifts_sft_ram(i-1)+ts_num>ts_num*mult_ts
18、ts_sft_ram(i) =ts_sft_ram(i-1)+ts_num-(ts_num*mult_ts-1)
19、else
20、ts_sft_ram(i) =ts_sft_ram(i-1)+ts_num;
21、3)将需求的交叉顺序ts_config中的每一个元素与时隙在crs_bram中的排布顺序ts_sft_ram中的每一个元素进行比较,得到读取crs_bram地址的中间变量ts_sft_addr,具体表述为如下伪代码,
22、fori=1:ts_num*mult_ts
23、for j=1:ts_num*mult_ts
24、ifts_config(i)==ts_sft_ram(j)
25、ts_sft_addr(i) = j-1;
26、4)将ts_sft_addr循环的每隔ts_num个取一个地址号的方式重新排列,得到最终读取crs_bram地址的排布结果ts_sft_mult,具体表述为如下伪代码,
27、fori=1:ts_num
28、for j=1:mult_ts
29、ts_sft_mult((i-1)*mult_ts+j) = ts_sft_addr(i+ts_num*(j-1))。
30、本发明的有益效果是:本发明极大的减少了逻辑资源的消耗,大大减轻了在解析400g otucn信号时整个fpga工程的时序压力,本发明提供的方法在400g otucn信号解析处理技术领域有广泛的应用价值。
1.一种实现400g otucn信号时隙交叉的方法,基于fpga的硬件平台实现,其特征在于,所述方法包括数据打斜、调序写到crs_bram、按路由顺序读crs_bram、数据再次调序、数据平滑对齐五个步骤;
2.根据权利要求1所述的一种实现400g otucn信号时隙交叉的方法,其特征在于:第三步中所述的按指定的时隙交叉顺序从crs_bram中读出数据的方法为,