ARM7与FPGA在工业控制的结合

发布者:BlissfulWhisper最新更新时间:2012-11-16 来源: 21ic 关键字:ARM7  FPGA  工业控制 手机看文章 扫描二维码
随时随地手机看文章
  工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。

各部分功能简介

  图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;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所示。

FPGA内部逻辑结构


图2 FPGA内部逻辑结构[page]


  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区进行。

  由于重映射主要是用于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。[page]

  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、DSP、FPGA的特点和区别
下一篇:富士通半导体推出采用ARM Cortex-M4和M0+内核的32位微控制器系列产品

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

Ximmerse VR/AR跟踪平台采用莱迪思的低功耗、小尺寸ECP5 FPGA
莱迪思半导体公司(NASDAQ: LSCC),客制化智能互连解决方案市场的领先供应商,今日宣布广东虚拟现实科技有限公司(Ximmerse),移动AR/VR应用交互系统提供商,选择采用莱迪思ECP5™ FPGA为其AR/VR跟踪平台实现立体视觉计算解决方案。得益于低功耗、小尺寸和低成本的优势,市场领先的莱迪思ECP5 FPGA是用于实现网络边缘灵活的互连和加速应用的理想选择,可实现低功耗、低延迟的解决方案。 随着对于AR/VR设备市场需求的不断增长,目前基于头戴式显示器(HMD)的系统在使用移动应用处理器(AP)处理内容时的性能瓶颈日趋明显。由此可见,使用移动处理器执行基于视觉的位置跟踪功能挑战性颇高。莱迪思的ECP5 FPG
[嵌入式]
Ximmerse VR/AR跟踪平台采用莱迪思的低功耗、小尺寸ECP5 <font color='red'>FPGA</font>
Lattice iCE40 FPGA获“年度数字半导体产品”Elektra奖
    Elektra奖建立了电子行业的年度巅峰时期,为行业提供认可个人和公司在欧洲所取得成就的机会。莱迪思半导体公司(Lattice)近日就宣布其超低密度的iCE40™FPGA系列获得2012年度“年度数字半导体产品”Elektra奖。这一荣誉获得前不久,iCE40 FPGA系列由于节能和节省功耗荣获e-Legacy 的“环境设计”奖。 该奖项的入围者由2012年Elektra欧洲电子工业奖的独立评审小组决定,并于12月12日在伦敦威斯敏斯特桥公园广场的Elektra颁奖晚宴上宣布获奖者名单。莱迪思(Lattice)是FPGA行业内唯一一家获奖的公司。     莱迪思企业和产品营销高级总监Brent Przy
