ARM7与FPGA相结合应用于工控和故障检测

发布者:omega34最新更新时间:2009-02-23 来源: 今日电子关键字:工业控制  ARM7  FPGA  故障检测 手机看文章 扫描二维码
随时随地手机看文章

      工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。

各部分功能简介

      图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控制总线和故障检测总线相连。

ARM7与FPGA在工控和故障检测中的应用

图1 系统结构框图


1 故障检测和命令控制部分

      故障检测:检测通道的故障(正常)信号以高(低)电平方式指示,其一旦有故障产生就会保持高电平不变直到故障排除。针对这种特征,在ARM控制器端采用定时中断循环查询方式来判断故障通道的状态。定时中断程序通过对ARM 地址总线在FPGA中进行译码而顺序锁定被检测通道的电平值,然后再经数据总线传回ARM进行判断,最后将判断结果送至远程终端。采用主机查询方式而不采用故障中断方式出于两个原因:一方面是通常控制芯片外部中断源有限(多数为4个外部中断源),对于多目标中断信号检测显然是困难的;另一方面,由于检测通道或设备受到短时干扰而产生电平随机反转,造成故障中断触发,而中断触发后又无法在通道电平恢复正常时撤销故障信号,故而形成虚假报警。

      命令控制:ARM芯片先判断主控端发来的控制命令,然后通过地址总线和数据总线将命令状态发送至经FPGA地址译码锁定的控制通道上。

2 ARM芯片与远程检测控制终端通信

      由于只存在命令和故障状态信号的收发,所以利用ARM的串口实现与远程PC的通信,通信标准选为RS232标准。不过,在ARM芯片上要先将TTL电平通过MAX232芯片转换为RS232电平标准,对于距离超过15m的全双工通信,在发送接收两端还要各加一对RS232转RS422电平的转换模块,以增加通信距离。

3 FPGA内部功能模块说明

      FPGA内部检测及控制电路结构关系如图2所示。

ARM7与FPGA在工控和故障检测中的应用

图2 FPGA内部逻辑结构

      ARM芯片的ADDR2~0位地址线和片选使能信号一同进入译码器decode1进行地址译码后产生8路输出(FPGA内部可设置一个最大输出为256路的译码模块,所以在实际应用中可扩展为更多通道),低4路用于命令发送通道,高4路用于故障检测通道,读写使能信号控制数据总线。

      ARM芯片接收到发送信号编码命令时,立即在串口接收中断服务子程序中并送相应地址(通道编号)和数据(命令状态)到FPGA中。译码器有效输出作为相应通道D触发器的锁存时钟,而数据状态则被触发器锁定后作为所选通道的输出完成相应控制。

      ARM芯片在定时中断产生进入服务程序后对所有检测通道轮流查询,查询到有通道故障时,故障信号结合选中通路信号经与非运算送往数据端口被读取。

FPGA程序设计注意问题

1延时的配置

      通过地址总线和数据总线进行命令传输和故障检测时,FPGA是作为ARM芯片的普通外设来使用的。而ARM芯片对外设访问的速度要远低于片内存储器,所以要在ARM中设置访问的正确等待周期。ARM中提供的延时周期为0~7个,通过调试即可找到外设合适的等待周期,此系统的等待周期根据实际测试设置为5个,具体的配置方法见ARM程序说明。

2 读写使能信号的连接

      从图2中可以看出,写使能信号NWE及读使能信号NRD应作为数据线(DATA0~5)的三态控制信号连接,即使在ARM芯片无其他外设时也不能缺省。因为ARM的上电加载程序时间要长于同一系统上FPGA的程序配置时间,而FPGA的检测及控制通道与ARM芯片的数据总线相连,FPGA加载完成后数据总线会存有相应通道的逻辑电平值(不为三态),这就会导致ARM芯片在对片内Flash芯片烧写程序或上电加载程序时与FPGA冲突(数据被逻辑锁定),造成无法正确定位操作对象而使读写失败。

ARM配置及应用程序说明

1 处理器的资源分配

      ● 存储器

      AT91FR40162内嵌一个256KB的SRAM,1024K个16位字组成的Flash存储器。SRAM通过内部32位数据总线与ARM核相连,单周期访问,Flash存储器则通过外部总线访问。

      ● 系统外围

      EBI:外部总线控制接口,EBI可寻址64MB的空间,通过8个片选线(NCS0~NCS3独立)和24位地址线访问外设,地址线高4位与片选线(NCS4~7)复用,数据总线可配置成8/16位两种模式与外设接口。

      PIO:并口控制器,PIO控制32根I/O线,多数为复用引脚,可通过编程选择为通用或专用。
      AIC:先进中断控制器,实现片内外围中断及4个外部中断源中断的管理,其外部中断引脚与通用I/O复用。

      ● 用户外围

      USART0~1:串口收发控制器,支持8个数据位的发送,可以进行异步/同步传输选择,其片外引脚与通用I/O复用。

      TC:定时/计数器,可以产生定时中断和计数功能,其片外引脚与通用I/O复用。

