总线接口

2024-04-28

总线接口(精选8篇)

篇1:总线接口

显示卡需要与主板进行数据交换才能正常工作,所以就必须有与之对应的总线接口,常见的有AGP接口和PCI接口两种,和即将流行的PCI-Express接口。通常所说的AGP是Intel的标准:主要特征是可以调用主内存作为显存,以达到降低成本的目的,不过没有真正的显存性能好,

AGP技术又分为AGP8X,AGP4x,AGP2x和AGP1x等不同的标准。AGP8x,4x,2x技术才支持显示卡调用系统主内存作显存;至于AGP1x嘛,只有采用独立的接口,不占PCI带宽这个好处啦。目前,显卡的总线接口正向PCI-Express过渡。PCI-Express接口将具有更大的传输带宽来满足图形技术日益增加的数据量。

篇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 总线接口 开放式体系结构

篇3:总线接口

1 LIN总线技术简介

LIN总线基于通用的UART/SCI接口,其最高通信速率为20Kbps,在硬件和软件上都易于实现。其低成本的优势使得一些先进的机械电子装置,如智能传感器和执行器等可应用到车辆系统中。目前LIN总线的协议已逐渐从1.3升级到2.0,最新的标准为2.1。当前大多数的LIN接口芯片支持LIN 2.0协议,本文采用的协议即为LIN 2.0。

2 USB-LIN转换接口的总体设计

本文设计的USB-LIN转换接口主要包括三大部分:单片机的USB接口部分、LIN总线的接口部分和电源隔离部分,如图1所示。其中,单片机的5V电源来自PC机的USB接口,LIN收发器的电源来自汽车的12V蓄电池。光耦PS9701实现了两套电源系统的隔离,有效地保护了PC机的USB接口和BCM模块。

3 USB-LIN转换接口的硬件设计

3.1 PIC18F2550单片机

PIC18F2550是Microchip公司生产的增强型闪存USB单片机[1],它具有兼容USB2.0协议的USB接口,内嵌1KB双端口存取RAM。USB协议栈实现了四种传输方式:控制传输方式、中断传输方式、批量传输方式和实时传输方式。此外,PIC18F2550还内嵌增强型USART模块,支持LIN总线协议。PIC18F2550对USB接口和LIN接口均提供了良好的支持,因此,选用该单片机可简化LIN和USB转换接口的外围电路的设计。

3.2 USB接口部分的硬件设计

USN-LIN接口电路的USB部分的设计如图2所示。其中,USBH为USB接口,PC机的USB口提供的电压为5V±5%,电流最小为100mA,最大为500mA。PIC18F2550正常工作时应提供的电源范围为4.2V~5.5V,如果选用PIC18LF2550,电源范围可拓宽至2.6V~5.5V,实际测试中,本电路消耗的电流仅为50mA。因此,无论是笔记本电脑还是台式机,其USB口提供的电源都能够保证该电路正常工作。

图2中信号RC1/FT、RC0/CS、RC6/TX和RC7/RX连接至光隔回路,以实现PC机的USB口和LIN总线的电源隔离。其中,RC1/FT为LIN总线故障侦测端口,通过该端口,ATA6625(LIN接口芯片)将LIN总线的状态传送到PIC18F2550,以指明当前LIN总线是处于故障状态,还是处于总线退出或空闲状态。RC0/CS为LIN总线收发器的片选端。RC6/TX为LIN总线收发器的发送数据端。RC7/RX为LIN总线收发器的接收数据端。为改善光隔的耦合波形,在输入端RC1/FT和RC7/RX上都加入了1kΩ的上拉电阻。

3.3 与LIN总线接口部分的硬件设计

与LIN总线接口部分电路如图3所示。图3中,ATA6625为LIN收发器[2],其设计符合LIN 2.0规范和SAEJ2602标准,该芯片的ESD稳定性高于6kV。ATA6625还包括一个超低压降型稳压器,稳压器的输出为5V,电流可达50mA,可为应用方案中的MCU和其他芯片提供电源,能有效降低系统的成本。

图3中,LINH为LIN总线接口,Vbat由12V蓄电池供电。D3和D4防止保护蓄电池过载。LIN总线端的电源与PC机的USB端口是隔离的。LIN总线收发器和单片机之间通过光耦PS9701进行数据交换。当本节点为主节点时,接上1kΩ电阻R13以提高总线的驱动能力;当本节点为从节点时,应去掉此电阻。

由于LIN收发芯片的RX管脚和FAULT管脚驱动能力有限,不能直接驱动PS9701,因此,在LIN收发器至光隔驱动回路上添加了74LVC2G04反相器。

3.4 两套电源系统隔离部分的硬件设计

为了防止PC机的USB接口的损坏,在PC机的5V电源和汽车蓄电池的供电系统之间加入了光电隔离,其电路如图4所示。考虑到LIN总线的波特率上限为20Kb/s,电路中采用了PS9701高速光隔,该光电隔离上升时延仅为50ns。

4 LIN总线和USB总线通信转换的软件设计

USB-LIN接口的总体程序设计框图如图5所示,整个程序分为主程序和中断服务程序两部分。其中,LIN总线的主任务状态机在定时中断服务程序中实现,从任务状态机在LIN总线的上升沿中断服务程序中实现。

USB-LIN接口的数据缓冲区的设计如图6所示,主要包括LIN端数据交换、USB端的数据交换以及LIN端用户缓冲区与USB端用户缓冲区之间的数据解析和交换。

4.1 LIN总线的软件实现

LIN总线软件部分包括网络管理的实现、主/从任务状态机的实现[3]、调度表和信息绑定表的更新等。其中,主任务只分布在主节点上,而从任务分布在所有的节点上。LIN2.0协议规定了主/从任务的状态转移图[3]。主任务的核心工作是产生正确的报文头,报头传输是报文传输的引导,其传输机制基于时间调度表,调度表规定了帧传送的顺序和两帧间的时间间隔。LIN主任务的调度原理如图7所示。其中,定时器1作为调度的时间片定时器,设定为1ms;定时器0作为帧超时定时器,其设定依赖于节点的时钟频率和通信的波特率。

程序设计中涉及到调度表NormalTable和信息绑定表L_HandleList。处理句柄handle实现了这两个重要表的联络。调度表给出了每个帧的时间片,主任务根据该表循环启动帧的传输。调度表包括:帧的处理句柄handle、帧的PID和该帧的时间片。调度表只保存在主节点之中。

信息绑定表L_HandleList定义了一个节点对接收到的具有某个特定PID的帧的响应方式,绑定表将PID和本地的数据缓冲区进行了绑定,从而实现了主节点对从节点缓冲区的直接操作,或者实现了对从节点上的物理量的直接操作。主从节点上都保存有绑定表,依据此表可知道某个信息的长度、流向和存放在本地的位置,以决定是否接收此信息,或是否响应此信息的召唤和相应方式。

