基于AT96总线数据交互设计中的冲突仲裁机制
2019-07-23伍巧凤李昱孙诗炎王明星贺理
伍巧凤 李昱 孙诗炎 王明星 贺理
【摘 要】数字化仪控平台由控制器和多个智能IO功能单元组成,控制器与智能IO功能单元通过背板AT96总线进行数据交互,以满足不同的功能需求。系统提出一种基于AT96总线的冲突仲裁机制,以防止控制器与多个功能单元数据交互时发生冲突,以及发生冲突后应采取的对策。
【关键词】数字化仪控平台;AT96总线;数据交互;冲突仲裁
中图分类号: TP 文献标识码: A 文章编号: 2095-2457(2019)16-0035-002
DOI:10.19694/j.cnki.issn2095-2457.2019.16.015
Conflict Arbitration Mechanism in Date Interaction Design Based on AT96 Bus
WU Qiao-feng LI Yu SUN Shi-yan WANG Ming-xing HE Li
(Science and Technology on Reactor System Design Technology Laboratory, Chengdu Sichuan 610213, China)
【Abstract】Digital instrumentation and control platform is including controller and intelligent IO functional unit. The data are exchanged through AT96 bus to meet different functional requirements. A conflict arbitration mechanism based on AT96 bus is proposed to prevent conflicts between controller and multiple functional units in data interaction, as well as measures to be taken after conflicts occur.
【Key words】Digital instrumentation and control platform; AT96 bus; Data interaction; Conflict Arbitration
0 引言
數字化仪控平台中控制器单元通过背板AT96总线与多个智能IO功能单元进行数据交互[1-2]。AT96总线是工控机总线标准,采用ISA总线的兼容协议及PC的Wintel架构,具有抗冲击力强、机械结构合理、易于维护等特点。因控制器需与多个功能单元进行数据交互,可能发生冲突,由此根据数字化仪控平台的特点,在其控制器与多功能单元数据交互设计的基础上,提出了一种防冲突的仲裁机制,用以防止冲突,以及冲突后应采取的对策。
1 基于AT96总线的数据交互构架
由图1可知,数字化仪控平台由主控制器、AT96总线、多个智能IO功能单元组成,智能IO单元包括模拟量输入单元、模拟量输出单元、开关量输入单元、开关量输出单元、以太网通信单元、CAN通信单元等。
智能IO功能单元为智能化设计,各功能单元自带微处理器,独立进行数据采集和处理,通过AT96总线与主控制器进行数据交换。数字化仪控平台中的控制器基本上只能提供一个64KB的页面给智能IO功能单元交互数据使用,但平台中板卡数量众多,因此采用页面扩展技术,将64KB的页面扩充成64个页面,用以实现控制器与多个智能IO功能单元的数据交互。页面扩展技术由一个CPLD、编码来实现,CPLD负责根据智能IO功能单元上的编码进行地址译码和命令解析,同时输出控制信号,使得不同的智能IO功能单元能正确分配控制器对应内存页面,实现数据交互[3]。控制器与多个职能IO功能单元数据交互的冲突仲裁设计,在原有AT96总线基础上,新增了一根冲突仲裁信号线,该冲突仲裁线路能够分别指示三种状态:空闲、正常占用、冲突,以实现冲突仲裁处理。
2 冲突仲裁机制
2.1 冲突仲裁
图2为冲突仲裁电路,如图可知,与原来的AT96总线相比,新增了一根冲突仲裁信号线,以实现冲突仲裁处理。冲突仲裁信号线是一根物理线路,所有板卡共享该线路,该线路能够分别指示三种状态:空闲、正常占用、冲突。为考虑到冲突仲裁的可靠性和速度要求,以及对内存访问速度的影响,采用了硬件仲裁线的实现方式。在电路中,一根所有插槽共享的硬件仲裁线,连接一个5KΩ的下拉电阻,构成了硬件仲裁的基础通讯线。对每个扩展板卡来说,通过一个I/O管脚串联电阻驱动,构成了内存占用通告发布功能,为了实现所有功能单元共享一根线的设计,每个板卡的I/O驱动串联了一个肖特基二极管,以防止电流反向放电影响。该硬件线的电压将反映出硬件内存页面的占用、冲突情况,还单独设计了一个占用/冲突检测电路负责检测内存页面切换情况,如图4所示。该检测电路由两个比较器组成,输出2bit信号:
当系统开机后,内存页面处于空闲状态,所有功能单元均不占用该内存页面,驱动管脚输出低电平,由于二极管的反向截止功能,该冲突仲裁信号线实际电压为0V(5K电阻下拉),此时,占用/冲突检测电路由于输入电压为0V,因此输出数据为01,表示空闲。
当控制器通过共享命令区间发送内存页面切换地址后,功能单元CPLD检测命令合法性和地址匹配一致后,执行内存页面切换,同时驱动管脚输出高电平,电平为3.3V,由于二极管的正向压降,实际驱动电压为3V,通过串联电阻和冲突仲裁线的5K下拉电阻匹配后,该冲突仲裁信号线实际电压为1.0V,此时,占用/冲突检测电路由于输入电压为1.0V,因此输出数据为00,表示正常占用。
當由于硬件故障、错误配置或其他问题导致2个或2个以上的功能单元启动内存页面切换,输出了2个和2个以上的高电平,由于驱动电流的汇合作用,冲突仲裁信号线电压将上升,两个驱动时电压为1.5V,超过2个则电压更高。此时,占用/冲突检测电路由于输入电压为1.5V以上,因此输出数据为10,表示冲突。
每个功能单元在内存切换执行后,如果检测到仲裁信号错误,则依然不会响应切换后的内存读命令,以防止AT96总线访问冲突。
3 冲突情况及对策
3.1 功能单元错误编码
由于人为错误或功能单元的编码开关故障,可能导致2个或2个以上的扩展板卡,其内存地址编写一样,此时,当控制器发送内存页面切换命令时,多个功能单元同时占用总线。
此时,对于控制器来说,可以通过冲突仲裁信号线的状态,判读出内存页面已经冲突,控制器将不会发送内存读命令,可以防止后面的内存读冲突操作。
即使控制器没有处理这个冲突信号,发送了内存读操作,实际上也不会导致硬件冲突,因为每个功能单元自己也会检查冲突仲裁信号线,当冲突发生时,其数据端口的驱动IC(SN74HCT245)的DIR和OE管脚均受到仲裁结果信号控制,当总线已经产生冲突的情况下,读操作将实际上无效,控制器读到的是0xFF数据。
3.2 内存页面切换时发生错误
当一个功能单元已经占用内存空间时,再切换到另外一张卡时,发生错误,导致原来的功能单元没有释放内存区间,从而导致内存冲突。这种情况多是由于AT96总线受到干扰发生的,或者功能单元出现了故障,接收到了内存切换命令,但没有执行。
此时的情况处理跟上面的情况很类似,功能单元会自动进入保护状态,防止冲突发生,控制器也能通过冲突仲裁信号线判断出冲突的发生。
控制器可以通过两步切换操作来防止此种情况出现,即控制器首先发送内存释放命令,并检测冲突仲裁信号线,让所有功能单元均释放内存空间后,再发送第二个切换命令到实际的页面上。
3.3 硬件IO故障导致冲突
如果IO功能单元管脚本身发生故障,外部二极管、电阻故障,以及占用/冲突检测电路的故障,均可能导致硬件冲突的发生,并且由于此故障发生,干扰了冲突仲裁线的工作状态,会导致实际的硬件冲突发生。
针对此种问题的解决办法是进行电路自检,在系统上电或系统指定自检的时候,由控制器发送命令,对各个功能单元进行检测,检测的内容包括:
(1)依次指定每个功能单元的地址,检测其是否能够可靠实现内存切换,并且输出正确的占用信号,检测由控制器和功能单元微处理器配合共同完成。
(2)输出特殊的地址,强制2个功能单元执行内存切换,并实现内存冲突现象的模拟,检测各个板卡的占用/冲突检测电路工作是否正常。
4 结论
系统根据数字化仪控平台的特点,在基于AT96总线的数据交互设计基础上提出了一种用于控制器与多个智能IO功能单元数据交互的冲突仲裁机制。在AT96总线的基础上增加一根冲突仲裁信号线的方法可实现控制器与多个智能IO功能单元冲突仲裁,并针对功能单元错误编码、内存页面切除错误、硬件IO故障设置相应的应对措施实现故障处理。
【参考文献】
[1]反应堆数字化仪控系统安全级硬件平台设计及应用[J].核动力工程,2013,3(1).
[2]反应堆数字化仪控系统安全级硬件平台(MICON系统)设计及应用[C].中国核科学技术进展报告(第二卷),2011.
[3]数字化仪控平台中基于AT96总线的数据交互设计[J].仪器仪表用户,2019,26(04).