基于FPGA的ARM与CAN控制器的接口设计与实现图文.docx
- 文档编号:7931584
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:13
- 大小:797.10KB
基于FPGA的ARM与CAN控制器的接口设计与实现图文.docx
《基于FPGA的ARM与CAN控制器的接口设计与实现图文.docx》由会员分享,可在线阅读,更多相关《基于FPGA的ARM与CAN控制器的接口设计与实现图文.docx(13页珍藏版)》请在冰豆网上搜索。
基于FPGA的ARM与CAN控制器的接口设计与实现图文
2652
计算机测量与控制.2010.18(11ComputerMeasurement&Control
设计与应用
收稿日期:
20100327;修回日期:
20100507。
基金项目:
国家自然科学基金(60704010;国家863重点项目(2008AA12A200。
作者简介:
贾建峰(1977,男,山西翼城人,硕士研究生,主要从事微小卫星姿轨控下位机方向研究。
崔培玲(1975,女,河南巩义人,副教授,硕士生导师,主要从事微小卫星姿轨控等方向的研究。
文章编号:
16714598(201011265204中图分类号:
TP336
文献标识码:
A
基于FPGA的ARM与CAN控制器的
接口设计与实现
贾建峰,崔培玲
(北京航空航天大学仪器科学与光电工程学院,
新型惯性仪表与导航系统技术国防重点学科实验室,北京100191
摘要:
卫星姿轨控系统CAN总线的设计与实现是基于CAN总线的卫星控制系统实现的关键技术之一;本文分析了ARM处理器AT91RM9200和CAN控制器SJA1000的接口信号及时序,设计了基于现场可编程门阵列FPGA的ARM处理器与CAN控制器之间的接口电路,并给出了详细的软硬件实现方法,最后,在卫星姿轨控下位机原理样机中实现了该接口方案;测试结果表明,该接口能够实现CAN总线在不同波特率下的通信,性能可靠,扩展性强,满足了姿轨控计算机两路CAN总线冗余备份的要求,为其它系列处理器外扩地址数据线复用接口提供了参考。
关键词:
ARM;CAN总线;FPGA;接口
DesignandRealizationoftheInterfacebetweenARMand
CANControllerBasedonFPGA
JiaJianfeng,CuiPeiling
(NovelInertialInstrumentandNavigationSystemTechnologyKeyLaboratoryofFundamentalScienceforNationalDefense,SchoolofInstrumentScienceandOpto-ElectronicEngineering,
BeijingUniversityofAeronauticsandAstronautics,Beijing100191,China
Abstract:
DesignandrealizationoftheCANbusintheattitudeandorbitcontrolsystemofasatelliteisoneofthekeytechnologiesintheCAN-bus-basedcontrolsystemofthesatellite.Inthispaper,theinterfacesignalsandthetimesequencesabouttheARMprocessorofAT91RM9200andtheCANcontrollerofSJA1000areanalyzed;theinterfacecircuitbetweenARMprocessorandCANcontrollerbasedonfieldprogrammablegatearray(FPGAisdesigned,andthedetailedrealizationmethodsofsoftwareandhardwarearegiven.Intheend,thisdesignisusedinthesatelliteprototypehardwareplatformoftheattitudeandorbitcontrolsystem.ExperimentalresultsshowthattheinterfaceworksstablyindifferentbaudrateoftheCANbus.Itisreliableandexpandableintheaspectofmeetingtheattitudeandorbitcontrolcomputerrequirementsoftwo-wayCANbusforredundancyandwillprovideareferenceindealingwithasimilarproblem.
Keywords:
ARM;CANbus;FPGA;Interface
0引言
CAN(ControllerAreaNetwork,控制器局域网总线是一个多主机异步串行总线,已被公认为是最有前途的现场总线之一[1]。
由于其采用了简单的通信协议、超强的错误检测手段和优先级仲裁等技术,使得CAN总线具有抗干扰性强、传输速率高和可靠性高的特点,在小卫星和微小卫星中得到了越来越广泛的应用。
英国Surrey大学卫星技术公司已使用CAN总线作为多颗小卫星总线,并且取得了飞行成功[2]。
我国发射的航天清华一号和纳星一号等多颗小卫星也都采用了主从两套CAN总线作为星上数据总线[3]。
目前应用较多的CAN控制器是Philips公司的SJA1000芯片。
由于特殊的应用环境,微小卫星姿轨控CPU主要考虑性
能功耗等技术指标,ARM(AdvancedRISCMachines嵌入式微处理器是高性能、低功耗RISC芯片[4],能够满足姿轨控CPU的要求。
从成功在轨运行的微小卫星可以看出,ARM芯片经过抗辐照、高低温等处理后,可以用于空间飞行器。
如2000年成功发射的英国萨瑞大学纳米卫星SNAP1,该星上处理器采用的就是主频220MHz,32位StrongARMRISC处理器SA1100[5]。
FP
GA(FieldProgrammableGateArray,现场可编程门阵列经过二十多年的发展,集成度越来越高,功能也日渐强大,从电子设计的外围器件逐渐演变为数字系统的核心,在航空航天等诸多领域有着广泛的应用[6]。
FPGA具有非常丰富的触发器、存储器资源以及I/O资源,利用这些资源可以将其配置成各种控制逻辑,在时序逻辑控制方面有着较强的优势。
针对某三轴稳定微小卫星姿轨控下位机功耗受限,以及利用CAN总线通信的要求,本文选用了经过飞行验证的CAN控制器SJA1000芯片和CAN收发器PCA82C250芯片[2],同时,选用了低功耗、高性能的ARM处理器AT91RM9200芯片作为姿轨控系统的处理器。
由于AT91RM9200芯片没有
第11期贾建峰,等:
基于FPGA的ARM与CAN控制器的接口设计与实现2653
CAN接口,为了实现姿轨控分系统的CAN总线通信,就必须对其CAN总线口进行专门设计。
目前,常用的ARM处理器与CAN控制器SJA1000的接口方法有两种[78]:
(1基于传统逻辑逻辑门电路的实现方法。
该法是利用ARM的控制信号经过与或非门产生SJA1000时序的控制逻辑,但是,一般需要电平转换芯片,可扩展性差。
(2基于CPLD(ComplexProgrammableLogicDevice,复杂的可编程逻辑器件的实现方法。
该方法是利用CPLD代替第一种方法中的传统逻辑门电路,但是,对SJA1000的控制为时序逻辑,由于CPLD的优势不在于处理时序逻辑使得该方法功耗较大。
本文利用FPGA具有较强的信号处理能力,能够实现复杂时序逻辑功能,以及灵活的设计思路和方法等方面优势,实现ARM与CAN控制器的接口时序译码部分。
该实现方法不仅解决了CAN总线实现过程中非多路复用总线与多路复用总线之间的匹配和转换问题,而且使系统的灵活性和扩展性得到提高,数据处理能力也有较大的提升空间,有利于系统升级。
1AT91RM9200和SJA1000总线的特点
要实现CAN控制器和ARM处理器接口,首先要分析二者的接口控制信号及其时序逻辑,然后严格按照接口时序逻辑关系设计接口逻辑电路。
11AT91RM9200总线特点[4]
Atmel公司的AT91RM9200处理器内核供电电压为18V,外部总线和外设I/O供电电压为33V,采用独立的数据总线和地址总线。
优化的外部总线接口(EBI采用16或32位数据总线、26位地址总线,其外部最大寻址空间最大为2G,对应0x10000000~0x8FFFFFFF,分为8个Bank,每个Bank分配一根片选信号线NCSx,容量大小为256M。
其中NCS3为静态存储控制器,对应的地址空间为0x40000000~0x4FFFFFFF,在ARM处理器内部由静态存储控制器(SMC控制,根据需求与外部静态存储器的接口可以配置成为8位或者16位数据宽度。
与静态存储控制器(SMC相关的信号线主要有:
芯片选择口线NCS0~NCS7、输出使能线NOE和写使能
线NWE。
12SJA1000总线特点[9]
CAN控制器SJA1000是Philips公司生产符合CAN20B标准的CAN通信控制器,I/O接口为OC门,电平为5V,提供Intel和Motorola两种寻址方式。
在本文中,CAN控制器SJA1000采用Intel地址数据多路复用总线模式(模式选择信号MODE=1。
主要信号线有地址数据复用线AD7~AD0,地址选通线ALE,片选线/CS,读使能线/RD,写使能线/WR。
在Intel模式下读写SJA1000时,地址和数据是分时传送的,地址在前,数据在后。
当ALE为高电平时,为地址总线周期;当ALE为低电平,/CS为低电平,/RD或/WR为低电平时,为数据总线周期。
Intel模式下SJA1000总线读写周期时序如图1所示。
Intel模式下SJA1000读写时序及其正常工作的重要时间参数如表1所示。
图1SJA1000在Intel模式下的读写时序表1Intel模式下SJA1000读写控制参数特性表
符号参数
最小值最大值单位tsu(A-AL地址建立到ALE低8-nsth(AL-AALE低后地址保持时间2-nstW(ALALE脉冲宽度
8-nstRLQV/RD为低到有效数据输出-45nstRHDZ/RD为高到数据悬空-30nstLLRL/tLCWLALE低到/RD或/WR低10-nstCLRL/tCCWL片选/CS低到/RD或/WR低0-nstW(W/WR脉冲宽度20-nstW(R
/RD脉冲宽度
60
-ns
2基于FPGA的硬件接口设计与实现
实现ARM系列AT91RM9200控制器与CAN控制器SJA1000之间的接口,即用ARM控制器的控制信号经过一定的逻辑电路产生SJA1000需要的控制信号,同时满足SJA1000的读写时序要求。
21基于FPGA的接口硬件设计
AT91RM9200与SJA1000的接口需解决两个问题,一个是电平转换问题,一个是时序匹配问题。
电平转换用转换芯片实现,但是,时序匹配比较复杂,采用传统硬件逻辑门电路实现方法扩展性差,采用CPLD扩展方法功耗较大,采用现场可编程门阵列FPGA能较好地解决这些问题。
本文选用了I/O兼容33V和5V两种电平的Altera公司在系统可编程(ISP器件EPF10K30,可以实现在系统编程调试,将硬件系统设计软件化,能够很方便地实现复杂的逻辑电路。
同时,布线简单合理,系统工作可靠性高,有效地解决了电平转换和时序匹配两个问题。
基于FPGA的AT91RM9200处理器与CAN控制器SJA1000的硬件接口原理框图如图2所示。
2654计算机测量与控制第18卷
图2接口电路原理框图
ARM与FPGA相连的数据总线、地址总线和控制总线有ARM的低8位地址线、低16位数据线、静态存储器片选线NCS3、写使能线NWR、读使能线NOE、外部中断0的信号线IRQ0以及复位信号线NRST;SJA1000与FPGA相连的信号线有数据地址复用的8位总线AD7~AD0、片选线/CS、读信号线/RD、写使能线/WR、地址锁存线ALE、中断线/INT和复位线/RST。
ARM处理器将FPGA作为静态存储器来控制,ARM把SJA1000的控制字和发送到CAN总线的数据写入FPGA,同时读取SJA1000收到来自CAN总线的数据;FPGA根据SJA1000的控制字产生SJA1000的控制信号SJA_/CS、SJA_/RD、SJA_/WR、SJA_ALE和SJA_/RST来控制SJA1000的总线写地址与读写数据操作,实现SJA1000的初始化,以及通过CAN控制器SJA1000从CAN总线上读取或向CAN总线发送数据,最终达到ARM处理器通过CAN总线与外界通信的目的。
22基于FPGA的接口逻辑设计与功能仿真
要实现FPGA对SJA1000的控制,关键是FPGA根据收到的CAN控制器SJA1000控制字CAN_CTRL_WORD产生符合其要求的总线读写操作的时序逻辑。
FPGA收到的SJA1000的12位控制字定义如下:
高两位为保留位;第10位ST为总线起始状态位,ST置位时启动总线,复位时复位总线;第9位RW为总线读写状态位,RW置位时总线读数据时序,复位时总线写数据时序;低8位为总线读写时操作的SJA1000的寄存器地址。
FPGA内部的逻辑设计使用Altera公司提供的数字系统设计软件QuartusII,一般采用原理图、设计框图及包括AHDL、VHDL和VerilogHDL的硬件描述语言(HDL3种编程方法的输入[10]。
本文采用VHDL语言,如图2中的VHDL程序1和程序2。
其中,程序1为控制SJA1000读写时序的状态机,包括空闲、地址锁存、读数据和写数据4个状态,根据控制字实现SJA1000总线的读写控制;程序2是
SJA1000的中断信号处理程序,
FPGA收到的SJA1000的中断信号后经过处理产生符合ARM的中断电平信号。
图3FPGA对SJA1000控制的状态机转移图和总线读写周期仿真时序
SJA1000的总线读写操作状态机的VHDL程序1设计完成之后,利用第三方仿真工具ModelSimSE62b进行功能仿真。
FPGA采用40M晶振,仿真时钟周期设为25ns,FPGA对SJA1000总线控制的状态转移图和总线读写周期仿真结果如图3(a和(b所示。
其中,图3(b上图是写时序仿真,是向测试寄存器(地址0x09中写入0xAA,控制字CAN_CTRL_WORD为0x209;图3(b下图是读时序仿真,是从SJA1000的状态寄存器(地址0x02中读取数据,控制字CAN_CTRL_WORD为0x302。
从仿真结果图3(b与表2、图1时序的比较分析可以看出,仿真结果与实际控制时序一致,FPGA产生的逻辑关系能够满足SJA1000总线读写控制要求。
功能仿真符合SJA1000读写的时序之后,将各输入输出信号与FPGA相应I/O管脚对应,完成对FPGA器件的编程和下载。
3接口电路的C语言软件编程
完成FPGA部分的设计之后,系统上电FPGA就会按照设计好的逻辑运行,而FPGA实现对SJA1000的读写时序由ARM控制。
本文在ADSv12的环境下利用C语言对ARM进行编程,通过ARM控制FPGA实现CAN总线控制器的初始化、数据接收及发送。
在AT91RM9200的外部地址空间中NCS3对应地址0x40000000~0x4FFFFFFF,但与FPGA相连的只有低8位地址线,故ARM对FPGA的可寻址空间为0x40000000~0x400000FF。
从以上设计可知,实现ARM通过FPGA对SJA1000的控制只需要3个指针,即接收到SJA1000的数据指针DATA_FROM_CAN、发送到SJA1000的数据指针DATA_TO_CAN和SJA1000的控制字指针CAN_CTRL_WORD。
宏定义如下:
#defineDATA_FROM_CAN(volatileunsignedint*0x40000000
#defineDATA_TO_CAN(volatileunsignedint*0x40000010
#defineCAN_CTRL_WORD(volatileunsignedint
*0x40000014
实现对CAN控制器的某一寄存器的写访问时分两步进行,首先将待写入寄存器的数据存入
FP
GA,然后,写控制字到FPGA实现SJA1000启动和复位写时序。
具体实现的写函数如下:
voidCANREG_write(unsignedcharaddr,unsignedchardata{
(*DATA_TO_CAN=write_data;//写数据到FPGA(*
CAN
_
CTRL_WORD
=
addr
+0x00200;
//ST=1,RW=0,addr为总线操作的地址__asm{NOP};
//等待1个SJA1000的总线周期(*
CAN
_
CTRL_WORD
=
addr
+0x00000;
//复位SJA1000总线写时序return;}
第11期贾建峰,等:
基于FPGA的ARM与CAN控制器的接口设计与实现2655
实现对CAN控制器的某一寄存器的读访问与写访问类似,但需先写控制字,然后进行读数据。
具体实现的读函数如下:
unsignedcharCANREG_read(unsignedcharaddr{
unsignedcharread_data;
(*CAN_CTRL_WORD=addr+0x00300;//ST=1,RW=1,addr为总线操作的地址
__asm{NOP};//等待1个SJA1000的总线周期
(*CAN_CTRL_WORD=addr+0x00100;//复位SJA1000总线读时序
read_data=0x0000FF&(*DATA_FROM_CAN;//从FPGA读取数据
returnread_data;}
通过以上两个函数可以方便地实现对CAN控制器SJA1000的初始化,以及数据的查询发送和中断接收。
初始化是向对应寄存器里写入初始的配置数据,通过写函数CANREG_write(unsignedcharaddr,unsignedchardata可以实现向指定地址的寄存器中写入初始化的数据;数据的查询发送是查询状态寄存器是否容许发送,即通过读函数unsignedcharCANREG_read(unsignedcharaddr获取状态寄存器SR(地址为0x02的值判断是否可以发送,然后通过写函数将要发送到CAN总线的数据写入SJA1000的发送缓冲器;数据的接收采取中断方式:
当CAN控制器SJA1000接收到数据且接收缓冲器满时,其中断引脚会产生低电平的中断信号,FPGA敏感到该中断信号后产生3个时钟的低电平中断信号通过IRQ0发送给ARM,从而触发ARM的外部中断,在ARM的中断服务程序中通过读函数读取SJA1000的接收缓冲器中从CAN总线上收到的数据。
4实验测试
本文将以上基于FPGA的ARM与CAN控制器的接口设计方法在研制的姿轨控下位机原理样机中进行了软硬件实现,并利用示波器和CAN接口卡对接口的功能和性能进行了测试。
测试过程分两步进行:
首先,在ARM向FPGA写入SJA1000的读写控制字时,利用示波器测试FPGA产生的SJA1000的读写时序是否正确;其次,利用CAN接口卡测试ARM在不同波特率下能否通过设计的接口进行CAN总线正常通信。
第一步测试选用型号为DSO5014A的4通道示波器进行,测试结果如图4所示。
图中的横坐标单位为每格50ns,四通道的信号依次为ALE、/WR、/RD和/CS。
通过比较图4和表2、图1可知,设计的接口满足SJA1000的时序要求。
第二步测试将ARM配置为不同的波特率进行,CAN接口卡上位机软件CANToolsV510设置成相同的波特率与ARM通过CAN总线通信。
测试结果表明,在1Mbps、500kbps、125kbps等不同的波特率下,ARM通过设计的接口均能实现CAN总线正常通信,传送数据正确,没有丢帧现象。
图5是在500kbps波特率下,ARM通过中断接收到CAN接口卡上位机软件发送到CAN总线的数据并回传后的显示结果。
以上测试结果表明,本文设计和实现的基于FPGA的ARM与CA
N控制器接口合理,
能够实现ARM处理器与
图4FPGA产生的SJA1000的读写时序测试结果
图5500kbps波特率下CAN接口的通信测试结果图
CAN控制器SJA1000的正常通信,数据收发正确,没有丢帧现象,达到了姿轨控下位机通过CAN总线通信的目的。
5结论
本文提出了一种基于可编程逻辑门阵列逻辑器件FPGA的ARM处理器和CAN控制器SJA1000之间的接口设计与实现方法,该方法同时解决了非地址/数据复用总线到地址/数据复用总线的时序匹配和电平不兼容两个问题,实现了ARM处理器与CAN控制器SJA1000的数据通信。
与传统硬件逻辑门电路实现方法和基于CPLD的实现方法相比,功耗较低,灵活性和扩展性更好,数据处理能力也有较大的提升空间,并已经成功应用于某三轴稳定微小卫星姿轨控下位机的原理样机中,实现了两路CAN总线的冗余。
实验测试结果表明,该接口性能可靠,工作稳定,可以作为其它系列处理器外扩地址数据线复用接口芯片参考。
(下转第2662页
2662
计算机测量与控制第18卷
y(T=kD(T+kI(TI+
(9
式中,
kD(T=k00+k01T+k02T2
+.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA ARM CAN 控制器 接口 设计 实现 图文