基于CPRI协议的光纤通讯设计与实现

责任编辑:匿名 (未验证) 2011/04/28 作者:胡泽文

    针对分布式基站基带处理单元和射频拉远单元之间的光纤连接,介绍了CPRI协议规范,讨论了其基于FPGA的硬件实现方案。同时给出了基于FPGA与SCAN25100方案的设计,采用Verilog语言设计开发FPGA。该方案开发成本低,调试简单方便。通过实际测试表明,该设计方案能够有效实现基于CPRI协议的光纤通讯传输,工作性能稳定。

一、引言
    2009年1月国内3G牌照正式发放,随着3G时代的到来,各大通信运营商对3G移动通信网络展开了大规模建设,投入巨大,而基站是3G网络建设中,数量最多及成本最高的设备。移动通信领域日趋激烈的竞争,使得通信运营商比以往更加关注建网成本,而分布式基站具备低成本、高性能、快速运营等特性,能够大大节省运营商的建网与运维成本。因此分布式基站成为当前3G网络建设的最主要选择。
    分布式基站核心理念,是把传统宏基站基带处理单元(BBU)和射频拉远单元(RRU)分离,二者通过光纤相连。网络部署时,将BBU、核心网、无线网络控制设备集中在机房内,与规划站点上部署的RRU通过光纤连接,完成网络覆盖。
    为了有效处理分布式基站BBU与RRU间的光纤连接,无线通信行业形成两个联盟,分别制定了两种接口标准:2002年诺基亚、LG、三星等宣布成立OBSAI(开放式基站结构同盟);2003年爱立信、华为、NEC、北电和西门子等联合成立CPRI (通用公共无线接口组织)。本文主要介绍基于CPRI协议的光纤通讯。

二、CPRI协议概述
    CPRI协议定义了两个协议层。两个协议层为物理层(L1)和数据链路层(L2)。在物理层中,将上层接入点的传输数据进行复/分接,并采用8B/10B编解码,通过光模块串行收发数据。数据链路层定义了一个同步的帧结构,包含基本帧和超帧(由256个基本帧组成),数据在L2层中,通过CPRI固定的帧结构形式进行相应的成帧和解帧处理。
    基带处理单元(BBU)和射频拉远单元(RRU)之间可以通过一条或多条CPRI数据链路来连接,每条CPRI数据链路支持614.4Mbps、1228.8M-bps和2457.6Mbps三种比特率高速串行传输。当前工业界,通过将四条并行CPRI数据链路进行相应串行化处理,可实现BBU与RRU之间通过光纤以近10Gbps(即4X2457.6 Mbps)速率超高速传输。

