一种基于FPGA的高效CAN总线接口的制作方法

文档序号:18072333发布日期:2019-07-03 03:55阅读:446来源:国知局
一种基于FPGA的高效CAN总线接口的制作方法

本发明涉及于数字电路设计的技术领域,特别是指一种基于fpga的高效can总线接口。



背景技术:

can协议是一种通用的通讯标准,其英文全称为controllerareanetwork,是iso国际标准化的串行通信协议。基于can协议的通讯总线是一种全数字化、双向、串行、异步和多主的现场总线。现在,can的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。多种品牌汽车、智能航行体的控制系统、信息传输系统都采用can总线进行通讯。

can总线遵从osi模型,主要工作在数据链路层和物理层。can协议具有的特点包括:1)在总线空闲时,所有的单元都可以自主开始发送信息,实现多主控制;2)所有的消息都以固定的格式发送(标准帧、扩展帧),实现不同接口的兼容;3)各单元没有类似于“地址”的信息,总线增加单元时,其它单元的软硬件及应用层都不需要改变;4)根据整个网络的规模,可设定不同的通信速度;5)可通过发送“遥控帧”,请求其它单元发送数据;6)所有单元具有错误检测功能;7)can可将引起总线连续故障的单元从总线上隔离出去;8)can总线可以同时连接多个单元,理论上单元总数没有限制。

fpga是一种现场可编程门阵列,具有集成度高、逻辑功能强、速度快等特点。单片fpga利用硬件逻辑语言(vhdl、verlog)设计,可以实现用户定制的强大逻辑功能,从而替代并综合多种专用数字集成芯片的功能。

现有的fpga器件(xilinx公司、altera公司)均不支持can协议,没有专用的can接口。

通常实现基于fpga的can总线通讯,需要在fpga器件外围增加专用的can总线控制器,如sja1000、pca82c200。电路结构如图1所示。can收发器作为单元can接口节点,连接外部can总线,控制信号从can收发器到达总线上的物理层,反之亦然。常用的can收发器有pca82c250。can控制器负责执行can规约里定义的can协议,完成数据转换、信息缓冲和验收滤波。由于can控制器需要调节单元通讯波特率与can总线上数据传输波特率一致,can控制器应接入外部基准时钟。常见的can控制器输出的逻辑电平为5v,需要通过电平转换芯片将5v电压转换成fpga的接口电压。fpga接收can控制器输出的信号,提取can总线上的信息。

以上方法设计的基于fpga的can总线接口,电路设计冗余复杂,需要增加多种外部芯片,提高设计成本,增加电路布局难度;同时,can控制器有多组控制信号、数据信号输出,占用过多fpga的io资源,电路布线增加难度。



技术实现要素:

本发明实施例提供了一种基于fpga的高效can总线接口,为了解决现有技术中基于fpga的can总线接口电路设计冗余复杂、成本高、电路布线难度大的问题。

为了解决上述技术问题,本发明的实施例采用如下技术方案:

一种基于fpga的高效can总线接口,硬件包括fpga、单片can收发器和单片2位电平转换芯片;通过can收发器将can总线信息接入,再把收、发两链路信号经过一个2位电平转换芯片转换后,发送到fpga即可;所述fpga内部,利用可编程逻辑实现主控模块;所述fpga内部固定有用于模拟数字集成芯片sja1000的逻辑,作为can控制器,所述can控制器直接对接主控模块;所述fpga内部采用时钟分频与锁相环结合的方法,在fpga内部产生基准时钟。

其中,所述模拟数字集成芯片sja1000的逻辑的方法为:包括can核心模块、接口管理逻辑、验收滤波器、接收fifo和发送缓冲;

所述can核心模块用于can信息帧的收发和can协议通讯,can核心模块应支持can2.0b的协议,并直接与can收发器输出的收、发信号连接;所述can核心模块读取发送缓冲区中的数据,按can协议封装成一条完整的信息帧,根据接口管理逻辑中总线定时寄存器的波特率预设值,将信息帧顺序发送到收信号链路上;反之,根据can2.0b协议和固定的波特率,can核心模块判断发信号链路上是否有信息到达并读取信息帧,提取有效信息后传送给验收滤波器;