[嵌入式]
基于DSP与FPGA的全姿态指引仪的设计
本文设计了基于DSP与FPGA的系统结构,采用了软硬件填充的图形处理方法,先由DSP软件完成图形轮廓生成,然后FPGA硬件图形处理器根据图形轮廓完成耗时的图形填充,使系统在实时性方面取得了很好的效果并使得系统运算资源得到了合理的分配与利用。 1 全姿态指引仪的功能与原理 飞行仪表的综合显示系统主要包括全姿态指引仪、电子航道罗盘、导航仪和视景仪等模块化仪表设备,其中电子全姿态指引仪的显示信息包括姿态指引信息、高度信息、速度信息和工作状态信息等。它的主要任务就是以动态图形和字符的形式实时的显示飞行参数,以便飞行员准确的获取所需要的信息,并进行及时安全的操纵。全姿态指引仪区域填充运算主要针对内部天地球区域,如图1(a)所示。
[嵌入式]
利用FPGA实现异步FIFO设计
目前数据采集系统朝着高速和高精度的方向发展。随着FPGA的集成度和运行速度的提高,可以满足高速数据采集系统的需求。FPGA内部具有丰富的存储单元,易于实现各种存储器(如FIFO、双口RAM等);另外,基于查找表的逻辑单元可用于实现各种数字信号处理(如滤波等),以辅助DSP处理器做各种预处理。 TI公司推出的高性能数字信号处理芯片TMS320C6000系列,工作频率最高可达到1GHz,具有处理速度快、灵活、精确和可靠性高等优点,作为数据采集系统中的主处理器,可以满足实时性的要求。基于以上考虑,北京合众达公司开发了采用TMS320C6416和FPGA的高速高精度双通道数据采集系统,每个通道的采样率为3Msps,最高可达10Msp
[半导体设计/制造]
用单片机实现SRAM工艺FPGA的加密应用
摘要:首先对采用SRAM工艺的FPGA的保密性和加密方法进行原理分析,然后提出一种实用的采用单片机产生长伪随机码实现加密的方法,并详细介绍具体的电路和程序。 关键词:静态随机存储器(SRAM) 现场可编程门阵列(FPGA) 加密 在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。由于大规模高密度可编程逻辑器件多采用SRAM工艺,要求每次上电,对FPGA器件进行重配置,这就使得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术保护设计者的知识产权。 1 基于SRAM工艺FPGA的保密性问题 通常,采用SRAM工艺的FPGA芯片的的配置方法主要
[单片机]
Stratix 10 FPGA和SoC客户设计的内核性能提高了两倍
HyperFlex新体系结构以及Intel 14 nm三栅极工艺技术前所未有的提高了性能。 2014年5月7号,北京——Altera公司 (Nasdaq: ALTR)今天宣布,与前一代高性能可编程器件相比,Stratix® 10 FPGA和SoC客户设计的内核性能成功提高了两倍。Altera与几家早期试用客户在多个市场领域密切合作,使用Stratix 10性能评估工具测试了他们的下一代设计。客户所体会到的FPGA内核性能突破源自Intel 14 nm三栅极工艺技术以及革命性的Stratix 10 HyperFlex™体系结构。 HyperFlex是Altera为Stratix 10器件提供的下一代内核架构——是F
[嵌入式]
Stratix 10 <font color='red'>FPGA</font>和SoC客户设计的内核性能提高了两倍
FPGA分销需做好原厂与客户的“红娘”
    科通作为Xilinx本土最重要的分销商之一,新的技术必将为我们创造更多的应用机会和更多的客户群体。 FPGA的优点首先在于其通用性,由于它属于半ASIC的平台性器件,又具有ASIC和ASSP所不能支持的灵活性和可扩展性,而且绝大多数设计都是基于硬件描述语言的,所以它具有方便的升级、移植和扩展性,这些都非常适合当前和未来飞速发展和变化的电子产品;至于劣势主要是FPGA对设计者自身能力的要求较高,这相当于提高了设计者的门槛,还有随着FPGA规模的越来越大,在时钟、时序、仿真、联合设计和验证方面都带来了较大的挑战。 FPGA服务需要快速响应 FPGA需要更强的技术支持能力才能推广应用的产品,代理商要全方位给客户提供支
[嵌入式]
基于C8051单片机和FPGA实现导纳测量仪的系统设计
虚拟仪器的广泛应用,使得用户可以根据需求,设计自己的仪器系统。无源网络导纳测量仪即是虚拟仪器设计思想的一种具体运用,旨在实现对端口网络的导纳进行自动测量。测量仪是以C8051单片机为控制和处理核心,采用可编程逻辑器件EPF10K10,根据DDS原理产生信号源,将信号源连接到待测的网络上,对网络两端的电压和电流进行差分放大,使其输出电压尽可能达到ADC的最大输入电压,然后进行A/D采样,采样时,频率随信号频率而改变,一个周期内固定采32个点,用单片机的P1、P2直接接收数据,边采样边接收。对采样所得的电流、电压数据进行快速傅立叶变换(FFT),并分别求出其模值和相位,则导纳的模值为电流模值与电压模值之比,相位为电流与电压的相位之差。
[单片机]
基于C8051单片机和<font color='red'>FPGA</font>实现导纳测量仪的系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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