Xilinx平台Aurora IP介绍(三)Aurora配置及接口

一、aurora配置
开门见山的说,跟ddr/pcie/gtx这种复杂的ip相比,aurora配置那是相当的简单。走着。
1.1第一页配置
物理层physical layer:
lane width : 链路位宽,对应用户数据位宽;实际用户数据位宽= lane width*lane的个数(也就是第二页的lanes)
lane rate : 链路数据传输速率,gbps。我们测试默认3.125g就好。
下面三个时钟在上一篇《时钟和复位》说过,就不再啰嗦了。
链路层link layer:
dataflow mode: 数据流模式,可选全双工/ 只接收/ 只发送;根据实际情况选择,为了测试,我们这里选择全双工。
interface:framing/streaming可选。streaming较简单,大家可以自行去验证。一般使用framing接口,可能是axi4-s接口更方便连接吧。后续介绍都基于framing接口。
flow control:流控,暂时不选择。
back channel:sidebands/timer 可选,(只有在单工模式才能选择);秋大佬告知这个什么意思,我没用过,先略过。
scrambler/descrambler :绕码/解绕,这里不选择
little endian support :小端模式,勾选上就对了。小端模式在不同场合一般有两层意思:①[31:0]这种书写习惯,对应的是[0:31];②假设你的数据是64位,链路宽度是32位,那么一次只能传输32bit,先传输高32bit为大端模式,先传输低32bit为小端模式。
1.2第二页配置
第二页配置主要是对gt的选择。
包括:使用几个gtx,gtx的位置等。根据实际选择,这里做测试默认就好。
1.3第三页配置
为了学习以及使用的灵活性,我们一般选择将共享逻辑放在example design而不是放入core。
配置部分就介绍完了,使用还是很简单的。再次感谢xilinx!
前面说过,aurora core支持两种接口模式:framing 和 streaming。
streaming较简单,framing 较通用。
下面我们一起来看下这两种接口。
二、framing接口
2.1 接口信号
发送端:
接收端:
tips: 其实,在理解了axi4总线(axi4-full/lite/stream)后,再来看这些信号名,都不需要看文档你就能知道它的意思了。所以,强烈建议把axi4总线接口先去熟悉一遍。空了,我也将axi4总线简单整理一下。
2.2理论介绍
传输数据时,用户逻辑需要操纵控制信号让core做以下操作:
1. 当s_axi_tx_tvalid和s_axi_tx_tready都断言时,将需要发送的数据放到数据总线s_axi_tx_tdata。简单来说就是_tvalid和_tready每握手一次,完成一个数据传输。
2. 把数据划分到aurora 8b/10b channel的各条lane。
3. 使用 s_axi_tx_tvalid 信号来传输数据,用户应用程序可以将_valid信号置为无效来插入空闲字符idles。(用来暂停或停顿。)
4. 暂停数据(即插入空闲)(s_axi_tx_tvalid置为无效)
接收数据:
1. 检测并丢弃控制字节(空闲,时钟补偿,通道pdu(scp)的开始,通道协议数据单元(ecpdu)的结束和pad。
2. 置位成帧信号(m_axi_rx_tlast),并指定最后一个数据(m_axi_rx_tkeep)中的有效字节数。
3. 从通道中恢复数据。
4. 通过断言m_axi_rx_tvalid信号来组装数据,以呈现给m_axi_rx_tdata总线上的用户接口。
注意:
仅当同时声明s_axi_tx_tready和s_axi_tx_tvalid(高)时,aurora 8b / 10b内核才对数据采样。
axi4-stream数据仅在帧内时才有效。 帧外的数据将被忽略。 要开始帧,在数据的第一个字位于s_axi_tx_tdata总线上时拉高s_axi_tx_tvalid。 要结束帧,在数据的最后一个字(或部分字)位于s_axi_tx_tdata端口上时拉高s_axi_tx_tlast,并使用s_axi_tx_tkeep指定最后一个数据拍中的有效字节数。
如果帧的长度不超过一个字,则同时使s_axi_tx_tvalid和s_axi_tx_tlast有效。
aurora 8b/10b frames 帧结构
tx子模块通过tx接口将每个接收到的用户帧转换为aurora 8b / 10b帧。 通过在帧的开头添加一个2字节的scp代码组来指示帧的开始(sof)。 帧的结尾(eof)通过在帧的末尾添加2字节的通道结束协议(ecp)代码组来表示。 只要没有数据,就会插入空闲代码组。代码组是8b / 10b编码的字节对,所有数据都作为代码组发送,因此具有奇数字节的用户帧在帧末尾附加了一个称为pad的控制字符,以填充最终的代码组。
length
用户应用程序通过操纵s_axi_tx_tvalid和s_axi_tx_tlast信号来控制通道帧长度。 aurora 8b / 10b核分别响应帧开始和帧结束有序集/ scp /和/ ecp /。
以上基本是对文档的翻译,结合实际使用来看,帧头帧尾部分由核帮你做了。我们只需要将有效数据负载放在s_axi_tx_tdata总线上,通过s_axi_tx_tvalid和s_axi_tx_tlast握手来进行数据传输就好。接收,根据m_axi_rx_tvalid标志来接收有效数据就好。
2.3 接口时序图
接下来,我们再看3个数据发送的例子:
case1 : 简单数据传输
如图所示:在s_axi_tx_tvalid和s_axi_tx_tlast同时有效(握手)时,s_axi_tx_tdata总线上的数据传给了aurora core,再由core发送出去;s_axi_tx_tlast标志着最后一个数据传输;s_axi_tx_tkeep标志着最后一个数据哪些字节是有效的。
case2 : 数据传输with pad(具有奇数字节)
跟case1唯一不同的是,在最后一个数据传输时,由于数据是奇数字节,所以存在无效字节,由tkeep信号来标志有效字节。
case3 : 有中断的数据传输
看图就是了,反正记住一点,在ready/valid握手时,才发生有效数据传输。
如果我们想要暂停数据传输,那么只需要将tvalid信号置为无效,就可以插入空闲字符,其实也就达到了流控的效果。
三、streaming接口
3.1 接口信号
对比framing接口是不是简单很多。
发送:
数据总线s_axi_tx_tdata , 数据有效信号s_axi_tx_tvalid;用户逻辑只需要设计这两个信号就好。同样的,数据传输发生在s_axi_tx_tvalid和s_axi_tx_tready同时有效(握手)时。
接收:
在m_axi_rx_tvalid信号有效时,接收m_axi_rx_tdata数据总线上的数据。
3.3接口时序图
发送:
如下图所示:数据有效传输发生在s_axi_tx_tvalid和s_axi_tx_tready同时有效(握手)时。
接收:
在m_axi_rx_tvalid信号有效时,接收m_axi_rx_tdata数据总线上的数据。如果来不及使用,必须使用buffer先缓存下来,否则数据丢失。
streaming接口较为简单,就不再啰嗦了。后文介绍基于framing接口。
ok,ip配置完了,下一篇我们介绍example design!


HAC的射频电场辐射和射频磁场辐射介绍
科普丨OTP语音芯片与FLASH语音芯片的不同之处
vivo通信研究院飞:手机厂商应站在客户角度去开发5G应用
半导体分立器件行业发展趋势分析
中日韩OLED产业大战
Xilinx平台Aurora IP介绍(三)Aurora配置及接口
用于万用表直观测量的电桥放大电路
鹿晗同款vivo X20旗舰版上市,这个专属配色让我欲罢不能
主动性维护,降低机房TCO的新途径
Videotron与三星合作部署的5G商用网络
澳大利亚大规模的虚拟发电厂已部署持续发展
忍无可忍,希望医械生产企业购买检测仪器时擦亮眼睛
Pure Storage推出FlashArray系列全新高端型号,以无与伦比的简易性赋予企业强大性能和规模
iphone8什么时候上市?iphone8最新消息:iphone 8外观基本确认!与iphone7系列区别不止一点,首批供货不足,全靠抢?
宏和函数应该怎么选
Bourns微型断路器在医疗设备的技术应用
Microchip推可配置单片机CEC1736信任盾系列产品
常见的8种PCB标记你知道多少?
创新技术展 智能设计与用户体验成热点
新机诺基亚9曝光:骁龙835+后置指纹识别,售价很良心