- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于CPRI协议的光纤通讯设计与实现
FPGA与SCAN25100之间的并行数据线要与相应的TXCLX/RXCLK时钟线等长布线设计,同时根据国家半导体的推荐,布线应采用65欧姆阻抗匹配。SCAN25100与光模块之间的高速差分串行数据线,应合理布局,使其尽可能得短,同时DOUT和RIN应布于不同层尽量分隔开布线,这样尽可能地减少DOUT和RIN之间的串扰。PCB布板优化设计后,高速传输下TXCLK时钟信号眼图如图4所示。可以看到"眼睛"张开,信号质量得到改善。
3 FPGA设计
FPGA内CPRI数据包括用户I/Q数据、控制管理数据和同步数据。在发送端,通过CPRI固定的帧结构形式将这三部分数据进行复接与成帧处理,然后发送给SCAN25100完成物理层8B/10B编码和并串转换。在接收端,光模块接收回的数据,经由SCAN25100物理层8B/10B解码和串并转换,FPGA将这三部分数据进行分接与解帧处理,并提取出时钟信号。下面分别对FPGA对SCAN25100控制与状态监控,数据接口发送与接收模块进行相应介绍,采用Verilog语言设计相应模块。
3. 1 配置与监控模块
FPGA需要根据系统需求对SCAN25100进行相应的配置,如设置芯片管脚使用电平标准,传输速率SPMODE(1:0)等,以使其正常启动工作。对SCAN25100的配置,可以使用两种方式。通过对SCAN25100芯片的相应配置管脚直接进行电平拉高或拉低操作,这种方式较为简单,但无法实现系统工作时动态改变配置值;FPGA将配置数据通过芯片的MDIO接口写入芯片,这种方式需要FPGA同样定义一个MDIO接口,配置过程稍显复杂,优点在于辅助软件的支持可以在系统工作时动态改变配置值。
为了系统调试工作的方便,通过FPGA对SCAN25100的状态监控是非常有必要的,需要将芯片的几个反映芯片工作状态数据输出给FPGA。
3.2 发送模块
CPRI标准数据位为16位,在发送时需要将16位数据分拆为高8位与低8位,然后使用FPGA的ODDR模块,将分拆后高8位与低8位数据拼接成DDR数据输出,同时输出TXCLK送给SCAN25100采集DDR数据。这里需要调节好TXCLK与输出DDR数据的相位关系,以保证SCAN25100能够正确采集数据。
3.3 接收模块
通过光纤接收回来的数据,经由SCAN25100物理层8B/10B解码后,以DDR数据并行传输给FPGA,此时数据位为10位,其中低8位为有效数据。使用SCAN25100同步输出的RXCLK用于FPGA内部的IDDR模块采集数据,IDDR模块两个数据端口分别输出数据的高低位,将数据进行相应拼接获得16位CPRI数据。此时还需要通过一个异步FIFO,将数据由RXCLK时钟域转为FPGA内部时钟域。最后数据可以送给CPRI模块进行分接与解帧处理。
4 实际测试
4.1 测试方法
为了对系统的光纤通讯传输进行测试,在FPGA中定义了一个PRBS(伪随机码序列)模块,用于产生测试数据,数据帧头为0x50BC。例化两个相同的PRBS模块,一个放置于发送端,产生测试数据,通过发送模块,由FPGA输出。将一根光纤的两端同时连接于光模块形成自环回路,FPGA发送端输出的PRBS测试数据,经由FPGA外部回环返回给FPGA接收。当FPGA接收端接收到数据为0x50BC时,接收端放置的另一个相同PRBS模块开始启动(未接收到帧头0x50BC则一直处于等待状态),产生与发送端相同PRBS数据送入PRBS比对模块,与接收数据进行比对。PRBS比对模块输出比对结果,同时可使用Chipscope抓取接收数据与发送数据对比,确认系统是否正常工作。测试方案结构图见图5所示。
4.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工作状态正常。通过测试检查,表明系统能够正常工作,完成光纤通讯传输。
5 结束语
通过对系统的反复测试,测试结果证明,该设计方案能够有效实现基于CPRI协议的光纤通讯传输。通过不断调整优化FPGA设计与电路板、PCB设计,整个系统能够正常稳定地工作。
作者:电子科技大学 胡泽文 来源:电子元器件应用