SJA1000发送数据的波形总是只有一个低起始,后面就是高电平,FPGA配置,读写寄存器都没问题

如题所述

采用基于ARM微处理器的单板机系统建立...S3C44B0x 的数据、地址和控制信号线...总线上的设备节点之间直接通过SJA1000...这些缓冲页的一部分作为接收缓冲区,...
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-11
SJAl000是一种独立的CAN总线控制器,主要应用于工业环境中的区域网络控制。随着FPGA的广泛应用,CAN总线与FPGA的应用日益加强。文章从状态机的角度,介绍SJAl000内部寄存器的硬件语言读写时序的实现和应用,详细描述状态机的工作原理和相应的VHDL代码。关键词 SJAlOOO CAN总线FPGA状态机VHDL时序中图分类号TP393DesignandApplicationofVHDLRead—writeonSJAI000InternalRegisterYueKui LiuShaojun HuangDaoping(CollegeofAutomationScienceandEngineering,SouthChinaUniversityofTechnology,Guangzhou 510640)/M岭tmet SJAl000asindependentCANbuscontroller,mostlyapplyinindustrialenvironmentcontrolareanet.work.AsFPGAwidelyused,theapplicationofCANbusandFPGAbecomeincreasing.Thepaper,fromaspectofstatus-machine。mainlyintroducedthedesignandapplicationof VHDLRead-WriteonSJAl000internalregister,detailedde-scribestatus-machine’SprincipleandrelatedYHDLcode.Keywords sJAl000,CANbus,FPGA,status-machine,VHDL,timingClassNumber TP3931引言在20世纪80年代初,德国的BOSCH公司提出了用CAN总线(ControllerAreaNetwork,控制器局域网)来解决汽车内部的复杂硬件信号接线。CAN总线以其低成本、高可靠性、实时性、抗干扰能力强等特点,其应用范围扩展到了机械工业、纺织工业、农用机械、机器人、数控机床、医疗器械、家用电器及传感器等各种工业现场,CAN总线已经形成国际标准,并被公认为最有前途的现场总线之 一。SJAl000是Philips半导体公司推出的一款独立的CAN总线控制器,具有BasicCAN和Peli— CAN两种操作模式,PeliCAN模式支持具有很多新功能的CAN2.0B协议L1J。现场可编程门阵列(FPGA)已成为许多电子运动控制应用的重要平台。FPGA的发展迅猛,在许多应用领域中替代了特定用途集成电路(ASIC)。非易失性FPGA是具成本效益的ASIC替代方案,不存在采用ASIC时涉及开发成本高和开发时间长的问题。而且,利用FPGA替代固定 的逻辑,设计人员无论在设计阶段还是在应用现场,都可以高效、可靠地实现产品升级及定制功能。近年来,Altera、Xilinx等公司推出了内部嵌入存储器、微处理器的FPGA器件,使得这种器件的应用更显优越性。因此本文设计的CAN总线控制器SJAl000内部寄存器的硬件语言读写实现,正是基于FPGA具有CAN总线接口的广泛应用前景,使CAN总 �9�9 收稿日期:2009年5月31日,修回日期:2009年6月24日作者简介:岳奎,男,硕士研究生,研究方向:FPGA相关设计,USB驱动设计,CAN总线,PCI总线等。刘少君,男,硕士,讲师,研究方向:数控系统设计与研究。黄道平,男,博士生导师,教授,研究方向:智能检测与智能控制等。万方数据176 岳奎等:SJAl000内寄存器的VHDI。语言读写设计与应用 第37卷线技术更好地应用到FPGA设计的系统中。2 CAN控制器SJAl000接口信号和时序〔2〕CAN控制器SJAlooo提供的微处理器的接口信号主要有多路地址/数据总线ADo~AD7、地址锁存信号ALE、片选信号/cs、微处理器的读使AD7t0AD0ALE(引脚ALE/AS)WR能信号/RD、微处理器的写使能信号/WR、复位输入/RST信号、模式选择MODE信号和中断输出INT信号,其中MODE为接口方式选择信号,可选用INTEL方式或MODTOROLA方式。出于普遍性的考虑,本文以下的接1=1设计是基于Intel模式的,其接口读时序如图1、写时序如图2和时序参数如表1。)l(A7toA0 》 (D7toDO狱L二‘。。。,—. 。kmz_(‰。二\�9�9 -一ta.ev-�9�9 ’ rLIm、 ,\ / ● 一 。WfRlfcL赳.—...一 - ‰_亡 Ⅵ 少读周期时序图:Intel模式)|(A7toA0 》 (D7toDO》× 一L=“一 h一气^L舢 ._k∞x。(=\ r一 , I 一fDⅧ ‘wHLH 。、\ /气m。。_一 �9�9 一‰ 。 L—twncH五 \写周期时序图.Intel模式图1 SJAl000读写周期时序图;Intel模式3CAN控制器SJAl000接口读写时序的硬件语言实现目前应用最广的两种硬件语言是VHDL和Verilog,本文采用的硬件描述语言是VHDL,微处理器是CycloneEPlC6Q240C8FPGA,时钟为25MHz,通过4分频使其与SJAl000传输周期为160ns。sJAl000的数据和地址信号为分时复用,而FPGA中不存在地址的概念,设计的关键就是要把SJAl000中的寄存器地址当作数据写入。本文把对寄存器的读写程序设计为一个子程序,为了方便上层程序调用该程序,在设计中设置了一个输入控制信号start和读写选择信号PWR,该程序在设计中采用状态机的方式,如图2所示。图2 sJAl000接口读写时序的状态机流程图在IDLE状态,对接口信号进行初始化,其中地址锁存信号ALE为低电平、微处理器的写使能信号/WR为高电平、微处理器的读使能信号/RD为高电平’、片选信号/cs为高电平、地址数据复用 总线AD为高阻态(AD<一”ZZZZZZZZ”)、Wok和R-ok为低电平(W—ok为高电平表示一个写时序的完成,R—ok为高电平表示一个读时序的完肿蝎 一班 一R丐 一盎而l|帆西A引EI盆I删西脚 g万方数据第37卷(2009)第10期 计算机与数字工程177成)。另外用一个控制信号start,当start为高电平’时跳出IDI,E状态进入address状态,反之继续在IDLE状态循环。控制信号start设置主要是为了方便上层程序调用该子程序。在上层程序中要使用该子程序只需给start信号一个高电平,一个时钟后拉低电平就可以了。表1 SJAl000接口读写时序参数表符号 参数 最小最大单位值 值fosc振荡器频率24 MI-Iztsu(A-AL)对ALE/AS低电平的地址8 ns建立时间th(AL-A) ALE为低的保持时间 2 nstW(AL)AU影AS的脉冲宽度8 nstRI皿V /RD为低输出有效数据 50 nstRHDZ/RD为高数据悬空 30 I’IStDVWH/WR为高输入数据有效8 nstWHDX /WR为高后的数据保持时间8 nstWHLH /WR为高到下—个√虹正高15 nstIJM, ALE低到/WR低 10 IIStIJRI,√蛆正低到/RD低 10 11stW(W) /WR脉冲宽度 20 I’IStW(R) /RD脉冲宽度40 IIStCLWL/cs低到/WR低0 nstWHCH /WR高到/CS高0 璐tRHCH /RD高到/CS高0 nstW(RST) /l礤b-q”脉冲宽度 100 as在address状态,』6此拉高电平同时给地址数据复用总线地址(瞅一伽)D麟),另外用一个输入选择信号PWR,当PWR为高电平时跳出ad— dress状态进入SJA_W1状态;而当PWR为低电平时跳出address状态进入SJA._R1状态。信号PWR 的作用是为了判断对寄存器的操作是读还是写。当对寄存器写的时候跳转到SJA—Wl状态,/AI。E拉低电平,跳出该状态进入SJA_W2状态;在SJA—W2状态,/WR拉低电平,/cs拉低电平同时给地址数据复用总线数据(AD<=DATA),跳出该状态进入SJA—W3状态;在SJAW3状态,/WR拉高电平,/cs拉高电平,跳出该状态进入IDLE状态。至此是一个完整的寄存器写操作。当对寄存器读的时候跳转到SJA—R1状态,ALE拉低电平,地址数据复用总线AD为高阻态(AD<一”ZZZZZZZZ”),跳出该状态进入sJAR2状态;在SJA-R2状态,/RD拉低电平,/cs拉低电平,跳出该状态进入SJA—R3状态;在SJA—R3状态,读取地址数据复用总线的数据(DATA—R<=AD),跳出该状态到SJA—R4状态;在SJA—R4状态,/cs拉高电平,/RD拉高电平,跳出该状态到I— DLE状态。至此是一个完整的寄存器读操作。在上述通过状态机来实现SJAl000寄存器的 硬件语言读写,在设计中每个状态占用的时间是一 个周期,即160ns。从表1可以看到SJAl000接口读写时序参数,其中设计的关键时在读寄存器操作时,从读使能信号/RD低电平到到输出有效数据最大为50ns。设计中,在SJA—R2状态将/RD拉低电平,在SJA—R3状态读取总线上的数据,即经过了160ns(大于50ns),符合时序要求。其他的时序设计都是严格按照时序表参数来设计中的。4SJAl000内部寄存器读写硬件描述语言的应用CAN总线节点的软件设计主要包括CAN节点初始化、报文发送、报文接收三个部分。这三个部分 的实现主要是对SJAl000中相应的寄存器进行读写。因此用VHDL设计Q气N总线节点的软件的关键就是对SJAl000内部特定寄存器读写〔3 ̄4〕。ifRsr=‘1’thenif(clock’eventandclock=‘1’)thencasestateISWHENLDLE=>start<=‘0’;state<::=MODE)WHENMODE一>start<=‘l’:PWR<=‘1’;ADDRESS<=X“00”:dataout<=X”09”;smte<=STOPMODE)whenSTOPMODE=>start<=‘0’:if(W-ok=‘1’)thenstate<=SR)elsestate<=STOPMODE)endif)whenSTOPSR=>start<=‘1’;PWR<一‘0’:ADDRESS<=X“02”:state<=STOPSRwhenSr()PSR=>start<一‘0’:ifR_ok=‘l’thenstate�9�9 <=stop)万方数据178 岳奎等:SJAl000内寄存器的VHDL语言读写设计与应用 第37卷elsestate<=STOPST;ENDIF;CAN总线节点的主程序中调用子程序,以写模式寄存器和读状态寄存器为例说明该子程序在主程序的应用,如上面程序所示:IDLE状态使start为低电平,在MODE状态start为1,同时给地址和数据,在这个状态子程序进入了address状态并根据PWR的值进行写寄存器操作,一个时钟以后start为低电平,并根据w—ok是否为高电平判断写寄存器是否完成;读状态寄存器SR时,start拉为高电平,同时给地址数据总线寄存器SR地址,一个时钟后,start拉低电平,并根据R—ok是 否为高电平判断读寄存器是否完成。5 结语CAN总线接口由硬件语言VHDL描述,可读性好,便于修改和测试。在处理器FPGACycloneEPlC6Q240C8处理器与CAN控制器SJAl000及PCA82C250组成的通信模块下,利用本文设计SJAl000内部寄存器的硬件语言读写时序实现来设计CAN总线节点软件,可在不同节点间实现数据传输,传输速率可达1Mbit/s,提高了系统的实时性和可靠性。因此该设计具有广泛的应用前景。参考文献〔1〕饶运涛,邹继军,王进宏,等.现场总线CAN原理与应用〔M〕.北京:北京航天航空大学出版社,2007:17~18〔2〕PHILIPS DATASHEETSJ『A1000 stand-aloneCANcontroller〔Z〕.PhilipsSemiconductors,2000Jan04〔3〕吴繁红.基于AT89C51和SJAI000控制器实现CAN总线接口〔J〕.电子技术应用,2003,29(7):51~52〔4〕张伟,霍建振.基于SJAlOOO的CAN总线通信模块〔刀.自动化技术与应用,2007,26(12):26~29也带%诞珠勘斛坏勘斛绵她恭黜开池乖出裆看池科带翰过钸出磷场姓珠幽带场过稀出希出秘坏出带场}蛳延,庥姥乖出希出带出希出裆彳}逆绵也乔断出吊妲币÷幺矛出带延;尔出牢(上接第170页)学员可利用评估功能可对教学过程进行评价,以便改进教学活动。5 结语此项目是应新疆党员干部现代远程教育管理中心的需求而研发,已通过中组部全国远程办的实地考察验收。系统不仅可用于农村党员远程培训、农业科普讲座,还可作为主会场,召开网络视频会议。此系统的实施为西部农村地区的远程教育发展提供了有力支持,同时对培养新型农民、活跃农村文化生活以及新农村建设也具有相当重要的意义。参考文献〔1〕韩志坚,封昌权.现代教育技术〔M〕.北京:人民邮电出版社,2004,1〔2〕李学明,李继,魏芳.远程教育系统及其实现〔M〕.北京:人民邮电出版社,2000.11〔3〕王阿木,赵喜明.视频会议系统及其在远程中的应用〔J〕.现代远距离教育,2003,(2):49~51〔4〕陈张健,蒋莉.交互式多点视频会议解决方案〔J〕.ComputerEra,2003,(2):34~35〔5〕李崇荣,张轩.基于IP/multicast视频会议技术在远程教育中的应用〔J〕.清华大学学报(自然科学版),2003,(1):34~37〔6〕Michael 13.Ciocco,Neil Toporski,MichaelDorris.DevelopingaSynchronousWebSeminarApplica— tion for OnlineLearning〔C〕.the33rd annual ACMSIGUCⅪSconfereneeonUserservices,Monterey,Califor— nia,USA,NewYork:ACMPress,2005:36~39万方数据 SJA1000内寄存器的VHDL语言读写设计与应用作者: 岳奎, 刘少君, 黄道平, Yue Kui, Liu Shaojun, Huang Daoping 作者单位: 华南理工大学自动化科学与工程学院,广州,510640 刊名:计算机与数字工程英文刊名: COMPUTER AND DIGITAL ENGINEERING 年,卷(期): 2009,37(10) 被引用次数: 0次 参考文献(4条) 1.饶运涛.邹继军.王进宏 现场总线CAN原理与应用 2007 2.PHILIPS DATA SHEET SJA1000 stand-alone CAN controller 2000 3.吴繁红 基于AT89C51和SJA1000控制器实现CAN总线接口 2003(07) 4.张伟.霍建振 基于SJA1000的CAN总线通信模块 2007(12) 相似文献(10条) 1.期刊论文 罗雪梅 基于SJA1000的CAN总线接口电路的设计与实现 -贵州工业大学学报(自然科学版)2003,32(4) 介绍了基于SJA1000的CAN总线接口电路的软硬件设计方法,给出了CAN总线接口电路、SJA1000初始化程序、接收及发送数据程序的框图. 2.期刊论文 郭慧玲.刘羽.魏文.GUO Hui-ling.LIU Yu.WEI Wen 基于SJA1000的CAN总线双机通讯技术的研究 -仪表技术与传感器2008,""(9) 介绍了CAN总线的发展趋势以及通讯控制器SJA1000的系统结构,针对双机通讯的特点,以通讯控制器SJA1000为核心设计了双机通讯的硬件电路,详细分析了通讯控制器SJA1000的初始化,数据发送和数据接收的工作机理,给出了硬件连接方式并编写了通讯程序,最后对抗干扰技术进行了探索,双机通讯系统获得了较好的可靠性和稳定性. 3.期刊论文 陈萍.姜秀杰.Chen Ping.Jiang Xiujie 基于FPGA的CAN总线通信系统 -计算机测量与控制2009,17(12) 为了克服单片机固有的缺陷,满足航天控制的需求,文章提出了如何利用FPGA采用查询的方式控制CAN控制器SJA1000,从而实现CAN总线数据通信的方法;介绍了该系统的硬件构成、芯片选择和组成原理,对FPGA的控制程序进行了分析和设计;实验结果表明,系统完全满足CAN总线通信要求,与以往基于单片机的CAN总线通信系统相比较,降低了体积、重量和功耗,具有优越性;该设计已成功应用于星载电场仪的地面检测设备中. 4.期刊论文 韩星.高剑.Han Xing.Gao Jian 基于SJA1000的CAN总线抗干扰技术研究 -火控雷达技术2008,37(3) 分析某车载武器系统CAN总线干扰产生的原因,给出基于SJA1000控制器构成的CAN总线节点的软、硬件抗干扰措施,有效解决了CAN节点的通信干扰问题. 5.期刊论文 李传艺.陈舜儿.黄红斌.刘敏.刘伟平.Li Chuanyi.Chen Shuner.Huang Hongbin.Liu Min.Liu Weiping 基于SJA1000的CAN总线系统节点仿真平台的实现 -广东自动化与信息工程2005,26(4) 文章设计了一个控制器局域网CAN总线系统节点的仿真平台,通过选用兼容扩展性及检错纠错能力强的SJA1000芯片作为CAN控制器核心,利用普通PC机仿真传感器、执行器和人机接口,实现的仿真平台具有灵活通用、简单可靠、性价比高及良好的开放性和扩展性等特点,为CAN总线系统在汽车及其它多种不同领域的自动控制系统中推广应用,提供了方便的研究开发条件. 6.期刊论文 潘计辉.张小林.Pan Jihui.Zhang Xiaolin 双CAN总线的机载网络控制器设计 -计算机测量与控制 2010,18(1) 基于航空电子综合化的要求,提出一种新的航电互联方案,结合小型飞行器多传感器和小数据量特点设计一种机载共享式网络.采用DSP作为处理器 ,SJA1000进行双CAN扩展,使州6N137进行信号隔离,并使用PCA82C250作为CAN控制器接口芯片,进行网络控制器的硬件设计;网络通讯协议采用应答式交换数据,在此基础上,对软件流程和代码进行设计;半物理仿真实验结果表明该系统运行良好,能够满足小型飞行器控制网络的实时性与多结点要求;同时系统具有可靠性高与开放性等特点. 7.期刊论文 张伟.霍建振.ZHANG Wei.HUO Jian-zhen 基于SJA1000的CAN总线通信模块设计 -自动化技术与应用 2007,26(12) 本文初步阐述了基于SJA1000的CAN总线通信模块的实现,采用PHILIPS的PCA82C250作为通信模块的总线收发器,网络控制器则采用PHILIPS的SJA1000,采用TAMEL的AT89C52单片机,基于这些芯片实现CAN通信的基本功能这主要包括EPP-CAN接口板的实现和下位机即单片机与CAN通信模块的连接及实现.系统达到完成CAN通信所需要的指标,可基本满足CAN通信的各项要求. 8.期刊论文 李云.王宝良.丁在田.王延伟 基于SJA1000的CAN总线控制节点的设计与实现 -空军工程大学学报(自然科学版)2003,4(3) 介绍了CAN总线的特点以及一种新型的独立CAN控制器SJA1000的主要功能,给出了一种基于SJA1000的CAN控制节点的硬件电路及软件设计,并对设计中应注意的问题进行了较详细的说明. 9.期刊论文 潘国峰.何平.田丰.孙以材 基于CAN总线的分布式测温报警系统 -河北工业大学学报2010,39(1) 研制了一种基于CAN总线的分布式温度检测系统.给出了CAN总线节点的硬件构成及温度检测、数据传送、接收的软件实现方法.系统可实现分布式温度测量、到限报警、故障诊断等功能,特别适用于工业现场及物资储存等环境的分布式温度实时监控. 10.期刊论文 付亮.王星.FU Liang.Wang Xing 基于SJA1000的CAN总线控制系统的开发与设计 -汽车电器 2007,""(5) 介绍PHILIPS公司推出的独立CAN总线控制器SJA1000的特点和内部结构,并对其内部寄存器及其地址分配进行了说明,最后给出它的典型的CAN总线节点电路图及其软件设计

SJA1000发送数据的波形总是只有一个低起始,后面就是高电平,FPGA配置...
采用基于ARM微处理器的单板机系统建立...S3C44B0x 的数据、地址和控制信号线...总线上的设备节点之间直接通过SJA1000...这些缓冲页的一部分作为接收缓冲区,...

相似回答