APP下载

用F P G A实现以太网信号处理与互连

2010-04-09马冬冬刘宗福张光荣

科学之友 2010年22期
关键词:数据总线缓冲区以太网

马冬冬,刘宗福,张 掖,张光荣

(中国人民解放军92785部队,河北 秦皇岛 066200)

用F P G A实现以太网信号处理与互连

马冬冬,刘宗福,张 掖,张光荣

(中国人民解放军92785部队,河北 秦皇岛 066200)

采用可编程逻辑器件和以太网控制器相连接实现网络接口模块的设计。通过FPGA实现对以太网控制器的信号控制和网络数据收发、缓存等。重点介绍了FPGA对以太网总线的处理和数据缓冲区的设计,并给出了以太网总线的处理方法,异步数据传输的原理和实现方法。结果在EP1C6中予以实现,获得了良好的实验效果。

以太网;网络接口;FPGA

网络设备的基本功能是实现网络通信业务流的控制和转发,处于网络边缘的设备需要将来自不同物理链路的各种业务流复用到统一的传输链路上。随着传输线速的高速增长和网络应用需求的灵活多变,FPGA技术的进步为此提供了坚实的基础。FPGA和以太网控制器组成的系统架构,同时具有通用处理器的灵活性和ASIC的高速处理的能力。FPGA完成了大部分硬件功能,从功能需求和可持续开发的角度出发,采用 Altera的Cyclone系列FPGA芯片EP1C6,提供了丰富的逻辑门和存储单元。将以太网驱动、信号处理、FIFO等模块全部集成进去,从而降低了硬件实现难度,节约了系统成本。本文设计了高效的时序逻辑电路,采用Quartus II软件对电路进行了仿真试验,并予以实现。以太网控制器完全遵循IEEE802.3标准。

1 以太网总线的处理

以太网控制器采用isa总线,它是一种可以很容易低于其他同步、异步总线相接的一种简单异步总线。具有独立的地址、数据和控制总线来进行读和写。/SBHE、/IOW、/IOR等控制信号线实现对以太网控制器的工作方式控制和读写操作。双向数据线用于在以太网控制器和FPGA间传递数据;地址总线用于解析访问以太网控制器的I/O和存储器空间。FPGA通过控制信号配合地址总线和数据总线访问内部寄存器。地址总线是只写的,而数据总线是可读写的,此时,在QUARTUS中采用inout的形式不仅繁琐而且容易出错。如何正确的对数据总线进行处理,而不会产生读写冲突,本文提供了一种简单高效的总线读写方法,并通过以太网驱动实现对以太网控制器的16位I/O操作,[1]对网络数据进行实时获取与传输。图 1为整体实现原理图。图1中采用一个双向总线处理逻辑lpm_bustri0实现了以太网控制器SD[15..0]数据总线的读写。rwDir为双向制动开关,作为数据总线读写的通道,将 rwDir自身和它经过非门后的信号线分别连接到逻辑门的两个控制端子。当rwDir为1时,SD[15..0]为输入,实现了以太网模块的数据读操作;当 rwDir为0时,SD[15..0]为输出,实现了以太网模块的数据写操作。

2 异步数据的处理

TCP/IP协议栈的主要工作就是数据的打包和解包,这些工作都是在系统的内存中进行的。当数据在层与层之间传递时,数据缓冲区的分配、拷贝与释放需要频繁的进行。缓冲区的设计是硬件模式,设计起来相对于软件较为简单,需要设置好相应的时钟和控制信号。数据缓冲区的操作与协议栈结构无关,仅与缓冲区本身的结构有关,因此好的缓冲区结构设计对于TCP/IP协议栈的性能至关重要。

如何设计异步时钟之间的接口电路。[2]异步FIFO(First In First Out)是解决这个问题的一种简便、快捷的方案。FIFO的存储介质为一块双端口RAM,可以同时进行读写操作。它是一种先进先出的电路,使用在需要产生实时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。异步 FIFO单元接口关系如图1中lpm_fifo_dc0所示。

该FIFO支持的最大位宽是256bits,存储器的深度最高可达131 072words。位宽和深度可以根据用户的需要自己设置。在本设计中根据数据总线的位宽选为 16bits,深度选择的是1 024words,因为网络数据帧最大长度为1 518字节。data[15..0]为输入数据。rdreg、w rreg分别为读使能信号和写使能信号,只有在它们有效时能够进行读写操作,两者皆为高电平有效。rdclk,w rclk为读写时钟,它们控制读写操作,对异步FIFO来说,读写时钟不要求相位匹配和同步。在调用该单元的时候,它的某些管脚是可选可不选的,因需要而定。[3]

图1 以太网控制器实现原理图

图2 读取FIFO状态机

用FIFO进行数据读写时的情况如图2所示,进行数据通信时读写速率不同,在发送端写速率大于读速率,读写用不同时钟。为了及时发现并采取有效措施改善代码调试中出现的问题,引入Signal Tap II Logic Analyzer逻辑分析工具来实时跟踪当前各个状态变量的情况。经过反复实验,我们得到正确的实时捕获数据。

对于写速率大于读速率的情况,用状态机描述了 FIFO读取过程,见图2。

3 结论

本文通过FPGA实现了以太网数据的控制和转发,给出了以太网总线的处理方法,异步数据传输的原理和实现方法,用Verilog-HAL语言进行了数字化描述。描述结果在EP1C6中予以实现,获得了良好的实验效果。

1 陈 鹏、张爱民等.基于以太网控制器CS8900A 实现嵌入式系统的网络互连[J].计算机应用,2002(12):4~6

2 Altera Corporation. Single And Dual Clock FIFO Mega function, 2007.5

3 陈明义.高速大容量FIFO的设计[J].电子科技,2008(6)

Using FPGA to Achieve Signal Processing and Interconnection of Ethernet

Ma Dongdong, Liu Zongfu, Zhang Ye, Zhang Guangrong

Through combining the programmable logic device and Ethernet controllers, the network interface module’s design can be achieved. FPGA is used to complete signal control of Ethernet controller, network data transceiver and caching. This article highlights on FPGA’s processing to Ethernet bus and the design of the data buffer, and gives the approach to Ethernet bus, the principle of asynchronous data transfer and implementing methods. Results are to be achieved in EP1C6, and obtained good experimental results.

Ethernet; network interface; FPGA

TN911.7

A

1000-8136(2010)33-0153-02

猜你喜欢

数据总线缓冲区以太网
串行连续生产线的可用度与缓冲库存控制研究*
基于ARC的闪存数据库缓冲区算法①
智能电网调度控制系统中的数据总线技术研究
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代
谈实时以太网EtherCAT技术在变电站自动化中的应用
基于ASP.NETSignalR的实时Web功能的实现
现场总线技术在电厂自动化控制中的应用
初涉缓冲区
途安车数据总线诊断接口故障