总线接口卡范文

2024-07-11

总线接口卡范文(精选10篇)

总线接口卡 第1篇

在航电系统的研制初期,通常要先在地面以微型计算机为基础做各种仿真实验。这使得用于各仿真系统的接口板的研制和革新工作便同时成为航电系统发展的一个重点。接口板的主要任务是实现航电系统的数据总线与PC机的数据总线之间的通信功能,这使PC机可以模拟航电系统数据总线上所挂接的实际子系统。PCI(Peripheral Component Interconnect)总线,即外围部件互连总线,是一种先进的高性能32/64位地址数据复用局部总线,可同时支持多组外围设备。PCI局部总线不受制于处理器 ,为中央处理器及调整外围设备提供一座桥梁,更可作为总线之间的交通指挥员,提高数据吞吐量,具有支持线性突发传输、极小的存取延误、采用总线主控和同步操作、兼容性强等优点。本文设计了一种基于PCI总线的接口板,其服务对象是MIL-STD-1553B总线,并编写其在Windows下的驱动程序。

1 1553B总线协议

MIL-STD-1553B 是一个关于数据总线电器特性和协议规范的军事标准,这个标准规定了飞机内部数字式的命令/响应时分制多路数据总线的技术要求,也规定了多路数据总线的操作方式和总线上的信息流的格式以及电气要求。其作用是提供一个在不同系统之间的传输数据和信息的媒介。

1553B数据总线以异步、命令/响应方式执行数据信息的传输,是一种计双工通信方式,它有3种终端类型:总线控制器(BC)、远程终端(RT)和总线监视器(BM)。BC是总线上惟一被安排为执行建立和启动数据传输任务的终端,BC控制数据总线上所有数据信息的传输,任何时候总线上只有一个BC。RT是用户子系统到数据总线上的接口,它在BC的控制下提取数据或吸收数据。MT“监控”总线上的信息传输,以完成对总线上的数据源进行记录和分析,但它本身不参与总线的通信。各终端之间信息传输方式有:BC到RT,RT到BC,RT到RT,广播方式和系统控制方式。1553B数据总线上的信息流由消息组成,一个完整的消息包括命令字、数据字和状态字3种类型。 每个字的字长为20 b,其前3位为同步字头,有效信息位是16位,最后一位是奇偶校验位,采用奇校验,消息字采用曼彻斯特Ⅱ型码调制信号, 所有消息格式都是基于前面所述的3种字类型。

2 系统设计方案

系统设计分为2个部分:硬件电路的设计和软件驱动程序及应用程序的设计。

2.1 系统硬件设计

系统完整的硬件电路结构如图1所示,主要包括1553B总线接口模块、PCI总线接口模块和逻辑控制模块。系统设计主要实现1553B总线和PCI总线之间的通信,因为在1553B总线上传输的是双极性差分信号,所以要对发送或接收的信号进行电平转换和相应的调制解调,1553B总线接口模块即用来完成数据的组织和编码或解码。PCI总线接口模块完成接口卡与上位机的通信。双端口RAM作为2个模块的数据中继,逻辑控制模块则将这2个模块连接成为一个系统。上位机通过PCI总线接口模块将欲发送的数据存入双端口RAM中,逻辑控制模块根据通信协议将数据送到1553B总线接口模块,1553B总线接口模块将此数据进行组织和编码,发送到1553B主总线上;或1553B总线接口模块从主总线上接收到数据,进行解码并存放在存储器。然后通知上位机,上位机通过PCI总线接口模块从存储器中取出数据以及本次1553B总线操作的状态信息。

2.1.1 1553B总线接口模块设计

1553B总线接口模块主要包括1553B协议芯片、隔离变压器和时钟晶振。1553B协议芯片采用DDC公司的BU-61580,芯片包含2个低功耗的双端收发器、协议逻辑、存储器管理逻辑、处理器接口逻辑及4K×16 b内置共享静态RAM以及直接面向主处理器的缓存接口组成,最多可扩展64K×16 b的外部RAM。协议芯片通过短截线与1553B主总线相连。而在协议芯片与短截线之间需要设置隔离变压器,该隔离变压器将1553B主总线与接口卡直流隔离,防止接口卡上产生的噪声影响1553B主总线上的信号。

BU-61580功能上集成了BC/RT/BM一体化设计,可以编程设置BU-61580的配置寄存器来设定系统的工作方式,例如本系统中,通过软件编程BU-61580配置寄存器1的位15为逻辑“1”,位14为逻辑“0”,可使BU-61580工作于RT方式。内存管理模式可选是BU-61580的RT的一大特点。为了下位机处理器可以方便的存取从给定地址接收有效的、完整的数据块,保证为处理器提供最高程度的数据采样一致连贯性,RT方式的内存管理采用双缓冲模式,该模式下可以有选择地将接收的广播消息分解为非广播消息。具体实现方法是为每一个接收到的消息提供2个32位的数据字块,一个为激活的,另一个为停止的。当前命令结束后,BU-61580自动切换该子地址的数据块的激活区域与停止区域,这样,当向同一子地址发送命令时,如果数据有效并且双缓冲区允许,数据会保存到另一个数据块中,而不会使上一次的数据被覆盖。

与下位机连接方面,BU-61580的接口配置采用16位缓冲模式,它向下位机提供了一个直接共享RAM接口。在该模式下,BU-61580的数据、地址总线与主机的总线地址隔离,并且BU-61580的寻址空间限制在其内部RAM4K字的范围内。

2.1.2 逻辑控制模块设计

PCI总线接口模块与1553B总线接口模块之间的逻辑控制电路通过可编程逻辑器件和DSP实现。可编程逻辑器件采用了Altera公司的EP1C12B芯片,其主要实现地址译码、数据缓存、逻辑控制、握手连接和与BU-61580的协议转换等功能。EP1C12B芯片内部的RAM资源作为双端口RAM和BU-61580之间的数据通道。下位机主控单元DSP控制器采用TI公司的TMS320F2812,用于控制EP1C12B完成1553B总线接口模块对双端口RAM的数据吞吐。上位机对1553B协议芯片进行操作时,相应的数据信号、地址信号和控制信号通过PCI总线发送到双口RAM中。DSP控制FPGA从双口RAM中取出该地址信号和控制信号进行译码,产生对应的地址信号以及控制信号送到BU-61580。如果操作是向1553B主总线发送数据,则同时将数据信号送到BU-61580的数据线。一次读写操作结束时,BU-61580将输入FPGA的READY信号拉低,通知FPGA读写操作结束。如果有中断产生,则在输入FPGA的INT引脚上产生中断波形(下降沿或低电平)。根据BU-61580输入FPGA的中断信号、握手信号或数据信号等,FPGA相应产生上位机需要的中断信号、握手信号、插入等待信号和数据信号等,送到PCI总线上。

2.1.3 PCI总线接口模块

PCI总线接口模块包括PCI协议芯片及其配置电路。PCI协议定义了严格的电气特性和时序要求,其接口电路实现难度大,采用专用的PCI接口芯片,可以避开复杂的PCI协议的细节设计,大大缩短开发周期。本系统选用的是PLX公司生产的PCI9052接口芯片作为PCI总线控制器,实现接口卡与PCI总线的桥接。

在进行驱动编写前,需要根据功能需求对PCI9052芯片进行相应的配置操作。PCI9052芯片有2类寄存器:PCI配置寄存器和局部总线配置寄存器。PCI配置寄存器的内容反映配置空间的情况,它的配置空间的内容包括PCI设备号DID,制造商号VID、中断号、设备类型号、局部空间基地址、局部空间描述符、片选响应以及局部响应控制CNTRL等信号,这些配置信息在芯片复位时通过串行E2PROM加载。PCI9052会自动根据该E2PROM的状态决定其内部寄存器值。E2PROM中的配置信息的正确与否关系着整个板卡是否能够正常工作。当系统配置成功后,接口卡可被PC机识别,即可进行驱动程序的开发。

2.2 系统软件设计

2.2.1 驱动程序设计

设备驱动程序提供连接到计算机的硬件的软件接口,所要完成的任务是链接应用层和硬件层,使操作系统识别具体硬件,并使用硬件资源。微软公司提供了专门的驱动程序开发工具包Windows XP DDK,但是DDK开发难度较大,周期长,不容易掌握,Numga公司的开发工具Driver Studio可以大大简化驱动程序的开发过程,它制作的类库封装了DDK的函数,完全兼容所有的DDK函数,它封装了比较底层的繁复操作,减少了对简单接口的复杂操作,专门提供了的开发向导Wizard与微软的Visual C++紧密地集成,驱动程序代码框架只需要在DriverWorks工具向导程序的指引下,根据硬件的具体参数填写必要步骤即可完成。另外,Driver Wizard还能生成专为特殊设备定制的代码,比如PCI设备, ISA设备等。

驱动程序的基本功能是完成设备的初始化、对端口的读写操作、中断的设备和响应及中断的调用,以及对寄存器和内存的直接读写。在Driver Studio生成的程序框架上,根据具体的要求添加新的类对象和代码,结合接口卡的特点,编写一些特殊的驱动,在VC下编译后即可得到所需的驱动程序。

2.2.2 应用程序设计