三、硬件方案
    采用FPGA来设计实现基于CPRI协议的光纤通讯,可以有多种方案来实现,下面介绍两种方案。
    方案一:采用集成了RocketIO模块的FPGA。RocketlO收发器是在Xilinx公司Virtex2 Pro以上系列FPGA芯片中,集成的功能可配置千兆位级串行收发器。可通过调用Xilinx公司的COREGenerator生成的IPCore来使用RocketIO收发器。该模块的功能包括8B/10B编解码,串并转换,时钟与数据流的绑定以及时钟恢复等。使用此方案优点是,可以使电路板尺寸较小、结构紧凑,可方便设置参数;缺点是,一般集成了RocketIO的FPGA芯片价格均较高,必然带来开发成本的提高,同时开发周期相对也较长。
    方案二:FPGA与SCAN25100相结合。SCAN25100是美国国家半导体专门为新一代基站结构推出的串行/解串器,其集成了高精度延迟校准测量(DCM)电路及独立的发送和接收系统锁相环路,还具备先进的高速混合信号和时钟管理以及信号调节等功能。同时芯片具备8B/10B编解码、高速串并转换、锁定检测、CPRI信号和帧丢失检测等功能。可根据这款芯片来构建多天线技术分布式基站光纤互连解决方案。此方案开发成本较低,调试简单方便,性能稳定。
    (1)方案整体设计
    本文主要针对方案二进行介绍与讨论。该方案设计,由FPGA完成CPRI协议的成帧、解帧、同步、传输数据复,分接等操作,以及与SCAN 25100相关接口设计,同时负责对SCAN25100与光模块控制与状态监控。SCAN25100负责实现8B/10B编解码和高速串并转换功能。
    FPGA与SCAN25100之间通过使用并行数据线传输,SCAN25100的并行数据线支持8位和10位两种模式,这里选择用FPGA将SCAN25100配置成10位模式。SCAN25100完成8B/10B编解码和高速串并转换,与光模块通过差分串行数据线相连。最后由光模块完成光、电信号转换,通过光纤与外部设备进行数据传输,实现光纤通讯数据收发。其方案原理框图如图1所示。

    (2)时钟方案
    采用输出频率为61.44MHz的有源晶振为FPGA提供系统基准时钟(CLK61),系统所需的其他频率时钟,均可使用FPGA内置的时钟管理模块,对CLK61进行分频、倍频及移相而得。SCAN25100有四个时钟端口,与FPGA相连。系统时钟方案如图2所示。

    SCAN25100芯片内置振荡器能够产生一个30.72MHz时钟SYSCLK输出,提供给FPGA作参考时钟。当系统作为REC端时,FPGA需要提供一个30.72MHz时钟REFCLK,给SCAN25100作为参考时钟。REFCLK和SYSCLK均使用LVDS差分电平,在FPGA内部使用缓冲器IBUFGDS来将输入差分时钟信号转为单端时钟,而使用OBUFDS将单端时钟转为差分时钟输出。
    TXCLK为FPGA输出给SCAN25100,用于采集输出数据tx_data(9:0)的时钟。RXCLK为SCAN25100输出给FPGA,用于采集输入数据rx_data(9:0)的时钟。TXCLK和RXCLK配置使用INCMOS18电平,均为双边沿采集数据,其时钟频率由用户根据需求配置SCAN25100串行接口(DOUT和RIN)的传输速率决定。SPMODE(1:0)的配置值决定传输速率,对应关系见表1。

    (3)PCB布板设计
    PCB布板设计要特别注意信号完整性问题,尤其当系统设定速率为2457.6Mbps高速传输时。图3所示为系统速率设定为2457.6Mbps,未注意信号完整性问题的PCB布板设计下,TXCLK时钟信号眼图,可以看到时钟信号质量较差。而SCAN25100对TXCLK信号质量要求较高,如占空比要求为45%~55%范围。经测试,在此设计下,当系统工作于614.4Mbps或1228.8Mbps时,系统能正常传输数据,但当系统速率转换为2457.6Mbps,此时TXCLK/RXCLK双边沿对DDR(Double Data Rate)数据出现了错误采集,SCAN25100与光模块之间的差分串行数据线传输也变得不稳定。因此系统对PCB布板设计要求较高。

    FPGA与SCAN25100之间的并行数据线要与相应的TXCLX/RXCLK时钟线等长布线设计,同时根据国家半导体的推荐,布线应采用65欧姆阻抗匹配。SCAN25100与光模块之间的高速差分串行数据线,应合理布局,使其尽可能得短,同时DOUT和RIN应布于不同层尽量分隔开布线,这样尽可能地减少DOUT和RIN之间的串扰。PCB布板优化设计后,高速传输下TXCLK时钟信号眼图如图4所示。可以看到“眼睛”张开,信号质量得到改善。

 
