SOPC技术在EPA现场控制器的设计与解析

时间:2011-08-28

  引言

  随着以太网技术的飞速发展,工业以太网渐渐成为自动化控制系统里主流的高速率的通信方式,工业以太网技术已经成为一个独立发展的分支。EPA是我国个拥有自主知识产权、并被国际标准化组织接收和采用的工业自动化标准。该标准是一种基于以太网、无线局域网、蓝牙等信息网络通信技术的,适用于工业自动化控制系统装置与仪器仪表间、工业自动化仪器仪表相互间数据通信的工业控制网络通信标准。

  以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术,并以10M/S的速率运行在多种类型的电缆上。以太网与IEEE802·3系列标准相类似。

  大量的EPA现场设备都是通过加装EPA通信卡来进行通信,该通信卡的处理器多数采用ARM核。近年来,随着半导体技术的飞速发展,传统的芯片设计方法正在进行一场革命,其标志就是系统芯片(SoC)被业界广泛接受,并成为研究和开发的热点。随着SoC技术应运而生的是SOPC 技术。它结合了SoC和FPGA的优点,可裁减、可扩充、可升级,并具备软硬件在系统中可编程的功能。SOPC能够提供更好的性能以及更低的功耗,有效节省电路板空间并降低产品的总成本,电子工业正逐渐向SOPC设计转移,使SOPC成为现代电子系统的选择之一。在充分研究EPA网络通信和SOPC技术的基础上,开发了一种基于SOPC技术的EPA控制器。

 


图1基于FPGA的EPA控制器的硬件结构框图

  SOPC技术

  SOPC技术是美国Altera公司于2000年早提出的,并同时推出了相应的开发软件Quartus II.SOPC是基于FPGA解决方案的SoC,与ASIC的SoC解决方案相比,SOPC系统及其开发技术具有更多的特色,并具备以下的基本特征:至少包含一个以上的嵌入式处理器IP核;具有小容量片内高速RAM资源;丰富的IP核资源可供灵活选择;有足够的片上可编程逻辑资源;处理器调试接口和FPGA编程接口共用或并存;可包含部分可编程模拟电路;单芯片、低功耗。

  System-on-a-Programmable-Chip,即可编程片上系统。 用可编程逻辑技术把整个系统放到一块硅片上,称作SOPC.可编程片上系统(SOPC)是一种特殊的嵌入式系统:首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。SOPC设计技术涵盖了嵌入式系统设计技术的全部内容,除了以处理器和实时多任务操作系统(RTOS)为中心的软件设计技术、以PCB和信号完整性分析为基础的高速电路设计技术以外,SOPC还涉及目前以引起普遍关注的软硬件协同设计技术。由于SOPC的主要逻辑设计是在可编程逻辑器件内部进行,而BGA封装已被广泛应用在微封装领域中,传统的调试设备,如:逻辑分析仪和数字示波器,已很难进行直接测试分析,因此,必将对以仿真技术为基础的软硬件协同设计技术提出更高的要求。同时,新的调试技术也已不断涌现出来,如Xilinx公司的片内逻辑分析仪Chip Scope ILA就是一种价廉物美的片内实时调试工具。

  SOPC是一种新的系统设计技术,也是一种新的软硬件综合设计技术。通过它,可以很快地将硬件系统(包括微处理器,存储器,外设以及用户逻辑电路等)和软件设计都放在一个可编程的FPGA芯片中,以达到系统的IC设计。这种设计方式,具有开发周期短以及系统可修改等优点。设计完成的SOPC可以通过HARDCOPY转为ASIC芯片,从而可以实现快速量产。

  FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及个模块之间或模块与I/O间的连接方式,并终决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并终决定了FPGA所能实现的功能, FPGA允许无限次的编程。

  ASIC分为全定制和半定制。全定制设计需要设计者完成所有电路的设计,因此需要大量人力物力,灵活性好但开发效率低下。如果设计较为理想,全定制能够比半定制的ASIC芯片运行速度更快。半定制使用库里的标准逻辑单元(Standard Cell),设计时可以从标准逻辑单元库中选择SSI(门电路)、MSI(如加法器、比较器等)、数据通路(如ALU、存储器、总线等)、存储器甚至系统级模块(如乘法器、微控制器等)和IP核,这些逻辑单元已经布局完毕,而且设计得较为可靠,设计者可以较方便地完成系统设计。

  EPA现场控制器设计

  针对控制系统中连接管理网、控制网和现场设备单元的要求,采用SOPC技术、现场总线技术和自动控制技术,设计一种适用于EPA工业以太网的控制器,并在其可编辑软核的CPU处理器上实现了实时操作系统及EPA通信协议栈。该EPA现场控制器可实现实时控制信息的输入输出,并对以太网上的其他的EPA设备进行监控、显示和故障报警。

  EPA是Ethernet for Plant Automation的缩写,它是Ethernet、TCP/IP等商用计算机通信领域的主流技术直接应用于工业控制现场设备间的通信,并在此基础上,建立的应用于工业现场设备间通信的开放网络通信平台。

  EPA即是建立在此基础上的工业现场设备开放网络平台,通过该平台,不仅可以使工业现场设备(如现场控制器、变送器、执行机构等)实现基于以太网的通信,而且可以使工业现场设备层网络不游离于主流通信技术之外,并与主流通信技术同步发展,同时,用以太网现场设备层到控制层、管理层等所有层次网络的"E网到底",实现工业企业综合自动化系统各层次的信息无缝集成,推动工业企业的技术改造和提升、加快信息化改造进程。

  EPA现场控制器的硬件设计总体方案

  图1是EPA现场控制器的硬件系统结构框图。整个设计中,硬件上实现EP1C12Q240C8芯片、LAN91C111芯片的外围接口电路的设计;实现了串口通信和网络通信的设计;实现了复位电路、JTAG、时钟电路、电源电路的设计;实现了键盘电路、LCD显示电路、蜂鸣器报警电路的设计;实现了HY57V641620芯片、AM29LV160芯片外围电路的设计,拓展了丰富的存储器资源,可移植linux、windows CE操作系统等;拓展了总线接口,可以根据工业现场的实际需要接入相应的板卡(如DI/DO模块、AI/AO模块,实现与现场数据之间的数模、模数转换、拓展MMC存储卡,拓展其存储容量等)。

  在设计时,考虑到由于该控制器的结构、功能较为复杂,涉及到的器件种类较多。所以在设计时,将硬件板卡分为两部分来做。部分:CPU处理模块,包含CPU处理器EP1C12Q240C8、存储器(FLASH、SDRAM)、电源部分、时钟源、JTAG、EPCS口和复位电路。第二部分:通信处理模块,包含网络通信(LAN91C111网卡芯片和RJ45)、串口通信(MAX3232)、LCD接口、键盘接口和蜂鸣器。

 


