关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于FPGA的CAN总线控制器SJA1000软核的设计

基于FPGA的CAN总线控制器SJA1000软核的设计

作者:时间:2011-04-15来源:网络收藏

摘要:分析了的特点及协议通信格式。的IP,能为应用提供一个性能优良的、易于移植的,实现了对步进电机的控制。
关键词:控制器;SJA1000

控制局域网(CAN)属于现场的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。与一般的通信相比,CAN的数据通信可靠性、实时性和灵活性好,应用领域非常广泛,通常基于ARM或51单片机,实现与CAN控制器的通信联络。/SOPC技术是实现嵌入式系统的最高形式,基于IP与应用也必将成为替代硬核的一种发展趋势。凭借QuartuslI和NiosII工具,基于的VHDL(或Verilog)语言的IP核能够提供灵活性和性能更好的控制器。
图1为一个基于FPGA的控制器的CAN总线节点。其中PCA82C251是CAN总线接收器,SJA1000是CAN总线通信控制器,PMM8713是驱动步进电机的脉冲分配器,FPGA模块在节点模型中对SJA1000进行控制,并将接收到的帧信息进行处理,发送给脉冲分配器,以驱动步进电机。

本文引用地址:http://www.amcfsurvey.com/article/162166.htm

a.JPG


在设计中采用自顶向下的设计方法。通过分析SJA1000常用的控制芯片51单片机的功能,将其分为主要的4个模块:初始化模块、位查询模块、数据处理模块和缓冲区释放模块。
对SJA1000完成控制功能的过程用状态图描述如图2所示,这也是系统的主状态机。4个状态对应上述的4个功能模块,首先在initial_st-ate完成对sJA1000的初始化,在由init_end信号给出初始化完成标志后,进入查询状态,即query_RBS状态,由位查询模块完成此时对SJA100 0的状态查询。如果查询到SJA1000缓冲区有帧信息,将qRBS_end置“1”,进入下一个状态frame_cope,即帧处理状态,此时由数据处理模块完成对缓冲区的数据读取,并作处理。在读取完一帧数据后,需要释放缓冲区,为下一帧信息的接收做准备。此时状态转入了release_buff-er,对应功能模块中的缓冲区释放模块,此状态结束后又转入位查询状态,为下一帧信息接收做准备。

b.JPG


初始化模块主要在系统上电或重启后,先对SJA1000进行初始化;位查询模块是在初始化完成后,对SJA1000状态寄存器的接收缓冲区标志位不断进行查询,如果在缓冲区收到一帧信息后,则转入数据处理模块,否则继续进行查询;数据处理模块则是在查询到接收缓冲区有数据后,读入帧数据,并对帧数据进行处理;缓冲区释放模块是在一帧信息处理完毕后,释放缓冲区空间。
除了上述4个功能模块之外,还需要读写模块、双端口模块、模块接口控制逻辑等。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