Windows系统为用户提供了一些API函数,用于向WDM结构的驱动程序发命令以及进行数据交换,在内核区存在各种与之相对应的处理例程,见表1。

CreateFile用于获得驱动程序句柄,CloseHandle关闭驱动程序,而其余函数用于应用程序控制驱动程序或者与驱动程序交换数据,其中DeviceControl函数完成读取PCI配置空间内容的功能。在WDM中实现输入输出处理可以通过KIoRange类实现。应用层通过DeviceIoControl函数向设备句柄调用KIoRange类的成员函数,实现应用层对I/O空间的处理。

应用程序的流程如图2所示。

3 结 语

1553B作为一种高可靠性和稳定性的数据总线已在军事和工业领域得到越来越广泛的应用。本文设计了一种基于PCI总线的1553B总线接口卡,分别使用PCI9052和BU-61580作为PCI总线和1553B总线的协议芯片,使用FPGA进行总线逻辑控制,提高了系统的集成度,驱动程序方面,利用Driver Studio向导生成驱动程序的框架,极大简化了驱动程序的编制。实验证明,本文设计的接口卡可以为电子设备提供符合1553B标准的接口,完成可靠的数据交换,工作稳定,功能完善,多个板卡可组成一个1553B总线仿真测试系统,通过仿真设备可用于模拟航电设备进行仿真测试,对开发1553B总线通信系统具有重要的现实意义和应用前景。

摘要:根据1553B数据总线协议及其接口技术要求,设计了一种基于PCI局部总线的1553B总线接口卡。系统使用PLX公司的PCI9052和DDC公司的1553B协议芯片BU-61580,通过FPGA芯片EP1C12B进行PCI协议和1553B协议的转换,使用DSP控制器TMS320F2812作为下位机的主控单元,并编制了接口卡驱动程序,实现了1553B总线和PCI总线的转换。

关键词:PCI局部总线,1553B总线,总线接口卡,数据总线协议

参考文献

[1]支超有.机载数据总线技术及应用[M].北京:国防工业出版社,2009.

[2]ILC Data Device Corporation.ACE/Mini-ACE series BC/RT/MT advanced communication engine integrated1553B terminal user's guide[M].[S.l.]:ILC Data Device Corpo-ration,1999.

[3]ILC Data Device Corporation.MIL-STD-1553Bdesigner's guide[S].6th ed.USA:ILC Data Device Corporation,1998.

[4]PCI-SIG.PCI local bus specification draft[S].Revision2.2.[S.l.]:PCI-SIG,1998.

[5]史国庆.基于PCI总线的1553B总线接板设计[D].西安:西北工业大学,2004.

[6]李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.

[7]瞿朝兵,陈涛.基于PCI总线的1553B总线接口卡设计[J].仪器仪表用户,2007,14(4):95-97.

[8]夏宇闻.复杂数字电路与系统的Verilog HDL设计技术[M].北京:北京航空航天大学出版社,1998.

[9]Altera Corporation.CycloneⅡhandbook[M].USA:Al-tera Corporation,2006.

总线接口卡 第2篇

基于PCI总线的多路数据总线接口设计与实现

提出了一种主处理机可以直接控制的1553B总线接口模块的设计与实现方案,并简要介绍了其硬件结构、工作过程和软件开发.利用PCI协议芯片实现PCI局部总线与军用1553B总线的.桥接,采用WDM技术编写驱动程序.所设计的总线接口模块符合MIL-STD-1553B总线标准,具有结构简单、成本低廉、操作方便等特点,可用于仿真,开发1553B总线产品.

作 者:张伟 吴勇 ZHANG Wei WU Yong 作者单位:西北工业大学,陕西,西安,710072刊 名:火力与指挥控制 ISTIC PKU英文刊名:FIRE CONTROL AND COMMAND CONTROL年,卷(期):200732(1)分类号:V247.1 V247.1+9关键词:1553B 总线接口 开放式体系结构

基于SPI总线接口的FRAM设计 第3篇

关键词:SPI总线;单片机;总线接口;FRAM设计

中图分类号:TP333 文献标识码:A 文章编号:1009-2374(2013)14-0011-03

随着科技的进步,电子技术的发展,在电子、工程控制、通信等行业内,单片机的应用范围也越来越广,而它的外围芯片接口应用也变得越来越重要。针对于一些记录测控的数据,记录通信的数据,都需要不掉电存储方式,所以不掉电存储也成为了控制系统中不可或缺的一个部分。在存储芯片的发展过程中,有很多产品诞生,如E2PROM或闪速存储作为存储介质,则速度较慢;在实时性要求较高的场合常采用电池支持的SRAM,它既有RAM的读写速度,又有ROM掉电数据不丢失的特性,但是电池支持的SRAM在实际使用过程中数据不可靠,容易丢失,且电池容易受到环境因数的影响;而RAMTRON公司研制的铁电存储成功解决了电池的问题,由于具有几乎无限次数擦写、高速读写、低功耗、数据能掉电保持等特点而广泛地应用在各种控制系统中。本文采用C8051F单片机对FRAM芯片的读写操作,从而完成了对于系统的参数及数据保存功能。

1 C8051F单片机的SPI总线接口

C8051F单片机微处理器具有SPI接口,所以可以和FM25V10直接通过SPI总线进行连接,并且SPI总线的速度完全可以达到要求。SPI总线只需四条线就可以完成MCU与各种外围器件的通讯,分别为:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线(CS)。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。传输完一个字节之后,该字节便会进入到接收器件的移位寄存器中,这样就可以完成了两个器件之间的数据交换,SPI总线的主机的时钟信号来确保本次传输的同步,当SPI被配置为主器件时,最大数据传输率(位/秒)是系统时钟频率的二分之一。当SPI被配置为从器件时,如果主器件与系统时钟同步发出SCK、NSS和串行输入数据,则全双工操作时的最大数据传输率(位/秒)是系统时钟频率的十分之一。

2 FM25V10的工作原理及其特点

FRAM是靠材料特性来保存数据,这种材料并非磁性材料,所以从原理上讲,磁场对数据是没有影响的,在实际中,电场对数据也没有影响,所以其抗干扰能力强。在复杂环境中可以记录一些重要的数据,由于它的擦写次数多,所以可以记录每一个数据脉冲。

铁电存储器FRAM的特点:(1)具有非易失性,掉电后数据可以保存45年左右;(2)擦写次数很多,5V供电的FRAM的擦写次数多达10000亿次;(3)速度快,串口总线的FRAM的CLK的频率最高可达20M,没有等待写周期,并口的访问速度70ns;(4)功耗较低,静态电流小于10uA,读写电流小于150uA。

电路的工作环境会涉及到强电和弱点之间的转换和一定的电磁干扰,设计选用Ramtron公司的FM系列铁电存储器。

FM25V10为2M位的非易失性铁电随机存储器,结构容量为256K×8位,无限次的读写次数,掉电数据保持10年,写数据无延时,采用快速SPI串行协议,最高速度可以达到40M的总线速度。硬件上有完善的写保护,同时软件也可以进行写保护。工作电压:2.7~3.6V,静态工作电流:5uA。

3 FRAM与C8051F单片机的SPI硬件设计

由于FM25V10与其他的SPI设备一样,可以直接挂在SPI总线接口上,本文采用的是SPI的四线接口,因此需要额外的片选信号NSS,/HOLD和/WP直接连接到高电平上,所以不进行硬件保护操作和暂停操作,硬件连接如图1、单片机相应的端口分配如表1所示。

4 软件流程及其程序的编写

数据存储及读取模块软件的程序设计主要对象是铁电存储器FM25V10,通过对单片机内部集成的A/D采集模块进行数据的采集,并将数据进行实时的存储在铁电存储器FM25V10中,并且在存储结束后将数据读取出来,通过通信模块将数据传输给上位机。

数据的存储及读取过程中是通过SPI总线方式进行传输的,该方式可以有效地对数据进行快速、准确的存储及读取。C8051F单片机中的SPI提供了一个灵活的四线全双工串行总线,SPI所使用的4个信号分别是:MOSI、MISO、SCK、NSS。

该程序的编写主要分为两部分:一部分是对FM25V10的数据存储程序的编写;另一部分是对FM25V10的数据读取程序的编写。在对FM25V10的操作过程中,我们要根据FM25V10手册中所提供的操作码来操作,而且还要根据手册中提供的程序时序图来编写程序。表2是FM25V10手册所提供的操作码。

对于软件的编程之前,首先要把要编写程序的基本流程画出来,可以更清晰地了解程序的主要内容及其工作流程,图2就是本文中的读写数据软件流程。

下边是用到的最基本的程序块,包含了三个方面:数据的写入、数据的读取、地址的自动加一。

(1)将R0数据写入到SPI端口寄存器:

SPI_write:

CLR SPIF

MOV SPI0DAT,R0

JNB SPIF,$

CLR SPIF

RET

(2)读取SPI端口寄存器中的数据到R0:

SPI_read:

CLR SPIF

MOV SPI0DAT,#00H

JNB SPIF,$

CLR SPIF

MOV R0,SPI0DAT

RET

(3)地址自动加1:

DPTR_INC:

INC DPTR_LL