四、FPGA设计
    FPGA内CPRI数据包括用户I/Q数据、控制管理数据和同步数据。在发送端,通过CPRI固定的帧结构形式将这三部分数据进行复接与成帧处理,然后发送给SCAN25100完成物理层8B/10B编码和并串转换。在接收端,光模块接收回的数据,经由SCAN25100物理层8B/10B解码和串并转换,FPGA将这三部分数据进行分接与解帧处理,并提取出时钟信号。下面分别对FPGA对SCAN25100控制与状态监控,数据接口发送与接收模块进行相应介绍,采用Verilog语言设计相应模块。
    (1)配置与监控模块
    FPGA需要根据系统需求对SCAN25100进行相应的配置,如设置芯片管脚使用电平标准,传输速率SPMODE(1:0)等,以使其正常启动工作。对SCAN25100的配置,可以使用两种方式。通过对SCAN25100芯片的相应配置管脚直接进行电平拉高或拉低操作,这种方式较为简单,但无法实现系统工作时动态改变配置值;FPGA将配置数据通过芯片的MDIO接口写入芯片,这种方式需要FPGA同样定义一个MDIO接口,配置过程稍显复杂,优点在于辅助软件的支持可以在系统工作时动态改变配置值。
    为了系统调试工作的方便,通过FPGA对SCAN25100的状态监控是非常有必要的,需要将芯片的几个反映芯片工作状态数据输出给FPGA。
    (2)发送模块
    CPRI标准数据位为16位,在发送时需要将16位数据分拆为高8位与低8位,然后使用FPGA的ODDR模块,将分拆后高8位与低8位数据拼接成DDR数据输出,同时输出TXCLK送给SCAN25100采集DDR数据。这里需要调节好TXCLK与输出DDR数据的相位关系,以保证SCAN25100能够正确采集数据。
    (3)接收模块
    通过光纤接收回来的数据,经由SCAN25100物理层8B/10B解码后,以DDR数据并行传输给FPGA,此时数据位为10位,其中低8位为有效数据。使用SCAN25100同步输出的RXCLK用于FPGA内部的IDDR模块采集数据,IDDR模块两个数据端口分别输出数据的高低位,将数据进行相应拼接获得16位CPRI数据。此时还需要通过一个异步FIFO,将数据由RXCLK时钟域转为FPGA内部时钟域。最后数据可以送给CPRI模块进行分接与解帧处理。

五、实际测试
    (1)测试方法
    为了对系统的光纤通讯传输进行测试,在FPGA中定义了一个PRBS(伪随机码序列)模块,用于产生测试数据,数据帧头为0x50BC。例化两个相同的PRBS模块,一个放置于发送端,产生测试数据,通过发送模块,由FPGA输出。将一根光纤的两端同时连接于光模块形成自环回路,FPGA发送端输出的PRBS测试数据,经由FPGA外部回环返回给FPGA接收。当FPGA接收端接收到数据为0x50BC时,接收端放置的另一个相同PRBS模块开始启动(未接收到帧头0x50BC则一直处于等待状态),产生与发送端相同PRBS数据送入PRBS比对模块,与接收数据进行比对。PRBS比对模块输出比对结果,同时可使用Chipscope抓取接收数据与发送数据对比,确认系统是否正常工作。测试方案结构图见图5所示。

    (2)测试结果
    在实验室环境下,对系统的光纤通讯传输进行相应测试。通过Chipscope来抓取收发数据以及一些标志信号,Chipscope测试结果如图6所示。图中prbs_check_sync信号值为‘1’,表明接收端PRBS模块接收到帧头0x50BC启动;prbs_d为接收数据,prbs_d_s1为接收端PRBS模块同步产生数据;prbs_check_err信号值为‘0’表明比对结果正确;los_reg、lock_reg以及cdet_reg均为SCAN25100输出的状态信号,其值表明SCAN25100工作状态正常。通过测试检查,表明系统能够正常工作,完成光纤通讯传输。

 
六、结束语
    通过对系统的反复测试,测试结果证明,该设计方案能够有效实现基于CPRI协议的光纤通讯传输。通过不断调整优化FPGA设计与电路板、PCB设计,整个系统能够正常稳定地工作。

扩展阅读

  • 扫码关注微信公众号