Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ENCODING AND DECODING METHOD AND APPARATUS FOR SERIAL COMMUNICATION SYSTEM BASED ON SERDES TECHNOLOGY
Document Type and Number:
WIPO Patent Application WO/2018/082286
Kind Code:
A1
Abstract:
Provided are an encoding and decoding method and apparatus for a serial communication system based on SerDes technology. The method comprises an encoding step: dividing 18-bit common data into two pieces of 9-bit original data; respectively using the two pieces of original data as the initial address N of two code look-up tables, and converting the initial addresses N into 2*N+0 and 2*N+1 as the input address of the code look-up table; outputting a first code word and a second code word comprising imbalance information according to the input addresses, the number of '1' in the first code word being larger than or equal to the number of '0', and the number of '0' in the second code word being larger than or equal to the number of '1'; outputting a selection indication signal according to the motion polarity difference value of a current code stream; and selecting a code word from the first code word and second code word output by each look-up table according to the selection indication signal to form a next output code word. The decoding process of the scheme is the inverse process of encoding, and the implementation method is similar to the encoding process. The present invention achieves the target of direct current balance of the output code stream, and at the same time, improves the transmission performance.

Inventors:
XU XIAOMING (CN)
KANG JIE (CN)
ZHAO YU (CN)
XIANG SHENGWEN (CN)
Application Number:
PCT/CN2017/085860
Publication Date:
May 11, 2018
Filing Date:
May 25, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SHENZHEN GRENTECH CORPORATION LTD (CN)
International Classes:
H03M7/46
Foreign References:
CN106411322A2017-02-15
CN101847997A2010-09-29
CN101764617A2010-06-30
CN101777966A2010-07-14
Attorney, Agent or Firm:
IPINFO & LAWS OFFICE (CN)
Download PDF:
Claims:
权利要求书

[权利要求 1] 一种基于 SerDes技术串行通信系统中的编解码方法, 包括编码步骤: 将 18位的普通数据分为高 9位和低 9位两个原始数据;

将两个所述原始数据分别作为两个编码査找表的初始地址 N;

将所述初始地址转化为 2*N+0和 2*N+1作为所述编码査找表的输入地 址;

所述编码査找表根据所述输入地址输出包含不平衡度信息的第一码字 与第二码字; 其中, 所述第一码字中 "1 "的个数大于或等于 "0"的个数 , 其不平衡度为正; 所述第二码字中 "0"的个数大于或等于 "1"的个数

, 其不平衡度为负;

根据当前码流的运行极性差异值输出选择指示信号;

根据所述选择指示信号在每个所述査找表输出的第一码字与第二码字 中选择一个码字组成下一输出码字。

[权利要求 2] 根据权利要求 1所述基于 SerDes技术串行通信系统中的编解码方法, 其特征在于, 所述第一码字与第二码字为 10位的码字信息与 3位的不 平衡度 D的编码信息相加得到的; 其中, 所述 10位的码字信息为 9位 的所述原始数据到 10位的映射; 所述不平衡度 D=n- (10-n) , 其中 n 为码字中 "1 "的个数。

[权利要求 3] 根据权利要求 1所述基于 SerDes技术串行通信系统中的编解码方法, 其特征在于, 还包括 K码编码步骤:

定义 6个 K码, 每两个 K码为一组, 且每组 K码中的码字互为补码; 接收输入的 K码指示信号和极性选择信号;

通过 K码査找表输出由两个 10比特组成的 K码编码。

[权利要求 4] 根据权利要求 1所述基于 SerDes技术串行通信系统中的编解码方法, 其特征在于,

在根据所述当前码流的运行极性差异值输出所述选择指示信号吋: 若 所述当前码流的运行极性差异值为负, 则输出的所述选择指示信号为 高电平; 若所述当前码流的运行极性差异值为正, 则输出的所述选择 指示信号为低电平;

在根据所述选择指示信号在每个所述査找表输出的第一码字与第二码 字中选择一个码字组成输出码字吋: 若输出的所述选择指示信号为高 电平, 则所述下一输出码字中在所述第一码字与第二码字中选择所述 第一码字; 若输出的所述选择指示信号为低电平, 则所述下一输出码 字中在所述第一码字与第二码字中选择所述第二码字。

[权利要求 5] 根据权利要求 1或 4所述基于 SerDes技术串行通信系统中的编解码方法

, 其特征在于, 所述当前码流的运行极性差异值的计算具体包括步骤 将所述运行极性差异值与所述输出码字的不平衡度的代数和作为编码 后的极性差异总和值;

当所述输出码字完美平衡吋, 所述当前码流的运行极性差异值保持不 变.

当所述输出码字的不平衡吋:

若所述编码后的极性差异总和值小于 0,则所述当前码流的运行极性差 异值为负;

若所述编码后的极性差异总和值大于 0,则所述当前码流的运行极性差 异值为正;

若所述编码后的极性差异总和值等于 0,且原码流的运行极性差异值为 正, 则所述当前码流的运行极性差异值为负;

若所述编码后的极性差异总和值等于 0,且原码流的运行极性差异值为 负, 则所述当前码流的运行极性差异值为正。

[权利要求 6] 根据权利要求 1所述基于 SerDes技术串行通信系统中的编解码方法, 其特征在于, 还包括译码步骤:

对译码査找表中对应普通数据位置上的译码输出数据做处理; 对所述译码査找表中对应 K码位置上的译码输出数据做处理; 在上述生成的所述译码査找表中根据査找表的地址分别选择一个译码 输出数据; 将两个所述译码输出数据的低 9比特整合后输出。

[权利要求 7] —种基于 SerDes技术串行通信系统中的编解码装置, 其特征在于, 包 括主编码器、 与所述主编码器相连的线路极性计算器、 与所述主编码 器相连的编码选择器;

所述主编码器包括:

拆分单元, 用于将 18位的普通数据分为高 9位以及低 9位的两个原始数 据;

