0 导言
跟着CPU功用的大幅度提高,嵌入式体系的规划现已进入了更广泛的范畴。跟着FPGA的不断开展和规划的进一步强壮,SOPC的运用也越来越广泛。因为SOPC的可编程特性很受嵌入式体系开发人员的喜爱,因而,跟着信息产业和微电子技能的开展,可编程嵌入式体系规划现已成为信息产业最抢手的技能之一,FPGA正以各种电子产品的办法进入人们日常日子的各个旮旯。
以太网以其杰出的通用性和带宽功用成为新一代工业操控网络的焦点,现在,关于嵌入式以太网的规划计划大部分是依据单片机的。因为单片机的速度慢,而FPCA作为一种特别的嵌入式微处理器体系,则具有快速处理数据的才能。因而,在嵌入式网络设备中引进FPGA技能,能够使嵌入式以太网的速度更快。为此,本文介绍依据FPGA的嵌入式体系与LAN91C111型自适应10Mb/100Mb嵌入式以太网的接口电路与完结办法。
1 硬件规划
1.1 FPGA的特色
本体系的主控芯片选用ALTERA公司CycloneII系列的EP2C35F484。FPGA内部集成有锁相环,能够把外部时钟倍频,其间心频率能够到几百兆,一起具有丰厚的IO资源,能够便利衔接外设。FPGA的并行履行程序办法具有处理更杂乱功用的才能,并且内部嵌有SOPC和DSP。可编程SOPC是一种特别的嵌入式体系,具有灵敏的规划办法,并且可裁剪、可扩大,一起软硬件在体系可编程功用。
1.2 嵌入式以太网操控器LAN91C111
以太网操控芯片所选用的SMSC公司LAN91C111芯片是专门用于嵌入式产品的10M/100M第三代快速以太网操控器。该器材具有可编程、CRC校验、同步或异步作业办法,且具有低功耗CMOS规划和小尺度等特色,是规划嵌入式以太网网络接口的杰出挑选。LAN91C111的原理框图如图1所示。
LAN91C111集成了CSMA/CD(带磕碰的载波侦听多路接入)协议的MAC(媒体层)和PHY(物理层)。其首要特色是支撑IEEE802.3/802 U以太网规范、自适应10M/100M,全双工/半双工收发办法、有8KB的片上FIFO存储器、支撑8位或16位或32位总线办法、支撑先进的传输行列办理、有串行EEPROM挑选性装备口、并支撑突发数据传输、支撑全双工交换式以太网、增强式能量办理功用和低功耗的CMOS规划。
总线接口模块是由数据总线、地址总线、操控总线以8位、16位、或32位办法与外部数据进行交互。LAN91C111以太网操控器遵从IEEE公布的802.3以太网传输协议,内部集成有8KB的RAM,可经过内部的内存办理模块、裁定模块和DMA一起办理数据包的发送与接纳。其裁定器监督以太网总线的数据沟通,一旦产生堵塞。裁定器一方面经过总线接口单元与外部CPU联络;一方面操控内存操控单元,完结总线的数据和谐。LAN91C111内部的RAM能够缓存数据,在全双工作业办法下,数据传输速率可到达10M/100Mbps。一切内部寄存器的初始值均放在EEPROM中,自举时可完结主动初始化。在数据传输进程中,若以10Mbps速率传输,则可选用Manchester编码,并以两层曼彻斯特替代三电平,且没有扰频器宽和扰频器;若以100Mbps速率传输,则先将发送到RAM中的数据包以包号的办法存放在FIFO的发送行列中,然后依照规矩逐一将数据包发送到PHY模块进行4B-5B编码,发送数据端可将经过扰频器收拾后的4B-5B数据包变换成MLT-3后输出。而在接纳时,则将数据包仿制并发送到解扰频器进行收拾,然后再发送到4B-5B解码器进行解码。
1.3 硬件衔接
本规划在FPGA芯片EP2C35中嵌入了32位的NIOS II处理器。因为LAN91C111是专为嵌入式体系规划的,因而其外围电路相对比较简单。图2所示是其硬件衔接图,图中的地址线、数据线、操控线别离与FPGA相连。因为选用的是16位数据传输办法,因而只用到数据总线的低16位。操控线中的AEN为片选信号,INTR0为外部中止信号,WR为读写信号,BE0-BE1为字节挑选端。LAN91C111中的ADS、LCLK、CYCLE、W/R、RDYR-TN信号应均加一个1kΩ的上拉电阻。TG10o-S050N2是以太网的变压滤波器。TX+、TX-、RX+、RX-别离与LAN91C111的TPO+、TPO-、TPI+、YPI-相连。TG100-S050N2的CMT端也应接一个1kΩ的上拉电阻。RJ45的TD+、TD-、RD+、RD-别离与TG100-S050N2的TD4+、TD-、RD+、RD-相连。在TG100-S050N2的TCT和RCT亦应别离接一个75Ω的电阻和1nF的滤波电容。这样即可在操控线的效果下完结FPGA与LAN91C111之间的数据通信。
2 软件规划
ALTERA公司供给的硬件笼统层(HAL)中封装了体系中硬件的相关细节和驱动程序,用户可在HAL的根底上便利地开发存储等运用程序。
NIOSⅡIDE环境中集成有μCOS II和LWIP,其间LWIP有必要在μCOS的支撑下运用。μC/OSⅡ是一种免费揭露源代码,结构细巧,并且具有可掠夺
实时内核的操作体系,它可移植、可裁剪,最多可办理64个使命,其每个使命都具有自己独立的仓库,大部分源码可运用ANSI C言语编写,整个软件部分可在NIOS II IDE开发环境下完结。因为程序的内容较多,本文侧重介绍LAN91C111的初始化、发送数据、接纳数据三个部分的软件规划办法。
2.1 初始化
ALTERA供给有LWIP的NIOS II端口,其源代码包含在NIOS II开发工具包中。LWIP可为NIOS II处理器供给对以太网衔接栈的快速、开源
地拜访。ALTERA的LWIP端口包含套接字API封装,供给有规范的、文档阐明完全的套接字API。LWIP协议栈的首要接口是规范的套接字接口。
除了套接字接口以外,还可调用lwip_stack_init()函数和lwip_devices_init()函数来对仓库和驱动程序初始化。经过HAL体系代码可调用
init_done_func()、get_mac_addr()和get_ip_addr()函数来设置MAC地址和IP地址。为了初始化仓库,在调用OSStart发动μC/OS II调度程序之前应调用函数lwip_stack_init(),其原型为voidlwip_stack_init( int thread_prio, void(*init_done_func)(void*),void*arg)。仓库初始化后,还有必要调用函数init_done_func(),而该函数有必要调用函数lwip_devices_init()。运用函数lwip_devices_init()能够对在system.h中界说的一切已装置的以太网设备驱动程序进行注册,若回来一个非0值则表明注册成功。注册成功后,TCP/IP栈即可运用,之后便可在程序中创立使命。该函数的参数是接纳线程的优先级。LWIP体系码在设备初始化进程中,可经过lwip_devices_init()函数调用函数get_mac_addr()和get_ip_addr()。用户经过编写这些函数,可在体系中将MAC和IP地址存放在恣意方位,然后替代在设备驱动程序中固定方位的硬编码,并增加体系的灵敏性。设计时,能够将MAC地址存放在Flash存储器中,也能够将MAC地址存放在片上内嵌的存储器中。当一切的初始化都准备好后即可调用OSStart()以发动RTOS进行使命调度。这个进程需求设置以太网意图地址、以太网源地址、协议类型,然后再依照所设置的协议类型来设置数据包。
2.2 数据的发送和接纳
数据的接纳和发送可选用中止办法。中止服务程序经过查看LAN91C111的中止状况寄存器来判别是发送中止请求仍是接纳中止请求。初始化完结后,即可创立使命,树立套接字,绑定端口,绑定完之后,再监听端口。当LAN91C111接纳到数据包时,可由EPH模块观察此数据包的意图地址,若为本网卡的MAC地址或播送地址或多播地址,则把此数据包传送到LAN91C111的RAM中,并向处理器发送中止,由处理器进行数据处理。因为选用的是TCP/IP协议,接纳数据应调用read()函数来接纳树立衔接的套接字中的数据,并将其放入缓冲区。发送进程则是由FPGA将数据传送到LAN91C111,再由LAN91C111将接纳到的数据封装成数据包,并检测网络,当没有数据传输时,再将数据包传输到网络中,并向处理器发送中止信号,以表明数据传送结束。发送数据时经过调用write()函数可即将发送的数据发送到指定衔接的意图地址。
3 结束语
本文的整个规划运用了逻辑单元(LE)5314个,占用EP2C35F484芯片内部资源的16%,这充分表现了FPGA资源的丰厚性。在传统规划中,一般选用单片机和低速网卡的规划计划,这在实践运用中,网络速度相对较慢,而本规划中选用高速的以太网操控芯片LAN91C111和高速的FPGA,极大地提高了体系的网络数据处理才能,并可满意网络数据收集的需求。别的,依据FPGA的NIOSⅡ计划,还可依据实践需求增加不同IP,这也表现了SOPC的灵敏性与可削减性。