MOV A,#00H

CJNE A,DPTR_LL,DPTR_RET

INC DPTR_HL

MOV A,#00H

CJNE A,DPTR_HL,DPTR_RET

INC DPTR_HH

DPTR_RET:

RET

5 结语

通过对硬件电路进行设计及相对应的软件编程实现了数据的存储和读取功能,完成了基于SPI串口总线的单片机对FRAM存储芯片的读写操作,完成了实时参数及其数据保存功能,通过实验可以说明数据通信稳定可靠。由于FM25V10存储芯片具有重复擦写、非易失性等特点,所以目前采用SPI总线接口的芯片越来越多,在仪器仪表、工业控制、数字家电等方面普遍得到应用。本文采用的C5051F单片机SPI接口,该方法也可以适用于其他带SPI接口电路的微处理器。

参考文献

[1] 洪亮,鄢萍,易润忠.基于SPI和单片机的嵌入式系统扩展方法[J].微型电脑应用,2008,24(9).

[2] 汪永琳,丁一.一种3线制半双工SPI接口设计[J].集成电路设计与开发,2010,35(5).

[3] 宋晔,蔡慧,赵荣祥.采用SPI接口实现TMS3230F240DSP之间的通信[J].机电工程,2005,22(5).

[4] 杨瑞帆,郭晓鹏,崔顺.基于C8051F330D单片机的多路数据采集系统设计[J].电子测试,2010,(4).

[5] 冯金霞,张轮,熊天圣.基于SPI接口的异步串口扩展技术研究[J].微型电脑应用,2009,25(12).

[6] 贾伟,邵左文,张玉猛.基于SPI总线的高速串行数据采集系统设计[J].国外电子测量技术,2007,26(4).

总线接口卡 第4篇

PC104总线是一种专门为嵌入式控制而定义的工业控制总线,它秉承了IBM-PC开放式总线结构的优点,与IBM-PC完全兼容,同时可满足嵌入式控制的特殊要求:体积小、功耗低、可靠性高、编程调试方便,并采用模块化结构,总线易于扩充,紧固堆栈方式安装,因此在控制和检测领域得到了广泛应用[1]。多轴运动控制卡广泛应用于开放式数控系统、机器人控制等工业自动化装备,但常用的运动控制卡多以DSP为核心,不仅开发周期长,而且需与工业PC配合使用,应用成本较高。而采用嵌入式工控机PC104+运动控制接口卡的形式,则可很好地满足小型便携式设备的运动控制应用需求,不仅成本低、便于开发,应用也更灵活。但PC104模块的小尺寸给接口卡的设计带来了一定的困难。为此以现场可编程门阵列FPGA为核心,通过软件编程实现其与PC104主机的总线接口以及与外部多轴运动控制、开关量控制等功能接口,显著减少了接口器件、节省了硬件布线空间,并且使接口卡的性能更稳定,抗干扰能力更强。

1 运动控制接口卡总体设计

根据对常用运动控制卡的功能需求分析,拟定了运动控制接口卡的总体框图如图1所示。实线框内为接口卡内部电路,它由核心器件FPGA和一些必要的外围电路组成。其中,FPGA采用Altera公司的Cyclone系列FPGA——EP1C6Q240C8,其工作电压为3.3V,内核电压1.5V,采用0.13μm工艺制造,内部有锁相环、RAM块,逻辑容量有5980个逻辑单元,支持多种I/O标准和低成本串行配置器件,可很好地满足本接口卡的应用需求。

主机通过PC104总线向接口卡发出动作指令,地址译码模块对总线地址进行译码,为FPGA内部其他模块的寄存器分配地址。本卡的运动控制指令采用脉冲形式输出,可直接应用于步进电机和伺服电机的运动控制。各轴的运动控制脉冲信号由FPGA内部的DDA精插补器产生。DDA精插补器根据PC104主机发送来的各控制轴粗插补指令,产生相应的方向控制和均匀的位移脉冲输出。各运动轴的位置编码器反馈信号经差分接收转换为单端信号后被送入FPGA内部的编码器接口模块,进行四倍频、鉴向,并产生计数脉冲和方向信号给可逆计数器进行计数,计数结果存于位置寄存器中,供PC104读取。考虑到实际应用需求和可扩展性,本卡共设计了24路数字量输入通道和24路数字量输出通道,输入通道可根据用户具体要求来定义其用途,如作为控制轴位置传感器接口,用于原点、限位等,而输出通道则可以用于一些外部设备的启停控制等。

2 功能模块的FPGA内部实现

本运动控制接口卡的主要功能完全由FPGA通过内部逻辑实现。下面按功能模块分别介绍其实现方法。

2.1PC104总线接口模块设计

PC104主板与本接口卡组成应用系统时,首先要为该卡设置与主板内的其他设备不相冲突的I/O地址。PC104的标准规定,外设的操作地址线为A[9:0]。把PC104地址线的A0~A9,IOCS16,IOR和IOW连接到FPGA,A0~A9为PC104的低10位地址总线,IOCS16为IO空间16位操作信号线,IOR,IOW分别为系统总线的读、写选择信号线。A0~A9,IOR相与产生了FPGA内部其他各功能模块状态寄存器的片选信号,供PC104读取;A0~A9,IOW相与产生了FPGA内部其他各功能模块数据锁存器的片选信号,供PC104写入。由于接口卡只用到了PC104总线的16位方式,没有用到它的8位总线方式,使得PC104在访问该卡上的任何资源时,IOCS16必须一直保持为低,否则将得不到其高8位数据[2,3]。图2是PC104总线接口模块框图。

2.2 数控精插补器模块设计

为使本接口卡能够方便地应用于步进电机和伺服电机的运动控制,接口卡的运动控制指令采用脉冲形式输出。为保证其运动控制的实时性,应用系统的轨迹插补采用PC104粗插补加FPGA精插补的两级插补方法。PC104经过粗插补,得到各个运动轴在一个插补周期的位移增量指令,并传送给接口卡。经过FPGA精插补,把各轴位移增量指令转化为相应轴的方向控制信号和均匀的位移脉冲输出,粗插补与精插补同步进行,这样一方面减轻了PC104的负担,另一方面发挥了FPGA的并行处理能力,保证了输出脉冲均匀性,提高了运动控制的实时性和平稳性。

精插补模块主要由时序发生电路、DDA积分器电路等子模块组成。

2.2.1时序发生电路设计

整个精插补电路必须在时钟信号的严格控制下运行才能保证准确产生和输出进给脉冲。如图3所示,此电路的主要功能是将FPGA时钟引脚输入的30MHz时钟信号经过分频后送给DDA积分器电路,作为DDA积分器的累加控制时钟。该模块还包括终点判别计数器,其对累加时钟进行计数。当计数值为2n(n为被积函数寄存器位数,见下文)时,其向DDA积分器发停止信号,停止本次插补并加载下一个周期的精插补数据,并产生中断信号发给PC104,申请新的插补数据。

2.2.2DDA积分器电路设计

本模块的结构如图4所示。为保证各轴运动控制的连续性,减少对主机的实时性要求,在精插补脉冲转换模块中设计了一个缓冲器,用于在进行本次精插补运算时,存储PC104发送来的下一次插补数据,以便本次插补停止信号的触发下及时将保存在缓存器中的新插补数据立即送入DDA积分器,进行精插补,确保两次插补之间的连续性。

现以x轴精插补为例,讨论DDA插补器的基本原理。x被积函数寄存器JVX存放x向终点坐标xe,x积分累加器为JRX。另外还有一个终点判别计数器JL作为长度计数器。每当脉冲源发出1个插补迭代脉冲时,xe向其积分累加器中累加一次,当累加果超出积分累加器容量(2n)时,就溢出1个进给脉冲Δx。经过N=2n次累加后,溢出脉冲总数就等于被积函数值xe。终点判别计数器JL初始值为0,插补运行时将对插补迭代脉冲计数,当JL=N=2n时,则发出停止信号,说明到达了终点[4]。对于多轴联动,只要同时设计若干个积分器就可实现多轴联动的精插补运算。图5为最终完成的精插补模块时序仿真图。

2.3 编码器接口模块设计

此信号处理电路由四倍频及鉴向电路、可逆计数器以及位置寄存器等组成。旋转编码器输出的差分信号经26LS32转换为单端信号后被送入四倍频及辨向电路。四倍频及辨向电路产生的计数脉冲和方向信号给可逆计数器进行计数,计数结果由位置寄存器存储,供PC104读取。

旋转编码器典型输出为两个相位差为90°的方波信号A, B以及零位脉冲信号Z。对A, B两相信号的脉冲计数可得轴的转角;判断它们之间的相位关系可得转向,即当A相超前B相90°时,旋转编码器正转,当B相超前A相90°时,旋转编码器反转。如果能够将A或B信号四倍频,则角位移测量精度将提高4倍[5]。图6为设计的四倍频细分及鉴向电路原理图。

2.4I/O接口模块设计

本接口卡提供了24路数字量输入和24路数字量输出,供用户扩展使用。所有I/O数字量都用TLP521光耦进行了光电隔离,以有效抑制尖脉冲和各种噪声干扰,提高过程通道的信噪比[7]。

