You are on page 1of 5

应用于光互连的高速误码仪的设计

应用于光互连的高速误码仪的设计
可灵智

摘  要 出于对光互连芯片进行测试的目的,本文提出了一种基于现场可编程门阵列(Field-Programmable Gate
Array,FPGA)的高速误码仪的设计方案,并介绍了该方案的设计思想,着重对同步问题进行了讨论,其中对解决同步问
题的comma检测等技术进行了较为详细的介绍。
关键词 光互连;高速误码仪;Virtex-II Pro系列FPGA

1  引言
测通信系统构成的信道;
在大规模并行计算机中,处理器之间的相互通
(2) 收端模块产生与发端相同码型、相同相位的数据
讯已成为并行计算的瓶颈,互连技术是硬件技术的主
流;
要难题,传统的电互连技术遇到了不可逾越的困难。
而光互连技术以其极高的通讯带宽、光波独立传播无 (3) 将收到的数据流与收端产生的本地数据流逐比特
干扰、互连数目大、互连密度高以及功耗低等优点, 地比较,并进行误码统计;
可望成为新一代的互连技术,进而使大规模并行处理 (4) 根据误码统计结果,计算出相应的误码率,并输
机的计算速度能够突破每秒1万亿次。因此,光互连技 出误码指示。
术在国际上受到广泛重视。而本研究室正是基于这样
一种背景下,开展了对光互连技术的研究。当我们完 3  误码仪的结构
成前期的设计工作之后,后期的测试部分工作就显得
尤为重要了。本文介绍的就是对研究室的光互连芯片 3.1

发端模块
进行测试的一种高速误码仪方案。

ѻ 发端模块的作用就是发射满足项目要求的数据
ᑊ㸠䕧ܹ
催 D
码型。考虑到我们需要测试的驱动芯片的输入信号

2  误码检测原理 Ꮒ ߚ
是随机的,本方案采用七阶伪随机序列。
䗳 䕧 ߎ
U

误码率是指在测量时间内数字码元误差的数量 ⷕ 䗮
如果给定七阶伪随机序列的本原多项式,采用 Ꮒ ߚ
T
ൟ ᑊ㸠䕧ߎ
䕧 ܹ
与数字码元总数之比。误码测试仪由发送、接收和 Fibonacci
᥹ (斐波纳契)线性反馈移位寄存器(Linear


高速通道三部分组成,整个工作过程如图1所示。 Feedback
ঞ Shift Register,LFSR)在移位寄存器外

ⷕ 面使用异或门的为随机序列产生方式,原理如图2所


ѻ
示:
ᑊ㸠䕧ܹ n䰊
⫳ 催 D
Ꮒ ߚ
䗳 䕧 ߎ
U n n-1 n-2 ................ 3 2 1

ⷕ 䗮 Ꮒ ߚ
T
ൟ ᑊ㸠䕧ߎ
䕧 ܹ
᥹ 䘧




图2 斐波纳契LFSR
n䰊 do(39)
图1 高速误码仪原理框图
Fibonacci (斐波纳契) LFSR 的异或门是在循环
    2  
从逻辑上看,误码仪的工作过程大致可以分成
n n-1 n-2 ................ 3 2 1 do(38)
移存器外(最高位与最低位之间)的,所以最高位输出
  9  
以下几个步骤: 的序列时序上是连续的(低7位与LFSR的状态相等)。
do(26)
(1) 发端模块发射所设计的数据码型,并使其通过被 这点在接收同步时很重要,因为这一性质,接收端
do(11)
ggg ggg g
35%6
39 ggg ggg g
do(01)
do(39)
do(00)
  
do(38)
    2     
  9  
Vol. 3 No.3 / Mar. 2009

的本地码型发生器就可以将输入的数据直接赋予

ѻ
并串转换,输入输出缓存,时钟产生器,时钟恢复
ᑊ㸠䕧ܹ
seed_in(原始值)产生下一帧数据来与原来的数据进
⫳ 催 D 电路。PCS完成数据的编解码,包含8B/10B编解码
行比对。 䗳
Ꮒ ߚ
䕧 ߎ
U 和支持信道邦定和时钟修正的弹性缓存。PCS同时
䗮 机 二Ꮒ进ߚ制 序T列 ( P s e u d o - 包含循环冗余检测(Cyclic Redundancy Check,
ⷕ 前面介 绍了伪随
CRC)校验。它的结构框图如图5所示。
ൟ ᑊ㸠䕧ߎ
䕧 ܹ
Random

Binary Sequence,PRBS)生成的原理,