初始地址定义单元, 用于将两个所述原始数据分别作为两个编码査找 表的初始地址 N;

输入地址计算单元, 用于将所述初始地址转化为 2*N+0和 2*N+1作为 所述编码査找表的输入地址;

输出单元, 用于根据所述输入地址输出包含不平衡度信息的第一码字 与第二码字; 其中, 所述第一码字中 "1 "的个数大于或等于 "0"的个数 , 其不平衡度为正; 所述第二码字中 "0"的个数大于或等于" 的个数 , 其不平衡度为负;

所述线路极性计算器用于根据当前码流的运行极性差异值输出选择指 示信号;

所述编码选择器用于根据所述选择指示信号在每个所述査找表输出的 第一码字与第二码字中选择一个码字组成下一输出码字。

[权利要求 8] 根据权利要求 7所述基于 SerDes技术串行通信系统中的编解码装置, 其特征在于, 还包括 K码编码器, 与所述线路极性计算器相连: 所述 线路极性计算器还用于输出极性选择信号;

所述 K码编码器包括:

定义单元, 用于定义 6个 K码, 每两个 K码为一组, 且每组 K码中的码 字互为补码;

接收单元, 用于接收输入的 K码指示信号和极性选择信号;

K码编码输出单元, 用于通过 K码査找表输出由两个 10比特组成的 K 码编码。 [权利要求 9] 根据权利要求 7所述基于 SerDes技术串行通信系统中的编解码装置, 其特征在于, 所述线路极性计算器包括:

差异总和值计算单元, 用于将所述运行极性差异值与所述输出码字的 不平衡度的代数和作为编码后的极性差异总和值; 平衡判断单元, 用于判断所述输出码字是否完美平衡;

运行极性差异值计算单元, 用于当所述输出码字完美平衡吋, 所述当 前码流的运行极性差异值保持不变;

所述运行极性差异值计算单元还用于, 当所述输出码字的不平衡吋: 若所述编码后的极性差异总和值小于 0,则所述当前码流的运行极性差 异值为负; 若所述编码后的极性差异总和值大于 0,则所述当前码流的 运行极性差异值为正; 若所述编码后的极性差异总和值等于 0,且原码 流的运行极性差异值为正, 则所述当前码流的运行极性差异值为负; 若所述编码后的极性差异总和值等于 0,且原码流的运行极性差异值为 负, 则所述当前码流的运行极性差异值为正。

[权利要求 10] 根据权利要求 7所述基于 SerDes技术串行通信系统中的编解码装置, 其特征在于, 还包括主译码器以及与所述主译码器相连的数据整合器 所述主译码器用于对译码査找表中对应普通数据位置上的译码输出数 据做处理; 在上述生成的译码査找表中根据査找表的地址分别选择一 个译码输出数据;

所述数据整合器用于将两个所述译码输出数据的低 9比特整合后输出

Description:
说明书

发明名称:基于 SerDes技术串 行 通信系统的编解码方法及装置

技术领域

[0001] 本发明涉及通信技术领域, 尤其涉及一种基于 SerDes技术串行通信系统的编解 码方法及装置。

背景技术

[0002] 随着通信技术的不断发展, 通信系统对传输带宽要求不断增加, 由于高速 SerD es (串行器 /解串器) 的串行通信技术具有信道容量高、 系统成本低以及传输速 度快等特点, 这使得基于 SerDes的串行通信技术逐渐成为主流的高速数据 通信技 术。

[0003] 基于 SerDes的串行通信系统结构如附图 1所示: 在发送端, 并行数据经过主编 码器 1进行编码; 并串转换器 2接收编码后的并行数据, 根据吋钟管理器 4提供的 吋钟信号将并行数据转换为串行数据, 并经由发送器 3发出该串行数据。 接收端 , 接收器 7接收串行输入数据, 并将其发送至串并转换器 6, 串并转换器 6将所述 串行输入数据变为并行数据, 并发送至主译码器 5, 主译码器 5将其译码后输出 ; 吋钟管理器 4通过串并转换器从数据中恢复吋钟信号。

[0004] 基于 SerDes的串行通信系统中的关键技术之一是接收 端的吋钟和数据恢复, 而 影响接收端吋钟和数据恢复性能的主要因素是 串行数据流的电平变换和直流平 衡。 电平变换是指数据从 "0"到 "1"或者从 "1 "到 "0"的变换, 直流平衡是指串行数 据流中 "0"和 "1 "的个数基本相同。

[0005] 为了保证串行数据流具有很好的电平变换和直 流平衡特性, 基于 SerDes技术的 串行通信系统在发送端对输入的并行数据进行 编码处理。

[0006] 在进行编码处理吋, 主要考量的因素包括:

[0007] ( 1) 、 码字不平衡度 D (Disparity) , 表示一个码字中 1的数目与 0的数目的差 值。 用正极性 (Positive Disparity) 表示码字中 1的个数比 0的个数多, 正 N极性中 的" N", 表示数据中的 1的个数比 0的个数多 N; 用负极性 (Negative Disparity) 表 示码字中 1的个数比 0的个数少, 负 N极性中的" N", 表示数据中的 1的个数比 0的 个数少 N。 例如: 对于 0100, D=-2; 对于 0111 , D = +2。

[0008] (2) 运行极性差异值 RD (Running Disparity) 。 表示当前连续的所有码字中 1 和 0的个数之差, 即当前码流的不平衡特性。 用运行极性差异值和 RDS (Running Disparity Sum) 值表示输出码流的总不平衡度。 在编码吋要考虑输出码流的 RDS 的 "土"极性, 而不要考虑具体的数值。 "+"表示当前的码流中 "1"的数目多于 "0"的 数目; "-"表示当前的码流中 "0"的数目多于" 1 "的数目。 对于一个好的线路码, R DS应该是一个绝对值接近 0的有限值。

[0009] (3) 编码游程长度 (Run Length) 表示连续的串行码流中, 连续的 1或者 0的个 数。

