Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1228800
  • 博文数量: 699
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4970
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 13:45
文章分类

全部博文(699)

文章存档

2011年(1)

2008年(698)

我的朋友

分类:

2008-10-15 13:50:21

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

  各部分功能简介

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

图1 系统结构框图

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

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

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

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

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

  3 FPGA内部功能模块说明

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

 


图2 FPGA内部逻辑结构

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

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

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

 

[1]   

【责编:Luzi】

--------------------next---------------------

阅读(303) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~