只要将移存器中的一个的数据取出,便是串行的


PRBS序列了。但是在高速误码测试系统中进行处理

的是并行的数据,所以要求产生的是并行的PRBS
n䰊

序列。下面以产生位宽位40bit的7PRBS并行序列为
n n-1 n-2 ................ 3 2 1
例:如图3所示,要在一个时钟内同时输出40bit的
7PRBS,就需要先记录40个7阶线性反馈移存器的状
态(一帧/字)。在40bit数据输出的同时,将最后一个
状态值存放到一个宽度为7的中间寄存器(PRBS)中,
再根据PRBS的值产生下一个要输出的并行数据。
do(39)

do(38)
    2   图5 Rocketio结构框图
TX_RESET=1
  9   从结构图中可以清楚的了解,当高速的串行数
do(26) 据从TX+和TX-进入待测器件之后,再通过RX+和RX-
RESET_STATE

do(11)
ggg ggg g 进入接收端进行后续的时钟恢复、误码比对等等,
߱ྟ䅵᭄=0
ggg ggg g 35%6 থ䗕 comma(20’h3e8e1)
完成了对待测设备的误码检测。
do(01) INIT_STATE

do(00)
   3.3 收端模块 ߱ྟ䅵᭄=߱ྟ䅵᭄+1
Else
   থ䗕 comma
收端模块在逻辑上可以分成两个功能子模块:
߱ྟ䅵᭄+1>=524288
图3 40bit并行PRBS产生原理示意图 一是伪随机序列发生子模块,二是误码统计子模
SENDING_STATE

根据此原理,利用verilog语言对并行的PRBS进 块。前者的逻辑功能与发端模块相类似,其作用是
থ䗕Ӿ䱣ᴎⷕൟ
Else
行编程实现,输入的原始值为7‘h03,仿真结果如 产生一个与发端形式相同并且比特对齐的本地伪随
៪ᯊ䩳ⷕൟ

图4所示: 机序列;后者的作用是将收到的数据与本地伪随机
序列相比较,同时统计误码指标,从而完成对数字
通信系统的误码性能测试。那么,在误码比对时候
的时钟同步问题就是重中之重了!

发射端包含一个发射状态机,用于控制码型
的产生以及初始序列和码型产生器输出值之间的
复用,如图6。在赛灵斯比特误码测试仪(Xilinx Bit
图4 PRBS仿真示意图
Error Rate Testor,XBERT)中检测到发射复位信
3.2 高速通道 号后,由K字符构成的初始序列传输到接收端。
在本设计方案中,我们选用Xilinx公司的Virtex-ii 在XBERT中使用的一个K字符是一个20位的字,由
pro系列芯片中的所包含的一种高速传输通道的IP核 10'b0011111010 (K28.5) and 10'b0011100001
Rocket I/O来实现这个功能。 (D28.7).组成。在传输了80个K字符后,状态机开始
选择码型产生部分数据输入。
RocketIO收发器由物理介质接入层(Physical
Media Attachment,PMA)和物理编码层 接收端包含一个接收状态机,分为两部分,
(Physical Coding Sublayer,PCS)组成。PMA主要 K字符检测有限状态机(Finite State Machine,
完成数据的并串/串并转换,包含:SERDES(串化器) FSM)和码型跟随FSM(图7所示)。K字符检测FSM

40
应用于光互连的高速误码仪的设计

复位中,码型跟随器产生并锁定它的第一个数据。
TX_RESET=1
当接收数据与第一个期望的数据匹配时这个状态机
RESET_STATE
会声明链接成功。之后,码型跟随器开始更新。但
߱ྟ䅵᭄=0 是,状态机在接收到的数据中检测到两个连续的误
থ䗕 comma(20’h3e8e1)
码时,就会进入ABORT_STSTE并声明链接失败。
INIT_STATE 码型跟随FSM会在接收到一个新的远程复位后离开
߱ྟ䅵᭄=߱ྟ䅵᭄+1 ABORT_STSTE状态。
Else
থ䗕 comma

߱ྟ䅵᭄+1>=524288
那么,在了解数据比对的状态机的转换之后,
SENDING_STATE 这个状态机中设计到的Comma检测就成了字对齐
থ䗕Ӿ䱣ᴎⷕൟ
Else
的关键技术。
៪ᯊ䩳ⷕൟ