所述接口管理逻辑同外部主控模块相连接,用于解释来自主控模块的命令;所述接口管理逻辑内部包含多组寄存器,用于对寄存器进行寻址,向主控模块提供中断信息和控制信息;

所述验收滤波器用于对接收信息进行滤波,只有验收滤波通过且无差错,才能把接收的信息帧送入接收fifo缓存区;所述验收滤波器把接收信息的id与识别码的内容相比较,决定是否接收信息;识别码由读取屏蔽寄存器中的存储值获得;所述验收滤波器由fpga中的比较器资源实现;

所述接收fifo是主控模块与验收滤波之间的缓冲区域,用来存储从can总线上接收的id和数据;接收fifo有64字节,先入先出,所述接口管理逻辑可随时访问;所述接收fifo采用fpga中自带的fifo资源实现;

所述发送缓冲用于存储一个完整的信息帧,长度为13字节,主控模块可直接将id和数据送入发送缓冲区,然后置命令寄存器的发送请求位,启动can核心模块读取发送缓冲区的数据;所述发送缓冲由ram资源实现。

优选地,所述接口管理逻辑中的寄存器包括控制寄存器、命令寄存器、状态寄存器,中断寄存器、屏蔽寄存器、总线定时寄存器、数据存储寄存器、中断使能寄存器、仲裁丢失捕捉寄存器,各寄存器功能采用fpga中rom资源实现。

本发明的有益效果为:本发明实施例提供了一种基于fpga的高效can接口,硬件包括fpga、单片can收发器和单片2位电平转换芯片;通过can收发器将can总线信息接入,再把收、发两链路信号经过一个2位电平转换芯片转换后,发送到fpga即可;所述fpga内部,利用可编程逻辑实现主控模块;所述fpga内部固定有用于模拟数字集成芯片sja1000的逻辑,作为can控制器,所述can控制器直接对接主控模块;所述fpga内部采用时钟分频与锁相环结合的方法,在fpga内部产生基准时钟。本发明针对所有型号的fpga芯片,不需要can总线控制器、基准时钟晶振,简易高效的实现can接口;利用fpga控制的can总线接口,硬件设计中可以减少一片can控制器、一片外部晶振、两片电平转换芯片;同时电路板上走线由原来的14根减少为2根,节约电路板上布线资源,节约fpga的io资源。

附图说明

图1是现有技术中fpga的can接口电路连接关系图;

图2是本发明实施例提供的基于fpga的高效can总线接口的电路关系图;

图3是本发明实施例提供的基于fpga的高效can总线接口的sja1000内部结构图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。

参照附图2和图3,本发明实施例提供了一种基于fpga的高效can总线接口,硬件包括fpga、单片can收发器和单片2位电平转换芯片;通过can收发器将can总线信息接入,再把收、发两链路信号经过一个2位电平转换芯片转换后,发送到fpga即可;fpga内部,利用可编程逻辑实现主控模块;fpga内部固定有用于模拟数字集成芯片sja1000的逻辑,作为can控制器,can控制器直接对接主控模块;fpga内部采用时钟分频与锁相环结合的方法,在fpga内部产生基准时钟。

本发明实施例中,主要原理如下:

1)依据fpga强大的可编程能力、丰富的资源,模拟can控制专用数字集成芯片sja1000的功能,并将模拟的sja1000逻辑固定在fpga内部的一个子区域中;

2)利用fpga内部时钟资源,采用时钟分频与锁相环结合的方法,在fpga内部产生基准时钟(10mhz到24mhz),替代外部晶振作为基准时钟输入;

3)can控制器与基准时钟集成在fpga内部,can控制器输出的控制信号直接在fpga内部与主控模块对接,从而避免了控制信号在电路板上的走线;

4)接入fpga为两路can收发信号(tx、rx),只需要一片2位电平转换芯片。

基于fpga的高效can接口电路结构如图2所示,首先通过can收发器pca82c250将总线上的差分信号转换成双向收、发信号。通过2位的电平转换芯片sn74lvc2t45将5v信号电压转换成fpga接口电压。并将两路收、发信号直接送入fpga通用io口。

在fpga内部,利用可编程逻辑实现主控模块。同时,在固定的区域模拟can控制器sja1000的逻辑功能。模拟的can控制器在fpga内部直接对接主控模块。利用fpga内部全局时钟资源,通过时钟分频和锁相环技术产生稳定的16mhz基准时钟,调节模拟的can控制器波特率与总线上波特率一致。

利用fpga可编程逻辑和自有资源模拟sja1000功能是本发明较难实现部分。如图3所示,sja1000内部结构主要由5部分构成,主要实现方法如下:

1)can核心模块:负责can信息帧的收发和can协议的实现。can核心模块应支持can2.0b的协议,并直接与can收发器输出的收发信号(tx、rx)连接。can核心模块读取发送缓冲区中的数据,按can协议封装成一条完整的信息帧,根据接口管理逻辑中总线定时寄存器的波特率预设值,将信息帧顺序发送到tx上。反之,根据can2.0b协议和固定的波特率,can核心模块判断rx上是否有信息到达并读取信息帧,提取有效信息后(信息id、不大于64位的数据)传送给验收滤波器;

2)接口管理逻辑:同外部主控模块相连接,解释来自主控模块的命令。接口管理逻辑内部包含多组寄存器。接口管理逻辑负责对寄存器进行寻址,向主控模块提供中断信息和控制信息。接口管理逻辑中的主要寄存器包括控制寄存器、命令寄存器、状态寄存器,中断寄存器、屏蔽寄存器、总线定时寄存器、数据存储寄存器、中断使能寄存器、仲裁丢失捕捉寄存器。各寄存器功能可以采用fpga中rom资源实现。与主控模块的连接包括:d[7:0]——负责有效信息双向传输,rst——负责复位所有寄存器,ale——负责地址信息输入使能,cs——负责片选使能,wr——负责写使能,rd——负责读使能,int——负责中断输出;

3)验收滤波器:负责接收信息的滤波,只有验收滤波通过且无差错,才能把接收的信息帧送入接收fifo缓存区。验收滤波器把接收信息的id与识别码的内容相比较,决定是否接收信息。识别码由读取屏蔽寄存器中的存储值获得。验收滤波器可以由fpga中的比较器资源实现;

4)接收fifo:接收fifo是主控模块与验收滤波之间的缓冲区域,用来存储从can总线上接收的id和数据。接收fifo有64字节,先入先出,可以被接口管理逻辑随时访问。该模块可以采用fpga中自带的fifo资源实现;

5)发送缓冲:发送缓冲区可存储一个完整的信息帧,长度为13字节,主控模块可以直接将id和数据送入发送缓冲区,然后置命令寄存器的发送请求位,启动can核心模块读取发送缓冲区的数据。发送缓冲可以用ram资源实现。

以上各部分由verlog语言设计实现,利用fpga中的全局时钟资源、乘法器资源、逻辑资源、ram、fifo、比较器资源等。

本发明实施例提供的基于fpga的高效can接口技术,适用于所有系列的fpga芯片。可以针对fpga自有的特点,实现简易高效的can通讯。

本发明实施例提供了一种基于fpga的高效can接口,硬件包括fpga、单片can收发器和单片2位电平转换芯片;通过can收发器将can总线信息接入,再把收、发两链路信号经过一个2位电平转换芯片转换后,发送到fpga即可;所述fpga内部,利用可编程逻辑实现主控模块;所述fpga内部固定有用于模拟数字集成芯片sja1000的逻辑,作为can控制器,所述can控制器直接对接主控模块;所述fpga内部采用时钟分频与锁相环结合的方法,在fpga内部产生基准时钟。本发明针对所有型号的fpga芯片,不需要can总线控制器、基准时钟晶振,简易高效的实现can接口;利用fpga控制的can总线接口,硬件设计中可以减少一片can控制器、一片外部晶振、两片电平转换芯片;同时电路板上走线由原来的14根减少为2根,节约电路板上布线资源,节约fpga的io资源。

在本说明书的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

当然,本发明还可以有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可以根据本发明作出各种相应的改变和变形,但这些改变和变形都应属于本发明的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1