包文的概念

为什么要讲包文

FPGA广泛应用于通信、图像处理、航天航空、自动化等领域,其中通信是FPGA应用最大的领域。在通信中,发送端首先将数据封装成一个个包文,接收端按包文为单位进行接收。例如以太网,发送端将数据封装成包文格式,该包文包含了目的地址、源地址、检验域、包文长度和包文数据等信号。接收端根据这些信息,就能正确地接收数据。可以说包文是通信中处理的基本单元。

明德扬的练习,大部分都是对包文的处理,因此明德扬先统一解释包文概念和包文接口信号,从而避免做练习时出现功能歧义,如果连功能都不明确,那是不可能做好设计的。

包文接口信号

下面就是一个典型的以太网包文,该包文由14字节的以太网头、2字节的报文头、44至1498字节的包文内容和4字节的检验码组成。

 

在FPGA可以定义如下信号来方便地传输,即能保留全部报文的信息,又能适合FPGA的接口。

 

信号名

意义

一般约定

data

包文数据,例子中的以太网头至CRC等全部内容。

还可以用din来表示输入的数据;dout表示输出的数据。接口位宽一般是8、16、24、32等8的整数倍。

vld

为1时表示当拍的数据的有效;为0时表示数据无效。

包文在传输时,有可能不是连续过来的,例如传了以太网头后,等几个始终才来报文头数据。我们可以通过vld来指示数据是有效还是无效。无效的数据就不用理会。

sop

为1时表示这个是包文的第一个数据。

如无特别说明,只有vld=1时,sop才有效。表示该时刻的data中包含了该报文的第一个字节数据。

 

eop

为1时表示这个是包文的最后一个数据

如无特别说明,只有vld=1时,eop才有效。表示该时刻的data中包含了该报文的最后一字节数据。

 

err

为1时表示这个包文有错误

如无特别说明,只有vld=1且eop=1时,err才有效,否则err无效,不用理会。

mty

表示无效字节数。0全部有效。

vld=1且eop=1时,mty才有效,其他时候为一定为0。(也就是说包文中间vld=1时,data全部有效)

假如data的位宽是32位,也就是4个字节。但包文有可能不是4字节的倍数。例如包文长度为127字节时,eop时刻肯定是只有3个字节有效,此时就可以用mty信号来指示出来。

mdy值得定义:

0:全部数据都有效;

1:除了data[7:0],其他数据有效。

2:除了data[15:0],其他数据有效。

3:除了data[23:0],其他数据有效。

4:除了data[31:0],其他数据有效。

……

以此类推。

rdy

模块准备好信号。当rdy=1时,表示下游模块准备好,可以发送数据。rdy=0时,绝对不能发送数据。

当模块A发数据给模块B,如果B正在处理数据,来不及接收时,B将rdy信号拉低,告诉A不要发数据过来。假如ryd=1,A发数据过来,B处理出错,则是B的问题。而如果rdy=0,A发数据过来导致B出错,那就是A的问题。

要注意此信号由B产生的。

 

       上面的表格非常重要,做练习如果不清楚信号定义,请务必回到此处查找。基本上所有模块的输入输出信号都可以参考这表格来定义,对于划分模块也有重要参考价值。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值