RTL库

开始使用xilinx aurora8b10b裸数据协议

RTL库 FPGA开发框架 提供了aurora数据传输模板可以例化使用,具有收发误码统计功能方便二次开发……

开始使用Aurora8b10b IP核


Aurora 8b10b协议是一个可扩展的、轻量级的链路层协议,可以用于单路或者多路串行数据通信。RTL库 增加了示例,使用AXI-Stream总线进行数据通信,有了示例代码框架方便用户二次开发。

AuroraIP帧模式

IP核配置

  • Lane width Byte=4Bytes设置了用户AXI-Stream接口位宽是32bit
  • Lane Rate=5.0Gbps设置了高速串行总线的数据速率
  • GT Refclk=125Mhz设置了高速串行总线参考时钟频率,需要参考板卡实际连接的晶振频率
  • Init clk=50Mhz用于初始化和产生复位的信号,请使用独立的时钟不要使用本IP核生成的用户时钟。
  • Drp clk=50Mhz用于DRP配置的时钟,此时钟可以与Init clk 一致。
  • DataFlow Mode=Duplex通信模式选择全双工,也可以选择单收或单发.
  • Interface =Frame用户接口模式选择帧模式,帧模式帧内部含有起始字节和结束字节,选择性使能CRC用于数据校验,相对比流模式效率降低,但是能感知帧内是否出错。
  • Flow Control = UFC流控信号选择User Flow Control,加入流控机制,流控信息可以更优先的传送,只有在Frame模式下可以选择。
  • Error Detection = CRC使能CRC校验帧数据是否出错。
  • GT Selection -> Lanes = 1;RefClk=GTPQ0选择高速接口数量和参考时钟,这部分设置芯片有专用管脚对应,根据实际板卡和芯片型号选择。
  • Shared Logic = Include shared logic in core共享逻辑资源不输出共享信号接口,只包含在IP核内部,在共享模式下一些时钟PLL资源可以给多个核使用。
  • INITCLK = Single ended 初始化时钟选择单端时钟
  • 未注明的设置选项保持默认即可

复位时序

上电后GT_Reset和Reset同时复位,GT_Reset提前128clk退出复位,当LaneUp&ChannelUp出现下降沿后触发复位时序,Reset提前进入复位,128个时钟后GT_Reset进入复位状态,GT_Reset保持128时钟周期后退出复位,之后再经过128时钟周期Reset退出复位,复位顺序完成。

用户流控信号

相关的基本概念

  1. Clock Compensation Sequences时钟补偿序列,正常数据发送时《优先级第一》
  2. Initialization Sequences 初始化序列初始化Aurora通道的有序集《优先级第二》
  3. Nactiv Flow Control 本地流控制字《优先级第三》
  4. User Flow Control 用户流控制字《优先级第四》
  5. Channel PDUs 封装后的在Aurora信道中传递的数据《优先级第五》
  6. Idel Sequences 没有数据时传输的数据,空闲时传输的数据《优先级第六》

正常数据发送中,会有1~6项数据被发送到信道中,其中用户流控数据优先级排名第四,可以中断优先级第五第六的数据进而发送优先级为第四的用户流控数据。

用户流控信号时序

用户流控信号可以插入数据流中,从而在接收端可以降低缓冲buffer压力,一般应用场景,当接收端buffer即将溢出时,给发送端发送指令,使得发送端插入流控数据降低接收端数据量防止溢出。

帧模式结构框图

tx_ctrl和rx_ctrl模块是用户设计模块,我们提供一个模板可以按照此模板进行自行时序开发。tx_ctrl产生测试数据源,通过Aurora IP发送到传输介质中,接收端接收数据并检测CRC检测结果,并对CRC错包计数。在调试期间可以用xilinx调试IP的VIO功能监测错包数量。

创建一个帧模式功能框架

  1. 从RTL库框架中把Aurora8b10b帧模式代码复制到HDL目录
  2. 在HDL目录新建top_aurora8b10bi.v文件,并用sublime打开
  3. 在文件起始位置输入v_aurora8b10b就会出现提示栏敲击回车补全所有代码
  4. 在sim目录创建tb_aurora8b10b.v并用sublime打开
  5. 在文件头位置输入v_tb_aurora8b10就会提示补全信息,回车补全所有代码
  6. 新建vivado 工程把sources文件加入工程,并生成aurora8b10b IP核
  7. 启动modelsim完整联合测试仿真

除了使用sublime建立的模块,其他模块是从RTL库框架中复制出来的。

流模式相对帧模式区别

配置区别

  1. Interface =Stream用户接口模式选择,选择流模式。
  2. Flow Control = 禁用禁用无需选择,这种模式无法控制数据流量。
  3. Error Detection = 禁用流模式不能使用CRC校验。

使用区别

  1. 在我们提供的代码中删除Flow Control信号。
  2. 在我们提供的代码中删除Crc信号。
  3. 其他功能保持一致即可。

参与讨论

有任何使用问题,请在评论中留言,也欢迎大家发表意见、建议。

感谢大家对 RTL库 的关注和支持!

侧栏导航