3.3.1 Comma检测和对齐
图6 发射状态机
时钟提取和数据恢复后,接收端需要完成串行
探测输入数据的K字符数据流。在接收到连续的64 到并行的转换。由于并行数据在串行化发送过程中
个K字符以后K字符检测FSM认可来自发射机的远程 将遗失字节边界,因此在对串行数据进行串并转换
复位,并进入COMMA_STATE,远程复位信号在 时必须通过字对齐电路确认出正确的字节边界。字
COMMA_STATE中声明。基于上升沿检测到的远 节可以通过对同步特征码(Comma字符:其形式为
程复位信号在RocketIO 收发器中产生一个单脉冲 0011111xxx 或1100000xxx)的检测找到同步头的位
的ENPCOMMAALIGN信号。K字符检测FSM只在 置,来调整分频时钟的输出相位,实现字节同步。
链接成功或是在接收到64个非K字符后跳出这个状 comma字符是指示字的开始和结束的标识。字与字
态。因此,这个状态机可以容忍K字符流中的分离 之间被comma字符隔开,一个comma字符就是一
的错误并且避免了触发多个远程复位。一旦链接成 个“k” 字符。Comma检测和对齐用于将接收的串
功,COMMA_STATE就会锁定为ARMED_STATE。 行数据对其与一个byte字节或半个字的边界,确保
这避免了将数据信息误认为是K字符。码型跟随 串行数据能够正确的转化成并行数据。
FSM控制码型跟随器产生期望的码型数据。在远程
接收器在输入数据流中扫描搜寻特定的比特序
COMMA Ẕ⌟ FSM ⷕൟ䎳䱣఼ FSM 列(comma字符)。如果在串行比特检测到0011111
ARMED_STATE

RemoteReset=0
Ẕ⌟䖰⿟໡ԡϞछ⊓ 或1100000 便可进行同步,解串器调整字符边界
㢹 (CommaDetect=1)
CommaCount=CommaCount+1
߭
RESET_STATE
以匹配检测到的comma字符序列。扫描是连续进
CommaCount>=128
৺߭ Commacount=0 PatternAdvance = 0 行的。一旦对齐确定,所有后续的comma字符均
CommaCount>=64 Link = 0
៪ Link=1 COMMA_STATE
Error = 0 会发现对齐已经确定。当然,在任意的序列组合里
RemoteReset=1
comma字符序列必须是唯一的。
ARM_STATE
㢹(CommaDetect=0)߭
CommaCount=CommaCount+1 PatternAdvance = 0
Link = 0 Else
Error = 0 在设计中,发送复位以后,开始发送80个
LOCKED_STATE
Expected_Data_Next = Data_In
comma字符,以用于对齐,然后才开始发送伪随机
PatternAdvance = 1 码型用于误码检测。
Link = 1
Else

利用verilog语言成功实现本方案中最重要的同
Error = 0
TotalFrame = TotalFrame + 1

Expected_Data = Data_In DISTRESS_STATE


Expected_Data != Data_In
步比对之后,我们的基于FPGA的误码仪基本就设计
PatternAdvance = 1
Link = 1
完成。
Error = 1
TotalFrame = TotalFrame + 1
ErrorFrame = ErrorFrame + 1 4  调试结果分析
ABORT_STATE

Link = 0
Else 调试中分别观察了以下的信号:

图7 接收状态机 1. 接收模块中接收的数据和本地产生的码

41
Vol. 3 No.3 / Mar. 2009

2. 接收到的误帧数 态时,高信号为高电平;
3. 接收到的误比特数
TXDetect[0]为发送端复位检测信号,当发送端
4. 同步信号
复位后,该信号为高电平;
5. K字符检测信号
6. 吉比特收发机(Multi-Gigabit Transceiver, data_detect_r[0]为K字符检测信号,当接收到
MGT)发送端powerdown K字符时,该信号为高电平;
图 8 是 失 步 时 的 综 合 逻 辑 分 析 仪 Error[0]是误码提示信号,在误码仪同步状态
(Integrated Logic Analyzer,ILA)界面。 时,如果出现误码,该信号为高电平;
接收到的数据(data_in)和本地产生的信号
abort_r[0]误码过多的告警信号,当检测到
(expected_data)不相同,dropped_frames_out
连续的误码为两个以上时,该信号为高电平;
为误帧数;bec_count_out为误比特数;
|dropped_fram_0信号为误帧指示信号,当测试中
FoundCommaStream为在接收数据中发现
曾出现误帧,该电平为高电平,如果测试中没有出
Comma字符,即k字符;overflow_flag为计数
现过误帧,该信号为低电平;
器溢出信号;frame_advance为误帧指示信号,
当该信号为高电平时,误帧计数器就加一,同理 TxInhibit[0]信号为发送端禁用信号,
error_advance为误比特指示信号,当该电平为高 当不用MGT发送端时,该信号为低电平;
时,误bit计数器加一。Link_out为同步指示信号; MGTPowerDown[0]信号为MGT 下电指示信号,当
search_out为同步搜索信号;当接收端接收到连续 MGT被下电时,该信号电平为高;Txinhibit0为MGT
两个以上的误码Abort为高电平。Link_out信号为 发送端禁用控制信号,按下该虚拟键时,MGT发送
1,说明处于失步状态。 端就会别禁用而停止工作;