程序中,L_HandleList为结构型数组,包括:(1)帧的数据流向,分为接收和发送两种模式;(2)帧数据在本节点中的存储指针;(3)响应帧的长度,不包括校验场;(4用于配置的消息ID;(5)PID的存储指针。其中,第(4)项和第(5)项用于为从节点中的某个帧分配PID。每个节点都保存有各自的信息绑定表,最多可保存20组。

调度表NormalTable和信息绑定表L_HandleList都保存在PIC18F2550的EEPROM中,这两个表通过PC机的USB口进行更新。

LIN驱动程序主要实现以下七个重要的API函数。

(1)void l_ifc_init_MyLinIfc(void),对本节点的LIN总线驱动程序进行初始化。

(2)unsigned int l_ifc_read_status_MyLinIfc,返回LIN驱动器的状态。

(3)void l_ifc_wake_up_MyLinIfc(void),请求LIN总线唤醒。

(4)void l_ifc_goto_sleep_req_MyLinIfc,强制命令LIN总线上的从节点进入睡眠状态。

(5)unsigned char ld_AssignFrameID(l_u8*l_NAD),给指定的帧分配PID。

(6)void l_ifc_rx_MyLinIfc(void),根据本节点的配置处理整个数据交换,包括数据收发、传输超时处理和校验等。如果节点为主节点,则依据主/从任务状态机实现主/从任务的功能;如果节点为从节点,则只需依据从任务状态机实现从任务的功能。

(7)unsigned char l_ifc_pid_to_handle(void),根据给定的PID,指定该PID的帧对应的处理句柄,从而在信息绑定表中查找该帧的处理方法。

4.2 USB总线的软件实现

PIC18F2550的USB接口可采用通用模式或者CDC模式[4]与PC机进行数据交换。虽然通用模式拥有全速USB速率,但是PC机端的驱动程序实现起来较为复杂。USB-LIN接口中处理的是低速的LIN通信,不需要1Mb/s以上的通信速率。因此,单片机中的USB接口不采用通用模式,而采用CDC模式。

在CDC模式下,CDC子类实现虚拟串口通信的协议[4]。由于大部分的操作系统都带有支持CDC类的设备驱动程序,可自动识别CDC类的设备,因此在PC机端可不用编写USB的驱动程序,只需将接口视为虚拟串口即可。单片机的USB口工作于CDC模式时,最高的通信速率为1Mb/s,完全可以满足LIN总线数据交换的要求。

Microchip为PIC18F2550提供了完整的USB/CDC类固件,主要实现以下API函数[5]。

(1)void putrsUSBUSART(const rom char*data),将字符串从程序存储区写到USB端口。

(2)void putsUSBUSART(char*data),将字符串从数据存储区写到USB端口。

(3)void mUSBUSARTTxRom(rom byte*pData,bytelen),将一个特定长度的字符串从程序存储区中写到USB端口。

(4)void mUSBUSARTTxRam(byte*pData,byte len),将一个特定长度的字符串从数据存储区中写到USB端口。

(5)BOOL mUSBUSARTIsTxTrfReady(void),检查CDC类是否有更多的数据要发送。

(6)byte getsUSBUSART(char*buffer,byte len),将数据从USB/CDC缓冲区中拷贝到用户缓冲区。

(7)byte mCDCGetRxLength(void),获得从USB/CDC缓冲区中拷贝到用户缓冲区的数据的实际长度。此函数紧跟在getsUSBUSART之后调用。

在调用putrsUSBUSART、putsUSBUSART、mUSBUSAR-TTxRam和mUSBUSARTTxRom之前,先要调用mUSBUSA RTIsTxTrfReady检查固件是否准备好发送数据到USB口,调用getsUSBUSART时要求目标缓冲区的长度要大于USB/CDC缓冲区的长度。

本文给出了LIN接口与USB接口转换的设计方案,介绍了基于LIN总线和USB总线的接口芯片的通信转换的硬件设计,并给出了软件设计方法。该方案已经用于BCM模块的测试和LIN网络协议的教学培训中,具有一定的实用价值。

参考文献

[1]PIC18F2455/2550/4455/4550Data sheet,http://www.microchip.com,2007.

[2]ATA6623/ATA6625Data sheet.http://www.atmel.com/,2008.

[3]LIN specification package reversion2.0.http://www.lin-subbus.org/,2003.

[4]吴明琪,马潮.嵌入式系统的USB虚拟串口设计.单片机与嵌入式系统应用,2005,(4).

篇4:总线接口

关键词: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).

篇5:消费总线电力线接口电路的设计

摘要:在介绍消费总线物理层技术参数的基础上,给出了P89C51RD2单片机与P300/P111构成的电力线扫频载波通讯模块的设计方案,重点论述了通讯模块电力线接口电路设计中所涉及的滤波电路、放大电路、耦合电路及其保护措施。

关键词:电力线载波 消费总线