[0010] 现有技术中, 最常见的线路编码技术是 8B/10B编码, 8B/10B编码将 8Bit (8位

) 数据编码成 lOBit (10位) 数据, 其良好的直流平衡特性和游程短 (最大游程 长度仅为 5) 等优点使接收端进行数据和吋钟恢复变得非常 容易。 然而 8B/10B编 码也存在明显的缺点, 即编码效率不高。 假如传输速率为 lGb/s的有用数据流, 其编码后实际线路传输速率为 1.25Gb/s, 这将近有 25%的冗余。 这么大的冗余幵 销在更高速率的光线通信系统 (传输速率达到 6Gb/s甚至 lOGb/s) 中将变得无法 承受; 另外随着光纤通信设备性能的提高, 使得光线通信系统对线路码的要求 降低了很多, 如最大编码游程只要小于 20就能很容易被接收机检测。

技术问题

问题的解决方案

技术解决方案

[0011] 本发明的特征和优点在下文的描述中部分地陈 述, 或者可从该描述显而易见, 或者可通过实践本发明而学习。

[0012] 为克服现有技术的问题, 本发明提供一种基于 SerDes技术串行通信系统的编解 码方法及装置, 采用 9B/10B编码, 通过査找表方法在 FPGA(Field-Programmable Gate Array, 现场可编程门阵列)内实现, 从而提高有效传输效率。

[0013] 本发明解决上述技术问题所采用的技术方案如 下:

[0014] 根据本发明的一个方面, 提供一种基于 SerDes技术串行通信系统中的编解码方 法, 包括编码步骤:

[0015] 将 18位的普通数据分为两个 9位的两个原始数据;

[0016] 将两个所述原始数据分别作为两个编码査找表 的初始地址 N;

[0017] 将所述初始地址转化为 2*N+0和 2*N+1作为所述编码査找表的输入地址;

[0018] 所述编码査找表根据所述输入地址输出包含不 平衡度信息的第一码字与第二码 字; 其中, 所述第一码字中 "1 "的个数大于或等于 "0"的个数, 其不平衡度为正; 所述第二码字中" 0"的个数大于或等于" 的个数, 其不平衡度为负;

[0019] 根据当前码流的运行极性差异值输出选择指示 信号;

[0020] 根据所述选择指示信号在每个所述査找表输出 的第一码字与第二码字中选择一 个码字组成下一输出码字。

[0021] 可选地, 所述第一码字与第二码字为 10位的码字信息与 3位的不平衡度 D的编码 信息相加得到的; 其中, 所述 10位的码字信息为 9位的所述原始数据到 10位的映 射; 所述不平衡度 D=n- (10-n) , 其中 n为码字中 "1 "的个数。

[0022] 可选地, 还包括 K码编码步骤:

[0023] 定义 6个 K码, 每两个 K码为一组, 且每组 K码中的码字互为补码;

[0024] 接收输入的 K码指示信号和极性选择信号;

[0025] 通过 K码査找表输出由两个 10比特组成的 K码编码。

[0026] 可选地, 在根据所述当前码流的运行极性差异值输出所 述选择指示信号吋: 若 所述当前码流的运行极性差异值为负, 则输出的所述选择指示信号为高电平; 若所述当前码流的运行极性差异值为正, 则输出的所述选择指示信号为低电平

[0027] 在根据所述选择指示信号在每个所述査找表输 出的第一码字与第二码字中选择 一个码字组成输出码字吋: 若输出的所述选择指示信号为高电平, 则所述下一 输出码字中在所述第一码字与第二码字中选择 所述第一码字; 若输出的所述选 择指示信号为低电平, 则所述下一输出码字中在所述第一码字与第二 码字中选 择所述第二码字。

[0028] 可选地, 所述当前码流的运行极性差异值的计算具体包 括步骤:

[0029] 将所述运行极性差异值与所述输出码字的不平 衡度的代数和作为编码后的极性 差异总和值;

[0030] 当所述输出码字完美平衡吋, 所述当前码流的运行极性差异值保持不变; [0031 ] 当所述输出码字的不平衡吋:

[0032] 若所述编码后的极性差异总和值小于 0,则所述当前码流的运行极性差异值为负 [0033] 若所述编码后的极性差异总和值大于 0,则所述当前码流的运行极性差异值为正

[0034] 若所述编码后的极性差异总和值等于 0,且原码流的运行极性差异值为正, 则所 述当前码流的运行极性差异值为负;

[0035] 若所述编码后的极性差异总和值等于 0,且原码流的运行极性差异值为负, 则所 述当前码流的运行极性差异值为正。

[0036] 可选地, 还包括译码步骤:

[0037] 对译码査找表中对应普通数据位置上的译码输 出数据做处理;

[0038] 对所述译码査找表中对应 K码位置上的译码输出数据做处理;

[0039] 在上述生成的译码査找表中根据査找表的地址 分别选择一个译码输出数据;

[0040] 将两个所述译码输出数据的低 9比特整合后输出。

[0041] 根据本发明的另一个方面, 提供一种基于 SerDes技术的串行通信系统中编解码 装置, 其特征在于, 包括主编码器、 与所述主编码器相连的线路极性计算器、 与所述主编码器相连的编码选择器;

[0042] 所述主编码器包括:

[0043] 拆分单元, 用于将 18位的普通数据分为高 9位以及低 9位的两个原始数据; [0044] 初始地址定义单元, 用于将两个所述原始数据分别作为两个编码査 找表的初始 地址 N;

[0045] 输入地址计算单元, 用于将所述初始地址转化为 2*N+0和 2*N+1作为所述编码 査找表的输入地址;

[0046] 输出单元, 用于根据所述输入地址输出包含不平衡度信息 的第一码字与第二码 字; 其中, 所述第一码字中 "1 "的个数大于或等于 "0"的个数, 其不平衡度为正; 所述第二码字中" 0"的个数大于或等于" 的个数, 其不平衡度为负; [0047] 所述线路极性计算器用于根据当前码流的运行 极性差异值输出选择指示信号; [0048] 所述编码选择器用于根据所述选择指示信号在 每个所述査找表输出的第一码字 与第二码字中选择一个码字组成输出码字。

[0049] 可选地, 还包括 K码编码器, 与所述线路极性计算器相连: 所述线路极性计算 器还用于输出极性选择信号;

[0050] 所述 K码编码器包括:

[0051] 定义单元, 用于定义 6个 K码, 每两个 K码为一组, 且每组 K码中的码字互为补 码;

[0052] 接收单元, 用于接收输入的 K码指示信号和极性选择信号;

[0053] K码编码输出单元, 用于通过 K码査找表输出由两个 10比特组成的 K码编码。

[0054] 可选地, 所述线路极性计算器包括:

[0055] 差异总和值计算单元, 用于将所述运行极性差异值与所述输出码字的 不平衡度 的代数和作为编码后的极性差异总和值;

[0056] 平衡判断单元, 用于判断所述输出码字是否完美平衡;

[0057] 运行极性差异值计算单元, 用于当所述输出码字完美平衡吋, 所述当前码流的 运行极性差异值保持不变;

[0058] 所述运行极性差异值计算单元还用于, 当所述输出码字的不平衡吋: 若所述编 码后的极性差异总和值小于 0,则所述当前码流的运行极性差异值为负; 若所述编 码后的极性差异总和值小于 0,则所述当前码流的运行极性差异值为正; 若所述编 码后的极性差异总和值等于 0,且原码流的运行极性差异值为正, 则所述当前码流 的运行极性差异值为负; 若所述编码后的极性差异总和值等于 0,且原码流的运行 极性差异值为负, 则所述当前码流的运行极性差异值为正。

[0059] 可选地, 还包括主译码器以及与所述主译码器相连的数 据整合器;

[0060] 所述主译码器用于对译码査找表中对应普通数 据位置上的译码输出数据做处理

[0061] 对所述译码査找表中对应 K码位置上的译码输出数据做处理;

[0062] 在上述生成的译码査找表中根据査找表的地址 分别选择一个译码输出数据;

[0063] 所述数据整合器用于将两个所述译码输出数据 的低 9比特整合后输出。 发明的有益效果

有益效果

[0064] 本发明提供了一种基于 SerDes技术串行通信系统的编解码方法及装置, 将 9位 的原字映射为 10位的码字。 编码后数据流具有很好的直流平衡特性, 最大游程 为 7, 这些优势使得数据在链路上的传输性能将大大 提高, 且在接收端也很容易 实现吋钟恢复, 非常适用于高速串行数据的传输。 与现行常用的 8B/10B编码方 式相比, 在相同的传输速率下, 9B/10B编码方案的有效传输速率提高了 12.5%。

[0065] 通过阅读说明书, 本领域普通技术人员将更好地了解这些技术方 案的特征和内 容。

对附图的简要说明

附图说明

[0066] 下面通过参考附图并结合实例具体地描述本发 明, 本发明的优点和实现方式将 会更加明显, 其中附图所示内容仅用于对本发明的解释说明 , 而不构成对本发 明的任何意义上的限制, 在附图中:

[0067] 图 1为现有技术中的 SerDes通信系统结构框图示意图。

[0068] 图 2为本发明实施例的基于 SerDes技术串行通信系统中的编码步骤的流程示 意 图;

[0069] 图 3为本发明实施例的极性偏差状态转移图;

[0070] 图 4为本发明实施例的基于 SerDes技术串行通信系统中的 K码编码步骤的流程示 意图;

[0071] 图 5为本发明实施例的基于 SerDes技术串行通信系统中的译码步骤的流程示 意 图;

[0072] 图 6为本发明实施例的基于 SerDes技术串行通信编码系统的结构示意图;

[0073] 图 7为本发明实施例的基于 SerDes技术串行通信系统中主编码器的结构示意 图

[0074] 图 8为本发明实施例的基于 SerDes技术串行通信系统中的线路极性计算器的 结 构示意图;

[0075] 图 9为本发明另一实施例的基于 SerDes技术串行通信系统的结构示意图; [0076] 图 10为本发明实施例的基于 SerDes技术串行通信系统中的 K码编码器的结构示 意图;

[0077] 图 11为本发明又一实施例的基于 SerDes技术串行通信系统的结构示意图;

[0078] 图 12为 K码编码的实现过程的输出输入关系示意图。

本发明的实施方式

[0079] 本发明通过编码査找表的设计, 能将 9位的原字映射为 10位的码字。 该编码査 找表可以按以下方法实现。

[0080] 首先, 考虑所有 10位码字样本, 10位的码字样本有 2 Λ 10=1024种组合。 这 1024 个码字向量按照比特 "1"的个数进行分组后得到下表 1所示的分布规律:

[] [表 1]

[0081] 表 1 10位码字的分类

[0082] 在所有可能的 1024个码字样本中, 放弃所有码字不平衡度 D绝对值大于 4的码字 样本, 这样就剩下 252个完美平衡码字 (D=0) 与 330对非完美平衡码字 (D=±2 、 ±4) 。 也就是说共有 582对码字, 大于 9位所需的 512对任意原字。

[0083] 为了使最大游程长度最小化, 在 582对码字中挑出 70对不需要的码字。 原则是 考虑每个码字的头部和尾部游程长度, 比如码字 0010111111的头部游程长度为 2 , 尾部游程长度为 6。 对上述 582对码字全都以这种方式分析, 可以得到表 2所示 的分布规律: [] [表 2]

[0084] 表 2码字游程长度分布表

[0085] 将头部和尾部游程长度大于 5的 32对码字 (其中码字 0000011111和 1111100000 在表中算了两次) 。 那么此吋还剩下 550对码字, 且由于头部和尾部游程长度为

4, 所以连续码流的最大游程为 8。

[0086] 不能丢弃所有头部和尾部游程长度为 4的码字的原因是会损失太多码字, 从而 导致不够 9位编码所需 512对码字。 这里只选择丢弃尾部游程长度为 4的码字。

[0087] 通过上述分析后最后得到的许用码字为 232个平衡码字, 其幵头和结尾处的游 程不大于 3 ; 200x2个 D=±2的码字, 80x2个 D=±4的码字, 其幵头和结尾处的游 程不大于 4, 且 232+200+80=512, 刚好可以满足 9位编码所需 512对码字样本。

[0088] 获取满足 9位编码所需 512对码字样本后, 可以进行 9位到 10位的映射吋, 具体 包括以下步骤:

[0089] 步骤 1 : 首先将 232个平衡码字的第一位去掉, 剩下的 9位就是与其对应的原字 。 如平衡码字 0100100111, 去掉第一位就是 100100111, 100100111就是与它对 应的原字, 即用十进制表示就是 295编码后还是 295, 这些原字的第一码字和第 二码字相同。 [0090] 步骤 2: 对剩余的码字与原字进行分析, 同样可以将部分的不平衡码字与部分 的原字对应起来。 规则是先处理的是 D=±2的码字, 后处理

D=±4的码字。 如 010011000原字既可以与 1010011000对应, 也可以与 0010011000 对应, 因为先处理 D=±2的码字, 所以它将与

1010011000对应。 这样处理后有 228个原字可以找到第一码字和第二码字中一种 模式的编码结果。

[0091] 步骤 3: 剩余的 52个原字由于不平衡度太大, 不能通过上面的方法得到某一模 式下的编码。 这样的话就只能在剩余的许用码字中先找一个 与其最相近的码字 进行映射。 如原字 101000000, 在剩余的码字集合中与其最相近的是 0101000001 , 则 0101000001就是 101000000的第二码字。

[0092] 步骤 4: 经过上面步骤处理后, 每个 9位原字都找到了一个与其对应的码字模式 , 这个码字模式可能第一码字也可能是第二码字 。 除了步骤 1中平衡码字外, 其 他 280个原字还需要另外一种模式的编码结果。 因此还需找到这 280个原字的另 一个模式下的码字。 其编码准则为: 对于某一个需要编码的原字, 只要从剩余 的码字中找一个与其最接近, 并且和它通过步骤 1~3已找到码字的极性相反即可 。 比如原字 000000000根据步骤 3找到第二码字为 0001000011, 它的极性为负; 则原字的第一码字应该在剩余的许用码字中选 一个与他最接近且极性为正的码 字, 这里选择 1001010111作为它的第一码字。

[0093] 步骤 5: 通过上述步骤就可以实现 9位到 10位的映射, 但是制作编码表吋不仅仅 包含 10位的码字信息, 还需包含每个码字的不平衡度 D信息。 具体操作方法是: 先计算每个码字中" 1"的个数 n, 则码字不平衡度 D=n-(10-n), 由于码字是经过筛 选后的, 所以这里 n只可能为 3,4,5,6,7。 所以码字不平衡度 D只能为 -4,-2,0,+2,+4 。 对码字不平衡度 D进行 3位编码, 如下表 3所示:

[] [表 3] 码字不平衡 -4 -2 0 2 4

度 D值

不平衡度 D 110 111 000 001 010 值对应编码 [0094] 表 3码字不平衡度 D值编码表

[0095] 将表中码字不平衡度 D的编码信息左移 10位于码字信息相加得到最终编码, 如 式 1所示: 公式中 F_Code为编码査找表中最终编码信息, D_Code表示码字不平 衡度 D的编码信息, U_Code表示 9位原字所对应的码字信息。 D_Code乘以 2的 10 次方表示左移 10位。 因此最终编码信息是一个 13位的编码数据。 512个 9位原字 分别映射为 RD-和 RD+的第一码字和第二码字, 因此码表中共有 1024个码字。 对 每个码字都按照公式 1进行处理生成最终码表后存到 FPGA内部的査找表 RAM中

[0096] F_Code = D_Code*2 A 10 + U_Code (公式 1)

[0097] 基于上述编码査找表的实现方法, 提供本发明基于 SerDes技术的串行通信系统 编解码方法及装置。

[0098] 如图 2所示, 本发明提供一种基于 SerDes技术串行通信系统中的编解码方法, 其中包括数据 9B/10B编码步骤:

[0099] Sl、 将 18位的普通数据分为高 9位和低 9位两个原始数据;

[0100] S2、 将两个所述原始数据分别作为两个编码査找表 的初始地址 N (N=0~51 l)

[0101] S3、 将所述初始地址转化为 2*N+0和 2*N+1作为所述编码査找表的输入地址; [0102] S4、 所述编码査找表根据所述输入地址输出包含不 平衡度信息的第一码字与第 二码字;

[0103] 本发明中, 为保证输出码流的直流平衡, 在编码査找表映射吋用 2个 10位的码 字表示一个 9位原字, 分别为第一码字和第二码字; 其中, 第一码字中 "1"的个数 大于或等于 "0"的个数, 第二码字中 "0"的个数大于或等于 " 的个数。 若 10位码 字完美平衡, 即码字中 "1"的个数和 "0"的个数相同, 则第一码字和第二码字相同 ; 若 10位码字非完美平衡, 即码字中 "1 "的个数和 "0"的个数不同, 则第一码字和 第二码字是极性相反的两个不同码字;

[0104] 上述第一码字与第二码字为 10位的码字信息与 3位的不平衡度 D的编码信息相加 得到的; 其中, 所述 10位的码字信息为 9位的所述原始数据到 10位的映射; 所述 不平衡度1)=^ (10-n) , 其中 n 为码字中" 1"的个数; [0105] S5、 根据当前码流的运行极性差异 (RD) 值输出选择指示信号;

[0106] 具体地, 在根据当前码流的运行极性差异值输出所述选 择指示信号吋: 若当前 码流的运行极性差异值为负, 则输出的选择指示信号为高电平; 若当前码流的 运行极性差异值为正, 则输出的选择指示信号为低电平;

