版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑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地址译码锁定的控制通道上。
2ARM芯片与远程检测控制终端通信
由于只存在命令和故障状态信号的收发,所以利用ARM的串口实现与远程PC的通信,通信标准选为RS232标准。不过,在ARM芯片上要先将TTL电平通过MAX232芯片转换为RS232电平标准,对于距离超过15m的全双工通信,在发送接收两端还要各加一对RS232转RS422电平的转换模块,以增加通信距离。
3FPGA内部功能模块说明
FPGA内部检测及控制电路结构关系如图2所示。
图2FPGA内部逻辑结构
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。
AIC存储器:AIC存储器管理所有内外部中断,对此存储器的正确初始化赋值才会打开相应中断。设定AIC工作参数:应用串口通信模式为异步模式,串口发送的数据位字符长度为8位,通信的波特率9600B/s,串口中断优先级为6(中断优先级由低到高0~7),接收发送通道使能。
TC存储器:定时中断存储器需要设定定时长度为1s(每1s产生中断进行故障查询),定时通道使能及软件触发模式,定时中断优先级设为1。
4应用程序说明
①主程序
#defineAT91C_BASE_EBI((AT91PS_EBI)0xFFE00000)//EBI基地址定义
intmain()
{AT91F_EBI_OpenChipSelect(
AT91C_BASE_EBI,//地址指针
0x3,//片NCS3使能
0x30000000+0x3f39);//片选存储器初始化
Usart_init();//初始化串口
timer_init();//初始化定时器
while(1){}//循环等待
}
ARM处理器在完成各寄存器初始化后进入应用主程序,在主程序中首先调用EBI接口使能函数来设置参数:在程序中设置存储器基地址值(0xFFE00000),片选设置0x3(NCS3使能),NCS3的存储器初始化;调用USART控制器函数初始化串口:打开串口,串口收发通道初始化,设定串口通信速率;调用定时中断函数:打开定时中断,设置定时中断时间,设定触发方式为软件触发;进入等待循环。
②串口命令接收中断服务程序
#defineUSART0_INTERRUPT_LEVEL6//设置中断优先级为6
#defineAT91C_US_USMODE_NORMALAT91C_US_CHMODE_NORMAL//*设置通信模式(NORMAL定义为异步模式)*//
AT91PS_USARTCOM0=AT91C_BASE_US0;//设置COM0为收发口
charmessage[4];
//控制端串口中断通信程序//
//**//
voidUsart0_c_irq_handler(AT91PS_USARTUSART_pt)//串口中断处理函数
{volatileunsignedint*conp;unsignedintstatus;
inttime;
volatileunsignedinti;
status=USART_pt-US_CSRUSART_pt-US_IMR;//给状态寄存器赋初值
if(statusAT91C_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(statusAT91C_US_ENDRX){
AT91F_US_DisableIt(USART_pt,AT91C_US_ENDRX);//关闭接收器传送结束中断
{if((message[0]^0xff)==message[1])//判断接收代码
{switch(message[0])
{case0x31:{conp=(volatileunsignedint*)(0x1+0x30000000);//OPE1使能
*conp=0x2;};break;//0x31代码送往OPE1端口
case0x30:{conp=(volatileunsignedint*)(0x2+0x30000000);//OPE2使能
*conp=0x1;};break;//0x30代码送往OPE2端口
case0x11:{conp=(volatileunsignedint*)(0x3+0x30000000);//OPE3使能
*conp=0x2;};break;//0x11代码则往OPE3端口
case0x10:{conp=(volatileunsignedint*)(0x4+0x30000000);//OPE4使能
*conp=0x1;};break;//0x10代码送往OPE4端口
default:break;}
}
}
以上程序为串口中断服务程序,各函数语句说明参见解释。中断级别设置为6(高于定时中断),这样使命令发送优先于故障查询(控制命令随机出现而故障查询总是循环进行);接收缓冲区message[4]数组类型必须设为动态分配,静态数据分配会使处理器开辟数据缓冲区到Flash芯片中,从而引发在一个中断处理程序中由于存取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西贵港市覃塘区2023-2024学年七年级下学期4月期中考试英语试题(含答案)
- 开放作文之观点看法类-2024年中考英语写作常考题型专项突破
- 视频系统的实时性优化
- 宜君养猪场改扩建项目可行性研究报告
- 成都2024年07版小学三年级下册英语第3单元真题试卷
- 重庆2024年09版小学五年级英语第六单元期中试卷
- 名著阅读(讲练)-2023年部编版中考语文一轮复习(原卷版)
- 2024年医用液氧贮槽项目投资申请报告代可行性研究报告
- 2023年固态地振动强度记录仪投资申请报告
- 三维数字内容制作-三维动画毛发制作流程规范
- 期中模拟试卷(1-4单元)(试题)-2024-2025学年四年级上册数学苏教版
- 一年级拼音教学-(研讨讲座)
- 江苏省南通市2023-2024学年七上期中数学试题(解析版)
- 磁共振MRI对比剂
- 让小车运动起来说课稿
- 2023-2024学年北京朝阳区高三(上)期中数学试题和答案
- 工程招投标管理与实践作业指导书
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理体系 审核与认证机构要求》中文版(机翻)
- 2024年消防月主题活动方案启动及全员消防安全知识培训
- 高职组“智能财税”赛项国赛赛题2022
- 2023年江苏省普通高中信息技术学业水平考试题库试题7
评论
0/150
提交评论