智能家庭要求家用电器经网络(总线)实现互联、互操,总线协议是其精髓所在。目前,国际上占主导地位的家庭网络标准有:美国的X10[1]、消费总线(CEBus)[2]、日本的`家庭总线(HOME BUS)[3]、欧洲的安装总线(EIB)[4]。

消费总线使用五种类型的介质(电力线、无线、红外、双绞线和同轴电缆),其中以电力线的应用最为广泛。消费总线得到IBM、Hownywell、Microsoft、Intellon、Lucent、Philips、Siements等大公司的支持,1992年成为美国电力工业协会的标准(EIA600、EIA721)。,EIA600成为美国ANSI标准;6月,微软和CEBus委员会共同宣布支持CEBus的简单控制协议SCP。SCP是未来微中UPNP协议的子集。

1 CEBus电力线物理层

鉴于家庭中电力线载波通讯的特殊性,CEBus采用价格低廉、简单易行的线性调频(chirp)扩频调制技术。摒弃了传统电力线载波通常应用的直接序列扩频、调频扩频、跳时扩频等设备复杂、价格昂贵的扩频调制技术。

图2 通用通讯模块的原理图

消费总线的物理层有四种码,分别是:“0”、“1”、“EOF”和“EOP”。均为扫频信号,正弦信号载波,从203kHz经过19个周期线性地变为400kHz,再经过1个周期变为100kHz,然后在5个周期中变为203kHz,整个过程用时100μs,也就是1个UST(Unit symble time,在消费总线中用多少个UST来度量时间)。其波形如图1所示。

chirps扫频载波需经过放大耦合到电力线上,放大后的幅度应适中。幅度太低,给接收电路带来困难;幅度太大,又会对电力线上的设备产生干扰。CEBus的规定如表1[5]所示。

表1 不同条件下的载波幅度值

设备工作电压最小幅值最大幅值负载范围~120V2.5Vpp7Vpp10Ω~2kΩ~240V5Vpp14Vpp39Ω~8.2kΩ

表2 不同条件下的设备输入阻抗值

设备工作电压设备输入阻抗(在频率20kHz~50000kHz)载波幅值

篇6:CAN总线控制器与DSP的接口

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

篇7:总线接口

摘要:介绍了利用SPI口实现CAN总线隔离扩展的一种通信控制系统,详细叙述了此通信控制系统中主从通信模块的硬件设计控制,软件设计流程及实现方法。

关键词: CAN总线 SPI口 XINT1中断

一、引言

CAN总线是一种有效支持分布式控制和实时控制的串行数据通信协议,它是一种多主总线,网络上任意一个节点均可以在任意时刻主动地向网络上的其它节点发送信息,而不分主从,节点之间有优先级之分,因而通信方式灵活;CAN可以点对点、一点对多点(成组)及全局广播等几种方式传送和接收数据 ;CAN采用非破坏性位仲裁技术,优先级发送,可以大大节省总线冲突仲裁时间,在重负荷下表现出良好的性能。

CAN上的节点数实际可达110个,通信介质可以是双绞线、同轴电缆或光导纤维,直接通信距离最远可达10km(传输速率为5kbps);最高通信速率可达1Mbps(传输距离为40m)。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码,CAN数据链路层采用短帧结构,每一帧为8个字节,易于纠错。可满足通常工业领域中控制命令,工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。

CAN总线具有较强的纠错能力,每帧信息都有CRC校验及其它检错措施,有效地降低了数据的错误率。CAN节点在错误严重的情况下,具有自动关闭的功能,使总线上其它节点不受影响。支持差分收发,因而适合高干扰环境。

我们设计的一种CAN总线主从通信控制系统如图1所示,该控制系统采用内外两层隔离控制形式,主控台向主CAN网络发送指令和数据,通过主从通信模块与从CAN网络中的节点通信,对分系统控制单位进行数据采集和控制。此系统使CAN总线的节点数增加了n倍;CAN总线的传输速率和通信距离大幅度的提高;抗干扰能力也大幅度的增强。

本文讨论的是CAN总线主从通信控制系统中主从通信模块的硬件、软件设计及实现方法。主从通信模块实现了主控台和从控制单元之间CAN网络数据通信的隔离扩展,对通信数据处理、传输和CAN网络控制有一定的借鉴作用。

二、硬件设计

主从通信模块控制原理框图如图2所示,核心芯片是TI公司TMS320C系列的适合于数字控制的一种DSP。它的单个芯片内包含了10位ADC转换器、片内flash程序存储器、事件管理器、数字输入输出I/O口等。为了便于与各种外围设备进行通信,DSP还提供了一些接口:CAN接口、串行外设接口(SPI)、串行通信接口(SCI)等。其中,SPI接口是工业标准的同步串行接口,是一种全双工、三线通信的系统。它允许DSP与各种外围设备以串行方式(可配置成1~16位数据同时、同步地被发送和接收)进行通信。在SPI接口中,数据的传输需要1个时钟信号和两条数据线。SPI可工作在主模式或从模式下。在主模式下,每一位数据的发送/接收需要1次时钟作用;而在从模式下,每一位数据都是在接收到时钟信号之后才发送/接收。

三、SPI的工作原理

1)SPI的信号说明

如图2通信控制部分原理图,两片DSP芯片的SPI使用4条线直接接口:串行时钟线(SPICLK)、主片输入/从片输出数据线SPISOMI、主片输出/从片输入数据线SPISIMO和低电平有效的从片选择线SPISTE。

SPICLK是主片的时钟线,为MISO数据的发送和接收提供同步时钟信号。每一位数据的传输都需要1次时钟作用,因而发送或接收1个字节的`数据需要1~16个时钟的作用。主片的时钟是通过主片的硬件设置的,并和从片的SPICLK相连。

MISO是主片的输入/从片的输出数据线。主片的MISO应与从片的MISO相连进行高位在前的数据交换。MOSI是SPI接口的SPI主片输出/从片输入数据脚。这一引脚应当连接主片的数据输出和从片的数据输入端MOSI,进行高位在前数据的交换。

SPISTE只在从方式中用于低电平选中从片,对应的主片SPISTE脚被配置为I/O口作为从片的SPI片选输入脚。

2)主模式

发送和接收可以同时工作在主模式下。主模式的显著特征是不论是发送还是接收始终有SPICLK信号,发送操作是由向SPIDAT(或SPITXBUF)中写数据而触发的。在主模式下,时钟信号的1次作用对应一位数据的发送(M0SI)和另一位数据的接收(MISO)。如图3所示,在主片中数据从移位寄存器中自左向右发出送到从片(MOSI),同时从片中的数据自右向左发到主片(MISO),经过16位时钟周期完成1个字节的发送。输入字节保留在移位寄存器中,此时SPI INT FLAG位自动置位(如果有中断设置,则产生中断),移位寄存器的数据将被锁存到SPIRXBUF中,此后对SPIRXBUF的读操作将把数据读出。

3)从模式

发送和接收同时工作在从模式下。从模式的显著特征是:不论是发送还是接收始终必须在SPICLK信号作用下进行,并且SPISTE信号必须有效。当SPISTE信号无效时,数据的发送无法进行并且输入的数据视为无效。这是因为输入的时钟信号是与SPICLK的逻辑与操作,而SPICLK信号是SPISTE的反转。这样当SPISTE为高时,就没有时钟信号输入。数据的发送和接收的过程见图3所示,与主模式下基本相似,只是移位寄存器的数据移出和输入方向与之相反。

四、软件设计

SPI通信以一帧CAN报文5个字节为一个传送单元进行信息交换。主片控制着SPICLK信号可在任一时刻启动报文传送;从片在传送报文之前,通过口线向主片发送一个外部中断请求,请求成功后主片输出SPICLK信号来启动从片的报文传送。从片在SPI中断中接收主片传送来的报文;主片在外部中断中完成从片报文的接收。当主片和从片同时都有报文传送时,系统优先传送主片报文,然后再传送从片报文。

1、主片发送,从片接收报文