MGTPowerDown0为控制MGT下电的信号,当
该电平为高时,MGT就会掉电,停止工作;

LoopbackMode0用于回送模式选择,01为并
行回送模式,10为串行回送模式。

tx_reset0用于复位发送端,在失步的时,按下
此键用于获取同步;
图8 7阶PN码失步时的ILA界面
ErrorInsert0为控制误码插入信号,当该信号
电平变化时,发送端插入将一帧电平反转引入一误
帧,该信号是边沿发,在该信号的上升沿和下降沿
都会引入误码;

ClockSelect信号是时钟选择信号,用于为误码
仪选择不同的参考时钟,以实现不同的测试速率;

rx_reset用于复位接收端的计数器,包括误
比特计数器、误帧计数器,总接收帧计算器;
图9 7阶PN码同步时的VIO界面 pattenSelect0用于码型选择;
图9是用chioscope观察到的误码仪用7阶伪随
机序列作为测试码的虚拟输入输出核(Virtual Input/
Output Core,VIO)界面图。图中蓝色信号为输出
信号,绿色信号为输入信号。在按下tx_reset0后,
系统实现同步,link_r输出为1。上图中各个信号的含
义是:

link0信号为同步指示信号,当误码仪为同步状 图10 7阶PN码同步时的ILA界面

42
应用于光互连的高速误码仪的设计

图10是7阶PN码同步时的ILA界面,data_in与 and buses.Agilent Technologies.

expected_data相同,link_out一直为1。 [9] Hao Xu, Zhan’an Liu, Yunpeng Lu, et al. FPGA Based High
Speed Data Transmission with Optical Fiber in Trigger System
of BESIII. 2007 IEEE Nuclear Science Symposium Conference
Record.
[10] System Clock Management Simplified with Virtex-II Pro FPGAs.
WP190 (v1.0) Xilinx. February 25, 2003.

作者简介
可灵智 男,武汉理工大学通信与信息系统在读硕士
图11 插入误码后ILA界面 研究生,现为中科院先进技术研究院光电子
在设计中误码的插入是通过将一帧数据取反实 集成技术研究室客座学生,主要从事数字通
现的,从图11中可以看到误码数为20个,误帧数为 信方面的研究。
1。

调试时,在选其他码型和回送模式的时候,误
码仪都能正常的工作,此处就不一一详列了。

5  总结与展望
基于FPGA芯片的高速误码仪设计具有很大的
灵活性,可以很容易地进行改进;同时,芯片内部
结构和制作工艺的进步会大大降低软件设计的复杂
度,也增强了系统的功能。处在数字电路越来越普
及的时代,在信号速率越来越高的今天,对模拟信
号的测量逐渐褪去了昔日的光环,对数字信号进行
测试越来越成为主流,而本方案所研究的基于FPGA
的高速误码仪,始终在这个领域占据着一个重要的
位置,正是具有了前文所说的那些特点,我们有理
由相信,它必将有一个更加灿烂的明天。

参考文献
[1] 王登,常青,梅顺良. 一种基于FPGA 的误码性能测试方案.
[ J ]. 电子技术应用, 2003, 29 (5) : 54255.
[2] John G.proakis .Digital Communications,Fourth Edition.
[3] RocketIO™ Transceiver User Guide UG024 (v3.0) [M] Xilinx,
February 22, 2007.
[4] Virtex-II Pro and Virtex-II Pro X Platform FPGAs:Complete
Data Sheet.
[5] SAURAV G, SAPTARSHI B, LOVLEEN B, et al. Directed-
simulation assisted formal verification of serial protocol and
bridge. Design Automation Conference, 2006[C]. 43rdACM/
IEEE, 0738-100X.
[6] Dave Lewis, SerDes Architectures and Applications. National
Semiconductor Corporation.
[7] RocketIO Transceiver Bit-Error Rate Tester,Xilinx, XAPP661
(v2.0.2) May 24, 2004.
[8] Complete solutions for characterization and test of jitter in high-
speed digital transmission systems, high-speed I/O connections,

43

You might also like