当需要输入外部开关量信号时,由PC104将输入开关量寄存器的地址、读控制信号、命令信号发送给FPGA,FPGA译码后将外部输入开关量输入至指定寄存器,并将其中的数据送到PC104数据线上,供PC104读取。当要输出设定的开关量状态时,PC104就将输出开关量寄存器的地址、写控制信号、命令信号发送给FPGA,FPGA译码后将PC104数据线上的数据保存到输出开关量寄存器里,从而控制开关量的断开或闭合。

3 结束语

介绍了一种可用于多轴闭环运动控制的PC104接口卡,它能够以脉冲加方向的信号形式输出多轴运动控制指令,便于直接应用于步进电机、伺服电机的运动控制,并能对增量式光电编码器等位置传感器输出的正交编码脉冲进行反馈检测,实现闭环运动控制,同时还设计了24路数字量输入和24路数字量输出,供用户扩展使用。由于整个接口卡以FPGA器件为核心,将多个接口模块集成于其中,硬件结构十分简洁,可靠性高,抗干扰能力强;而且与主机接口符合PC104的总线标准,可作为标准的运动控制接口模块使用。

参考文献

[1]PC/104 Specification Version2.4-August[Z].2001:5-7.

[2]Advantech Corporation.PCM-3350[Z].UserManual,2004.

[3]王友权.基于EPF10K30的ISA接口设计[J].现代电子技术,2004(24):64-68.

[4]陈蔚芳.机床数控技术及应用[M].北京:科学出版社,2005.

[5]顾越州.增量式编码器的接口设计[J].机电工程,1997(4):33-34.

[6]杨恒.FPGA/CPLD最新实用技术指南[M].北京:清华大学出版社,2005.

CAN总线控制器与DSP的接口 第5篇

3.1 地址数据复用线的设计

将DSP的数据线D0~D7作为CAN的地址/数据复用线,用DSP的数据线去选择CAN的内部端口和传送数据。

3.2 地址有效信号ALE的产生

对于TMS320LF2407,用地址线A0、写选通信号WR和端口选通信号STRB的逻辑组合产生DSP的ALE信号,对于TMS320VC5402,则用地址线A0、I/O端口选通信号IOSTRB的逻辑组合产生ALE信号。

3.3 读写信号的产生

对于TMS320LF2407,用读信号和A0的逻辑组合产生SJA1000的读选通信号,用写信号和A0的逻辑组合产生SJA1000的写选通信号。对于TMS320VC5402,则用A0、IOSTRB和R/W的逻辑组合产生SJA1000的读和写选通信号。逻辑关系如表2所示。

表2 TMS320LF2407和TMS320VC5402与SJA1000接口逻辑

TMS320LF2407TMS320VC5402SJA1000A0STRBR/WWEA0IOSTRBR/WALEWERD100X10011100000000010011001010

3.4 片选信号的产生

用DSP的I/O空间选通信号IS和高位地址的译码信号的逻辑组合产生CAN的片选CS。

从以上设计思想可以看到,这种方法是将DSP的数据线改为适应CAN控制器的数据地址线。为此将DSP的A0作为地址数据选择线。A0=1时,地址有效;A0=0时,数据有效。即用奇数地址选择端口,用偶数地址传送数据。同时,通过信号的逻辑组合,在地址有效期间不产生读写信号,而是产生满足CAN的地址有效信号ALE;在数据有效期间产生满足CAN的读和写逻辑信号时序。

4 CAN与DSP的接口电路

以TMS320VC5402与SJA1000芯片为例设计的接口电路如图7所示。图中,用一片GAL16V8B作为接口逻辑转换电路。为突出接口电路,其它部分从略。用FM书写的设计文件如下:

GAL16V8B

INTERFACE

CH SH APR 19,2

DECODER

NC NC IS IOSTRB A0 RW A14 A15

NC GND

NC NC CS WR RD ALE NC NC NC VCC

CS=A15*A14 *IS

ALE=A0*IOSTRB*R/W

RD=A0*IOSTRB*R/W

一种机载TM总线接口设计 第6篇

1 TM总线概述

TM (Test and Maintenance, 测试与维护) 总线是用于电子设备的子系统和模块的测试、诊断与维护的标准底板总线, 是针对模块和子系统而提出的一项新的检测技术, 现已应用于以F-22为代表的第四代飞机中[2]。现提出一种TM总线的接口设计。

TM总线采用主从式工作方式, 系统中存在一个TM总线主设备和多个TM总线从设备, 从设备在主设备的命令下工作。本文的设计主要是从测试数据角度出发, 测试数据通过主/从模块的控制器经USB接口进行数据传输、采集、处理后, 送入计算机。各模块通过TM总线控制器挂接到TM总线上, 图1为总体设计。

2 系统硬件设计

2.1 系统硬件结构设计

系统硬件设计包括总线控制器、USB接口平台及PC连接几个部分, 本文将介绍TIU (传输接口单元) 通过USB接口进行数据传输的过程, 整体结构框图如图2所示。

由图2可知, 硬件总体结构数据传输可分为以下两大块:

(1) 在USB接口接收从TIU传送出的数据, 经过数据处理和数据解析, 把数据解释成有实际意义的参数, 实时显示在PC机的显示画面上。

(2) 从PC机来的数据, 通过USB接口, 发往TIU。

2.2 TIU设计

在所设计的系统总体结构中, TM总线主/从模块上都有一个TIU, 其基本功能是完成TM总线协议及实现主从模块间的数据通信。

2.2.1 TIU详细设计

在TM-BUS控制器的研制中, 主/从TM-BUS控制器实现一体化设计, 通过控制使TIU工作在主/从两种模式下, 主方式下的TIU发送命令, 从方式下的TIU接收并执行命令。TIU结构设计图如图3所示。

2.2.2 TIU的设计原理

从数据信号流程方面来说:接收数据时, TM总线上的输入信号经过译码转换进入寄存器, 在这里完成数据串/并格式转换, 进行奇偶校验检查, 检查后如果正确, 则通过地址比较逻辑, 进行命令译码, 按照所给出的命令送入所定义的不同作用的寄存器中。

TIU执行控制命令的过程如下:TIU链路层状态机控制命令的接收, 核心状态机执行该命令, 并把待传送的应答传送至移位寄存器中, 再由TIU链路层状态机控制应答传送。由软件实现的命令其执行过程是核心状态机将该命令传送至输入接口缓冲器并产生中断信号, 模块中的CPU响应中断, 从输入接口缓冲器中读取命令, 进行测试操作和模块维护操作, 并把结果写入状态寄存器或输入缓冲器, 然后TM总线主控制器取走该测试结果[3]。

2.3 TM总线状态机设计

TM总线协议规定其链路层状态机分为主从两个状态机, 由于TIU不存在同时既做主又做从的工作模式, 因此可以把主/从两个状态机合为一个。通过控制使TIU工作在主/从两种模式下, 主方式下的TIU发送命令, 从方式的TIU接收并执行命令。图4为主状态机状态转换图。

在TM-BUS主状态机状态标记中, 最后两位表示在该状态下MCTL和MMD的值, 状态转换的条件由状态变量M1, M2, M3表示。图4中所标的转换条件为[M1, M2, M3]取值。

POWERUP2_00为上电后或复位后的状态;XFER16_1X~XFER00_1X为数据传送状态;WAIT_00为出错状态, 该状态结束的条件是MCTL与MMD发生传输冲突消失且消息传送结束;在PAUSE_01状态下插入等待;EOM_00为消息传送的起始和结束状态。主/从两个状态机合为一个状态机后, MCS和主权控制状态机控制作何种状态机运行, [M1, M2, M3]控制主状态机的状态转换, 从状态机的状态转换由MCTL和MMD控制。

2.4 USB接口设计

USB接口芯片采用了ISP1581。ISP1581是Philips公司提供的高速USB接口芯片, 符合USB 2.0规范[4]。它的内部集成了数据收发器、串行接口引擎 (SIE) 、并行接口引擎 (PIE) 、FIFO存储器 (8 KB) 、存储管理单元 (MMU) 、微控制器接口和DMA (直接内存访问) 管理器。外部电路接口简单, 因ISP1581内部不带有微控制器, 需外接。本文的微控制器采用AT89C52单片机。USB硬件模块主要包括ISP1581, AT89C52, 总体框架结构如图5所示。

ISP1581通过16位数据总线与FPGA相连, AT89C52负责控制数据的DMA传输。ISP1581与微控制器的通信通过一个高速 (15 MB/s或15 Mword/s) 的通用并行接口AD[7:0]实现, 并具有高速DMA接口。

2.4.1 USB接收数据模块实现

本文采用的USB器件是带有DMA控制器的ISP1581, 为了简化电路, 采用ISP1581的DMA主控制器方式。如图6所示, 当FPGA的FIFO满标志为1时, 单片机给ISP1581发送请求有效信号、写信号和写周期信号, 给FIFO发送读请求信号和读周期信号, 当读出的数据达到预定的数目时, 单片机把ISP1581请求信号设置为无效, 等待下一组存储数据。

2.4.2 读数据和并/串转换