主片发送报文,从片接收报文软件流程图如图4所示。主片在向从片传送报文前禁止外部中断,也就是禁止从片发送报文。然后从CAN传送缓冲区取一帧报文放入SPI发送暂存器中,再从SPI发送暂存器中取一个字节的数据写到SPITXBUF寄存器中启动SPISIMO引脚上的数据发送,同时,从片响应一个SPI中断开始接收主片发送来的数据,当从片接收到一个字节后,通过口线触发主片的XINT1外部中断来告知主片数据已接收,主片响应了此XINT1外部中断后,再发送下一个字节的数据,当一帧报文传送完成后,主片将外部中断使能,以便接收报文。从片接收完报文后,置报文接收完成标志,以便CPU进行报文的处理。

2、从片发送,主片接收报文

从片发送报文,主片接收报文软件流程图如图5所示。从片在发送报文前,通过口线向主片发送一个XINT1外部中断,请求报文的发送,当主片响应了此中断时,发送一个伪数据(如#0FFFFh)来告知从片可以开始报文的发送,从片测试到报文请求受理标志置位后,再从CAN传送缓冲区取一帧报文放入SPI发送暂存器中,再从SPI发送暂存器中取一个字节的数据写到SPITXBUF寄存器中,通过口线向主片发送XINT1外部中断,请求主片取数据,主片在XINT1中断服务程序中监测到中断标志置位时,发送伪数据#0FFFFh(启动从片数据发送的SPICLK时钟),然后将收到的字节存入SPI接收缓冲区,从片依次将一帧报文传送完成后,清报文受理标志。主片完成一帧报文接收后,置报文接收完成标志,并退出外部中断,以便CPU进行报文的处理。

3、关键技术的处理

CAN总线上信息的传送都是没有规律随机的,所以用SPI口实现主从系统间信息的传递时,必须考虑当有数据正在从DSP1向DSP2传送时,应该禁止数据从DSP2向DSP1传送,反之也然。否则数据在互传过程中就会出错或丢失,影响CPU的正常工作。为了避免主从报文在发送过程中产生冲突,主片在XINT1中断服务程序中完成一帧报文的接收,从片在SPI中断服务程序中完成报文的接收。在进行报文传送时,不管是主片还是从片只有当一帧报文传送完成后,才能进行下一帧报文的传送。主、从片每发送完一个字节的数据,都有一个应答信号返回标志位(见标志位意义)的判断,以便确认数据是否完整的发送或接收。

由于主片掌握着报文传送的时钟信号,即主动权,所以主片随时都可以进行报文的传送。从片在报文传送前,首先要确认主片此时是否传送空闲,若此时主片正在传送报文,从片等待主片将报文传送完成,再进行报文的传送;若主片正处于传送空闲状态,从片可以开始传送报文。

五、结束语

篇8:总线接口

关键词:Verilog HDL,SDX总线,Wishbone总线,Modelsim,QuartusⅡ

随着微电子设计技术与工艺的迅速发展,数字集成电路逐步发展到专用集成电路(ASIC),其中超大规模、高速、低功耗的新型FPGA的出现,降低了产品的成本,提高了系统的可靠性。同时,各种电子产品的复杂度和现代化程度的要求也逐步提高,文中针对机载信息采集系统的可靠性、数据管理的高效性以及硬件成本的需求。设计实现了与Wishbone总线[1]SDX总线[2]的接口转化,完成了数据采集功能模块与SDX总线协议之间的数据传输。

该设计主要采用硬件描述语言Verilog HDL[4,5]在可编程逻辑器件FPGA上实现,由于数据采集功能模块繁多,而Wishbone总线可以与任何类型的ROM或RAM相连,因此需在SDX总线与数据采集模块中嵌入Wishbone总线,使得整体设计简单、灵活,且数据能够高效、快速的传输。

1 SDX总线协议

1.1 SDX总线结构

SDX总线[2]属于非平衡配置的点对点和多点链路,站点类型分为主站和从站,其数据传输方式为非平衡配置的指令/响应方式。与国际标准化组织ISO制定的开放系统互联模型OSI/RM相比,参考模型只分为3层:物理层、数据链路层和应用层,如图1所示。

1.2 字格式及其各位场的含义

SDX总线采用面向消息的传输控制规程作为通信协议,选用曼彻斯特Ⅱ双相电平编码,总线最大传输速率20 Mbit·s-1,字长为20位。总线传输速率20 Mbit·s-1时,每字占1 μs。规定每次传输一个消息的过程应包括指令字、数据字和状态字几个部分。每种字的字长为20位,有效信息位为16位,每个字的前3位为单字的同步字头,而最后一位是奇偶校验位。同步字头的作用是标识每个字的开始,起字同步作用。奇偶校验采用奇校验,在发送端对16位有效位补齐,而在接收端进行奇校,用于检验字传输中有无错误。需要指明的是:无论是何种字类型,各场的数据总是高位(MSB)传输在先。

(1)指令字结构。

指令字只能由主站发送,它的内容指明主站要与哪个从站对话,规定了该次数据传输的地址方向和服务类型。其格式如图2所示。

方向和服务类型

1~3位:同步字头(SYN),前1.5位为101,后1.5位为000时标识指令字或状态字。

4~13位:10 bit远程模块地址(RA[9:0]),全“0”时为广播地址,其余为各远程模块地址。

14位:读写控制位R。该位为“1”时,表明主站要从被寻址的从站中读取数据;为“0” 时,表明主站要从被寻址的从站中写入数据。

15~18位:当RA[9:0]为非全“0”时,EP[3:0]有效。需要强调的是:当RA[9:0]为非全“0”,端点地址为全“0”时,该地址为从站的系统管理访问地址。

19位:状态字指示位S,当该位为“0” 时,表明有效字为指令字;当该位为“1” 时,表明有效字为状态字。

20位:奇偶校验位(P),该字的奇偶校验位,奇校验有效。

(2)数据字结构。

数据字既可以由主站传送到从站,也可以由从站传送到主站。数据字的格式如图3所示。

1~3位:前1.5位为101,后1.5位为111时标识数据字。

4~19位:16 bit长数据(DATA[15:0]),高位(MSB)传输在先。

20位:奇偶校验位(P),该字的奇偶校验位,奇校验有效。

(3)状态字结构。

状态字只能由从站发出,是对主站发出的有效命令的应证性信号,是通信中进行差错控制和流量控制的重要手段。状态字格式如图4所示。

1~3位:同步字头(SYN),前1.5位为101,后1.5位为000时标识指令字或状态字。

4~13位:10 bit从站的地址(RA[9:0])。

14~18位:状态代码,表示响应模块的通信状态。

19位:状态字识别位(S),当有效字为状态字时,该位为“1”。

20位:奇偶校验位(P),该字的奇偶校验位,奇校验有效。

注释1,只有满足下列判据才认为传输中不存在错误:(1)“字有效”,这是指都以有效的同步字头开始,并且除去同步字头之外其余的都是有效的双相码,有效信息是16位,奇偶校验位一位,且奇校验。(2)“消息有效”,这是指在一次传输中,如果存在一个数据块,那么在指令字与数据字之间,在数据字与数据字之间,消息是连续的,不存在任何“断裂”的情况。(3)“指令有效”,这是指在指令字和数据字各场中不存在非法数据,同时发出的数据块长度应与设置长度相等。如果以上3个判据中有任何一个得不到满足,则消息错误位置位。

注释2,由于广播消息格式要求禁止从站发回状态字,为了解上一个广播指令是否已被从站有效接收,可使用专门的命令类型让某个从站发回状态字,如此位置成“1”,而且忙位置成“0”,即说明上一个指令的确是广播指令,已被该从站有效接收。

2 Wishbone总线协议

Wishbone总线是一种内部总线协议[1]。它可以将片内的各部分以及IP核等连接在一起,用来标准化各个独立部分的接口,以更加方便地架构SOC(Syctem-on-Chip)系统。其特点是结构简单、灵活,只需要少量的逻辑门即可实现,同时完全免费、公开[1]。

Wishbone总线规范中,使用Master/Slave结构实现灵活的系统设计,Master/Slave有4种互连方式,分别为点对点、数据流、共享总线和交叉互连。且Master和Slave之间使用握手协议,当准备好数据传输时,Master使STB_O有效,且一直保持到Slave的响应信号ACK_O,ERR_O,或RTY_O之一有效。Master在每个时钟的上升沿对响应信号采样,若该信号有效,则置低STB_O,如图5所示。

2.1 Wishbone总线基本传输周期

Wishbone 总线支持完整的普通数据传输协议,包括单个读写周期、块读写周期等。数据总线宽度为8~64位,地址总线宽度最高可达64位。Wishbone数据总线和地址总线分离,在传输上,保持一个地址、一个数据的传输结构。以下为Wishbone总线单次读、写时序图。图6为单次读周期时序,图7为单次写周期时序。

3 系统设计与实现

系统所有控制逻辑均在Altera的CycloneⅢ系列FPGA(EP3C40F)上实现。FPGA的信号线只有系统时钟、串行输入数据,由于SDX总线中传输数据为曼彻斯特码型,因此需将曼彻斯特码解码为BCD码同时将串行输入数据转化为并行数据,将转化后标准的16位并行BCD码输入SDX模块对SDX协议响应,将需要数据读、写的消息响应同时产生数据读、写以及地址信号并发起Wishbone总线操作,实现在Wishbone总线上高效的数据传输。Wishbone总线主要使用点对点的互联方式,将Wishbone总线中Master模块中的输出信号直接连接到Slave模块,其优点是多个数据可以并行处理,从而提高系统的整体数据处理能力。系统的整体设计框图如图8所示。

4 仿真结果分析

为验证设计系统的性能,使用Modelsim6.2仿真软件对系统功能进行了仿真测试。

图9为Wishbone总线写操作,且为单字写传输,在时钟上升沿,Master将DAT_O、ADR_O信号放到数据、地址总线上,将CYC_O、STB_O、WE_O置高表示写传输开始,在下一个时钟沿到达之前,Slave检测到Master发起的操作,将ACK_O、ERR_O、RTY_O之一置高并传输到Master中,若Master检测到ACK_I为高时,在下一个时钟的上升沿将CYC_O、STB_O置低表示操作完成,若ERR_I为高,则表示该操作错误,取消此操作,进行下一步操作,若RTY_I表示Slave总线忙,则重试。

图10为Wishbone总线读操作,且为单字读传输,在时钟上升沿,Master将ADR_O信号放到地址总线上,WE_O保持为低,同时将CYC_O、STB_O置高表示读传输开始,在下一时钟沿到达之前,Slave检测到Master发起的操作,将ACK_O、ERR_O、RTY_O之一置高并传输到Master中,同时将适当的数据传输到Master的DAT_I中,若Master检测到ACK_I为高时,在下一个时钟的上升沿将CYC_O、STB_O置低表示该次读操作完成,若ERR_I为高,则表示该操作错误,则取消此操作,进行下一操作,若RTY_I表示Slave总线忙,则重试。

5 结束语

讨论了基于FPGA的SDX总线与Wishbone总线的接口转换,并介绍了不同总线的接口标准与时序,通过在Modelsim下的仿真,Quartus中综合,可下载到FPGA中进行调试,实现了系统的整体性能,从而保证了系统快速、高效的传输。

参考文献

[1]Siiicore.WISHBONE System-on-Chip(SoC)Interconnec-tion Architecture for Portable IP Cores.Revision:B.2[M].USA:Siiicore,2001.

[2]敬笑.机载分布式信息采集系统的设计与实现[D].西安:西安电子科技大学,2010.

[3]杜慧敏,李宥谋,赵全良.基于Verilog的FPGA设计基础[M].西安:西安电子科技大学出版社,2006.

[4]刘福奇,刘波.Verilog HDL应用程序设计实例精讲[M].北京:电子工业出版社,2009.

[5]刘远峰.基于FPGA的曼彻斯特编解码器设计与实现[J].现代计算机:专业版,2010(12):88-90.

[6]徐江丰,张涌,汤心溢,等.基于Wishbone-PCI Bridge核的红外图像高速采集系统[J].激光与红外,2006,35(6):713-716.

上一篇:草 / 赋得古原草送别原文,注释,赏析下一篇:讲文明讲卫生的标语