Aurora接口FPGA设计
一、aurora设计概述
1.常见的两种设计模式为aurora8b10b或者aurora64b66b
2.xilinx提供的免费IP
3.设计非常简单,用户需要操作的东西比较少
4.lane和channel,一个channel是多个lane组成
5.设计中,先lane_up拉高,表示建链完成,channel_up随后拉高,拉高后就可以收发数据
二、时钟
1.参考时钟
2.初始化时钟
3.drp时钟
4.用户逻辑时钟
三、复位
1.reset复位和gt_reset复位这个两个复位在IP的接口上
2.当line rate线速率固定的时候,reset和gt_reset这两个复位的先后顺序不太重要
3.当动态配置line rate线速率的时候,这两个复位的时序必须严格按照协议手册说明的时序图进行配置
四、传输模式
1.frame帧传输
2.stream流传输
3.注意,接收端接口的stream流没有ready信号
Framing接口(帧传输接口):在AXI4-Stream的基础上添加了帧头、帧尾等控制信号,使得传输更准确,但是会降低传输效率和使用较多资源
Streaming接口(流传输接口):基本上就是一个非常简化的AXI4-Stream接口,只有数据有效、握手和数据信号,此种方式传输效率高,但无法保证传输的准确性
五、常用接口信号说明
1.lane_up表示物理连接完成
2.channel_up表示通道完成初始化,已经准备好,可以接受或者发送数据了
3.hard_err,硬错误,如果参考时钟使用错误,可能发生hard_err
4.soft_err软错误
5.frame_err帧错误
6.reset是对aurora ip进行复位,至少6个user_clk周期
用于复位 Aurora 8B/10B IP 核的协议层逻辑(控制逻辑、数据路径等)。它的作用是确保协议层逻辑处于正确的初始状态,不会影响底层的 GT 模块
7.gt_reset对aurora ip core,以及PCS组件和PMA组件都会产生复位
用于复位底层的高速收发器(GT),包括 PLL、CDR、SerDes 等。它的作用是确保 GT 模块的正确初始化和数据同步,影响整个链路的物理层操作
六、设计控流
1.UFC模式
2.NFC模式
3.UFC + NFC模式
4.None模式
七、IP调用
1.直接使用aurora ip,这个非常简单,没有太多的复杂度,菜鸟常用
2.使用gt,配置aurora协议,这个稍微复杂很多,需要考虑的点很多,一不注意,那就通不了
3.使用gt做物理层,然后自己实现aurora协议,这个是比较复杂的,但是好在aurora已经开源了,抄抄也可以实现,当然调试会遇到很多问题。
八、实现要注意的问题
1.复位逻辑尽量要按照手册协议来实现,否则出问题,你没办法查原因
2.ufc和nfc,none,依据需要进行设计
3.链路发生error,要看眼图,查硬件,误码率等,可以使用ibert进行调参。
九、多通道不同line rate设计
1.可以不同的line rate通道例化一个aurora ip core
2.修改common部分时钟
3.使用fifo进行隔离
总体来说,aurora的设计是比较简单的,除非你自己要从0实现,而不用IP,调用IP还是非常简单的。