单片机把接收的控制信号通过DMA传输通道把数据传到FIFO中, 其DMA传输过程和图6相似, 只要把DIOW改成DIOR, 把rdreq改成wreq就可以了, 然后通过FPGA的内部逻辑取出16位并行数据进行并/串转换。

3 系统软件设计

3.1 USB固件 (Firmware) 程序开发

固件其实就是单片机的程序文件, 主要完成设备初始化、USB协议标准请求处理以及其他应用程序。一般来说, 固件程序的软件结构可设计为基于中断的分层结构, 如图7所示。

在固件程序中, 后台的中断服务例程 (ISR) 负责从ISP1581收集数据, 当ISR收集到了足够的数据时, 通知前台主程序循环数据已经准备好, 由主程序循环进行数据的处理。以的批量传输端点为例, 当从主机收到一个数据包, 就会向为控制器产生一个中断请求, 微控制器立即响应中断。在中断服务例程中, 固件程序将数据包从内部数据缓冲区转移到循环数据缓冲区, 然后将数据缓冲区清零以使该端点可以接收新的数据包, 这时微控制器可以继续执行当前更为紧急或者还未处理完的任务, 例如读取采集数据, 然后返回到主循环中检查循环缓冲区是否有新的数据, 并进行处理。

3.2 USB设备驱动程序开发

驱动程序的基本功能是建立应用程序与USB接口之间的数据通讯。本设计采用Driver Works开发USB驱动程序。

应用程序可以利用Win32API直接调用驱动程序。读操作是从应用程序调用Win32API函数的ReadFile开始的。当应用程序调用ReadFile函数时, 系统通过ntdll.dll调用ntreadfile向设备驱动程序发送一个IRP, 驱动程序接收到该IRP后, 开辟用以接收数据的内存区, 判断所读数据是否大于端点的最大信息包规格 (Maxsize) , 如果所读数据大于端点的最大信息包规格, 则此次只能读取Maxsize个字节, 这样就会造成数据丢失。因此, 固件程序应避免发送大于端点Maxsize的信息包, 然后建立相应端点的URB并向下层驱动提交该URB, 此时I/O管理器执行Read, 把设备传来的数据放到缓冲区内。具体过程如图8所示[5]。

4 结 语

本文对TM-BUS技术在四代机中的应用进行了分析, 运用VHDL语言、FPGA、USB等技术, 设计了TM-BUS接口板。在对TM-BUS控制协议分析的基础上, 基于FPGA技术实现了TM总线协议, 利用USB芯片ISP1581实现接口电路与上位机的连接, 实现与PC机的数据通信, 同时编写了USB设备端的固件程序和PC机端的USB的设备驱动程序[6]。通过试验得出结论:

(1) TM总线技术为综合航空电子系统可测试性的发展提供了必要的技术途径;

(2) 基于FPGA技术实现的TM-BUS协议芯片, 可有效实现总线各项控制功能。

对于一个复杂系统的设计, 初始阶段可能会存在功能上的不足, 这些会逐步得到改正, 因而本设计有提高和升级的空间。

参考文献

[1]陈德煌, 陈万美.F-22战斗机的综合航空电子系统[J].电光与控制, 2003, 10 (1) :50-54.

[2]江帆, 鞠建波, 邓晓涛.综合航空电子系统新技术研究[J].现代电子技术, 2003, 26 (6) :32-34.

[3]周若愚, 冯英振.模块测试和维护总线[J].航空电子技术, 2007, 32 (3) :38-43.

[4]黎美, 刘笃仁.基于USB 2.0的接口芯片ISP1581的应用与设计[J].中国集成电路, 2005 (7) :55-60.

[5]李志文.基于USB 2.0的接口芯片ISP1581的应用设计[D].北京:北京航空航天大学, 2006.

[6]董文龙, 蒋本珊.基于TM1300的USB接口设计与实现[J].计算机系统应用, 2005 (1) :89-93.

[7]白煜.基于PCI总线的ARINC429总线接口板的设计[D].西安:西北工业大学, 2002.

[8]王卫东, 康继昌, 周耀荣.测试维护总线 (TM-BUS) 控制器的设计与实现[J].西北工业大学学报, 2000, 18 (4) :591-594.

[9]方加喜, 徐善锋, 李玉山.通用串行总线原理及其外设接口设计[J].半导体技术, 2007, 27 (11) :33-38.

总线接口卡 第7篇

总线被称为现代航空电子系统的“骨架”,1553B总线和ARINC429总线是当前航空电子系统应用较为广泛的航空数据总线。由于2种总线标准的差别较大,传输速率不匹配,因此在某些应用场合,航空电子产品需要应用DSP和CPLD为核心的嵌入式计算机系统将1553B总线与AR-INC429总线两种格式进行接收、转换和发送,从而实现信息交换。本文提出了一种基于DSP和CPLD为核心的嵌入式平台,实现满足1553B总线、ARINC 429总线接口要求的设计方法。

2 总线简介

2.1 1553总线

1553B总线的传输速度为1 Mbit/s,字的长度为20 bit,数据有效长度为16 bit,信息量最大长度为32个字,传输方式为半双工方式,传输协议为命令/响应方式,故障容错为典型的双冗余方式,第二条总线处于热备份状态。传输媒介为屏蔽双绞线,总线耦合方式为直接耦合和变压器耦合。可挂接的32个终端按其作用分为:总线控制器(BC)、总线监控器(BM)、远程终端(RT),每个终端被分配了唯一的总线形式,采用曼彻斯特码进行调制方式。

2.2 ARINC429总线

ARINC429总线是一种单向广播式数据总线,传输采用广播传输原理开环传输,传输速率有两种:高速传输率为100kbps,低速传输率为12.5kbps,基本信息单元由32位构成一个数据字。奇偶校验位作为每个数据字的一部分进行传输,允许接收器完成简单的校验。传输媒介为屏蔽双绞线,可挂接16个终端,采用双极性归零制的三态码调制方式。

3 系统设计方案

整个硬件系统主要由DSP控制器、CPLD可编程逻辑器件、1553B总线接口芯片、ARINC429总线接口芯片组成。DSP控制器采用TI公司的TMS320F240(以下简称F240)。F240是TI公司推出的16位定点数字信号处理器,片内集成了闪速存储器和丰富的外围设备,为其在控制领域应用的实现提供了良好的硬件平台。CPLD复杂可编程逻辑器件采用LATTICE公司的LSI1048C(以下简称),它具有8000门电路、96路I/O、88个寄存器,通过VHDL语言编程控制产生系统运行所需的地址译码、时钟分频、中断请求、时序匹配等信号,可大大提高系统的可维护性和可扩展性。1553B总线接口芯片采用DDC公司的BU-61580,它是一款先进的1553B总线接口芯片,具有4K字RAM和多种工作模式,为总线传输接口的设计提供了丰富的资源,也为软件的设计提供了极大的灵活性和可靠性。ARINC429总线接口芯片采用Device Engineering公司的DEI1016,它具有1级接收FIFO和8级发送FIFO,能够完成接收和发送数据缓存、并行-串行(发送)和串行-并行(接收)的转换。软件设计采用C语言编程完成底层驱动和应用层数据处理转换的编写,具有良好的实时性。

4 硬件设计方案

硬件电路设计主要包括接口电路和逻辑控制电路,见图1。

4.1 接口电路

BU-61580内部含有微控制器,集成了双收发器逻辑、编解码器、协议逻辑、内存管理和中断控制逻辑,芯片与微处理器间的接口包括17个内部操作寄存器、8个测试寄存器以及64k字的共享存贮器地址空间。本方案中工作在16位缓冲方式下,从而提供了一种从共享RAM到F240的接口。在这种方式下,其内部地址和数据缓冲区与F240的地址、数据总线是分开的。F240与BU-61580所有的控制信号及外围控制信号均由1048C产生。BU-61580的数据请求通连接;16MHz有源晶振作为时钟输入,其主要引脚功能如下:

a.引脚POLARITY的输入控制着RD/WR为高电平或低电平有效;b.引脚ZEROWAIT控制输出等待状态为高电平或低电平有效;c.引脚SE-LECT为片选信号;d.引脚STRBD和SELECT一起用于数据传输,当对61580内部共享RAM进行读取时,引脚STRBD和SELECT必须为低电平;e.引脚READYD为等待信号。DEI1016由三个基本单元组成:第一部分为接收通道,第二部分为发送通道,第三部分为主机接口。外部工作时钟为1MHz,具有二路接收(第一路接收和第二路接收)和一路发送;F240与DEI1016所有的控制信号及外围控制信号均由1048C产生。其主要引脚功能如下:

a.引脚OE1、OE2、SEL用于读取接收通道FIFO的数据;b.引脚DR1、DR2反映接收通道FI-FO中是否有数据;c.引脚LD1、LD2用于装入数据到发送通道;d.引脚ENTX用于启动发送数据;e.引脚TX/R反映发送通道FIFO中是否有数据。

4.2 逻辑控制电路

LSI1048C用于控制F240与BU-61580和DEI1016之间的逻辑和时序匹配。控制逻辑用VHDL语言编写,可以很容易地描述复杂的电路。选用CPLD作为逻辑综合电路的另一个优点是:VHDL程序的烧写通过JTAG接口完成,除了一条烧写线外不需要任何附加的硬件电路。因此只要硬件连接正确,其余的工作均由软件完成,便于以后的系统升级。LSI1048C控制逻辑主要实现以下功能:

a.经逻辑译码产生接口芯片的片选信号;b.经逻辑组合产生数据读写控制信号和中断请求信号;c.经分频逻辑产生所需的时钟信号;d.经逻辑运算产生快慢速器件时序匹配所需的等待信号;e.将固定状态的信号直接输出给芯片,实现灵活控制芯片工作状态的目的。

5 软件设计方案

软件设计主要包括两部分内容:CPLD控制逻辑设计和DSP软件设计。CPLD控制逻辑设计采用VHDL描述语言,DSP软件设计主要采用C语言。

5.1 CPLD控制逻辑

CPLD控制逻辑分为:地址译码模块、状态设置模块、时钟分频模块和等待插入模块。

5.1.1 地址译码模块将DSP的地址总线和数据空间进行地址译码转换,并与读写控制信号组合,形成符合BU-61580、DEI1016接口要求的控制信号;5.1.2状态设置模块的作用是利用CPLD的I/O三态特性,控制BU-61580、DEI1016工作于指定的工作模式;5.1.3时钟分频模块将16MHz时钟进行16分频,形成DEI1016工作所需的1MHz时钟,从而产生100kbps或12.5kbps的串行信号;5.1.4等待插入模块是为了使DSP的读取总线速度与的数据存取速度适配而设计的,是硬件系统设计的关键。由于F240在16MHz的工作模式下,总线读取周期只有62.5ns,小于DEI1016总线接口芯片300ns以上的读写时序要求,因此必须利用同步时钟在与接口芯片进行数据交换时插入几个周期的等待信号,使接口时序匹配,具体实现方法是:利用16MHz时钟作为触发源,DEI1016的片选逻辑地址作为插入等待条件,当F240访问DEI1016时,将F240的等待控制脚置为低电平,使F240处于等待状态;同时对16MHz同步时钟进行计数,当计数达到5个周期时(即F240已经等待了5×62.5=312.5ns),将F240的等待控制脚置为高电平,使F240继续工作,从而实现接口适配。VHDL的程序设计如下:

5.2 DSP软件

DSP软件主要分为三部分:驱动模块、中断处理模块和数据转换模块。

5.2.1 驱动模块的功能是对BU-61580、DEI1016寄存器、FIFO及RAM等底层访问的对应地址读写操作进行二次封装,形成读写接口函数;5.2.2中断处理模块根据中断源转入相应的中断入口,利用驱动模块函数对BU-61580、DEI1016进行数据存取操作;5.2.3数据转换模块将中断处理模块获得的数据进行格式转换,从而达到1553B总线与ARINC429总线两种格式进行接收、转换和发送的目的。值得注意的是,对于实时性要求较高的场合,数据转换以移位组合算法为宜,尽量避免使用结构联合体,减少转换算法占用的总线周期,提高软件处理的实时性。

上述三个模块由DSP主程序进行初始化和调度。

6 结论

1553B和ARINC429是航空电子系统中应用广泛的通信标准,BU-61580和DEI1016也是各自接口设计的主流芯片。TMS320F240是TI公司推出的16位定点处数字信号处理器,以其强大的控制功能及方便、灵活等特点在各个领域已经得到了广泛的应用;LSI1048C的多模块综合设计缩短了开发周期,提高了系统性能,并且提高了芯片资源的利用率。

本方案的主要功能是实现不同总线标准设备的数据传输、转换,可编程逻辑器件和VHDL语言的运用大大提高了设针的灵活性,可扩展性极强。在文中虽然只以TMS320F240为例,但方案可以扩展应用于TMS320F2812等更高端的DSP之中。

参考文献

[1]DDC,MIL-STD-1553DESIGNER'S GUIDE[Z].1998.

[2]Arinc Inc,Specification Arine429-16[S].Arinc Inc.

[3]黄正谨,徐坚,章小丽等.CPLD系统设计入门与应用[M].北京:电子工业出版社,2004.

RS485总线调试设备的接口设计 第8篇

现代石油测井仪器研究和生产过程中, 经常要对数据进行采集分析。RS485总线调试设备的设计目的, 就是采集仪器信息、显示仪器工作状态, 满足生产调试需求。此设备与井下仪器采用RS485总线进行通信;与计算机通讯采用USB和RS232双接口的设计。

1 三种总线接口基本原理

USB是一个外部总线标准, 用于规范电脑与外部设备的连接和通讯。USB接口支持设备的即插即用和热插拔功能。USB总线属一种轮讯方式的总线, 主机控制端口初始化所有的数据传输。在每次传送开始时, 主机控制器发送一个描述传输运作的种类、方向, USB设备地址和终端号的USB数据包。数据传输方向不是从主机到设备就是从设备到主机。

RS232个人计算机上的通讯接口之一, 由电子工业协会所制定的异步传输标准接口。异步通信用一帧来表示一个字符, 其内容如下:一个起始位, 仅接着是若干个数据位, 最后一个停止位。异步通信的好处是通信设备简单、便宜, 但传输效率较低 (因为开始位和停止位的开销所占比例较大) 。

RS-485是工业界使用最为广泛的双向、平衡传输标准接口, 支持多点连接, 允许创建多达32个节点的网络;具有传输距离远 (最大传输距离1200m) , 传输速率快 (1200 m时为100kb/s) , 抗干扰能力强, 布线简单等优点。

2 接口硬件电路

2.1 USB接口硬件电路构成

USB接口芯片采用C H系列的CH372芯片, 该芯片是一个USB总线的通用设备接口芯片, 是CH371的升级产品, 是CH375芯片的功能简化版。在本地端, CH372具有8位数据总线和读、写、片选控制线以及中断输出, 可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;全速USB设备接口, 兼容USB V2.0, 即插即用, 外围元器件只需要晶体和电容。提供一对主端点和一对辅助端点, 支持控制传输、批量传输、中断传输。该设备采用8951作为控制器, 其接口原理如图1所示:

2.2 232接口硬件电路构成

51单片机通过I/O口与PC机RS232串口实现通信的硬件接口电路如图2示。5 1单片机的输入、输出均采用TTL电平;而PC机采用的串行通信标准为RS-232。R S-2 3 2规定了自己的电气标准, 由于它是在TTL电路之前研制的, 所以它的电平不是+5V和地, 而是采用负逻辑, 即:

逻辑“0”:+5V~+15V

逻辑“1”:-5V~-15V

因此, RS-232C不能和TTL电平直接相连, 使用时必须进行电平转换, 否则将使T T L电路烧坏。MAX232芯片就是MAXIM公司专门为PC机RS-232标准串口设计的电平转换电路。该芯片与TTL/COMS电平兼容, 片内有2个发送器, 2个接收器, 且使用+5V单电源供电, 使用十分方便。图中89C51的P1.2模拟发送端, P1.3模拟接收端。

2.3 485接口硬件电路构成

如图3, 单片机的标准串行口的RX、TX通过光电隔离电路连接MAX485芯片的RO、DI引脚, 控制芯片R/D同样经光电隔离电路去控制MAX485芯片的DE和RE引脚。由单片机输出的R/D信号通过光电隔离器件控制MAX485芯片的发送器、接收器使能;R/D信号为“1”, 则MAX485芯片的DE和RE引脚为“1”, 接收器有效, 接收器禁止, 此时单片机可以向RS485总线发送数据字节;R/D信号为“0”, 则MAX485芯片的DE和RE引脚为“0”, 接收器禁止, 接收器有效, 此时单片机可以接收来自RS485总线的数据字节。

3 通信软件实现

在进行数据通信时, 必须解决好两个方面的问题:一是可靠性、二是速度。而这两方面的问题, 可靠性是第一位的, 速度只能是在可靠的基础上的速度。可靠快速转输的实现需要上下位机软, 件以及通信协议等各个环节的可靠和其间的相互配合。在设计PC—MCU通信协议时, 说明一点:本系统的实际通信中PC机永远是主控者, 单片机只是被动接收者。

3.1 PC—MCU通信程序设计

对于不同的PC—MCU应用程序, 虽然界面不同, 但是如果采用串口与主机之间的通信, 对串口的处理方式大致相似, 无非就是通过串口收发数据, 对于通过串口接收到的数据, 交给上层软件处理显示, 对于上层要发给串口的数据, 进行转发。在Win32下, 可以使用两种编程方式实现串口通信, 其一是调用的Windows的API函数, 可以清楚地掌握串口通信的机制, 熟悉各种配置和自由灵活采用不同的流控进行串口通信;其二是使用Active X控件, 提供了一系列标准通信命令的使用接口, 利用它可以建立与串口的连接, 并可以通过串口连接到其他通信设备 (如调制解调器) , 发出命令, 交换数据以及监视和响应串行连接中发生的事件和错误。后者的主要特点是简单易学, 但前者的功能更为强大, 控制手段更为灵活。所以本应用程序采用在Win32环境下调用API函数来实现与位于下层的设备驱动程序进行数据通信。具体实现通讯过程如下:

3.1.1 打开串口

Win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台, 都是用API函数Create File来打开或创建的。该函数的原型为:

3.1.2 配置串口

主要有一个结构体来配置, DCB结构体。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时, 都要用DCB结构来作为缓冲区。一般用Create File打开串口后, 可以调用Get Comm State函数来获取串口的初始配置。要修改串口的配置, 应该先修改D C B结构, 然后再调用Set Comm State函数设置串口。

3.1.3 读写串口

初始化工作完成以后, 便可以根据通信协议使用Read File和Write Fil两个函数, 读写各种握手信息和数据信息等。Read File函数只要在串口输入缓冲区中读入指定数量的字符, 就算完成操作。而Write File函数不但要把指定数量的字符拷入到输出缓冲区, 而且要等这些字符从串行口送出去后才算完成操作。如果通信事件一直没有发生, 系统将不会继续执行。在实际程序设计中, 我们可以设置一时限, 超过此时限通信事件未到则执行相应错误处理。此函数的声明形式如下:

3.1.4 关闭串口

利用API函数关闭串口非常简单, 只需使用Create File函数返回的句柄作为参数调用Close Handle即可:

3.2 通信程序的可靠性措施

只有通信协议是可靠的, 才能保证数据传输的可靠性。主要通过以下两种措施确保通信传输的准确无误:

3.2.1 数据传输方式

用一帧来表示一个字符, 其内容为:一个起始位, 仅接着是若干个数据位, 最后一个停止位。数据发送和接收均将起始位和停止位作为开始和结束的标志, 这样就可以降低数据传输的误码率。

3.2.2 检错校验方式

在串口数据通信中, 常用的检错校验方法有两种:

冗余校验码 (CRC) , 基本思想是利用线性编码理论, 在发送端根据要传送的k位二进制码序列, 以一定的规则产生一个校验用的监督码 (既CRC码) r位, 并附在信息后边, 构成一个新的二进制码序列数共 (k+r) 位, 最后发送出去。在接收端, 则根据信息码和CRC码之间所遵循的规则进行检验, 以确定传送中是否出错。是一种高效的差错控制方法, 实现相对复杂。

奇偶校验, 通常用在数据通信中来保证数据的有效性。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验, 反之, 称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位, 用它使这组代码中“1”的个数为奇数或偶数。若用奇校验, 则当接收端收到这组代码时, 校验“1”的个数是否为奇数, 从而确定传输代码的正确性。校验处理过程简单, 应用广泛, 一般异步传输模式选用偶校验。

通信程序采用异步传输模式进行数据传输, 格式如下:

通过以上两种措施的应用, 数据传输出错的可能性就会极大的降低, 确保传输的数据是可靠、准确的。

4 结论

经过电路软、硬件调试和部件组装, RS485总线调试设备实现了单片机与PC机之间的数据通讯, 完成了对井下仪器数据的采集分析, 适应了生产调试的需求, 实践证明有较强的实用价值。

参考文献

[1]李华.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社.2001

[2]李朝青.PC机与单片机数据通信技术[M].北京:北京航空航天大学出版社.2003

[3]冉林仓.Windows API编程[M].北京:清华大学出版社.2005

[4]朱友芹.新编WIN32 API参考大全[M].北京:现代出版社.2000

CPCI数据总线接口的设计与实现 第9篇

关键词:PCI9054,FPGA,高速通信

高速数据传输技术是现代信息技术的前沿科技,同时也是整个数据链技术的瓶颈之一,为此技术人员不断地寻找新的方法。CPCI(Compact PCI)总线[1]就是其中一个解决方案。

CPCI总线是当前流行的高速嵌入式计算机总线,目前大多数嵌入式计算机系统的接口最终都要经过CPCI总线与计算机内存进行交互。CPCI的总线规范保证了其具有良好的兼容性和可靠性。

本文设计的系统采用PLX公司生产的CPCI协议转换芯片PCI9054[2],通过Verilog HDL语言在FPGA中产生相应的控制信号,完成对数据的快速读写,从而实现了与CPCI总线的高速数据通信。

1 系统设计

系统主要由PCI9054和FPGA 构成,系统结构图以及信号连接如图1所示。通过利用FPGA的可编程性,可实现更多的扩展功能,如与DSP,A/D 等不同速率间接高速通信等。协议转换芯片PCI9054的作用就是保证本地数据采集板卡和主CPU板卡之间的数据可以高速准确地传输[3]。

2 PCI9054性能分析

PCI9054是由PLX公司生产的一种基于PCI V2.2总线规范的通用接口芯片[4]。它支持单字节方式和突发方式两种传输方式。其总线端支持32位/33 MHz传输,本地端可以通过突发方式达到最大132 Mbit·s-1的传输速率,并且可以控制改变本地端的总线宽度。

PCI9054可以看做一座建立在CPCI总线和本地用户局部总线之间的桥梁。因为PCI9054具有6个可编程FIFO 存储器进行数据缓存[5],从而保证两者之间数据传输的正确性和实时性。并且PCI9054允许其中任意一端作为主控设备去控制总线,同时另外一端作为目标设备去响应总线。

PCI9054内部具有多个寄存器组[6],用以对其两端的工作状态和工作方式进行控制。PCI9054对其内部的所有寄存器组和FIFO都行了统一的地址映射,用户可以从两端通过编程访问所有FIFO及寄存器组的每个字节,从而查看两端的工作状态和改变两端的工作方式。

3 PCI9054局部总线的接口设计

整个CPCI接口的设计思路为:FPGA 通过桥接芯片PCI9054 与CPCI总线连接,其内部使用异步双口RAM 来进行高速数据的缓冲,通过使用Verilog HDL语言编程来控制FPGA中的异步双口RAM,以实现系统数据在嵌入式CUP板卡内存与CPCI板卡之间的高速传输。

PCI9054提供了3种物理总线接口[7]:CPCI总线接口、LOCAL总线接口和串行EPROM接口。其中CPCI总线接口协议在嵌入式操作系统中的驱动包已经带有,而串行EEPROM的初始化是由PLX公司的PLXMON软件在嵌入式操作系统中进行在线烧写的,所以本系统设计的重点就是关于LOCAL总线接口的控制和传输,其接口电路示意图如图2所示。

PCI9054 与本地总线之间的接口称之为LOCAL BUS,是CPCI总线系统设计中十分重要的一环。PCI9054 LOCAL BUS在系统设计中,其总线直接与Alter公司的EP2S90F780I4芯片的数据总线相连,同时通过运用Verilog HDL语言编程来实现对双口RAM控制器的功能。

PCI9054 LOCAL BUS有3种工作模式[8],分别为M、J和C模式。M模式是专为Motorola公司开发和设计的,而另外两种工作模式就应用的比较广泛。其中J模式因为没有Local Master,所以它的地址总线和数据线没有分开,从而增加了开发难度。而在C模式下,PCI9054芯片通过片内的逻辑控制可以将CPCI的局部地址和数据总线分开,从而有效地降低了开发难度,并且能灵活地为本地工作时序提供各种工作方式,所以本系统设计方案选择了LOCAL总线的C工作模式,工作频率为40 MHz。

4 局部总线的实现

PCI9054支持主模式、从模式和DMA传输方式,根据本系统设计的需求,采用从模式传输方式[9],即允许CPCI总线上的主设备访问局部总线上的配置寄存器或内存,支持多种模式传输。如图3所示。

FPGA内部逻辑要设计本地端总线控制模块,实现局部总线的状态控制,同时产生片内的读写时序及地址信号以支持突发传输和单周期传输,因此使用Verilog HDL语言中的状态机来完成上述功能。其状态转换,如图4所示。

5 测试结果

利用SingnalTap采集到的单周期时序传输图,如图5所示。

6 结束语

以PCI9054为核心介绍了CPCI板卡与嵌入式CPU板卡之间高速数据通信系统接口的软硬件设计。PCI9054因其灵活和方便的接口功能,使操作者只需关心LOCAL BUS接口电路的时序设计,并且利用其传输速率高的特性,可以帮助一些对实时性要求较高的系统解决其传输数据的问题。

参考文献

[1]李贵山,戚德虎.PCI局部总线开发指南[M].西安:西安电子科技大学出版社,1997.

[2]PLX Technology Inc.PCI 9054 Data Book[M].Version2.1.USA:PLX Technology Inc,2000.

[3]谭博钊,徐元军,单涛,等.PCI总线接口技术及其在高速数据采集系统中的应用[J].电子技术应用,2006(10):99-101.

[4]马超,皮亦鸣.基于PCI9054的PCI接口数据通信系统[EB/OL].(2008-01-19)[2011-02-12]http://www.paper.edu.cn.

[5]SHANLEY T,ANDERSON D.PCI系统结构[M].4版.刘晖,冀然然,夏意军,译.北京:电子工业出版社,2000.

[6]丁海锋,张志强,赵前晟,等.基于FPGA的数据采集板设计与实现[J].电子科技,2010,23(3):30-34.

[7]李国光,罗丰.一种64位高速PCI总线接口的设计与实现[J].电子科技,2011,24(2):57-60.

[8]王红彦,刘泳,姜晓洁.中频数字接收机的工程实现[J].电子科技,2010,23(9):34-37.

