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或者网络设备而言的,
即传输过来的数据是如何被表示的,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值