位置:51电子网 » 技术资料 » 通信网络

基于FPGA的以太网MAC子层协议设计实现

发布时间:2008/5/29 0:00:00 访问次数:647

  摘要: 本文介绍了基于现场可编程门阵列(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 比特大小的阻塞信号来加强冲突,以便通知总线上各个站点已发生冲突,然后随机延时一段时间重新争用介质,再重新传送数据帧.

2  mac 子层协议的fpga 实现

  以太网mac 子层协议的硬件结构框图如图1 所示,由控制模块、发送模块和接收模块3个部分组成. 由于小型嵌入式系统主要应用在集散控制系统中,信息交流多为“一问一答”式的半双工通信模式,同时为了降低硬件资源的开销,本模块仅支持半双工通信模式.


图1  硬件结构框图

2. 1  控制模块
  该模块包含主机接口、寄存器、发送数据缓冲区及接收数据缓冲区4 个部分. 主机接口部分用以实现与mcu 之间的数据交换,采用8 位外部数据总线. 寄存器主要用于功能参数的设置及状态信息的存贮. 发送数据缓冲区是主机与发送模块之间的数据传输通道,接收数据缓冲区则是主机与接收模块之间的数据传输通道.

  控制模块的工作时钟有两种选择方式,一种是直接由外部提供,另一种是外部时钟通过fpga 片内的延迟锁相环进行倍频后供内部使用,用户可以根据系统设计实际需要自由选择.

  数据缓冲区(发送数据缓冲区和接收数据缓冲区) 用作发送与接收数据的缓冲,以使主机的传输速度与本模块相匹配. 发送数据时,主机先将待发送的数据帧写入发送数据缓冲区,然后由发送模块将数据读出. 传统意义上的数据缓冲区由一块内部或外部ram来实现,但这样需要设计实现一个复杂的控制状态机来管理主机、发送模块和接收模块3 个部分对ram的读写. spartan ⅱ系列的fpga 内部提供了丰富的块ram资源,可以配置双端口ram. 因此本文将发送缓冲区分成两个独立的部分,这样每个数据缓冲区便可以由双端口的ram来实现,大大简化了设计,节省了硬件资源.

2. 2  发送模块
  该模块主要实现csma/cd 协议,完成数据帧的传送,即以字节为单位从发送缓冲区

  摘要: 本文介绍了基于现场可编程门阵列(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 比特大小的阻塞信号来加强冲突,以便通知总线上各个站点已发生冲突,然后随机延时一段时间重新争用介质,再重新传送数据帧.

2  mac 子层协议的fpga 实现

  以太网mac 子层协议的硬件结构框图如图1 所示,由控制模块、发送模块和接收模块3个部分组成. 由于小型嵌入式系统主要应用在集散控制系统中,信息交流多为“一问一答”式的半双工通信模式,同时为了降低硬件资源的开销,本模块仅支持半双工通信模式.


图1  硬件结构框图

2. 1  控制模块
  该模块包含主机接口、寄存器、发送数据缓冲区及接收数据缓冲区4 个部分. 主机接口部分用以实现与mcu 之间的数据交换,采用8 位外部数据总线. 寄存器主要用于功能参数的设置及状态信息的存贮. 发送数据缓冲区是主机与发送模块之间的数据传输通道,接收数据缓冲区则是主机与接收模块之间的数据传输通道.

  控制模块的工作时钟有两种选择方式,一种是直接由外部提供,另一种是外部时钟通过fpga 片内的延迟锁相环进行倍频后供内部使用,用户可以根据系统设计实际需要自由选择.

  数据缓冲区(发送数据缓冲区和接收数据缓冲区) 用作发送与接收数据的缓冲,以使主机的传输速度与本模块相匹配. 发送数据时,主机先将待发送的数据帧写入发送数据缓冲区,然后由发送模块将数据读出. 传统意义上的数据缓冲区由一块内部或外部ram来实现,但这样需要设计实现一个复杂的控制状态机来管理主机、发送模块和接收模块3 个部分对ram的读写. spartan ⅱ系列的fpga 内部提供了丰富的块ram资源,可以配置双端口ram. 因此本文将发送缓冲区分成两个独立的部分,这样每个数据缓冲区便可以由双端口的ram来实现,大大简化了设计,节省了硬件资源.

2. 2  发送模块
  该模块主要实现csma/cd 协议,完成数据帧的传送,即以字节为单位从发送缓冲区
相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!