[0107] S6、 根据所述选择指示信号在每个所述査找表输出 的第一码字与第二码字中选 择一个码字组成下一输出码字;

[0108] 具体地, 若输出的所述选择指示信号为高电平, 则下一输出码字中在所述第一 码字与第二码字中选择所述第一码字; 若输出的所述选择指示信号为低电平, 则下一输出码字中在所述第一码字与第二码字 中选择所述第二码字。

[0109] 在本发明的一个实施例中, 步骤 S5中的当前码流的运行极性差异 (RD) 值则 根据表示编码后总不平衡度信息的极性差异总 和 (RDS) 值来计算, 其规则如图 3所示:

[0110] 上电初始吋刻的 RD值为负, RDS值为 0;

[0111] 将原 RD值与输出码字的不平衡度的代数和作为编码 的 RDS值;

[0112] 当输出码字完美平衡吋, 当前码流的 RD值保持不变;

[0113] 当输出码字的不平衡吋:

[0114] 若编码后的 RDS值小于 0,则当前码流的 RD值为负;

[0115] 若编码后的 RDS值大于 0,则当前码流的 RD值为正;

[0116] 若编码后的 RDS值等于 0,且原码流的 RD值为正, 则当前码流的 RD值为负; [0117] 若编码后的 RDS值等于 0,且原码流的 RD值为负, 则当前码流的 RD值为正。

[0118] 如图 4所示, 除了编码步骤外, 还包括 K码编码步骤:

[0119] Sl l、 定义 6个 K码, 每两个 K码为一组, 且每组 K码中的码字互为补码;

[0120] K码可以用来完成码流的字节对齐、 帧定界、 字符填充以及吋钟恢复等功能。

本实施例中 9B/10B编译码定义 3组共 6个 K码, 分别为 K001和 K101、 Κ002和 K102 、 以及 Κ003和 K103 , 每一组 Κ码中两个码字互为补码, 分别代表 Κ码的第一码字 和第二码字编码输出;

[0121] S12、 接收输入的 K码指示信号和极性选择信号;

[0122] S13、 通过 K码査找表输出由两个 10比特组成的 K码编码; [0123] K码编码的实现过程也相当于一个査找表, 其输出输入关系如图 12所示。

[0124] 如图 5所示, 在本发明的另一实施例中, 还包括译码步骤, 译码步骤与编码步 骤的构思是相同的, 也是基于査找表方法实现的, 不同的是, 译码过程是无记 忆的。 所谓的无记忆译码就是指对当前接收的 10位码字译码得到一个 9位数据, 与以前的码流无任何关系, 即无论何吋接收到同样 10位的码字译码后都只会有 一种译码结果。 具体地, 译码步骤可以包括:

[0125] S21、 对译码査找表中对应普通数据位置上的译码输 出数据做处理;

[0126] 译码是编码的逆过程, 具体也是基于査找表方法实现的。 由上文编码过程所知 , 为保证输出码流的直流平衡, 在码表映射吋用 2个 10位的码字表示一个 9位原 字, 分别为第一码字和第二码字。 若 10位码字完美平衡, 则第一码字和第二码 字相同; 若 10位码字非完美平衡, 则第一码字和第二码字不相同。

[0127] 在生成译码査找表的吋候, 若第一码字和第二码字相同, 则译码査找表中只有 一个位置存放着原字信息。 若第一码字和第二码字不同, 则译码査找表中有两 个位置存放着原字信息。 比如原字 000000000 (十进制为 0) 经编码后得到两个 不同码字, 分别为第一码字 1001010111 (十进制为 599) 、 第二码字 0001000011 (十进制为 67) 。 则在译码吋, 査找表地址为 599和 67吋, 译码输出都将输出 0 , 即译码表中两个位置都存放着 0这个原字信息。 而原字 0011100001 (十进制为 225) 经编码后得到两个相同的码字, 即第一码字和第二码字均为 1011100001 ( 十进制为 737) , 则在译码吋, 査找表地址有且只有等于 737吋, 译码才输出 225 , 即译码表中只有一个位置存放着 225这个原字信息。

[0128] S22、 对所述译码査找表中对应 K码位置上的译码输出数据做处理;

[0129] 具体地, 对应 K码位置上的译码输出数据包括低 9位的 K码原字信息和高 3位为 K 码指示信息;

[0130] 在译码査找表生成过程中, 还应包含 K码指示信息。 本发明在编码过程中共用

SJ3组 6个 K码, 分别为 K001和 K101、 Κ002和 Κ102、 以及 Κ003和 Κ103, 每一组 Κ 码中两个码字互为补码, 分别代表 κ 码的第一码字和第二码字输出。 在生成译码 査找表吋, 当检测到 K001和 K101吋, Κ码指示信息的第 1比特置 1 ; 当检测到 Κ002和 K102吋, Κ码指示信息第 2比特置 1 ; 当检测到 Κ003和 K103吋, Κ码指示 信息的第 3比特置 1。 然后将这 3比特 K码指示信息与 K码原字信息相结合, 其处理 方式如公式 2所示:

[0131] F_data = K_Flag[9]*2 A 9 + K_Flag[10]*2 A 10+ K_Flag[l 1]*2 Λ 11+K_data (公式 2) [0132] 其中 F_data译码査找表中 K码的译码输出数据, K_Flag为 3位 Κ码指示信息, K_ data为 9位 Κ码原字信息。 为经过公式 2处理后就将 3位 K码指示信息的第 1、 2、 3 比特对应到译码数据输出的第 9、 10、 11比特, 在结合 9比特 K码原字信息, 最终 的译码输出 F_data为一个 12比特的数据。

[0133] 值得一提的是, 译码査找表中的普通数据的译码输出其实也是 12比特。 其也包 括 3比特的 K码指示信息, 只是作为普通数据吋, 对应着 K码指示信息的 3比特均 为 0而已。

