新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于PCI/CPCI总线的嵌入式实时智能通信系统

基于PCI/CPCI总线的嵌入式实时智能通信系统

作者:■ 武汉数字工程研究所 黄松时间:2005-04-27来源:eaw收藏

摘    要:本文描述了一种基于的嵌入式实时智能通讯设备的设计及实现,充分利用了PCI总线的高效能和嵌入式通讯控制器的强大功能,设计出了一种高速的智能通信设备。
关键词:

引言
在计算机通信领域,串口被广泛运用。在某些特殊的应用领域,将会用到特殊的串口通信进行数据通信和报文交换。本设计就是针对一些特殊用途的应用,即一些高速系统串口传输方式的设计。

嵌入式智能通信系统的实时性特征
在设计一种嵌入式系统的时候,应该考虑到硬件和软件的结合,并考虑要满足嵌入式实时系统的各种特点。该设计具有以下特点:
* 与上位机接口采用。接口芯片采用AMCC S5920,它是一种,其总线时钟频率达到33MHz,ADD-ON总线的时钟达到40MHz,设计方便、可编程。
* 该设计用到了AMD公司专用的Am186cc,该嵌入式CPU具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而使设计趋于小型化。
* 专用性和算法的唯一性,将嵌入式系统和具体的应用有机地结合在一起。
* 该智能通信设备体现了硬件和软件紧密结合的特点,在硬件方案设计的同时,软件要进行同步设计,达到共同完成预定的功能,并满足性能、成本和可靠性目标。
* 嵌入式实时系统的设计对用户是透明的。
* 设计响应时间快,并有确定的硬实时性要求。
* 该智能通讯具有快速启动、出错处理和自动复位功能,这些功能由设计者在器件中的控制逻辑来实现。

主要硬件
PCI/CPCI目标接口S5920
S5920是AMCC公司的,它实际上可看成是一个桥接集成电路。主要特性包括:符合PCI V2.2规范;具有可编程预取和等待功能;局部总线支持8/16/32位可选择宽度的接口;具有4个可定义的操作区域BADR1~BADR4,分别为存储区、I/O区、保留区等。由于S5920的通用性,可用于所有PCI总线到ADD-ON总线的桥接转换电路。
Am186cc
AMD公司的通信控制器Am186cc广泛运用于嵌入式领域。具有四个高速数据链路控制通道(HDLC);USB外围控制器;有8个可支持HDLC和USB的智能DMA通道和4个一般的DMA通道等。
由于Am186cc控制器具有高效、高集成的控制和接口功能,已被广泛运用于通讯、电信、工业控制和网络应用等领域。本文所描述的设计中用到了它的控制功能和串口通信功能。

系统设计
本文设计的智能通信系统是基于Intel x86平台的PCI总线和实时操作系统,由嵌入式智能通信系统硬件和驱动程序两部分组成,如图1所示。完成数据交换和报文处理以及发送和接收功能。驱动程序在系统启动时对硬件进行初始化,在系统启动之后实现硬件和应用软件之间的数据交互。考虑到通信的实时性和可靠性要求,该通信设备通过PCI/CPCI高速总线与计算机主机相连。
硬件设计
该设计为一种嵌入式实时智能通信板,板上用Am186cc 16位嵌入式微处理器进行控制板的操作,两片器件用作上位机与下位机访问双口RAM的控制译码和接口控制译码,可在线改写逻辑。接口芯片可选用各类满足用户要求的电平转换电路。该硬件的原理框图如图2所示。
用户还可以根据自己的需要在接口处实现串行通信的不同传输模式:全双工和半双工。
板上除板内的SRAM外,还设有双口RAM区,对总线开放,用于本板与系统主机之间的信息交换。串口的数据发送和接收工作由板上微控制器控制完成,一般情况下,当主机有一组数据需要向串口传送时,将数据放入双口RAM,并以中断方式通知板上CPU,板上CPU将负责把数据通过串口发送出去。同样,当CPU从串口收到数据后,将其放入双口RAM,当一组数据接收完成后,板上CPU将以中断方式通知系统主机读取这批数据。
双口RAM的双口竞争原则如图3所示。S0为初始状态;S1为通信板上访问状态;S2为上位机访问状态;S3为过渡状态;T1~T6为状态改变条件。
由于用户的运用差别一般都体现在接口上,例如,有些用户可能会考虑到系统数据传输的稳定性和抗干扰性要求,需要采用带光电隔离的接口模式;有些会考虑到远距离传输,可采用RS-422电平传输等。这样,用户可根据需求来选择电平转换的接口电路,以满足各种用途。
软件设计
在该智能通信模块的设计中,特别强调底层驱动和上层应用的开发。
驱动程序和应用程序的设计
驱动程序作为系统设计的关键技术,它的开发关系到整个系统的运行。该模块的驱动程序主要包括以下几个部分:
(1) 模块初始化
int Board_Initialized(int board_num);/*可用多块智能通讯板,可分别初始化,也可同时                                    初始化*/
(2) 模块禁止
int Board_Close(int channels);/*可通道禁止,也可模块级禁止*/
(3) 子通道初始化
int com_Sub_Initialized(int i,int j,msg_format msg)/*包括子通道初始化和报文格式定义*/
报文格式msg_format用结构定义:
typedef  struct{
 unsigned int msg_head_flag ;/*报文头标识*/
unsigned int msg_head ;   
/*报文头*/
unsigned int msg_length ; 
/*报文长度*/
unsigned int msg_tail_flag ; 
/*报文尾标识*/
unsigned int msg_tail ;    
/*报文尾*/
unsigned int msg_recv_baud ;
/*接收波特率*/
unsigned int msg_send_band ;
/*发送波特率*/
unsigned int msg_parity ;   
/*奇偶校验位*/
unsigned int msg_stop ;    
/*停止位*/
        }msg_format;
(4) 串口发送和接收数据函数
int com_Send_Data(int i,unsigned int length,unsigned char c);/*发送函数*/
int com_recv_Data(int channum,unsigned char buff);/*接收函数 */
该智能通信板的驱动可应用于DOS、UNIX以及VxWorks等,上层嵌入式实时软件的良好开发也可以提高该模块的性能。
首先,应该根据用户的实际需求建立软件模型,给系统建立一个并发模型。在这个并发模型基础上,实现任务划分,即按照一定的任务构造准则,把系统分解成功能合理和数目合适的任务集合。任务分配把任务按照一些规则和约束,放入到相应的计算机中,再由任务调度来决定任务的执行顺序,然后用语言来实现每个模块。各部分实现后,应该进行测试。这样实现的嵌入式软件才能和硬件集成为完整的、先进的、高效能的系统。
结语
本文介绍的嵌入式实时智能通信模块的设计,功能强大、应用广泛,而且有一定的通用性,软件设计的灵活性较强,可以满足各种需要。并且该系统还可根据上位机的总线结构来设计,可用于Multibus-I、ISA、PCI等总线,以适应市场的实际应用。■

参考文献
1孔祥营,柏桂枝.嵌入式实时操作系统VxWorks及其开发环境Tornado. 中国电力出版社,2001
2 潇湘工作室. 串行通信开发指南. 中国水利水电出版社,2001



评论


相关推荐

技术专区

关闭