您的位置:首页 > 理论基础 > 计算机网络

FPGA实现网络通信时的网络字节序问题

2015-07-16 09:18 525 查看
在上位机软件发送字符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或者网络设备而言的,

即传输过来的数据是如何被表示的,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: