用CH365实现PCI息线与DSP的通信
扫描二维码
随时随地手机看文章
关键词 PCI总线 CH365 双口RAM CPLD DSP
引 言
随着数控技术与装备的发展,特别是在通用微机数控领域,以PC+运动控制器模式的开放式运动控制系统,已经越来越引起人们的重视。这种开放式的数控系统能够在多种平台上运行,可以和其他系统交互操作,并能给用户提供一种统一风格的交互方式;具有可互操作性、可移植性、档次皆宜性和可互补性等特点。PC机技术引入运动控制领域,从软件和硬件方面为开放式运动控制技术提供了新的发展空间和前进方向。
DSP作为运动控制器件的技术目前已趋于成熟,并成功地应用于实际工业生产之中。TMS320C2407是美国TI(德州仪器)公司专为电机控制(DMC)应用而推出的一种低价格、高性能的16位定点运算DSP。该器件将高性能的DSP内核和丰富的微控制器外设功能集于一身,为控制系统应用提供了一种理想的解决方案。
1 硬件电路总体设计方案
PC机与DSP之间的通信目前比较常用的方法是通过RS232串行通信,但这种方式速度较慢,且无法实现实时控制,故考虑应用PC机的PCI接口来实施传输任务。PCI总线是一种高性能的32/64位地址、数据复用总线,它是一种独立处理器的同步总线,可支持碎发传送。其总线时钟频率为o~33MHz。在33MHz的工作频率下达到了132MB/s的传输速度。PCI总线与其他主流总线相比,速度更快,实时性更好,可控性更佳,适用于高速实时的I/O控制卡;但由于PCI总线协议比较复杂,因此其接口电路实现起来并不容易,而采用通用PCI接口芯片就能很好地解决这一问题。
目前市场上常见的PCI桥芯片主要有AMCC、PLX、CYPRESS以及南京沁恒电子公司的CH36X等系列产品。根据比较以及此系统的实际要求,选用南京沁恒电子公司的CH365。此芯片具有如下特点:支持I/O端口映射、存储器映射、扩展ROM以及中断。CH365将32位高速PCI总线转换为简便易用的类似于ISA总线的8位主动并行接口,用于制作低成本的基于PCI总线的计算机板卡,以及将原先基于ISA总线的板卡升级到PCI总线上。
对本系统来说,PC机要发送控制指令和进行大量的数据计算,数据交换应尽可能占用较短的机时和较少的内存空间。另外,PCI总线与DSP之间还要进行大量、可靠的数据传输,它们均过多地占用CPU时间,导致CPU效率降低。使用双口RAM交换信息,双方将其当作自己存储器的一部分,可保证高速、可靠的数据通信。本系统选用的CY7C133,完全能够满足数据传输的要求。CY7C133是一款高速2K×16位的双口静态RAM,允许2个(左、右)端口同时读/写数据,每个端口具有独立的控制信号线、地址线和数据线。可高速存取数据,最短存取时间为25ns,可与大多数高速处理器配合使用,而无须插入等待状态。CY7C133除具有双端口存取功能外,还具有标识器功能,在数据传送时可构成多种接口形式。
2 接口电路的实现
2.1 双口只AM的逻辑判断
双口RAM允许2个CPU同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元,否则就会出现写入值和读出值不是期望值的混乱状态。虽然CY7C133硬件本身带有BUSY控制信号来协调两端的访问,但BUSY信号脚要求与两侧CPU的READY线相连,而CH365并不具有READY信号线,因此,需要引入仲裁逻辑控制模块。常用的双口RAM解决地址竞争的途径有:令牌传递法、基于邮箱机制的INT中断法以及插入等待周期的BUSY法等。在本系统中我们采用第2种方法。
基于邮箱机制的INT中断法的基本思想是:给每个端口分配一个地址作为邮箱,比如本系统可以令CH365使用00H,DSP使用8000H,这两个地址用来装载作为分配两端口RAM使用权的依据数据。具体约定为:当左端口CH365写地址单元00H时,通过逻辑器件可实现右中断DSP_TNT(DSP中断)为低,向DSP发出中断请求,DSP读地址单元00H时,DSP_INT为高,复位CH365发出的中断请求。同理,当右端口写地址单元8000H时,左中断INT_REQ(CH365中断)为低,可向左端口发出中断请求;而当左端口读地址8000H时,INT_REQ为高,复位DSP发出的中断请求。当信箱内容为00时,表示正在使用该方端口;当信箱内容为FFH时,表示结束使用该端口。因此,双方在对端口的其他单元进行读写操作开始时,需要向邮箱中写入00H;操作结束,写入FFH。如果没有发生争用,则直接进行读写操作;否则,慢的一方产生中断,并查询对方邮箱,直到对方邮箱内容为FFH。具体实现可借助CPLD来完成。
2.2 总线扩展的解决方案
CH365的地址总线宽度是16位,数据总线宽度为8位,TMS320C2407的数据总线和地址总线的宽度均为16位,而CY7C133的数据总线宽度是16位,地址总线宽度是11位,所以DSP与CY7C133的接口并无特别之处;但是CH365与CY7C133之间的接口电路就需要对双口RAM进行总线扩展了。基本思想是利用部分CPLD实现锁存器的功能,通过对使能信号的控制,把16位数据进行分时读写,实现数据总线的扩展,即利用锁存器作为虚拟总线。此处选用EPM7032的CPLD来解决总线扩展问题,其内部电路如图l所示。
下面讨论CH365对双口RAM的读写过程。当CH365对双口RAM进行读数据时,设定此时A0为高电平,此时16位数据均从双口RAM中读出,由于高8位数据线与CH365的8位数据线直接相连,所以高8位数据被立即读入CH365中。同时,根据图1中各信号的相互逻辑关系可以得到,读锁存器(U1)的使能信号G有效(高电平),OEN无效(高电平),因而低8位数据被送入U1中锁存起来。接着CH365再进行一次读操作,CH365_A0变成低电平,双口RAM的片选信号变成无效电平,所以此次读操作对双口RAM不产生影响,而此时U1的使能信号G变成了无效电平,而OEN变成了有效电平,上次被锁存的数据(即双口RAM的低8位数据)被送入CH365中,16位数据读完成。当CH365对双口RAM进行写入操作时,设定此时CH365_A0为低电平,同样可根据图l判断写缓存器(U2)的使能信号G有效,而OEN无效,双口RAM片选无效,因而数据被锁存在U2中;接着CH365再进行一次写操作,由于CH365_A0变成高电平,双口RAM片选有效,U2的片选无效,OEN为有效电平,故此时16位数据同时写入双口RAM。从上面的分析可知,利用最低地址位CH365_AO的不同电平,CH365通过两次连续的读或写操作,成功地实现了对双口RAM中数据的读或写,只不过是读入时是先读入高8位,后读入低8位;而写入则是先写入低8位,后写入高8位。同时,两片锁存器不能出现同时被选中的情况.否则就会出现传输数据的混乱,导致传输错误。
本系统的硬件电路原理(主要部分)如图2所示。由于TMS320C2407(3.3V)与双口RAM(5V)的电平差别,加入了电压转换器件SN74LVTHl6245A。
3 PCI和DSP的通信
在硬件电路实现之后,把完成的板卡插于PC机的PCI插槽。上电后,根据系统提示安装CH365驱动程序,在正确安装好硬件之后,就可以在VC环境下编写和调试PCI和DSP的通信软件。
通过API函数编写与DSP的相互数据交换程序,完成双向的中断申请和中断响应,实现数据快速交换。
3.1 CH365的双向通信程序
CH365支持PC机程序以单字节、双字节(字)、四字节(双字)为单位对I/O端口或者存储器进行读写。在多字节连续读写操作期间,CH365每读写完一个字节数据后,就会自动将偏移地址加l,以指向下一个字节的偏移地址。我们可以通过向I/0口的00H写数据实现向DSP申请中断,DSP在响应中断后通过读00H清除上位机的中断。其程序如下:
3.2 DSP的双向通信程序
为了方便观察数据传输结果,本测试中设定,DSP写空间为Ox0400~Ox07FF,读空间为OxO000~Ox03FF,即可以通过DSP程序实现从前lK单元读取数据再写入后lK单元,然后把后写入的数据与PC机写入的数据进行比较。如果吻合,则说明数据交换成功。图3给出DSP的程序流程。
通过双向的软件测试,结果显示数据交换完全正确。
结语
随着计算机技术和电子技术的发展,将运算高速、功能强大的数字信号处理器应用于运动控制,可以实现复杂的控制算法和高精度、高速度、多轴联动功能,在数控应用中,将会占据越来越重要的地位。而快速、准确的通信是这种运动控制器的基础。本文提出的通信方式,具有性能可靠,硬件结构简单,价格便宜的优点,有较好的应用前景。