2 存储器地址重映射后的空间分配

      在CPU上电后,都会从地址0开始第一条指令代码的执行,而上电复位后0地址必须映射到NCS0片选所接的器件上,这里必须将NCS0连接到片内Flash上以加载初始化程序和应用程序。由于中断和异常的入口地址是0~20H固定不变,它们的产生都是跳转到0~20H之间相应的地址取程序执行,为了加快中断响应,必须将0~20H地址映射到片内RAM区,所以在初始化的重映射命令执行(EB1_RCR的RCB位置1)后,内部RAM就映射到地址0,所有的中断入口响应和堆栈操作都被映射到在RAM区进行。

ARM7与FPGA在工控和故障检测中的应用

      由于重映射主要是用于Flash和片内RAM的地址空间交换,所以片内外围接口(EBI、USART、TC)对应的存储器编程地址范围在映射前后不发生改变,而访问外设地址为重映射后所分配。重映射后地址分配如表1所示。

3 应用接口的存储器配置

      EBI存储器:在8个EBI片选存储器(EBI_CSR0~EBI_CSR7)中设置外设访问参数。其中,32位存储器中包括数据总线宽度8(16)设置,等待状态数目1~7个周期设置,等待使能(不是使能)设置,片选使能(不使能)设置。这里将FPGA作为外设,使能NCS3(也可根据实际选择其他空闲片选线),选择总线宽度16,使能等待周期并设周期为5(根据调试选择)。因默认NCS0为加载Flash片选线,而Flash为16位信号、7个等待周期,故需在EBI_CSR0中选择16位总线宽度、7个等待周期并使能NCS0。

      AIC存储器:AIC存储器管理所有内外部中断,对此存储器的正确初始化赋值才会打开相应中断。设定AIC工作参数:应用串口通信模式为异步模式,串口发送的数据位字符长度为8位,通信的波特率9600B/s,串口中断优先级为6(中断优先级由低到高0~7),接收发送通道使能。
TC存储器:定时中断存储器需要设定定时长度为1s(每1s产生中断进行故障查询),定时通道使能及软件触发模式,定时中断优先级设为1。

4 应用程序说明

 ① 主程序

#define AT91C_BASE_EBI       ((AT91PS_EBI)   0xFFE00000) //EBI基地址定义
int main()
{AT91F_EBI_OpenChipSelect (
        AT91C_BASE_EBI,  //地址指针                    
        0x3,            //片NCS3使能
        0x30000000+0x3f39); //片选存储器初始化
         Usart_init();//初始化串口
      timer_init();//初始化定时器
         while(1){} //循环等待
}

      ARM处理器在完成各寄存器初始化后进入应用主程序,在主程序中首先调用EBI接口使能函数来设置参数:在程序中设置存储器基地址值(0xFFE00000),片选设置0x3(NCS3使能),NCS3的存储器初始化;调用USART控制器函数初始化串口:打开串口,串口收发通道初始化,设定串口通信速率;调用定时中断函数:打开定时中断,设置定时中断时间,设定触发方式为软件触发;最后进入等待循环。

      ② 串口命令接收中断服务程序

      #define USART0_INTERRUPT_LEVEL     6//设置中断优先级为6
      #define AT91C_US_USMODE_NORMAL AT91C_US_CHMODE_NORMAL//*设置通信模式(NORMAL定义为异步模式)*//
      AT91PS_USART COM0=AT91C_BASE_US0;//设置COM0为收发口
      char message[4];
      //                 控制端串口中断通信程序                //
      //*----------------------------------------------------------------------------*//
      void Usart0_c_irq_handler(AT91PS_USART USART_pt)//串口中断处理函数
      {   volatile unsigned int *conp;unsigned int status;
           int time;
           volatile unsigned int i;
           status = USART_pt->US_CSR & USART_pt->US_IMR;//给状态寄存器赋初值
           if ( status & AT91C_US_RXRDY)//接收通道寄存器判断是否有数据
          {   
             AT91F_US_DisableIt(USART_pt,AT91C_US_RXRDY);//关闭接收通道准备好中断
             AT91F_US_EnableIt(USART_pt,AT91C_US_ENDRX);//打开接收结束中断
    AT91F_US_ReceiveFrame(USART_pt,(char*)(message),4);//调用接收数据数接收数据
      }
       if ( status & AT91C_US_ENDRX){
         AT91F_US_DisableIt(USART_pt,AT91C_US_ENDRX); // 关闭接收器传送结束中断
        { if((message[0]^0xff)==message[1])//判断接收代码
          {switch (message[0])
         {case  0x31 : {conp=(volatile unsigned int*)(0x1+0x30000000);//OPE1使能
         *conp=0x2;}; break;//0x31代码送往OPE1端口
             case  0x30 : {conp=(volatile unsigned int*)(0x2+0x30000000);//OPE2使能
             *conp=0x1;}; break; // 0x30代码送往OPE2端口
          case  0x11 : {conp=(volatile unsigned int*)(0x3+0x30000000);//OPE3使能
              *conp=0x2;};break;// 0x11代码则往OPE3端口
             case  0x10 : {conp=(volatile unsigned int*)(0x4+0x30000000);//OPE4使能
             *conp=0x1;};break;  //0x10代码送往OPE4端口          
        default:break;}
       }
       }

      以上程序为串口中断服务程序,各函数语句说明参见注释。中断级别设置为6(高于定时中断),这样使命令发送优先于故障查询(控制命令随机出现而故障查询总是循环进行);接收缓冲区message[4]数组类型必须设为动态分配,静态数据分配会使处理器开辟数据缓冲区到Flash芯片中,从而引发在一个中断处理程序中由于存取时间过长而导致串口收发超时的错误。因为篇幅有限,其他程序不再一一叙述。

      在ARM应用程序的编写中,应该尽量少的在主函数内使用循环操作,主函数主要完成各接口控制器应用初始化,因为主函数不间断循环操作不但会增加功耗,而且长时间频繁切换于中断服务和主循环之间会造成程序运行的不稳定,所以能用定时中断完成的循环操作尽量用中断完成。
 
结语

      ARM芯片控制功能结合FPGA灵活的多硬件接口模拟特性在工程上体现出的其独特的优势,已发展为一种流行的硬件架构模式,随着芯片功能的不断强大,这种优势将使其用途更广,对任务处理变得更加灵活高效。

关键字:工业控制  ARM7  FPGA  故障检测 引用地址:ARM7与FPGA相结合应用于工控和故障检测

上一篇:基于ARM的MPEG-4软解码器的优化与实现
下一篇:ARM推出采用32nm工艺的CORTEX处理器

推荐阅读最新更新时间:2024-03-16 12:24

不提能源效率,怎么在工业控制、工厂自动化市场混
制造行业正面临着政府严格的规章制度限制,要提高能源效率和降低碳排放量来改善包括全球气候变暖等环境问题。“绿色”和“智能”很可能在未来五到六年成为工控控制和工厂自动化市场的未来。   此外,利润率不断降低以及产品的同质性也已提高了制造行业先进控制和工厂自动化的需求。技术的融合和无线自动化是全球工业控制和工厂自动化市场的两大发展趋势。   工业物联网(IIoT)的增长和M2M通信在工业应用中的不断普及正驱动着制造行业中的过程自动化发展。   技术工的缺乏加上工业控制和工厂自动化设备的高额安装和维修成本在一定程度上阻碍了市场(尤其是那些对成本敏感的发展中国家的市场)的发展。而且石油和天然气价格直线下降也对工业控制和工厂
[嵌入式]
工业4.0逐渐兴起 转型机遇不容有失
中小企业总以为,工业4.0跟他们日常营运关系不大,若因此错失数字转型机会,未来恐深陷危机。据报导,自动化科技大厂Festo加拿大分部的工业4.0计划负责人Ben Hope表示,说到物联网、传感器和大数据,制造商可能因为盈利状况和生产力不差,就忽视工业4.0可能带来的效益 Festo总部设在德国,早就开始提倡工业4.0。 中小企业总以为,工业4.0跟他们日常营运关系不大,若因此错失数字转型的机会,未来恐深陷危机。据PlasticsToday报导,自动化科技大厂Festo加拿大分部的工业4.0计划负责人Ben Hope表示,说到物联网(IoT)、传感器和大数据,制造商可能因为盈利状况和生产力不差,就忽视工业4.0可能带来的效益。 对
[嵌入式]
Altera彻底改变基于FPGA的浮点DSP
Altera宣布正在发售的Arria 10 FPGA 在业界率先提供符合IEEE 754的硬核浮点DSP模块。 2014年4月23号,北京——Altera公司 (Nasdaq: ALTR) 今天宣布在FPGA浮点DSP性能方面实现了变革。Altera是第一家在FPGA中集成硬核IEEE 754兼容浮点运算功能的可编程逻辑公司,前所未有的提高了DSP性能、设计人员的效能和逻辑效率。硬核浮点DSP模块集成在正在发售的Altera 20 nm Arria 10 FPGA和SoC中,也集成在14 nm Stratix 10 FPGA和SoC中。集成硬核浮点DSP模块结合先进的高级工具流程,客户可以使用Altera的FPGA和
[嵌入式]
基于FPGA的可变长度移位寄存器优化设计
本文以最大可变长度为N、宽度为1bit的 移位寄存器 为模型,讨论如何从结构上优化可变长度移位寄存器和有效的FPGA实现。至于宽度不为1bit的情况,可以此类推。   1 可变长度移位寄存器的常用结构   通常可变长度移位寄存器的结构可分为两种:一种是输入分支型(结构A),如图1所示;另一种是输出分支型(结构B),如图2所示。      结构A与结构B有两个共同点:第一,都是由触发器链路加数据流向控制逻辑组成;第二,每级触发器的输入输出都是信号节点,因而各级都需要对本级节点的信号流向进行控制。结构A用n-to-2n译码器来控制信号流向,结构B则用2n:1多路复用器控制信号流向。对于基本逻辑单元为查找表(LUT
[嵌入式]
基于<font color='red'>FPGA</font>的可变长度移位寄存器优化设计
莱迪思FPGA功能安全性设计流程有助于加速IEC61508认证
获得T V Rheinland认证,秉持最前沿安全性设计方法的设计流程适用于安全攸关的工业、医疗和汽车应用 为安全攸关的应用加速IEC61508认证 T V Rheinland认证的FPGA功能安全性设计流程(Functional Safety Design Flow) 秉持最前沿的设计方法,节约时间并降低成本 支持MachXO、MachXO2、LatticeECP3等莱迪思的FPGA产品系列 美国俄勒冈州希尔斯波罗市 2015年2月25日 莱迪思半导体公司(NASDAQ: LSCC) 超低功耗、小尺寸客制化解决方案市场的领导者,今日宣布推出基于Lattice Diamond 设计工具的功能安全性设计流
[嵌入式]
莱迪思<font color='red'>FPGA</font>功能安全性设计流程有助于加速IEC61508认证
基于FPGA的LON网络高速智能节点的设计
   1 概述   LonWorks现场总线(简称LON总线)是美国Echelon公司推出的局部操作网络,为集散式监控系统提供了很强的实现手段,成为当今流行的现场总线技术之一。现在的测控系统中,连接在现场总线网络上的每一个节点,即传感器、变送器、执行器等都不再是单功能的传统仪表,而是具有数据采集、转换、控制、计算、报警、诊断及数字通讯等功能的智能化设备(智能节点)连接在网络上的各种智能现场设备共享总线信道,进行数据和信息交换,相互协调工作组成一个完整的现场总线控制系统。LON总线技术使用开放式的通信协议LonTalk,为设备之间交换控制状态信息建立了一个通用标准并,在硬件芯片的支持下实现了实时性和接口的直观、简洁的现场总线的应
[嵌入式]
基于<font color='red'>FPGA</font>的LON网络高速智能节点的设计
从四大技术合作看英特尔收购Altera的三大影响
娱乐圈在秀 #我们# ,半导体也紧跟着这个潮流。英特尔将以每股54美元的价格现金收购Altera,换句话说,这项交易的总价格约为167亿美元。这项交易方案已经获得英特尔和Altera两家公司董事会的批准。这段沸沸扬扬的 绯闻 也终于正式公开并尘埃落定。这场收购绯闻你看过瘾了吗?是否想过其实有一些人因为他们的联姻而感到恐惧。 四大技术合作 我们先来看看英特人目前和Altera的合作有哪些,当然这些只是 台面 上的,不过也能从中看出收购前他们 排他性 的技术合作,已经证明了英特尔十分重视Altera了。 1.英特尔Xeon+Altera FPGA ,使得数据中心某些任务加速了10倍,QPI再次加速了两倍,有助于保
[嵌入式]
从四大技术合作看英特尔收购Altera的三大影响
英特尔® FPGA Vision线上研讨会亮点抢先看
英特尔成立独立FPGA公司,加速行业创新 继宣布将可编程解决方案事业部 (PSG) 作为独立业务部门运营后, 英特尔将于3月1日举行FPGA Vision线上研讨会 。届时,首席执行官Sandra Rivera和首席运营官Shannon Poulin将分享有关全新企业品牌、公司愿景与战略,以及市场增长机会的更多信息。 英特尔PSG团队诚邀您参加本次线上研讨会,深入了解独立运营的全新FPGA公司,持续增长的市场及客户需求,以及我们旨在助力行业创新加速的产品路线图。与此同时,线上研讨会还将重点介绍FPGA在AI领域的布局,即如何使AI在数据中心、网络和边缘易于访问及扩展。此外,Rivera和Poulin将重磅发布全新支持工具
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved