用于执行前向纠错的系统和方法

文档序号:7745704阅读:207来源:国知局
专利名称:用于执行前向纠错的系统和方法
技术领域
本专利文档中描述的技术概括地涉及针对数据传输的纠错。更特别地,公开了用于针对数据传输的前向纠错的系统和方法。
背景技术
在通信系统中经常使用前向纠错(FEC),并且前向纠错基于传输编码格式的数据。 通常通过使用预定算法向用于传输的原始数据添加冗余来执行FEC。对原始数据的冗余允许解码器检测和纠正传输错误。存在FEC码的很多示例,包括Reed-Soloman (RS)码。RS码是块纠错码,并且在国际电信联盟标准ITU-T(推荐J. 81)中指定。例如,RS编码器接收预定块格式的原始数据并且向原始数据添加冗余比特来生成码块(例如,码字)。RS解码器接收编码的数据和相关的奇偶校验数据,并且在发生传输错误时恢复原始数据。提供上面的描述作为对本领域中相关技术的一般性概览,而不应被视为承认其包含的任何信息构成针对本专利申请的现有技术。

发明内容
根据在此描述的教示,提供用于针对数据流中的帧执行前向纠错的系统和方法。 示例解码器包括状态机和解码单元。该状态机被配置为确定解码器所接收的帧内的码块是完整码块还是部分码块,帧包括多个码块。解码单元被配置为接收码块,并且当码块是部分码块时,基于对该部分码块的解码和作为对解码单元的输入的附加部分解码结果,生成输
出ο作为进一步的示例,解码单元还被配置为当码块是完整码块时,基于对该完整码块的解码来生成输出。解码单元包括多个级(stage),每级对应于表示码块的多项式的项。 当确定码块是完整码块时,解码单元被配置为从多个级的起始级开始向多个级输入码块。 当确定码块是部分码块时,解码单元被配置为从多个级的中间级开始向多个级输入码块, 基于码块的预定结构来确定中间级。作为另一示例,解码单元包括综合症(syndrome)组件和纠错组件。综合症组件被配置为接收码块,并且生成码块的综合症值,综合症组件包括第一多个级,第一多个级的每个对应于表示码块的多项式的项。纠错组件被配置为接收综合症值,以及基于综合症值来确定码块是否包含错误,纠错组件包括第二多个级,第二多个级的每个对应于表示码块的多项式的项。
4
作为其他示例,当确定码块是完整码块时,综合症组件被配置为从第一多个级的起始级开始向第一多个级输入码块。当确定码块是部分码块时,综合症组件被配置为从第一多个级的中间级开始向第一多个级输入码块,基于码块的预定结构确定中间级。当确定码块是完整码块时,纠错组件被配置为从第二多个级的起始级开始向第二多个级输入码块的综合症值。当确定码块是部分码块时,纠错组件被配置为从第二多个级的中间级开始向第二多个级输入码块的综合症值,基于码块的预定结构确定中间级。
作为附加示例,解码单元还包括缓冲器,其被配置为当确定码块是部分码块时,从综合症组件接收综合症值。纠错组件被配置为当确定码块是完整码块时,直接从综合症组件接收综合症值。纠错组件被配置为当确定码块是部分码块时,在预定延迟后从缓存接收综合症值。状态机还被配置为至少部分地基于帧的预定结构和帧内的码块的位置,来确定码块是完整码块还是部分码块。状态机还被配置为至少部分地基于包含在码块中的用于传输的原始数据的字节数量,来确定码块是完整码块还是部分码块。当码块包含用于传输的原始数据的239字节时,确定码块是完整码块;或者,当码块包含用于传输的原始数据的 104字节时,确定码块是部分码块。作为另一示例,提供一种用于针对数据流的帧执行前向纠错的方法。接收包括多个码块的帧。针对多个码块的每个码块,使用状态机来确定码块是完整码块还是部分码块。 基于该确定来在解码器中对码块进行解码。当确定码块是部分码块时,基于对部分码块的解码和作为对解码器的输入的附加部分解码结果来生成输出。作为进一步的示例,当确定码块是完整码块时,基于对整个码块的解码来生成输出。基于确定在解码器中对码块进行解码包括生成针对码块的综合症值,以及基于生成的综合症值来执行针对码块的纠错。当确定码块是部分码块时,在预定延迟后执行针对码块的纠错。对码块是完整码块还是部分码块的确定至少部分地基于帧的预定结构和帧内的码块的位置。


图1是根据本公开的实施方式的、用于对具有帧的数据流执行前向纠错(FEC)的示例解码器的图示,其中帧具有完整和部分码块两者。图2示出了根据本公开的实施方式的、从原始数据生成的GPON帧的示例。图3是根据本公开的实施方式的、详示图1的示例解码器的图示。图4是根据本公开的实施方式的、图3的示例综合症单元和示例纠错单元的图示。图5是用于使用图3的解码器来处理完整码块的序列的示例时序图。图6A-图6B是根据本公开的实施方式的、两个背靠背GPON帧的码块的示例特定序列的图示。图7是用于使用图3中的解码器来处理码块的特定序列的示例时序图。图8是根据本公开的实施方式的、用于针对数据流中的帧来执行前向纠错的示例流程图。
具体实施例方式图1是根据本公开的实施方式的、用于对具有帧(其中该帧具有完整和部分码块两者)的数据流执行前向纠错(FEC)的示例解码器100的图示。在某些类型的通信系统中, 诸如支持吉比特的无源光网络(GPON)和10吉比特GP0N,使用预定结构传输数据的每个帧, 该预定结构包括跟随有部分码块的多个完整码块。图1中描述的示例解码器100确定数据的帧中的传入码块是完整码块还是部分码块,并且基于此确定,为解码单元选择合适的操作模式。具体而言,图1中描述的解码器100包括状态机102和解码单元104。在操作中, 状态机102监视所接收帧的传入码块,并且例如基于帧的标准化结构和帧内码块的位置的先验知识,确定特定传入码块106是完整码块还是部分码块。继而,根据该确定,状态机102 向解码单元104输出模式选择信号108以选择用于解码单元104的操作模式,并且向解码单元104(例如向解码单元104中的初始处理级或向中间处理级),提供传入码块106,从而基于该确定进行合适的处理。在一个实施方式中,解码单元104包括用于处理传入码块106多个级(例如,“级 1”··· “级m,,··· “级η”)。如果模式选择信号108指示传入码块106是完整码块,则解码单元104进入针对完整码块的操作模式,并且从始级(级1110)开始向级中输入码块106 以供解码。另一方面,如果模式选择信号108指示传入码块106是部分码块,则解码单元 104进入针对部分码块的操作模式,并且从中间级(级mll2)开始向级中输入码块106以供解码。根据一个实施方式,当码块106是部分码块时,连同附加信息向中间级m提供码块 106,附加信息例如是在一个或多个初始级(诸如级1110)处对部分码块解码之后获得的部分解码结果。在某些实施方式中,这是可能的,因为以统一的方式(例如,利用零)“填充” 部分码块,从而使得在解码单元104的初始级处的所有部分码块的初始解码产生相同的结果。在处理码块106之后,解码单元104可以用于对帧中的后续码块进行解码。图2示出了根据本公开的实施方式的、在200处从原始数据生成的GPON帧的示例。RS码经常用于向原始数据添加冗余比特(例如,奇偶校验数据)以生成编码的码块(例如,码字)。在图2中看到两个帧,原始数据帧202和GPON帧204。原始数据帧202具有物理控制块下游(PCBD),以及多个原始净荷数据块。通过向原始数据帧202的数据块添加奇偶校验数据来生成GPON帧204。例如,奇偶校验数据206附加到数据帧202中的原始数据块208,以生成GPON帧204的码块210。GPON帧204通常具有标准化结构和固定的码块大小。在一个实施方式中,使用表示为RS 055,239,8)的RS码,GPON帧204包括152完整码块,每个完整码块具有239字节的原始数据和16字节的奇偶校验数据,以及定位在GPON帧末尾处的一个后续部分码块,其具有104字节的原始数据和16字节的奇偶校验数据。图3是根据本公开的实施方式的、详示图1的示例解码器的图示。如上面参考图1 根据一个实施方式指出的,解码器确定GPON帧中的传入码块是完整码块还是部分码块,并且基于此确定,为解码单元选择适当的操作模式以处理传入码块。示例解码器300包括控制单元302以及两个解码单元304和306。两个解码单元 304和306分别交替地处理传入码块。在操作中,包含在控制单元302中的状态机监视接收的GPON帧的传入码块,并且确定传入码块318是完整码块还是部分码块。在一个实施方式中,基于接收的GPON帧的标准化结构和GPON帧内码块的位置的先验知识,执行传入码块是完整码块还是部分码块的确定。继而,根据该确定,控制单元302输出模式选择信号320以供为解码单元304或解码单元306选择操作模式。
6
例如,当设置解码单元304以处理传入码块318时,模式选择信号310为解码单元304选择操作模式,该解码单元304包括综合症单元308、纠错单元310和部分码块缓存 328。综合症单元308用于为传入码块318计算综合症值(即,生成的多项式的根)。当模式选择信号320指示传入码块318是完整码块时,解码单元304进入针对完整码块的操作模式。在一个实施方式中,复用器321接收指示完整码块的模式选择信号320,并且向内部综合症单元322提供完整码块开始值324。继而,内部综合症单元322向复用器319输出针对传入码块318而计算的综合症值。响应于指示完整码块的模式选择信号320,复用器319 向内部纠错单元330提供针对传入码块318而计算的综合症值,该内部纠错单元330包括在纠错单元310中。响应于模式选择信号320,复用器323向内部纠错单元330提供完整码块开始值325。基于接收的针对码块318的综合症值和完整码块开始值325,在完整码块的描述情况中,当确定码块318包含错误时,内部纠错单元330对其执行纠错。在一个实施方式中,内部纠错单元330向算术组件332 (诸如算术组合器)输出针对码块318的纠错结果。算术组件332附加地从缓存312接收初始输入码块318的副本,并且继而生成从解码单元304输出的经纠错的码块333。另一方面,在一个实施方式中,当模式选择信号320指示传入码块318是部分码块时,解码单元304进入部分码块操作模式。在一个实施方式中,内部综合症单元322中的码块解码通过多个级进行。对部分码块的解码开始于内部综合症单元322的中间处理级。复用器321向内部综合症单元322提供部分码块开始值326。在一个实施方式中,不同于完整码块开始值324的部分码块开始值3 对应于对某个数量的零的解码的结果,就好像已经利用零初始填充了码块318,从而合成待解码的完整码块。内部综合症单元322向部分码块缓冲3 输出基于码块318而计算的综合症值和部分码块开始值326。在预定延迟之后,在一个实施方式中,该预定延迟对应于用于解码部分码块318的减少的时间,响应于指示部分码块的模式选择信号320,复用器319从部分码块缓存3 接收针对码块318而计算的综合症值。继而,复用器319向内部纠错单元330输出针对码块318而计算的综合症值。 响应于模式选择信号320,复用器323向内部纠错单元330提供部分码块开始值327。在部分码块的描述的情况中,基于针对码块318的接收的综合症值和部分码块开始值327,当确定码块318包含错误时,内部纠错单元330对其执行纠错。在一个实施方式中,内部纠错单元330向算术组件332输出针对码块318的纠错结果以供生成经纠错的码块333。类似于解码单元304,解码单元306包括综合症单元314、纠错单元316、部分码块缓存348和复用器349。综合症单元314包括复用器341和内部综合症单元342。纠错单元316包括复用器343和内部综合症单元352。例如,当设置解码单元306以处理传入码块 318时,解码单元306的操作类似于以上关于解码单元304所描述的那些。图4是根据本公开的实施方式的、图3的示例综合症单元308和示例纠错单元310 的图示。如图4中所看到的,内部综合症单元322和内部纠错单元330各自包括对应于表示码块的多项式的项的多个处理级。根据一个实施方式,处理级的每个由硬件电路形成。取决于码块318是完整码块还是部分码块,内部综合症单元322和内部纠错单元330内的不同级用于处理传入码块318。在操作中,当确定码块318是完整码块时,例如在一个实施方式中的控制单元302 处,复用器321向内部综合症单元322提供完整码块开始值324,内部综合症单元322还接收码块318。在一个实施方式中,完整码块开始值3M是零,或另一合适的开始值。将码块 318输入到从起始级334(例如,级“1”)开始的内部综合症单元322的级中。使用内部综合症单元322内的所有级来计算被确定为完整码块的码块318的综合症值,在此向下一级传送每个级处的处理结果。响应于模式选择信号320,复用器319从内部综合症单元322接收码块318的计算出的综合症值,并且向内部纠错单元330输出综合症值。内部纠错单元 330还从复用器323接收完整码块开始值325。将综合症值输入到从起始级338(例如,级 “1”)开始的内部纠错单元330的级中。使用内部纠错单元330内的所有级来执行被确定为完整码块的码块318的纠错,在此向下一级传送每个级处的处理结果。另一方面,当确定码块318是部分码块时,在一个实施方式中例如在控制单元320 处,内部综合症单元322从复用器321以及部分码块318接收部分码块开始值326,该分码块开始值3 在一个实施方式中不同于完整码块开始值324。将码块318输入到从中间级 336(例如,级“120”)开始的内部综合症单元322的级中,然而可以根据不同标准、不同码块结构等向不同级适当地提供部分码块318。基于码块318和部分码块开始值3 来计算针对码块318的综合症值。由于使用内部综合症单元322的较少级来处理部分码块318, 因而部分码块318的计算的综合症值存储在部分码块缓存328中,以便在针对完整码块计算的综合症值与针对部分码块计算的综合症值之间维持同步。在一个实施方式中,响应于模式选择信号320,复用器319从部分码块缓存3 选择缓存的针对部分码块的综合症值, 或从内部综合症单元322选择针对完整码块的综合症值。当确定码块318是部分码块时, 复用器319向内部纠错单元330提供针对存储在部分码块缓存3 中的码块318的综合症值。将该综合症值输入到从中间级340(例如,级“120”)开始的内部纠错单元330的级中, 然而可以根据不同标准、不同码块结构等适当地向不同级提供该综合症值。基于这些综合症值和从复用器323接收的部分码块开始值327,内部纠错单元330使用比针对完整码块更少的级来执行针对部分码块318的纠错。图5是用于使用图3的解码器300来处理完整码块的序列的示例时序图500。交叉参考图3和图5,交替地选择解码单元304和306来处理完整码块的序列。解码单元306 的综合症单元314(例如,“Synd ul”)和纠错单元316 (例如,“EC ul”)在第一流508中使用。解码单元304的综合症单元308(例如,“Synd u0,,)和纠错单元310 (例如,“EC u0,,) 在第二流510中使用。选择解码单元306来处理完整码块502。综合症单元314接收码块502并且计算针对码块502的综合症值。纠错单元316从综合症单元314接收计算的综合症值,并且针对码块502执行纠错。当跟随码块502的完整码块504到达时,解码单元306仍旧在处理码块502。继而,代替地选择解码单元304来处理码块504。综合症单元308接收码块504 并且计算针对码块504的综合症值。纠错单元310从综合症单元308接收计算的综合症值并且针对码块504执行纠错。当跟随码块504的另一完整码块到达时,综合症单元314已经完成了对码块502的处理,并且开始处理码块506。同样,GPON帧中的完整码块的序列交替地由解码单元304和306处理。在一个实施方式中,包括在解码单元304中的部分码块缓存328以及包括在解码单元306中的部分码块缓存348引入延迟,从而使得部分码块的处理时间与完整码块的处理时间相同,这使得能够对码块的处理进行交织。
通常,GPON帧在GPON数据流中连续传输。因此,解码器300经常需要在接收两个背靠背GPON帧时处理码块的特定序列。图6A和图6B示出了 600处两个背靠背GPON帧的码块的示例特定序列的图示。另一 GPON帧604跟随GPON帧602。出现码块606的特定序列,包括三个码块608、610和612。码块608和610是GPON帧602的最后两个块,并且码块612是GPON帧604的第一码块。码块608和612是完整码块,每个包括255字节数据, 而码块610是部分码块,仅包括120字节数据。图7是用于使用图3中的解码器300来处理码块的特定序列的示例时序图。交叉参考图3和图7,解码器300在两个操作模式之间切换以处理码块的特定序列。码块的第一特定序列包括码块702、704和706,其中码块704是之前的GPON帧的最后的码块,并且码块 706是当前的GPON帧的第一码块。在操作中,解码单元306的综合症单元314(例如,“Synd ul”)和纠错单元316(例如,“EC ul”)在第一流中使用,而解码单元304的综合症单元308(例如,“Synd uO”)和纠错单元310(例如,“EC uO”)在第二流中使用。综合症单元314(例如,“Synd ul”)接收码块702并且计算针对码块702的综合症值。复用器319从综合症单元314接收针对码块702的综合症值,并且向纠错单元316(例如,“EC ul”)提供该综合症值,该纠错单元316 针对码块702执行纠错。当跟随码块702的部分码块704到达时,综合症单元308(例如, "Synd uO”)接收部分码块704,并且计算针对部分码块704的综合症值。计算的针对部分码块704的综合症值存储在部分码块缓存328中,并且综合症单元308可以已经由后续的码块(例如,码块708)使用。在预定的延迟之后,复用器319从缓存3 接收针对部分码块704的综合症值,并且向针对码块704执行纠错的纠错单元310(例如,“EC uO”)提供该综合症值。当码块706到达时,综合症单元314尚未完成对码块702的处理。在延迟之后,综合症单元314开始处理码块706。该延迟将影响将由综合症单元314和纠错单元316处理的后续码块,直到码块的第二特定序列到达为止。另一方面,当跟随码块706的码块708到达时,综合症单元308准备就绪并开始处理码块708而没有任何延迟。因为码块708是完整码块,所以复用器319从综合症单元308接收针对码块708的综合症值,并且向纠错单元 310提供该综合症值以供纠错。对于综合症单元308和纠错单元310处理后续码块而言不存在延迟,直到码块的第二特定序列到达为止。码块的第二特定序列在当前GPON帧的末尾处到达,并且包括码块710、712和714。 码块712是当前的GPON帧的最后码块并且是部分码块。基于当前的GPON帧的已知结构, 码块712将由综合症单元314(例如,“Synd ul”)和纠错单元316 (例如,“EC ul”)处理。 然而,当码块712到达时,综合症单元314仍旧正在处理之前的码块716。在延长的延迟之后,综合症单元314开始处理码块712。当跟随码块712的码块714到达时,综合症单元308仍旧没有完成对码块710的处理。在延迟之后,综合症单元308开始处理码块714。该延迟将影响由综合症单元308和纠错单元310处理的后续码块,直到码块的下一特定序列到达为止。另一方面,当跟随码块 714的码块718到达时,综合症单元314准备好并处理码块718而没有任何延迟。针对处理后续码块,综合症单元314和纠错单元316没有遭受延迟,直到码块的下一特定序列到达为止。
类似地,码块的下一特定序列引起针对综合症单元314和纠错单元316的新延迟, 而去除了针对综合症单元308和310的现有延迟。因此,解码器300将由背靠背GPON帧的码块的特定序列引起的延迟限制到某个程度,从而使得延迟对于解码器300而言不会变的过长以至于不能正确工作。图8是根据本公开的实施方式的、用于针对数据流中的帧来执行前向纠错的示例流程图。在802处,接收包括多个码块的帧。在804处,确定帧内的码块是否是完整码块。 如果码块是完整码块,则在806处对该完整码块进行解码。如果码块是部分码块,则在808 处,基于码块和附加的部分解码结果对该码块进行解码。附加的部分解码结果对应于对某个数量的零进行解码的结果,好像已经将这些零填充到传入码块中以形成待解码的中间完整码块。本撰写的说明书使用示例来公开本发明、包括最佳模式并且还使得本领域技术人员能够制造并使用本发明。本发明的可专利的范围可以包括本领域技术人员想到的其他示例。
权利要求
1.一种用于针对数据流中的帧执行前向纠错的解码器,所述解码器包括状态机,被配置为确定由所述解码器接收的所述帧内的码块是完整码块还是部分码块,所述帧包括多个码块;以及解码单元,被配置为接收所述码块,并且当所述码块是部分码块时,基于对所述部分码块的解码和作为对所述解码单元的输入的附加部分解码结果,来生成输出。
2.根据权利要求1所述的解码器,其中所述解码单元还被配置为当所述码块是完整码块时,基于对所述完整码块的解码来生成输出。
3.根据权利要求1所述的解码器,其中所述解码单元包括多个级,每级对应于表示所述码块的多项式的项。
4.根据权利要求3所述的解码器,其中当确定所述码块是完整码块时,所述解码单元被配置为从所述多个级的起始级开始向所述多个级输入所述码块。
5.根据权利要求3所述的解码器,其中当确定所述码块是部分码块时,所述解码单元被配置为从所述多个级的中间级开始向所述多个级输入所述码块,基于所述码块的预定结构来确定所述中间级。
6.根据权利要求1所述的解码器,其中所述解码单元包括综合症组件,被配置为接收所述码块,并且生成所述码块的综合症值,所述综合症组件包括第一多个级,所述第一多个级的每个对应于表示所述码块的多项式的项;以及纠错组件,被配置为接收所述综合症值,以及基于所述综合症值来确定所述码块是否包含错误,所述纠错组件包括第二多个级,所述第二多个级的每个对应于表示所述码块的所述多项式的项。
7.根据权利要求6所述的解码器,其中当确定所述码块是完整码块时,所述综合症组件被配置为从所述第一多个级的起始级开始向所述第一多个级输入所述码块。
8.根据权利要求6所述的解码器,其中当确定所述码块是部分码块时,所述综合症组件被配置为从所述第一多个级的中间级开始向所述第一多个级输入所述码块,基于所述码块的预定结构确定所述中间级。
9.根据权利要求6所述的解码器,其中当确定所述码块是完整码块时,所述纠错组件被配置为从所述第二多个级的起始级开始向所述第二多个级输入所述码块的所述综合症值。
10.根据权利要求6所述的解码器,其中当确定所述码块是部分码块时,所述纠错组件被配置为从所述第二多个级的中间级开始向所述第二多个级输入所述码块的所述综合症值,基于所述码块的预定结构确定所述中间级。
11.根据权利要求6所述的解码器,其中所述解码单元还包括缓存,被配置为当确定所述码块是部分码块时,从所述综合症组件接收所述综合症值。
12.根据权利要求11所述的解码器,其中所述纠错组件被配置为当确定所述码块是完整码块时,直接从所述综合症组件接收所述综合症值;以及其中所述纠错组件被配置为当确定所述码块是部分码块时,在预定延迟后从所述缓存接收所述综合症值。
13.根据权利要求1所述的解码器,其中所述状态机还被配置为至少部分地基于所述帧的预定结构和所述帧内的所述码块的位置,来确定所述码块是完整码块还是部分码块。
14.根据权利要求13所述的解码器,其中所述状态机还被配置为至少部分地基于包含在所述码块中的用于传输的原始数据的字节数量,来确定所述码块是完整码块还是部分码块。
15.根据权利要求14所述的解码器,其中当所述码块包含用于传输的所述原始数据的 239字节时,确定所述码块是完整码块;或当所述码块包含用于传输的所述原始数据的104 字节时,确定所述码块是部分码块。
16.一种用于针对数据流的帧执行前向纠错的方法,所述方法包括 接收包括多个码块的所述帧;使用状态机针对所述多个码块的每个来确定码块是完整码块还是部分码块;以及基于所述确定在解码器中对所述码块进行解码,其中当确定所述码块是部分码块时, 基于对所述部分码块的解码和作为对所述解码器的输入的附加部分解码结果,来生成输出ο
17.根据权利要求16所述的方法,其中当确定所述码块是完整码块时,基于对整个码块的解码来生成输出。
18.根据权利要求16所述的方法,其中基于所述确定在所述解码器中对所述码块进行解码包括生成针对所述码块的综合症值;以及基于生成的所述综合症值来执行针对所述码块的纠错。
19.根据权利要求18所述的方法,其中当确定所述码块是部分码块时,在预定延迟后执行针对所述码块的所述纠错。
20.根据权利要求16所述的方法,其中对所述码块是完整码块还是部分码块的所述确定至少部分地基于所述帧的预定结构和所述帧内的所述码块的位置。
全文摘要
根据在此描述的教示,提供用于执行前向纠错的系统和方法。针对数据流中的帧执行前向纠错的解码器包括状态机,该状态机被配置为确定由解码器接收帧内的码块是完整码块还是部分码块,帧包括多个码块。解码单元被配置为接收码块,并且当码块是部分码块时,基于对该部分码块的解码和向解码单元输入的附加部分解码结果,来生成输出。
文档编号H04L1/00GK102377521SQ20111022582
公开日2012年3月14日 申请日期2011年8月4日 优先权日2010年8月4日
发明者D·梅尔兹, E·伊曾伯格, E·艾米特, O·沙菲瑞尔 申请人:马维尔以色列(M.I.S.L.)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1