基于FPGA的以太网MAC子层协议设计实现
摘要: 本文介绍了基于现场可编程门阵列(FPGA) 的以太网MAC 子层协议的硬件实现方法. 硬件结构上由控制模 块、发送模块和接收模块3个部分组成,发送模块和接收模块采用状态机控制数据发送和接收的过程,完成数据的封装、发送和接收功能.
关键词: 嵌入式系统; 以太网MAC; 现场可编程门阵列; 硬件描述语言
传统以PC为中心的互联网应用现已开始转向以嵌入式设备为中心. IA(internet appliance) 概念现在甚为流行,这表明互联网应用进入了嵌入式互联网的时代已经来临. 据网络专家预测,将来在互联网上传输的信息中,有70%来自小型嵌入式系统. 因此,对嵌入式系统接入Internet网络的研究是有必要的.
目前有两种方法可以实现单片机系统接入Internet.一种方法是利用NIC(网络控制/ 网卡) 实现网络接口,由单片机来提供所需的网络协议. 另外一种方法是利用具有网络协议栈结构的芯片和PHY(物理层的接收器) 来实现网络接口,主控制器只负责往协议栈结构芯片的某个寄存器里放上适当的数据. 美国Seiko Instrument 公司生产的S7600A 就是具有这种结构的芯片. 与此同时,用FPGA实现单片机系统接入Internet的方法也日益受到人们的重视.
FPGA是现场可编程门阵列的缩写,是近年来发展迅速的大规模可编程器件,具有密度高,速度快,功耗小、使用方便等特点 ,在嵌入式系统设计中得到了广泛的应用. 以MCU 为核心,采用FPGA 设计实现外围电路,不仅可以使设计的电子产品小型化、集成化和实现高可靠性,还大大缩短了设计周期,减少了设计费用,降低了设计风险. 本文提出采用FPGA实现网络协议栈,着重介绍以太网MAC 子层协议的硬件实现方法.
1 以太网MAC 子层协议
IEEE802协议标准系列中,数据链路层包括逻辑链路控制(LLC) 子层和媒体访问控制(MAC) 子层. 其中MAC 位于LLC 和物理层之间,它使LLC 适应于不同的媒体访问技术和物理媒体. MAC 单独作为一个子层,就不会因为媒体访问方法的改变而影响较高层次的协议. MAC 由数据拆装和媒体访问管理两个模块组成,完成数据帧的封装、解封、发送和接收功能.以太网数据帧封装格式如表1 所示,其中目的地址、源地址、长度/ 类型和数据4 个字段由上一层协议模块生成. 传送数据帧时,数据封装模块自动在待传输数据前面添加7 个字节的前导码和1 个字节的定界符,并在数据传送结束时加发4 个字节的循环冗余校验码,如果数据长度小于46 字节,则会自动进行数据填充以达到要求的最短长度. 接收数据帧时,数据拆装模块将自动丢弃前导码和定界符2 个字段.
媒体访问管理模块主要实现CSMA/CD(carrier sense multiple access with collision detection) 协议 . CSMA/CD 是一种分布式介质访问控制协议,使网中的多个站(节点) 可以共享传输介质. 发送数据帧时,节点首先进行载波监听,当介质空闲时开始发送帧. 如果在传输过程中与其他节点产生冲突,则正在传输的每个节点必须发出32 比特大小的阻塞信号来加强冲突,以便通知总线上各个站点已发生冲突,然后随机延时一段时间重新争用介质,再重新传送数据帧.
详情点击下载>>
关键词: 嵌入式系统; 以太网MAC; 现场可编程门阵列; 硬件描述语言
传统以PC为中心的互联网应用现已开始转向以嵌入式设备为中心. IA(internet appliance) 概念现在甚为流行,这表明互联网应用进入了嵌入式互联网的时代已经来临. 据网络专家预测,将来在互联网上传输的信息中,有70%来自小型嵌入式系统. 因此,对嵌入式系统接入Internet网络的研究是有必要的.
目前有两种方法可以实现单片机系统接入Internet.一种方法是利用NIC(网络控制/ 网卡) 实现网络接口,由单片机来提供所需的网络协议. 另外一种方法是利用具有网络协议栈结构的芯片和PHY(物理层的接收器) 来实现网络接口,主控制器只负责往协议栈结构芯片的某个寄存器里放上适当的数据. 美国Seiko Instrument 公司生产的S7600A 就是具有这种结构的芯片. 与此同时,用FPGA实现单片机系统接入Internet的方法也日益受到人们的重视.
FPGA是现场可编程门阵列的缩写,是近年来发展迅速的大规模可编程器件,具有密度高,速度快,功耗小、使用方便等特点 ,在嵌入式系统设计中得到了广泛的应用. 以MCU 为核心,采用FPGA 设计实现外围电路,不仅可以使设计的电子产品小型化、集成化和实现高可靠性,还大大缩短了设计周期,减少了设计费用,降低了设计风险. 本文提出采用FPGA实现网络协议栈,着重介绍以太网MAC 子层协议的硬件实现方法.
1 以太网MAC 子层协议
IEEE802协议标准系列中,数据链路层包括逻辑链路控制(LLC) 子层和媒体访问控制(MAC) 子层. 其中MAC 位于LLC 和物理层之间,它使LLC 适应于不同的媒体访问技术和物理媒体. MAC 单独作为一个子层,就不会因为媒体访问方法的改变而影响较高层次的协议. MAC 由数据拆装和媒体访问管理两个模块组成,完成数据帧的封装、解封、发送和接收功能.以太网数据帧封装格式如表1 所示,其中目的地址、源地址、长度/ 类型和数据4 个字段由上一层协议模块生成. 传送数据帧时,数据封装模块自动在待传输数据前面添加7 个字节的前导码和1 个字节的定界符,并在数据传送结束时加发4 个字节的循环冗余校验码,如果数据长度小于46 字节,则会自动进行数据填充以达到要求的最短长度. 接收数据帧时,数据拆装模块将自动丢弃前导码和定界符2 个字段.
媒体访问管理模块主要实现CSMA/CD(carrier sense multiple access with collision detection) 协议 . CSMA/CD 是一种分布式介质访问控制协议,使网中的多个站(节点) 可以共享传输介质. 发送数据帧时,节点首先进行载波监听,当介质空闲时开始发送帧. 如果在传输过程中与其他节点产生冲突,则正在传输的每个节点必须发出32 比特大小的阻塞信号来加强冲突,以便通知总线上各个站点已发生冲突,然后随机延时一段时间重新争用介质,再重新传送数据帧.
详情点击下载>>