[9]曹明,陈文正.PCI总线协议的FPGA实现及驱动设计[J].计算机应用,2003(7):15-17.

总线接口卡 第10篇

串行接口已成为当前传输接口的发展趋势, 原因在于串行的高速率传输性能和较简单的线路连接。在已知的外围器件连接端口中, 有USB, wishbone和并行端口。其中SPI接口总线基于串行传输的思想, 已经制定成为标准, 成为常用的外围器件连接方式。针对FLASH这种常用的外围存储器件, 有多种接口可供选择, 然而具有SPI接口的FLASH芯片硬件连接方便, 通过FPGA编程可以便捷地实现FLASH的存取功能。因此基于FPGA的具有SPI总线接口的FLASH功能实现为工程设计提供了一种原型, 为进一步的工程开发奠定了基础。

1 SPI总线介绍

1.1 SPI总线简介

同步外设接口 (serial peripheral interface, SPI) 是由摩托罗拉公司开发的全双工同步串行总线。SPI是一种串行同步通信协议, 由1个主设备和1个或多个从设备组成, 主设备启动一个与从设备的同步通信, 从而完成数据的交换。

1.2 SPI总线接口及时序

SPI接口由SDI (串行数据输入) , SDO (串行数据输出) , SCK (串行移位时钟) , CS (从使能信号) 四种信号构成, CS决定了惟一的与主设备通信的从设备, 如没有CS信号, 则只能存在一个从设备, 主设备通过产生移位时钟来发起通信。通信时, 数据由SDO输出, SDI 输入, 数据在时钟的上升沿或下降沿从SDO输出, 在紧接着的下降沿或上升沿由SDI读入, 这样经过8/16次时钟改变, 完成8/16位数据的传输。

在SPI传输中, 数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲, 摩托罗拉没有定义任何通用SPI时钟规范。然而, 最常用的时钟设置基于时钟极性 (CPOL) 和时钟相位 (CPHA) 两个参数。CPOL定义SPI串行时钟的活动状态, 而CPHA定义相对于数据位的时钟相位。CPOL和CPHA的设置决定了数据取样的时钟沿。

SPI模块为了与外设进行数据交换, 根据外设工作要求, 其输出串行同步时钟极性和相位可以进行配置, 时钟极性 (CPOL) 对传输协议没有大的影响。如果CPOL=0, 串行同步时钟的空闲状态为低电平;如果CPOL=1, 串行同步时钟的空闲状态为高电平。时钟相位 (CPHA) 能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0, 在串行同步时钟的第一个跳变沿 (上升或下降) 数据被采样;如果CPHA=1, 在串行同步时钟的第二个跳变沿 (上升或下降) 数据被采样。SPI主模块和与之通信的外设时钟相位与极性应该一致。SPI接口时序如图1所示。

2 基于FPGA的SPI接口设计

SPI接口适用于主芯片与从芯片的连接, 在一个FPGA系统中, 充当主芯片的为FPGA可编程芯片, 而FLASH芯片作为外围从芯片通过SPI接口连接至FPGA芯片。该系统选用Lattice公司的FPGA芯片, 该公司的产品线齐全, 其中ECP2M系列芯片功能全面, 开发成本低廉。ECP2M系列芯片支持SPI接口, 通过硬件电路的简单设计即可完成SPI接口的物理连接, 进一步利用Lattice的工程开发EDA软件进行FPGA编程, 实现SPI接口控制。对接口的设计采用RAM作为读/写缓冲, 完成主程序和FLASH之间的数据交换, 各模块结构示意图如图2所示。

图2中ramwr写端口数据宽度设置为32位, 地址深度设为128位;读端口为1位位宽, 这是由SPI端口的串行性决定的;ramrd读端口与ramwr写端口相对应。RAM模块如图3所示。

3 SPI接口实现及FLASH功能验证

3.1 M25P64串行FLASH芯片介绍

M25P64串行芯片由STMicro公司生产, 它具有64 Mb容量, 最高时钟频率可达50 MHz同时采用SPI总线接口。该FLASH芯片的存储空间划分为128区, 每区为65 536 B[1]。在芯片中, 其中D为数据串行输入端;C为时钟输入;undefined为低电平有效片选信号;undefined和undefined分别为写保护和暂停保持输入, Q为串行输出端。该芯片的指令丰富, 功能完备, 常用的指令如:读/写使能、读/写状态寄存器、读数据、页编程以及区块擦除等。

该芯片由一个微控制器控制, SPI接口有种工作模式分别为CPOL=0, CPHA=0和CPOL=1, CPHA=1, 两者区别为在SPI主端不传数据时, 时钟的电平前者为0, 后者为1。在这里采用CPOL=0, CPHA=0模式。

3.2 工程环境设置及SPI接口设计

Lattice公司的FPGA工程开发EDA软件名为ispLEVER, 其7.2版本为较新版本。该版本集合了IPExpress, Reveal Logic Analyzer等实用工具, 可用于添加Lattice公司开发的IP核以及在线逻辑仿真等。ispLEVER 7.2的默认仿真工具为Active-HDL仿真器, 由于需要采用ModelSim仿真器, 因此安装ModleSim 6.2b版本。对仿真软件成功安装后, 加入pcscmtiwork, pcscmtiworkrevA, ecp2mvlg和pmiwork四个仿真库并进行编译。编译完成后启动ispLEVER 7.2, 在“options”菜单中修改环境变量和默认仿真工具, 使得ModelSim连接图标出现在工具栏中成为工程的仿真工具。

进入ispLEVER 7.2的编辑界面, 开始建立工程, 首先选择器件型号, 这里采用LatticeECP2M系列中的LFE2M50E型号芯片, 并选择封装类型为FPGABGA672, 速度级别为-5。器件选定后, 建立FLASHcontrol工程文件和testbench测试文件, 同时用IP Express生成读/写RAM模块。

在主程序中编写RAM控制段和SPI接口控制程序段, 用状态机完成对RAM的控制, 状态机在idle, read, write和config之间跳转。在向FLASH写数据时, 应先写入写使能指令, 完成后写入页编程指令, 随后写入地址, 最后写入数据;从FLASH读数据的过程大致相同, 但应首先写入读使能指令, 然后写入读数据指令。应当注意的是读指令的时钟频率低于写指令, 具体频率要求可参照芯片说明手册。

3.3 SPI接口功能验证

在线逻辑分析仪 (reveal logic analyzer) 是较为先进的EDA工具, 它能提类似于功能仿真的波形示意图, 这些波形是通过在FPGA芯片运行过程中实时抓取出来的。它真实地再现了FPGA芯片内部的动态信号状况, 使工程开发人员能直观的发现问题, 修正逻辑。仿真综合通过后, 将程序下载至FPGA芯片中, 用Reveal Inserter插入在线逻辑分析信号, 采样点数设定为2 048个点, 分析信号会在工程目录中生成一个相关文件, 综合后将数据文件下载至Lattice芯片中, 采用人工触发后, 即可在在线逻辑分析仪中观察信号波形。截取的波形如图4所示。

从图4可看出, 在时钟C的8个有效周期写入写使能指令, 写使能指令通过D信号线串行进入FLASH芯片, 指令的写入过程应保证S信号低电平, 8个周期的指令输入完毕后S回复为高电平。在SPI总线主端的RAM控制信号由状态机控制, instructions为8位的寄存器, 用于存储指令;RAM1dout对应ramwr的输出端口。

图5为数据指令后读出数据的波形图, 数据从Q信号线读出并进入ramrd。在读数据周期S保持低电平, 数据的输出在时钟的下降沿发生, 在读指令完成后, state状态寄存器回复至空闲状态。

4 结 语

SPI总线是当前流行的串行接口的一种, 它满足工程设计的要求, 使开发人员能够简单迅速的完成设计工作, 实现功能要求。将它与FPGA编程结合, 利用FPGA的灵活性, 使电子设计能够在很短的周期内完成, 符合当今电子设计的要求。本文通过实现带有SPI总线接口的FLASH芯片功能, 验证了基于FPGA设计的SPI接口的正确, 实现了FLASH芯片的读/写功能。

参考文献

[1]ST Microelectronics.M25P64 data sheet[R].[2005-05-11].http://www.ALLDATASHEET.com.2005.

[2]MICHAEL Ciletti D.Verilog HDL高级数字设计[M].北京:电子工业出版社, 2005.

[3]卓兴旺.基于Verilog HDL的数字系统应用设计[M].北京:国防工业出版社, 2007.

[4]BERGERONJanick.Writing testbenches:functional verifi-cation of HDL models[M].[S.l.]:Kluwer Academic Pub-lishers.2003.

[5]PALNITKAR Samir.Verilog HDL数字设计与综合[M].2版.北京:电子工业出版社, 2004.

[6]IEEE.IEEE STD164-2001:IEEE standard verilog hard-ware description language[S].USA:IEEE, 2001.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【总线接口卡】相关文章:

浅谈几种串行通信总线接口技术09-12

信息总线05-07

软件总线07-16

仪表总线07-30

高速总线08-18

总线控制08-29

PC总线05-08

数据交换总线06-16

总线网络设计06-21

PROFIBUS总线08-01

上一篇:阿喀琉斯下一篇:大型国有商业银行