官方论坛
官方淘宝
官方博客
微信公众号
点击联系吴工 点击联系周老师
您的当前位置:主页 > 技术文章 >

包文的理解-明德扬科教(mdy-edu.com)

发布时间:2019-12-10   作者:admin 浏览量:




包文的理解


本文为明德扬原创文章,转载请注明出处!作者:XYZ

在通信工程中,包文是通信处理不可缺少的一部分,经过一段时间的学习总结,今天跟大家分享一下我对包文的理解。

一、包文的基本概念

在通信中,发送端首先将数据封装成一个个包文,接收端按包文为单位进行接收。例如以太网,发送端将数据封装成包文格式,该包文包含了目的地址、源地址、检验域、包文长度和包文数据等信号。接收端根据这些信息,就能正确地接收数据。每个包文之间互不相关,可以说包文是处理数据的基本单元。

包文其实就是一组一组的用户数据,它可以由一个或者多个字节组成,机器以一个包文为单位,进行包文处理。用生活中的例子来解释,我们使用QQ传递消息时,QQ有可能会将当前的对话内容封装成一个包文,然后再传给另一端。那么根据实际情况,这个包文可长可短,对话内容少时,包文自然就短,对话内容长时,包文自然就很长了。

二、包文的传输

前面介绍了包文是一组一组的用户数据。包文在传递传输中,有可能会通过不同的接口进行传输,例如网线、串口、电话线、无线传输等,不管是什么样的方式传输,最终传到另一端的时候,必须又能够还原回原来的包文。就如我们通过QQ发了一段音频,那么对方收到的也会是一段音频,不能变成文字或者视频。在工程中就相当于我们将一个包文(48’h000102030405)从A发送到B,不管中间经过了什么接口,最终B要收到的就是(48’h000102030405)。

FPGA中,明德扬定义了一种数据接口,这种数据接口一般包含datadata_vlddata_sopdata_eopdata_mty等。其解释如下:

data:类似的名称还有dindout等,传递的数据,其可能由多根线组成,常用的8根线、16根线、32根线,分别表示一次可传送8位、16位和32位数据。

data_vld:数据有效表示信号;为1表示当前时刻的data有效,正在传递一个数据,为0时表示当前数据无效,不要去抓数据。(注意,很多人会误认为,用“data==0”表示“没有数据”,这是错误的观念,0本身也是一个数据,因为有可能A要将数据0传给B。真正表示数据有效还是无效的,是看vld信号,而不是看data。)

data_sop:包文头指示信号;表示当前的这个数据是包文的第一个数据。

data_eop:包文尾指示信号;表示当前的这个数据是包文的最后一个数据。

(通过data_sopdata_eop就可以很容易区分出各个包文,避免不同包文数据之间的错乱。)

data_mty:当前无效数据字节数;很多人不太理解这个信号的含义,前面说过,包文的长度是可长可短的,一般是以字节为单位,因此有可能长度为123~1000字节等,甚至更长的长度。假设现在data的位宽是32位,就是vld有效时,一次就传4个字节。现在问题来了,假如A要传给B1个字节的包文,那么如何怎么告诉B现在是1个字节包文呢?这时就可通过mty为表示了,当其为3时,就表示当前data3个字节无效,B收到后就知道怎么做了。有同学会问B有没有可能等于4,也就是全部无效呢?如果要表示全部无效,直接让vld等于0就好了,没有必要让mty来表示。

综上所述,通过上面几个信号,AB之间能实现传递任何长度的包文。

三、包文的接口信号意义以及约定规范

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


四、包文的接口信号应用

使用一个案例来加固学习效果。假设模块A要先后发送包文5字节包文:40’h01020304056字节包文:48’h060708091011给模块B

一起来实现这个效果,分析目标可知信号连接和信号波形可设置如下所示:


                                                                                                    模块A和模块B的连接信号




该信号波形是数据位宽为16包文,包文的有效包文数据是:8’h018’h028’h038’h048’h058’h068’h078’h088’h098’h108’h11,当data_mty为高电平时,对应的data16’h0500有一个字节无效,默认低位无效(即8’h00无效),所以data值为16’h0500时,有效值是8’h05

以上就是本人对包文的理解和使用,更多相关FPGA的知识,大家可以在评论区与我进行交流讨论!



  •   
  •   
  •   
  •  
  • FPGA教育领域第一品牌
  • 咨询热线:020-39002701
  • 技术交流Q群:544453837