fpga和udp协议的网络终端系统设计与实现
摘 要随着当今世界因特网的不断发展,人们越来越多的需要身边的嵌入式系统能够很快地接入到因特网当中去,而在因特网应用当中尤以视频、音频等多媒体数据传输较为普遍,因而大数据量和高速传输能力成为当今嵌入式系统设计的热点和要求。由于FPGA布局相对简单,测试修改方便和性价比高的特点,本文提出了基于FPGA的网络终端设计的实现方案。本文采用模数转换芯片ADS8556实现现场高速采样AD实时数据,采用硬件描述语言编写UDP/IP协议栈实现FPGA与上行机之间以太网的高速数据传输,最后通过外接PHY芯片实现网络连接。本文使用上modelsim对系统部分进行了仿真并验证了其功能。上行机部分采用WinPcap和SharpPcap库函数实现数据包的捕获、过滤和解析,并对其功能进行了验证。摘 要 1
目录
ABSTRACT 2
第一章 绪论 1
1.1 课题背景及意义 1
1.2 论文的主要结构 3
第二章 网络终端系统的总体设计 4
第三章 AD数据采集系统的软件设计 13
3.1 AD数据采集系统设计 13
3.2 AD采集的软件设计 15
3.2.1 输出时钟 15
3.2.2 SPI时钟 16
3.2.3 ADS8556读取数据 18
3.2.4 AD仿真数据 19
3.3 AD采集的仿真 20
第四章 UDP/IP协议栈的软件设计 22
4.1 UDP/IP协议栈 22
4.1.1 协议栈的体系结构 22
4.1.2 IP协议 25
4.2 协议栈的FPGA实现 27
4.2.1 UDP发送模块 28
4.2.2 CRC校验 31
4.3 系统仿真结果 32
第五章 系统联调和结果分析 34
5.1 上位机数据包捕获软件的开发 34
5.1.1 WindowsSockets和SharpPcap概述 34
5.1.2 数据包捕获程序的软件设计 35
5.2 FPGA部分的系统联调 38
5.3
*好棒文|www.hbsrm.com +Q: 3 5 1 9 1 6 0 7 2
上位机软件的调试 40
第六章 结束语 42
致谢 43
参考文献 44
附录 47
附录1 英文部分 47
附录2 中文翻译 57
绪论
1.1 课题背景及意义
人类文明进入20世纪以来,科学技术得到了爆炸式发展,其中尤以计算机技术发展速度令世人惊叹。70年代过后,微电子技术的进一步发展促使了计算机技术开始朝着微型化和便捷化迈进,两种技术互相交织,互相融合,互相促进,最终促成了嵌入式技术的形成。近年来,嵌入式技术已经在方方面面影响着我们的生活,在我们的生活态度、生活方式等方面都刻上了不可磨灭的烙印。
在PAL、GAL、CPLD等可编程器件的非死发展的基础上,FPGA应运而生。FPGA(Field-Programmable Gate Array),全称为现场可编程门阵列。设计师们根据具体情况的需要的不同将FPGA中的一个个门电路联系起来,使得每一片FPGA芯片都成为一个独立的实验箱。在FPGA中,逻辑块和连接可以根据系统设计师的需要灵活地加以改变,因此,FPGA可以自由灵活地完成各种逻辑功能。
如今正处于FPGA发展的全盛时代,在成本不断降低的同时,芯片的功能缺逐年完善,规模逐年扩大,传统的定制电路正逐渐被较为低端的FPGA芯片取代,在ASIC的市场中,FPGA也日益起到不可替代的作用。与此同时,高端FPGA的生产工艺也日臻完善,如先进的ASIC生产工艺,以及向FPGA中嵌入更加功能强大的处理器。可以预见,在微机技术和电子工艺发展迅猛的今天,FPGA的功能将更加强大,生产成本将会进一步降低,系统集成度也会进一步提高,在不久的将来,FPGA会在人类社会中起到不可替代的作用。
其缺点在于速度相对一般的专用集成芯片来说较慢,可实现的设计较为简单,优点在于其功耗低,入门简单,可快速生产,造价便宜,最重要的是它可以根据需要灵活地修正和改变。由于FPGA的结构灵活,它的逻辑单元、可编程内部连线和I/O单元都可以根据设计师的具体编程实现各种不同的功能,满足各种不同的需要,采用FPGA和硬件描述语言可以非常容易地实现UDP/IP协议栈的编程。
在各行各业都要求快节奏的今天,以太网中音频、视频等多媒体数据的传输速度已经日益不能满足人们的要求。使用廉价方便和高效节能的嵌入式系统快速接入到因特网,正是国内外着力研究的热点之一。在TCP/IP协议较为复杂且面向连接不易构造协议栈的前提下,UDP/IP协议可以面向无连接地快速、高效地传输实时数据的优点显现了出来。
对于普通用户来说,并不需要知道数据在协议栈中具体是怎样封装、传输的,也不需要知道数据在以太网传输的过程中的具体结构和形式,在用户数据到达主机时,主机将数据送给UDP/IP协议栈,由协议栈负责将数据打包成UDP包、封装成IP包并最终写成数据帧发送到网络中,收到数据包的主机通过UDP/IP协议栈将数据帧拆成IP数据包、再拆成UDP数据包,最终将数据原样读取出来,而对用户来说,这些过程都是“不存在的”,即他们只能看到数据从一台设备发送到了另一台设备,UDP/IP协议解决了通信方式和通信过程的问题,用户需要的只是协议栈能够保证传输数据的实时性、准确性、高效性,而UDP/IP协议栈符正合了这些要求,因而本文采用UDP/IP协议完成网络传输。
在数据包的捕获和解析部分,最初考虑使用WindowsSockets的库函数来编写程序,因为这种方法较为简单,实现方式也已经较为成熟,包括协议的具体实现、如何封装和解析数据包等都不需要用户去考虑,因为WindowsSockets已经将这些封装好,呈现给用户的只是然人们感到熟悉和亲切的I/O接口,这大大简化了事情的复杂程度,也确实带来了极大的便利。事实上大部分应用程序也都是使用类似WindowsSockets这种操作系统的库函数来对网络的数据包进捕获和处理。然而,在本文中,上位机程序需要捕获的是没有与应用程序相关的数据包,这些数据包在打包和发送时没有经过WindowsSockets在系统中的处理,自然也不能使用WindowsSockets来捕获。因此本文考虑采用的是WinPcap。
WinPcap能够让用户无条件的捕获网络中任意收发的没有经过处理的原始数据包,它提供了以下四种功能:捕获原始的未经处理的数据包,无论数据包是发往本机还是路过;用户自定义某些过滤条件,根据用户指定的规则可以过滤数据包;将未经处理过的数据包发送到网络中去;监视网络流量和信息。
塔米尔加尔在2004年左右开始的sharpPcap项目是一个完全跨平台的库管理,它的目的就是提供一个.NET应用程序捕获、发送和分析数据包的功能。它可以提供以下功能:
获取设备列表
目录
ABSTRACT 2
第一章 绪论 1
1.1 课题背景及意义 1
1.2 论文的主要结构 3
第二章 网络终端系统的总体设计 4
第三章 AD数据采集系统的软件设计 13
3.1 AD数据采集系统设计 13
3.2 AD采集的软件设计 15
3.2.1 输出时钟 15
3.2.2 SPI时钟 16
3.2.3 ADS8556读取数据 18
3.2.4 AD仿真数据 19
3.3 AD采集的仿真 20
第四章 UDP/IP协议栈的软件设计 22
4.1 UDP/IP协议栈 22
4.1.1 协议栈的体系结构 22
4.1.2 IP协议 25
4.2 协议栈的FPGA实现 27
4.2.1 UDP发送模块 28
4.2.2 CRC校验 31
4.3 系统仿真结果 32
第五章 系统联调和结果分析 34
5.1 上位机数据包捕获软件的开发 34
5.1.1 WindowsSockets和SharpPcap概述 34
5.1.2 数据包捕获程序的软件设计 35
5.2 FPGA部分的系统联调 38
5.3
*好棒文|www.hbsrm.com +Q: 3 5 1 9 1 6 0 7 2
上位机软件的调试 40
第六章 结束语 42
致谢 43
参考文献 44
附录 47
附录1 英文部分 47
附录2 中文翻译 57
绪论
1.1 课题背景及意义
人类文明进入20世纪以来,科学技术得到了爆炸式发展,其中尤以计算机技术发展速度令世人惊叹。70年代过后,微电子技术的进一步发展促使了计算机技术开始朝着微型化和便捷化迈进,两种技术互相交织,互相融合,互相促进,最终促成了嵌入式技术的形成。近年来,嵌入式技术已经在方方面面影响着我们的生活,在我们的生活态度、生活方式等方面都刻上了不可磨灭的烙印。
在PAL、GAL、CPLD等可编程器件的非死发展的基础上,FPGA应运而生。FPGA(Field-Programmable Gate Array),全称为现场可编程门阵列。设计师们根据具体情况的需要的不同将FPGA中的一个个门电路联系起来,使得每一片FPGA芯片都成为一个独立的实验箱。在FPGA中,逻辑块和连接可以根据系统设计师的需要灵活地加以改变,因此,FPGA可以自由灵活地完成各种逻辑功能。
如今正处于FPGA发展的全盛时代,在成本不断降低的同时,芯片的功能缺逐年完善,规模逐年扩大,传统的定制电路正逐渐被较为低端的FPGA芯片取代,在ASIC的市场中,FPGA也日益起到不可替代的作用。与此同时,高端FPGA的生产工艺也日臻完善,如先进的ASIC生产工艺,以及向FPGA中嵌入更加功能强大的处理器。可以预见,在微机技术和电子工艺发展迅猛的今天,FPGA的功能将更加强大,生产成本将会进一步降低,系统集成度也会进一步提高,在不久的将来,FPGA会在人类社会中起到不可替代的作用。
其缺点在于速度相对一般的专用集成芯片来说较慢,可实现的设计较为简单,优点在于其功耗低,入门简单,可快速生产,造价便宜,最重要的是它可以根据需要灵活地修正和改变。由于FPGA的结构灵活,它的逻辑单元、可编程内部连线和I/O单元都可以根据设计师的具体编程实现各种不同的功能,满足各种不同的需要,采用FPGA和硬件描述语言可以非常容易地实现UDP/IP协议栈的编程。
在各行各业都要求快节奏的今天,以太网中音频、视频等多媒体数据的传输速度已经日益不能满足人们的要求。使用廉价方便和高效节能的嵌入式系统快速接入到因特网,正是国内外着力研究的热点之一。在TCP/IP协议较为复杂且面向连接不易构造协议栈的前提下,UDP/IP协议可以面向无连接地快速、高效地传输实时数据的优点显现了出来。
对于普通用户来说,并不需要知道数据在协议栈中具体是怎样封装、传输的,也不需要知道数据在以太网传输的过程中的具体结构和形式,在用户数据到达主机时,主机将数据送给UDP/IP协议栈,由协议栈负责将数据打包成UDP包、封装成IP包并最终写成数据帧发送到网络中,收到数据包的主机通过UDP/IP协议栈将数据帧拆成IP数据包、再拆成UDP数据包,最终将数据原样读取出来,而对用户来说,这些过程都是“不存在的”,即他们只能看到数据从一台设备发送到了另一台设备,UDP/IP协议解决了通信方式和通信过程的问题,用户需要的只是协议栈能够保证传输数据的实时性、准确性、高效性,而UDP/IP协议栈符正合了这些要求,因而本文采用UDP/IP协议完成网络传输。
在数据包的捕获和解析部分,最初考虑使用WindowsSockets的库函数来编写程序,因为这种方法较为简单,实现方式也已经较为成熟,包括协议的具体实现、如何封装和解析数据包等都不需要用户去考虑,因为WindowsSockets已经将这些封装好,呈现给用户的只是然人们感到熟悉和亲切的I/O接口,这大大简化了事情的复杂程度,也确实带来了极大的便利。事实上大部分应用程序也都是使用类似WindowsSockets这种操作系统的库函数来对网络的数据包进捕获和处理。然而,在本文中,上位机程序需要捕获的是没有与应用程序相关的数据包,这些数据包在打包和发送时没有经过WindowsSockets在系统中的处理,自然也不能使用WindowsSockets来捕获。因此本文考虑采用的是WinPcap。
WinPcap能够让用户无条件的捕获网络中任意收发的没有经过处理的原始数据包,它提供了以下四种功能:捕获原始的未经处理的数据包,无论数据包是发往本机还是路过;用户自定义某些过滤条件,根据用户指定的规则可以过滤数据包;将未经处理过的数据包发送到网络中去;监视网络流量和信息。
塔米尔加尔在2004年左右开始的sharpPcap项目是一个完全跨平台的库管理,它的目的就是提供一个.NET应用程序捕获、发送和分析数据包的功能。它可以提供以下功能:
获取设备列表
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/txgc/1078.html