1 引言
随着以太网在工业控制领域得到大规模应用,嵌入式的工业以太网系统也越来越多的渗入到了工业控制领域。以Motorola ColdFire微处理器和ARM处理器为硬件平台的嵌入式工业以太网系统已经有大量文献报道。
以上这些系统的开发平台并不完全针对工业以太网的应用情况,因为芯片设计公司并不完全熟悉工业以太网的需要。因此在实际应用当中经常出现硬件资源浪费或者资源不够的问题,并且开发系统往往需外接PLD芯片来进行外围器件的逻辑控制,存在接口速率的瓶颈问题。SOPC技术能解决这个难题。
2 SOPC技术
可编程片上系统(SOPC)是一种特殊的嵌入式系统:首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
2.1 SOPC
SOPC 结合了SOC和FPGA各自的优点,实际上涵盖了嵌入式系统设计技术的全部内容,除了以处理器和实时多任务操作系统(RTOS)为中心的软件设计技术、以 PCB和信号完整性分析为基础的高速电路设计技术以外,SOPC还涉及目前以引起普遍关注的软硬件协同设计技术。由于SOPC的主要逻辑设计是在可编程逻辑器件内部进行,而BGA封装已被广泛应用在微封装领域中,传统的调试设备,如:逻辑分析仪和数字示波器,已很难进行直接测试分析,因此,必将对以仿真技术为基础的软硬件协同设计技术提出更高的要求。同时,新的调试技术也已不断涌现出来,如Altera公司的嵌入式逻辑分析仪SignalTappII就是一种片内实时调试工具;而在应对复杂设计方面,诸如Altera公司的DSP Builader就是一个利用可编程硬件逻辑实现数字信号处理算法的强大辅助工具。
2.2 NIOS
NIOS 是Altera公司以RISC为基础的可配置、可裁减软核处理器[2]。它具有16位指令集和16/32位数据通路,通过将包括16或32位高性能处理器在内的多种应用模块嵌入到通用FPGA/CPLD内,实现完全可配置的嵌入式系统。Nios软核处理器主要特性包括:高效灵活的处理器模块,可以通过软件配置成16位或32位的中央处理单元,并可选择不同的内部存储器大小,其最高执行速度可达50MHz;具有多种其它功能模块的选择(SDRAM控制器、 UART控制器、PCI接口模块、LCD接口模块、MAC接口模块等多种功能模块);具有完整、廉价、便捷的开发系统。所有开发(包括设计、调试)均通过软件进行,不再需要专门的硬件仿真器和编程器, 大大减少了开发设备的成本。
NIOS将CPU与PLD的功能集于一身,既简化了电路板设计,又不存在接口速率的瓶颈问题,使整个系统在一块芯片上就可以完成。
3 硬件设计
控制器的硬件设计流程就是为了定制合适的CPU和外设,在 SOPC Builder和QuartusII中完成。在这里可以灵活定制NIOS CPU的各个特性甚至指令,可以使用Altera提供的大量的IP Core来加快开发者开发NIOS外设的速度,提高外设的性能,也可以使用第三方的IP Core,或者使用VHDL、Verilog来自己定制外设。
嵌入式工业以太网控制器的硬件分为三个部分:FPGA部分、存储器部分和外围元件部分如图1所示。本文选用的是FPGA是CYCLONE EP1C6。FPGA部分是建立在FPGA上的,核心是NIOS CPU Core,我们需要在SOPC Builder中需要设计的就是FPGA部分。要建的NIOS系统包含的元件模块有:一个NIOS CPU核;用于连接NIOS核的Avalon总线控制器,一个存放启动和调试程序的内部存储器Boot ROM、一个UART串行通信电路模块(RS-232核)、一个内部定时器和一些通用IO外围接口模块。为使NIOS系统正常工作,在FPGA外围必须接有一个RS-232通信口、RJ45、几个发光管和数码管以及16M SRAM和4M Flash ROM。
图1 SOPC工业以太网控制器硬件结构
4 软件设计
完成NIOS的硬件开发后,SOPC Builder可以帮助开发者生成相应的SDK(软件开发包)。这是由于在硬件开发中的NIOS CPU及其外设构成的系统是自定制的,存储器、外设地址的映射等都各不相同,需要的SDK也应是专有的,SOPC Builder能够自动生成SDK。
在生成的SDK基础之上,进入软件开发流程,在这个部分,开发几乎与通常的嵌入式系统的开发没有区别,唯一的不同只在于,嵌入式系统是自己定制的、裁剪过的,受到硬件的局限小一些。
控制器的操作系统考虑到性价比以及现场控制需要,采用了uClinux。uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码,其是专门为控制领域而裁减设计的嵌入式操作系统。
uClinux 从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性[5]。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器。它通常用于具有很少内存或Flash的嵌入式系统。
在GNU通用公共许可证(GNU GPL)的保证下,运行uClinux操作系统的用户可以使用几乎所有的Linux API函数,不会因为没有MMU而受到影响。由于uClinux在标准的Linux基础上进行了适当的裁剪和优化,形成了一个高度优化的、代码紧凑的嵌入式Linux,虽然它的体积很小,uClinux仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。在开发应用程序之前,先将uClinux移植到NIOS处理器中来。
特别的为了应用到工业实时领域,本文进一步增强uClinux的实时性。
整个嵌入式工业以太网控制器具有以下特点:
控制器具有很高的灵活性。这是本文设计的以太网控制器的最大特点。由于微处理器采用Altera公司的NIOS,使得系统资源能够灵活调配,并且克服了采用其它处理器中存在的接口速率瓶颈的缺点,适应工业以太网实时数据的要求。
控制器具有很高的集成度。由于NIOS具有丰富的接口资源,而uClinux裁减后体积非常小,而且具备以太网功能,这样可以很容易实现控制器的微型化、Internet化;
控制器具有很高的实时性。在设计硬件和软件时都充分考虑了系统的实时性。硬件设计中采用了高速的A/D(500khz)和多路D/A输出,使得关键信号能及时采样和输出,保证了“硬实时”;操作系统中加入了RTlinux模块,保证了“软实时”。
5 实际应用
针对某企业生产现场需要,将该型控制器应用到基于以太网的控制系统中。针对现场对网络可靠性参数的严格要求,在控制层网络改进传统以太网拓扑结构。采用环形网络拓扑,可以增加网络的可靠性。
而解决网络的实时性问题则采用了控制区域(Control Domain)概念,将控制现场分区,减少各个控制区资源竞争的情况。而控制区域之间的是通过交换式以太网交换机来通信。
每个控制区域(Control Domain)包含以太网交换机和嵌入式的工业以太网控制器,以及一些变送器和执行机构。如图2所示。该系统具有如下特点:
图2 设备层网络结构
(1) 灵活性。由于控制器采用了NIOS微处理器,能够灵活配置处理器的硬件资源,克服了接口数据传输速率的瓶颈,利用SOPC技术,系统硬件、软件的设计和调试都十分方便。
(2) 可靠性。控制系统的网络拓扑采用环形架构,大大增强了骨干网的可靠性。在控制网络层,通过划分控制区域,分散了控制风险;而在控制区域内部采用嵌入式的工业以太网控制器,集中控制整个控制区域,降低了控制成本。实践证明这种分散结合集中的控制结构是十分有效的。
(3) 实时性。通过划分控制区域,各个控制区域通过交换机连入骨干网,而每个控制区域内的变送和执行结构的信息都不会占用骨干网络资源。这样,每个控制区域的网络负载可以降到很低的程度(<5%)。提高了网络的实时性。嵌入式工业以太网控制器的硬件和软件设计均考虑了实时性要求,这样在网络层下进一步提升了系统的实时性。
6 结论
本文对嵌入式工业以太网控制器进行了开发研究,提出用SOPC技术来解决控制器硬件设计中存在的接口速率瓶颈问题,提高了控制器的实时性,应用实验结果表明该系统运行稳定可靠。