首页 > 代码库 > FPGA实现网络通信时的网络字节序问题
FPGA实现网络通信时的网络字节序问题
在上位机软件发送字符abcd
在鲨鱼上抓包
用逻辑分析仪从FPGA网络接收管脚分析
数据接收后存储在位宽为8bit的ram中
从ram中读32bitUDP数据为
64636261
依据以上那个现象,
之前有个理解偏差,
所谓的大端小端就是一个读数的顺序不一样。
对于UDP数据段而言。其数据组成格式是有两方来定的。
仅仅有协议的头等等,是依照大端来组织,为了是在不同cpu体系中进行通信,
比方上边发送的是abcd。则udp数据段就是依照abcd来发送的。
数据到FPGA中
存储在8bit宽度的ram中(地址从小到大)
0x61
0x62
0x63
0x64
nios软核cpu也是小端的,所以
将这4个字节读取到32bit无符号变量时
比方alt_u31 buff
buff=0x64636261;
高地址数据放在高位
假设将buff强制转换成(alt_u8)buff输出
则输出的是0x61,这也是证明nios是小端的一种方法。
所以整体来讲,网络数据事实上并无什么大小端之说,大小端仅仅是相对于硬件cpu或者网络设备而言的。
即传输过来的数据是怎样被表示的,
FPGA实现网络通信时的网络字节序问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。