[0134] S23、 在上述生成的译码査找表中根据査找表的地址 分别选择一个译码输出数 据;

[0135] 将 20位的译码数据分为高 10位与低 10位两个码字分别作为两个译码査找表的地 址; 由于译码过程是无记忆的, 两个译码査找表根据输入地址分别选择相应的 译码输出数据。

[0136] S24、 将两个所述译码输出数据的低 9比特整合后输出。

[0137] 也就是, 将两路査找表译码输出数据整合为一路 18位的数据, 并将其作为译码 输出。 其输入输出关系为:

[0138] Xout[17:0]={DoutB[8:0], DoutA[8:0] }

[0139] 其中 Xout为译码输出信号, DoutA[8 : 0]为低 10比特码字査找表输出译码数据的 低 9比特; DoutB[8 : 0]为高 10比特码字査找表输出译码数据的低 9比特。 在 S24中 所述的译码输出数据流中, SerDes系统并不知道哪个是 K码哪个是普通数据, 因 此译码过程还需输出 K码指示信号, 即 Kout[l : 0], 当它为两比特 0吋, 系统会认 为当前译码输出为普通数据的译码输出, 当不为 0吋, 表明当前译码输出为 K码 的译码输出。 K码指示信号对于 SerDes系统对于恢复吋钟, 保持链路同步起着关 键作用。 具体地, 将在步骤 S22中获取的包含 K码信息 (即两个査找表输出数据 的第 13~15比特) 数据作为输入, 经过相关的逻辑运算得到 K码指示信号输出。 其输入输出关系为: [0140] 当 DoutB[10]=l吋, Kout[l]=l ;

[0141] 当 DoutA[9]=l吋, Kout[0]=0; DoutA[l l]=l吋, Kout[0]=l。

[0142] 其中 Kout为 K码指示信号, DoutA为低 10比特码字査找表输出译码数据; DoutB 为高 10比特码字査找表输出译码数据。

[0143] 上面对本发明实施例中的基于 SerDes技术串行通信系统中的编解码方法进行了 描述, 下面对本发明实施例中的基于 SerDes (串行器 /解串器) 技术串行通信系 统中的编解码装置进行描述。

[0144] 如图 6所示, 本发明还提供一种基于 SerDes技术串行通信系统中编解码装置, 包括主编码器 10、 与主编码器相连的线路极性计算器 20、 与主编码器相连的编 码选择器 30。

[0145] 如图 7所示, 其中, 主编码器 10包括:

[0146] 拆分单元 11, 用于将 18位的普通数据分为高 9位以及低 9位的两个原始数据; [0147] 初始地址定义单元 12, 用于将两个原始数据分别作为两个编码査找表 的初始地 址 N (N=0~51 l) ;

[0148] 输入地址计算单元 13, 用于将初始地址转化为 2*N+0和 2*N+1作为编码査找表 输入地址;

[0149] 输出单元 14, 用于编码査找表根据输入地址输出包含不平衡 度信息的第一码字 与第二码字; 本发明中, 为保证输出码流的直流平衡, 在编码査找表映射吋用 2 个 10位的码字表示一个 9位原字, 分别为第一码字和第二码字; 其中, 第一码字 中 "1 "的个数大于或等于 "0"的个数, 第二码字中 "0"的个数大于或等于 " 的个数 。 若 10位码字完美平衡, 则第一码字和第二码字相同; 若 10位码字非完美平衡 , 则第一码字和第二码字不同且极性相反; 上述编码査找表中的第一码字与第 二码字为 10位的码字信息与 3位的不平衡度 D的编码信息相加得到的; 其中, 10 位的码字信息为 9位的原始数据对应 10位的编码映射; 其中不平衡度 D=n- ( 10-n ) , 其中 n为码字中 "1"的个数。

[0150] 上述线路极性计算器 20用来保证输出码流的直流平衡, 它为编码选择器提供选 择指示信号。 编码过程中, 根据表示当前码流不平衡特性的运行极性差异 RD值 来决定选择指示信号的输出。 具体地, 在根据当前码流的运行极性差异值输出 所述选择指示信号吋: 若当前码流的运行极性差异值为负, 则输出的选择指示 信号为高电平; 若当前码流的运行极性差异值为正, 则输出的选择指示信号为 低电平。

[0151] 编码选择器 30的功能是选择编码输出, 其由三个输入端一个输出端, 分别为数 据输入端八、 数据输入端 B、 输入选择指示信号以及数据输出端。 其输出与输入 关系为:

[0152] 1) 当选择指示信号为 1吋, 编码输出=输入数据 A;

[0153] 2) 当选择指示信号为 0吋, 编码输出=输入数据^

[0154] 在本发明的另一实施例中, 请参照图 8, 线路极性计算器 20包括:

[0155] 差异总和值计算单元 21, 用于将运行极性差异值与输出码字的不平衡度 的代数 和作为编码后的极性差异总和值;

[0156] 平衡判断单元 22, 用于判断输出码字是否完美平衡;

[0157] 运行极性差异值计算单元 23, 用于当输出码字完美平衡吋, 当前码流的运行极 性差异值保持不变;

[0158] 运行极性差异值计算单元 23还用于, 当输出码字的不平衡吋: 若编码后的极性 差异总和值小于 0,则当前码流的运行极性差异值为负; 若编码后的极性差异总和 值大于 0,则当前码流的运行极性差异值为正; 若编码后的极性差异总和值等于 0, 且原码流的运行极性差异值为正, 则当前码流的运行极性差异值为负; 若编码 后的极性差异总和值等于 0,且原码流的运行极性差异值为负, 则当前码流的运行 极性差异值为正。 需要说明的是, 在上电初始吋刻的运行极性差异值为负, 编 码后的极性差异总和值为 0。

[0159] 编码选择器 30用于根据选择指示信号在每个査找表输出的 一码字与第二码字 中选择一个码字组成下一输出码字。

[0160] 如图 9、 图 10所示, 本实施例中还包括 K码编码器 40, 与线路极性计算器 20以及 编码选择器 30相连: K码编码器 40包括:

[0161] 定义单元 41, 用于定义 6个 K码, 每两个 K码为一组, 且每组 K码中的码字互为 补码; K码可以用来完成码流的字节对齐、 帧定界、 字符填充以及吋钟恢复等功 育^ 本实施例中 9B/10B编译码定义 3组共 6个 K码, 分别为 K001和 K101、 Κ002和 K102、 以及 K003和 K103, 每一组 Κ码中两个码字互为补码, 分别代表 Κ码的第 一码字和第二码字编码输出;

[0162] 接收单元 42, 用于接收输入的 Κ码指示信号和极性选择信号;

[0163] Κ码编码输出单元 43, 用于通过 Κ码査找表输出由两个 10比特组成的 Κ码编码;

Κ码编码的实现过程也相当于一个査找表, 其输出输入关系如表 4所示。

[0164] 虽然图中没显示, 但是还包括与 Κ码编码器 40相连的延迟模块, 延迟模块的功 能是保证编码器编码输出和 Κ码输出指示信号对齐, 即编码器在 Κ码输出指示信 号有效吋, 此吋编码器的编码输出正好是 Κ码。 为了保证这种对齐关系, Κ码输 入指示信号必须通过延迟模块得到 Κ码输出指示信号, 且延迟模块的吋延量必须 等于输入数据经过编码器编码处理产生的吋延 量。

[0165] 如图 10所示, 在本实施例中还包括主译码器 50以及与主译码器相连的数据整合 器 60;

[0166] 主译码器 50用于对译码査找表中对应普通数据位置上的 码输出数据做处理; 对所述译码査找表中对应 Κ码位置上的译码输出数据做处理; 在上述生成的译码 査找表中根据査找表的地址分别选择一个译码 输出数据; 译码是编码的逆过程 , 具体也是基于査找表方法实现的。 由上文所知, 为保证输出码流的直流平衡 , 在码表映射吋用 2个 10位的码字表示一个 9位原字, 分别为第一码字和第二码 字。 若 10位码字完美平衡, 则第一码字和第二码字相同; 若 10位码字非完美平 衡, 则第一码字和第二码字不相同。 因此在生成译码査找表的吋候, 若第一码 字和第二码字相同, 则译码査找表中只有一个位置存放着原字信息 。 若第一码 字和第二码字不同, 则译码査找表中有两个位置存放着原字信息。 比如原字 000 000000 (十进制为 0) 经编码后得到两个不同码字, 分别为第一码字 1001010111 (十进制为 599) 、 第二码字 0001000011 (十进制为 67) 。 则在译码吋, 査找表 地址为 599和 67吋, 译码输出都将输出 0。 而原字 0011100001 (十进制为 225) 经 编码后得到两个相同的码字, 即 RD-和第二码字均为 1011100001 (十进制为 737 ) , 则在译码吋, 査找表地址有且只有等于 737吋, 译码才输出 225。

[0167] 主译码器 50可以用于 Κ码的译码; 具体地, 在生成译码表吋对 Κ码原字信息做 特殊处理, 即在 9位 Κ码的原字信息基础上加入 3位 Κ码指示信息。 本发明在编码 过程中共用到 3组 6个 K码, 分别为 K001和 Κ101、 Κ002和 Κ102、 以及 Κ003和 K10

3, 每一组 Κ码中两个码字互为补码, 分别代表 Κ码的第一码字和第二码字编码输 出。 在生成译码表吋, 当检测到 K001和 K101吋, Κ码指示信息的第 1比特置 1 ; 当检测到 Κ002和 K102吋, Κ码指示信息第 2比特置 1 ; 当检测到 Κ003和 K103吋

, Κ码指示信息的第 3比特置 1。

[0168] 数据整合器 60用于将两个译码输出数据的低 9比特整合后输出; 具体地, 将两 路査找表译码输出数据整合为一路 18位的数据, 并将其作为整个主译码器的译 码输出。 其输入输出关系为:

[0169] Xout[17:0]={DoutB[8:0], DoutA[8:0] }

[0170] 其中 Xout为译码输出信号, DoutA为低 10比特码字査找表输出译码数据; Dout

B为高 10比特码字査找表输出译码数据。

[0171] 此外, 还包括 K码指示信息处理器 70, 用于将获取的包含 K码信息 (即两个査 找表输出数据的第 9~11比特) 数据作为输入, 经过相关的逻辑运算得到 K码指示 信号输出。 其输入输出关系为:

[0172] 当 DoutB[10]=l吋, Kout[l]=l ;

[0173] 当 DoutA[9]=l吋, Kout[0]=0; DoutA[l l]=l吋, Kout[0]=l。

[0174] 其中 Kout为 K码指示信号, DoutA为低 10比特码字査找表输出译码数据; DoutB 为高 10比特码字査找表输出译码数据。

[0175] 本发明所述的 9B/10B编码主要是在 FPGA中通过査找表方法实现的, 其将普通 数据分为高 9位和低 9位数据分别作为査找表的地址, 査找表则把地址相对应的 正极性 (Rd+) 第一码字和负极性 (Rd-) 第二码字同吋输出到编码选择器中, 编码选择器通过线路极性计算器提供的指示信 号选择相应的编码输出。 K码编码 器则根据 K码指示和线路极性计算器提供的指示共同选 相应的 K码输出, 最终 的编码输出则通过编码选择器在 K码输出和普通数据编码输出中做出选择。

[0176] 以上参照附图说明了本发明的优选实施例, 本领域技术人员不脱离本发明的范 围和实质, 可以有多种变型方案实现本发明。 举例而言, 作为一个实施例的部 分示出或描述的特征可用于另一实施例以得到 又一实施例。 以上仅为本发明较 佳可行的实施例而已, 并非因此局限本发明的权利范围, 凡运用本发明说明书 及附图内容所作的等效变化, 均包含于本发明的权利范围之内。