图2 芯片系统结构框图
  基于SOPC技术的CPU处理模块

  整个方案的实现是以接入实时工业以太网络为目的,在芯片内部实现部分EPA协议,同时控制器实现对工业以太网上的其他设备的监控、显示及数据分析。设计中采用Altera公司的新一代低成本的FPGA芯片EP1C12Q240C8芯片,该芯片包含有12060LE(逻辑单元),可根据实际需要,配置其NIOSⅡCPU软核、与CPU相连的片内外设和存储器以及与片外存储器和片外设备相连的接口等。其芯片系统结构框图如图2所示。

  整个CPU处理器的硬软件设计均在Quartus II 5.1版本上实现。NIOSⅡ处理器核是Altera公司的第二代用户可配置的通用32位RISC软核微处理器,是Altera公司特有的基于FPGA架构的可配置的软CPU内核,其特性和外设可根据实际需要进行增加或剪裁。所有NIOSⅡ处理器系统使用统一的指令和编程模型,并有三种类型以满足不同设计的要求,分别是快速型、经济型和标准型。在本控制器中,所定制的NIOSⅡ软核选用快速型,该内核处理速度为49DMIPS,耗费的逻辑门数为1400~1800LE,同时带有硬件乘法器和硬件除法器。根据EPA网络对控制器的要求,添加与CPU相连的片内外设和片外设备接口:SDRAM控制器、片内RAM、三态桥、UART、定时器、通用I/O口、LCD显示驱动电路和以太网接口。按照设计要求,在Quartus II 5.1版本下的对CPU的配置情况如图3所示。FPGA芯片可根据实际需要灵活地增加功能,同样对不必要的功能也可进行删减,以满足快速、高效和低成本的设计。

  Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

  在配置完CPU处理器的内部结构以后,按照设计需要对CPU的外围进行配置。由于该控制器是接入EPA网络,需要实现EPA协议,而FPGA芯片EP1C12Q240C8的内部只有288K的RAM,所以在片外扩展了16M bits的FLASH-AM29LV160D和64M bits的SDRAM-HY57V641620的。从外部引入12V的直流电源,经过电平转换以后得到3.3V和1.5V的电源,为CPU、存储器及其他受电设备供电。CPU上的时钟源使用的是50MHz的钟振。JTAG和EPCS口用于硬软件的。将在Quartus Ⅱ上编辑的硬件程序和软件程序通过JTAG和EPCS口,到FLASH和RAM(片内或者片外)中,可进行在线调试。该复位电路是由10KW电阻、10mF电容和按键组成,可实现按键低电平复位和上电低电平复位。

 


