加班猫

如果我那天发财了,我会告诉你,我比你强的地方就是,我知道你不知道,你知道的都是废话。

xilinx的aix4-stream总线设计技巧

0
阅读(932) 评论(3)

    有人经常这么说不管新的fpga怎么变化,其实fpga工程师学习永远就是协议,定义。其实说白了,任何接口协议都是工程师必须熟悉。

    zynq的平台推出最大的协议就是axi4的协议,包含axi4-full,axi4-lite,axi4-stream。三种协议内容。

    其实axi4-full比axi4-lite最大的区别,axi4-full支持的位宽更宽,并且支持brust突发模式。而axi4-stream,就是没有地址信号,地址相关握手信息,

     对于axi4-full编写代码,一般来说首先做好地址握手,然后再做数据握手,有人肯定问会不会同时。一般来说,及时同时地址和数据,地址也是优先模式,然后再数据。发送端可以等待确定。

     然后对于axi4-stream,只有tdata信号,在很多pcie,srio,xaui的高速接口协议中,经常利用axi4-stream的协议。这个时候axi4-stream的vaild的第一次有效数据都是数据格式头部。接收ready信号握手valid的信号。

    axi4-stream-slave 接收数据模式如下.   

     xilinx官方实例代码如下,其实大概意思就是一个高电平之后,变成低电平。然后再高电平,等待tlast信号再拉低。这样做的为了时序紧凑型,xilinx为了方便在第一个valid和ready信号得到头部信号,这个有个短暂的停留时间去分析头部数据。

 image.png

      当然你可以写成状态机模式,上面代码,说实在我看得头疼。等待valid,输出一次高电平,然后得到头部数据,再拉低数据,然后再输出高电平得到数据段数据。最后根据last信号结束ready信号。


      image.png

   对于发送数据来说。xilinx官方使用一个脉冲计算器来tdata数据切换不同的数据内容

    image.png

    tlast信号,使用不同模式,输出不同的值,不过都是高电平一次,然后变低信号。tdata根据不同的长度来切换数据内容。

image.png

    这个代码我也看得头痛,其实也可以用状态机编写,首先是输出一个头部,然后等待一次,再输出额外的数据,在最后一个数据段,输出last信号。

  1. ***此内容已被管理员屏蔽***

  2. ***此内容已被管理员屏蔽***

  3. ***此内容已被管理员屏蔽***