基于NiosII软核的嵌入式网络通信电路设计
2015-10-22王勇等
王勇等
【摘 要】越来越多的基于NiosII软核的嵌入式系统,采用以太网通信方式进行数据传递。ENC28J60是一种高集成度的以太网接口芯片,内置了10 Mbps以太网物理层器件、媒体访问控制器,以及SPI串行接口,十分适合嵌入式系统的网络通信。主要介绍了ENC28J60的内部构成、基于NiosII的网络通信电路的软硬件设计,以及电路调试过程。
【关键词】NiosII;网络通信;ENC28J60;嵌入式系统
0 引言
以太网接口具有兼容性好、传输速度高等优点,在计算机通信中使用广泛。基于Nios软核的嵌入式系统在航空航天、武器装备、工业生产等领域应用普遍。嵌入式系统与现有互联网通常采用以太网连接方式,因此采用FPGA技术,调用NiosII软核处理器,通过该处理器对通信芯片ENC28J60进行控制,实现嵌入式网络通信是必要的。
1 ENC28J60芯片功能及内部构成
ENC28J60是Microchip推出的一款集成有SPI串行接口的以太网控制器,由于它引脚数少、成本低、高效易用,所以常常用于嵌入式以太网解决方案中。ENC28J60只有28个引脚,其物理层和数据联络层的MAC子层符合IEEE 802.3规范,内部有DMA模块,可实现数据的快速吞吐。ENC28J60芯片内部由7部分模块构成:(1)SPI总线接口:用于实现ENC28J60和主控制器的通信,主要由移位寄存器,波特率发生器,数据缓冲区构成;(2)总线接口:连接控制寄存器和SPI电路,负责解析SPI接收的数据和命令;(3)控制寄存器:包括EIR、EIE、ECON1、ECON2等寄存器,通过对它们的设置,可以对ENC28J60的工作情况进行监视和控制;(4)RAM双口缓冲器:对数据包进行发送和接收。(5)判优器:对RAM缓冲器进行访问控制,对DMA、接受和发送请求应答;(6)MAC模块:介质访问控制,能够控制与物理层连接的物理介质;(7)PHY模块:作为物理层模块,能够对双绞线上的模拟信号进行编码/译码。
2 基于NiosII的硬件设计
系统硬件结构如图1所示,NiosII是一个可配置的通用32位嵌入式处理器,以软核形式实现,具有高度的可配置性和灵活性。NiosII软核处理器的构建如下:⑴新建quartus工程和原理图文件,点击运行SOPC builder,在弹出的窗口中新建一个CPU核;⑵建立SDRAM模块,在SOPC Builder下的SDRAM选项将数据宽度调整到16bit,因为设计使用的SDRAM芯片是16位的;⑶建立EPCS控制器,将flash下的EPCS Serial flash controller添加进软核;⑷添加JTAG UART,用于软件调试。上述过程完成后,一个基本的NiosII处理器就完成了构建。然后需要对软核处理器进行设置,完成后进行编译,编译成功后返回原理图编辑页面,调出NiosII处理器放置在设计界面上。
接下来为Nios处理器添加SPI外设接口和PLL模块:⑴双击新建的NiosII处理器元件进入SOPC Builder 界面,选择SPI接口模块;确定SPI时钟速率为10Mhz,数据宽度为8bit;构建两个PIO,一个作为SPI的CS口,一个作为中断口。⑵PLL为锁相环模块,它具有倍频的功能,因为内嵌CPU和SDRAM的运行时钟为100Mhz,而FPGA的板载时钟为50Mhz,所以需要添加PLL模块对板载时钟进行2倍频。
2 软件设计与调试结果
软件设计主要包括:(1)主程序编写:主要是对ENC28J60初始化程序和服务程序的调用,先定义一个数组,把6个字节的MAC地址添加进去,调用ENC28J60的初始化程序,再调用服务程序即可实现以太网通信。(2)ENC28J60初始化程序的编写:将CS片选信号置高电平,软件复位;对缓冲区初始化,主要是对接收和发送缓冲起始地址、末尾地址以及接收/发送指针指向地址的设置;对接收过滤器的设置,主要是将与设置的MAC地址不匹配的数据丢弃,校验使能,格式是否匹配的配置等;MAC初始化:接收使能,暂停接收、发送控制帧使能,使能流量控制,自动填充CRC配置,全双工的配置;最大帧设置,MAC地址的写入,以及对数据包的发送和读写操作。(3)写服务程序的编写:首先是对IP、ARP、UDP、TCP的初始化,并把目标MAC地址、IP地址、端口号进行输出在控制台上显示。IP层的初始化主要包括判断是否接收到有效的数据包,等待下一个数据包,对tcp、udp端口的设置并进行监听,这些函数都是从ip_arp_udp_tcp.c文件中调用的,而该文件程序可以根据参考LwIP协议进行编写。程序写好后则对工程进行整体编译,然后进行程序下载。
在进行功能调试过程中下载口选择JTAG,因为AS下载口是把程序固化到配置芯片中。将编译好的.sof文件通过JTAG口下载到FPGA芯片中,用网络交叉线连接PC机和所设计好的嵌入式系统,通过控制台可以看到,连接成功并显示目标主机的MAC地址、IP地址、TCP端口号。打开TCP&UDP测试工具软件,构建服务器,根据Nios II IDE控制台得到的目标主机IP地址和端口号,进行测试参数设置,完成后点击连接。发送多字节数据给目标主机,完成后根据嵌入式系统内部的软件服务程序,对接收到的数据进行识别和回发。实验结果证明,嵌入式系统的网络通信功能工作稳定。
3 结论
网络通信芯ENC28J60内部集成了SPI接口电路,可以进行高速、全双工、同步通信。同时,该芯片内部还集成了DMA 模块, 可以实现数据的快速吞吐。NiosII技术具有编程灵活,集成度高、可移植性强等特点,广泛应用于现代电子系统设计。把以太网和NiosII软核技术结合在一起,可以设计出通信速度高、性能稳定、外形小巧的网路通信电路,从而有效解决嵌入式系统的网络接入难题。
【参考文献】
[1]陈奎,吴爱国,等.用ENC28J60和FPGA设计通用以太网控制器[J].电子产品世界,2005(21):94-95.
[2]张海平,刘伟,等.基于FPGA的SPI串行接口实时以太网实现[J].电子世界,2013(6):141-142.
[责任编辑:曹明明]