FPGA实现网络通信时的网络字节序问题
2015-07-16 09:18
525 查看
在上位机软件发送字符abcd
在鲨鱼上抓包
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/2661d408c04b98e28978e7ba99a948d8)
用逻辑分析仪从FPGA网络接收管脚分析
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/65d261129d4ce777a80fd19ba74031a5)
数据接收后存储在位宽为8bit的ram中
从ram中读32bitUDP数据为
之前有个理解偏差,
所谓的大端小端就是一个读数的顺序不一样,
对于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网络接收管脚分析
数据接收后存储在位宽为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或者网络设备而言的,
即传输过来的数据是如何被表示的,
相关文章推荐
- 巧用Android网络通信技术,在网络上直接传输对象
- 基于java的http服务器
- 微软“小冰”识狗与人工神经网络(I)
- HTTP 笔记与总结(6)referer 头与防盗链
- 企业社交网络平台与传统OA办公系统之间的较量
- 第一部分:HTTP协议之请求和响应
- BZOJ 1475: 方格取数( 网络流 )
- java网络编程(2)——UDP与TCP
- HTTP 协议漫谈
- android-async-http源码解析
- 【android安全】之使用ssl验证保护网络数据传输安全。
- HttpServletRequest对象(一)
- Java HttpClient使用
- Windows Azure 保留已存在的虚拟网络外网IP(云服务)
- HttpServletResponse对象(二)
- HttpServletResponse对象(一)
- centos 重启网站服务器 httpd
- java网络编程(1)
- Android网络框架-Volley(五) 使用Volley发送自定义Request
- 腾讯电脑管家(QQ电脑管家)劫持IE开始页至 http://guanjia.qq.com/comm-htdocs/quickaccess/ 的处理