图3 EP1C12Q240C8芯片配置情况
  通信处理模块

  整个设计以FPGA芯片EP1C12Q240C8为数据处理中心,通过网络通信,完成对工业以太网上的其他设备的数据通信,同时通过MAX3232实现和上位机的串口通信。在该模块中,加入了LCD接口、行列式键盘接口和蜂鸣器接口,对工业以太网上的其他EPA设备进行监控和显示,有较好的人机交互的功能。

  在该设计中,网络通信分为有线和无线两种通信方式。其中,有线网络通信使用的是10M/100M的LAN91C111的自适应网卡芯片,并通过RJ45网口接入EPA网络。LAN91C111是SMSC公司为嵌入式应用系统推出的第三代快速以太网控制器。LAN91C111的芯片上集成了遵循SMSC/CD协议的MAC(媒体层)和PHY(物理层),符合IEEE802.3/802.U-100Base-Tx/10Base-T规范。在本控制器上预留了蓝牙模块和ZigBee模块的无线通信接口,作为辅助处理模块。可根据工业现场的实际情况,接入无线通信模块,实现与EPA网络的无线通信,通过该模块能够监测无线现场设备的运行情况及相关参数。

  在整个EPA通信协议栈网络层和传输层接收报文处理流程中。NIOSⅡ处理器复位后初始化UC/OS Ⅱ操作系统、网络接口、堆栈以及定时器等外围设备接口。从外部存储器FLASH中获取IP地址和MAC地址等网络信息。当收到的报文IP地址和MAC地址都是本机地址时,把报文以LWIP所要求的特殊结构体形式存储在接收缓冲区中,然后发送到EPA协议栈中进行处理,当检查到UDP端口号是0x88BC时,将报文交由EPA应用层处理模块进行处理。

  其部分报文处理程序如下:

  /*报文发送*/

  void SendTask(void *pdata){

  struct netconn *conn;

  struct ip_addr remote_addr,local_addr;

  struct netbuf * buf;

  struct udp_pcb * udpbuf;

  struct pbuf * buf;

  char text[] = "A static test";

  /*设置远程主机的IP地址*/

  remote_addr.addr = htonl(0x8080023D);

  /*设置本地主机的IP地址*/

  local_addr.addr = htonl(0x80800233);

  for(;;){

  /*建立一个新连接*/

  conn = netconn_new(NETCONN_UDP);

  /*绑定本地IP地址和端口号*/

  netconn_bind(conn,&local_addr,0x88BC);

  /*连接远程主机*/

  netconn_connect(conn,&remote_addr,0x88BC);

  buf = netbuf_new();

  /*建立任意的数据*/

  netbuf_ref(buf,text,sizeof(text));

  netconn_send(conn,buf);

  netconn_delete(conn);

  netbuf_delete(buf);

  OSTimeDlyHMSM(0,0,1,0);

  buf = pbuf_alloc(PBUF_RAW, 60,

  PBUF_RAM);

  memcpy(buf->payload,text,

  sizeof(text));

  udpbuf = udp_new();

  udpbuf->local_port = 0x88bc;

  udpbuf->remote_port = 0x88bc;

  udpbuf->local_ip = local_addr;

  udpbuf->remote_ip = remote_addr;

  udp_bind(udpbuf, &udpbuf->local_ip,

  udpbuf->local_port);

  udp_sendto(udpbuf,buf,&remote_addr,udpbuf->remote_port);

  udp_remove(udpbuf); //释放

  udp_pcb内存

  pbuf_free(buf);

  OSTimeDlyHMSM(0,0,1,0);

  /* Main initializes lwIP, creates a single task and starts task scheduler. */

  void ReceiveTask(void * pdata){//该任务

  和IP协议栈相关,该任务由

  _sys_thread_new函数来创建

  struct netbuf * buf1,*buf2,*buf1_temp;

  struct netconn * conn1,*conn2;

  void * payload;

  u16_t len;

  struct ip_addr remote_addr,local_addr;

  char text[] = "I get a EPA packet,please

  give me another,I need you, baby.";

  remote_addr.addr = htonl

  (0x8080023D);

  local_addr.addr = htonl(0x80800233);

  conn1 = netconn_new(NETCONN_

  UDP);

  conn2 = netconn_new(NETCONN_

  UDP);

  netconn_bind(conn2, &local_addr, 0x88bc);

  netconn_connect(conn2,&remote_addr,

  0x88BC);

  netconn_bind(conn1, &local_addr, 0x88bc);

  while((buf1_temp = netconn_recv

  (conn1))!=NULL){

  //关于netbuf的结构可以参看api.h文件,在该结构体中,成员p是指向pbuf的一个指针

  buf1 = netbuf_new();

  buf1 = buf1_temp;

  payload = buf1->p->payload;

  len = buf1->p->len;

  netbuf_delete(buf1);

  buf2 = netbuf_new();

  netbuf_ref(buf2,text,sizeof(text));

  netconn_send(conn2,buf2);

  netbuf_delete(buf2);

 


图4 EPA协议栈接收报文处理流程图

  结语

  在完成整个设计,控制器接入EPA网络中能够正常运行。由于控制器中的处理器使用的是FPGA芯片,有较强的灵活性,能够进行编程、除错、再编程和重复操作,因而可以充分地进行设计开发和验证。当电路有少量改动时候,更凸现出其优势,其现场编程能力可以延长产品在市场上的寿命,可以用来系统升级,从而大大提高了控制器的性能。


  
上一篇:无线传感器网络在交通信息采集系统中的实现
下一篇:WinCC V6在制动器试验台高速数据归档与处理的应用

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料