基于FPGA的以太网MII接口扩展设计与实现

发布者:太和清音最新更新时间:2012-02-11 来源: dzsc关键字:以太网  FPGA  奇偶分频器  编解码  异步双口FIFO 手机看文章 扫描二维码
随时随地手机看文章

引言

传统以PC为中心的互联网应用现已开始转向以嵌入式设备为中心。据网络专家预测,将来在互联网上传输的信息中,有70%来自小型嵌入式系统,因此,对嵌入式系统接入因特网的研究是有必要的。目前有两种方法可以实现单片机系统接入因特网:一种方法是利用NIC (网络控制/网卡)实现网络接口,由单片机来提供所需的网络协议;另外一种方法是利用具有网络协议栈结构的芯片和PHY(物理层的接收器)来实现网络接口,主控制器只负责往协议栈结构芯片的某个寄存器里放上适当的数据。与此同时,用FPGA实现单片机系统接入因特网的方法也日益受到人们的重视。本文提出采用FPGA实现网络协议栈,介绍100M以太网MII接口协议的硬件实现方法,其中的奇偶模块分频器和异步FIFO等通用器件在日常中也很有应用价值。

以太网MII接口协议

IEEE802协议标准系列中,数据链路层包括LLC (逻辑链路控制)子层和MAC (媒体访问控制)子层。其中MAC单独作为一个子层,完成数据帧的封装、解封、发送和接收功能。物理层PHY的结构随着传输速率的不同而有一定差异,在100M和1000M以太网中,依次为PCS子层、PMA子层和PMD子层。MII接口是连接数据链路层和物理层的接口,因为本设计中以太网速率采用100Mb/s,所以MII接口实际连接的是MAC子层和PCS子层。根据协议,要求MII接口具有的功能有:数据和帧分隔符的读写时钟同步,提供独立的读写数据通道,为MAC层和PCS层提供相应的管理信号,以及支持全双工模式。

扩展MII接口功能及其

FPGA实现

由于100M以太网的物理层采用4b/5b编码,为了扩展MII接口的功能,要求其能够实现直接物理层5位数据和MAC层8位数据的发送接收传输转换。即把从MAC子层用于发送的数据和从PHY用于接收的数据存入数据缓冲FIFO,同时要求MII接口将从PHY传来的信号COL、CRS转为信号Carrier和Collision,并提供给MAC子层用于载波监听和冲突检测,以及发送和接收时的时钟、使能、错误位信号的传送。扩展功能后的MII接口硬件结构框图如图1所示,由4b/5b编解码器、控制信号与4位/8位转换、分频器及双口FIFO 4个模块组成,而且能够同时支持半双工和全双工模式。

在设计过程中,为了考虑测试和支持多种速率传输的需要,要求设计带有分频参数的可实现奇偶分频的分频器和支持能够同时进行读写操作和异步读写时钟的FIFO。这是MII接口设计中的难点,本身也具有很高的实用价值。[page]

奇偶分频器的实现

分频器是数字系统设计中的基本电路,同一个设计中有时要求多种形式的分频。通常由计数器或计数器的级联构成各种形式的偶数分频及非等占空比的奇数分频,实现较为简单;对等占空比的奇数分频实现则较为困难。本文对2n+1等占空比奇数分频的基本思路是:先通过模2n+1的计数器实现占空比为n+1/n的奇数分频(比如三分频,正负波形的占空比为2:1),然后有两种方法可以实现等占空比的奇数分频,一种是当计数器至n+1时,让此波形与输入时钟波形相“与”,不过可能会存在毛刺输出;另一种是当计数器至n+1时,在输入时钟的下降沿触发产生低电平脉冲,然后再和原波形相“或”,这种方法没有毛刺产生。因此本文采用第二种方法。

4b/5b编解码器的设计

为了减少系统的开销,本文把4b/5b的编码和解码同时集中到一个模块上实现。数据0~F可以直接编、解码。PCS层有6个特殊的5b码:11111为帧间填充码;11000、10001和01101、00111是两对成对出现的码组,分别为数据流开始和结束时的分隔符;00100则是数据错误位,用以表示错误。数据接收时,可以直接对这几个5b码组解码,00100则产生信号rx_er。发送时,需要对从MII接口传来的信号位进行判断:若tx_en上升沿,则在头两个前导码时编码输出SSD;若tx_en下降沿(帧间隔),则在FCS后输出ESD,然后一直用11111为数据流间隔填充码;若有tx_er触发,则编码00100输出。

异步双口FIFO的设计

为了满足PCS层数据的物理层时钟以及MAC层总线时钟不同步的需求,需要FIFO有异步的读、写时钟。当冲突检测COL为高时,要求发送帧执行退回操作回至FIFO中等待下一个Transmitting信号。

FIFO的设计思路如下:设置异步Reset,高电平触发;设置8位寄存器fifodata保存FIFO的数据;设置fifo_rp和fifo_wp为读、写指针;cr_rp和cr_wr为进位标志,fifo_rp和fifo_wp为FIFO_DEPTH-1的时候取反;设置nempty、nfull、near_empty、near_full为数据空、满指示。

读写时,FIFO_RD为1,则fifo_out<=fifodata[fifo_rp],fifo_rp<=fiforp+1;FIFO_WR为1,则fifodata[fifo_wr]<=fifo_in,fifo_wr<=fifo_wr+1。nempty、nfull位信号值的变化通过借助r_rp和cr_wr的进位输出来判断实现。当读写两个指针的值相等,即fifo_rp==fifo_wp时,判断cr_rp^cr_wr(异或)的值:若是1,则FIFO满,nfull<=0;若是0,则FIFO空,nempty<=0。如果fifo_rp!=fifo_wp,则nfull=nempty=0,FIFO不为空也不为满。

测试时,暂定容量FIFO_DEPTH为32(实际要求是至少一个帧的大小即1530字节大小),读、写时钟分别为50MHz和25MHz,在写550ns之后同时读写。

主控制模块的实现

主控制模块要求实现的功能是:4/8位数据的转换;给MAC层和PCS层的控制信号输出;双向数据MDIO,表征MII接口与物理层相连接的情况,可以异步输入输出控制。

实现4/8位数据转换的要求是:发送时,将8位数据分成两个nibble依次输出;接收时,将4b/5b编解码器接收到的4位数据依次填入高、低nibble组成8位数据输出。

采用状态寄存器对控制信号的输出是MII模块的核心。设立3位status1[2:0],从高位到低位依次是{duplex, col, crs}输入;4位status2[3:0],从高位到低位依次是{ transmitting ,transmiterror ,rx_en ,rx_er }输入。输出控制信号的基本算法流程如下:

status1[2]为1时,工作在全双工模式。CollisionDetect和CarrierSense输出始终置为0。

status1[2]为0时,工作在半双工模式。如果status1[1]为1,则CollisionDetect输出置为1,开始执行退回(backoff)程序;如果status1[0]为1,则CarrierSense输出置为1,继续等待。

status2 [1]为1时,工作在接收状态,Receiving输出置为1 (此时status2[3]必须为0)。此时如果status2[0]为0,则接收数据有效,ReceiveDataValid输出为1;反之则置为0,停止数据传输。

status2 [1]为0时,工作在接收停止状态,Receiving输出置为0。此时如果status2[0]为1,eceiveDataValid输出为0,若接收端数据为1110,则表示载波错误,若接收端数据为0000,则表示正常的帧间隔阶段;如果status2[0]为0,则表示正常的帧间隔阶段,ReceiveDataValid输出为1。

status2 [3]为1时,工作在发送状态,tx_en输出置为1(此时status2[1]必须为0)。此时如果status2[2]为0,则正常发送,tx_er置为0;否则发送错误,tx_er置为1,且跳过该字节继续执行发送程序。

status2 [3]为0时,若status2 [2]为0,则处于正常帧间隔,tx_en、tx_er置为0;若status2 [2]为1,则为无效状态。

综合与仿真

本文采用Altela公司的Cyclone系列EP1C20F400C8芯片,整个设计全部采用Verilog HDL硬件描述语言来实现,并在Quatus4.0的设计平台上完成整个模块的设计、综合、仿真、映射及布局布线。发送时序仿真的波形如图3所示,从图中可以看出,当传输过程中发生冲突时,继续发送32比特的阻塞码(16进制FF),然后随机延时一段时间重新争用介质以传输数据,这说明本模块满足了协议要求以及CSMA/CD。

结语

本文介绍了一种简易的基于FPGA的以太网MII协议的设计方法。通过本模块可以简单方便地实现小型嵌入式系统的因特网接口,如果再结合基于FPGA实现的MAC层协议和TCP/IP协议栈及其他辅助功能模块,不仅可以使小型嵌入式系统接入网络更加简单,系统的集成度、稳定性也将进一步得到提高。

关键字:以太网  FPGA  奇偶分频器  编解码  异步双口FIFO 引用地址:基于FPGA的以太网MII接口扩展设计与实现

上一篇:一种基于USB的通用无线传输接口设计
下一篇:基于GPRS的火灾视频监测终端网络接口设计与实现

推荐阅读最新更新时间:2024-05-02 21:54

基于FPGA的模拟表头测试系统设计
光纤陀螺是激光陀螺的一种,是惯性技术和光电子技术紧密结合的产物。它利用Sagnac干涉效应,用光纤构成环形光路,并检测出随光纤环的转动而产生的两路超辐射光束之间的相位差,由此计算出光纤环旋转的角速度。光纤陀螺仪主要由表头和调制解调电路两个部分组成。伺服于表头的调制解调电路根据输入的电信号,经过相应的变换后形成反馈信号送至表头的相位调制器中。在实际的应用过程中,相应的调制解调电路应该根据温度、振动等情况做出相应的改变,才能最大限度地保证陀螺的精度要求。本文设计了一种基于FPGA的测试系统,模拟光纤陀螺仪的表头,并检测调制解调电路的性能。 模拟表头的基本原理及结构 表头的主要功能是将Sagnac效应产生的光程差所引起的相位变化
[测试测量]
提高FPGA设计效能的方案
随着FPGA密度的增加,系统设计人员能够开发规模更大、更复杂的设计,从而将密度优势发挥到最大。这些大规模设计基于这样的设计需求——需要在无线通道卡或者线路卡等现有应用中加入新功能,或者通过把两种芯片功能合并到一个器件中,减小电路板面积,或者针对新应用开发新设计。 这些不同的设计含有应用程序已有代码,或者是对延时要求较高的DSP。对于这类设计,综合工具可能无法优化设计,使其达到最优,导致关键通路出现较长的延时。关键通路延时较长的原因在于逻辑综合工具依靠估算的延时来综合设计。 这些延时较长的关键通路带来了时序逼近问题,导致性能劣化,迫使设计人员重新编写RTL代码以改进这些延时较长的关键通路。此外,用户在得到满足
[嵌入式]
提高<font color='red'>FPGA</font>设计效能的方案
莱迪思FPGA助力屡获殊荣的超级高铁及电机设计
作为低功耗可编程器件的领先供应商,可持续发展始终是莱迪思产品创新的一个核心指导原则。在过去几年里,莱迪思与Swissloop合作,一如既往地支持他们的超级高铁研究项目。对于该学生组织而言,过去的一年又是成果丰硕的一年。本文将介绍该团队2022年的一些项目进展及Swissloop领导人Roger Barton和Hanno Hiss开展的卓有成效的工作。 Swissloop团体照片 Swissloop是一个由苏黎世联邦理工学院(ETH Zurich)赞助的学生组织,主要从事超级高铁技术及其现实应用方面的研究。 他们的项目在SpaceX Hyperloop竞赛和巴伦西亚举行的欧洲超级高铁活动周(European Hype
[嵌入式]
莱迪思<font color='red'>FPGA</font>助力屡获殊荣的超级高铁及电机设计
嵌入式系统中FPGA的被动串行配置方式
随着信息时代的到来,嵌入式系统成为继IT网络技术之后又一个新的技术发展方向。嵌入式系统以其功能强、体积小、功耗低、可靠性高以及面向行业应用的突出特征,广泛应用于各个领域。 现场可编程门阵列FPGA(Field Programmable Gate Array)是一种高密度可编程逻辑器件,其逻辑功能的实现是通过把设计生成的数据文件配置进芯片内部的静态配置数据存储器(SRAM)来完成的,具有可重复编程性,可以灵活实现各种逻辑功能。FPGA的这种特性使其在现代电子系统设计中得到了广泛应用。基于SRAM工艺的FPGA是易失性的,系统掉电以后其内部配置数据将丢失,因此需要外接ROM保存其配置数据。FPGA的配置是有时序要求的,如果FPGA本
[单片机]
嵌入式系统中<font color='red'>FPGA</font>的被动串行配置方式
基于FPGA的自动采集控制系统
随着当前工业控制自动化日益普及,对于工作环境中的温度控制也越来越重要。本设计即是针对某些需要持续恒温的特殊环境而设计的自动温度采集控制系统。该系统采用FPGA作为硬件核心部分,有效地利用FPGA在可编程门阵列方面的优点,最大限度的使硬件电路软件化,减少了可视硬件的规模,降低了硬件加工、布线以及元器件采购方面的成本与复杂性,从而降低了故障排查方面的繁杂性。使硬件电路简洁,降低了整体占用的空间。相对于其他的温度控制系统,具有小巧,维护维修方便的优点,大大的提高了可维护性,同时由于采用的元器件都比较常见,整体成本较低。因此很适用于一些小规模同时对温度精度要求不高的场合。 1 系统工作原理 通过传感器实现对外界环境温度的采集,并将采集到
[嵌入式]
基于FPGA的LVDS接口应用
  介绍了基于FPGA的LVDS模块的应用,实现了将数据通过FPGA(Ahera StratixII EP2S90)的LVDS发送模块的传输,以640 Mbit·s-1数据率送至DAC电路。   1 LVDS技术简介   LVDS,即Low-Voltage Differential Signaling低压差分信号,是由美国国家半导体公司于1994年提出的一种信号传输模式,在满足高数据传输率的同时降低了功耗,运用LVDS技术可使数据速率从几百Mbit·s-1到2 Gbit·s-1。   LVDS传输方式的原理是用一对线传输一个信号,一条传输正信号,另一条传输相反电平并且在接收端相减,可以将走线上的共模噪声消除。因为两根信
[嵌入式]
基于DSP和FPGA的汽车防撞高速数据采集系统
随着人们生活水平的提高,公路上的私家车辆也增多了,但随之带来的问题就是交通事故发生率居高不下,严重危害着人们的生命安全。文中就如何预防交通事故发生,研究设计一种响应迅速、高可靠性并且经济实用的汽车防擅报警设备。该设备在设计过程中的关键任务是利用置于汽车车头左右两端的双路通道高速采集激光雷达回波信号并对其进行实时存储和处理,进而快速测量自身交通工具与障碍物之间的距离及相对速度。 1 系统概述 对用于高速公路中的雷达系统而言,考虑到开车的速度比较快,对于一些突发事件无法立刻做出响应,因此就要求设计的防撞雷达探测距离尽量长些,可让驾驶员提前做好安全准备工作,因此这种高速公路防撞系统一般选用激光探测法。采用激光测距的汽车防撞系统结
[嵌入式]
基于DSP和<font color='red'>FPGA</font>的汽车防撞高速数据采集系统
XScale PXA270在Linux下的FPGA设备驱动
引言 Intel公司推出的XScale采用ARM V5TE结构,是Strong ARM的升级换代产品。XScale PXA270处理器最高主频可达到624M赫兹,加入了Wireless MMX、Intel SpeedStep等新技术,以其高性能、低功耗、多功能等特点在信息家电、工业控制等领域得到了广泛的应用。在嵌入式控制中,“微处理器+FPGA”是一种常用的解决方案,FPGA(现场可编程门阵列)有编程方便、集成度高、速度快等特点,电子设计人员可以通过硬件编程的方法来实现FPGA芯片各种功能的开发,在我们的一个数控平台的研究项目中,采用XScale PXA270作为主CPU,并对其进行FPGA扩展,使其具有插补、电机驱动、信号处
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved