基于FPGA实现的CAN与SERDES转换器
文献发布时间:2024-04-18 19:59:31
技术领域
本发明属于雷达波束控制技术领域,具体涉及一种基于FPGA实现的CAN与SERDES转换器。
背景技术
目前仅有CAN总线与UART总线、CAN总线与SPI总线等低速总线的转换设备,没有CAN与SERDES或其他高速串行总线的转换器设备。
例如,申请号为201110130591.0的中国专利申请公开了一种多路UART总线与CAN总线之间协议转换器,实现CAN总线与UART总线的数据传输。再如申请号为201510647609.2的中国专利申请公开了一种SPI总线与CAN总线协议转换电路及方法,实现了SPI数据与CAN总线数据透明转换的协议转换以及对SPI模块与CAN模块进行初始化管理的逻辑控制方法。前述发明实现了CAN与UART、SPI等低速接口的协议转换,但无法应用于需要将CAN与高速接口进行转换的场景。
因为SERDES总线的传输速率高,可达Gbit/s速率,故应用于高速数据传输的场景。而CAN总线的传输速率低,因接口差异,采用CAN总线接口的设备无法接入高速总线系统。现有技术只能将CAN总线转换为同样低速的UART、SPI、I2C等接口,现有的转换设备无法进行用于接入高速总线系统。因此急需填补CAN与SERDES等高速串行接口转换的技术空白。
发明内容
本发明目的是提供一种基于FPGA实现的CAN与SERDES转换器,能够实现了CAN与高速接口的转换,内部的CAN控制模块与SERDES控制模块均通过逻辑实现,可根据需求通过在FPGA内部例化多个CAN控制模块与SERDES控制模块的方式增加CAN接口或SERDES接口的数量,适用于不同的应用场景。
具体地说,本发明提供了一种基于FPGA实现的CAN与SERDES转换器,实现CAN总线与SERDES总线之间协议转换,其特征在于,包括SERDES控制模块、数据管理模块和CAN控制模块;
所述SERDES控制模块包括SERDES总线接口、PMA控制器、PCS控制器和用户总线接口;所述SERDES总线接口具有接收端口RXP和RXN、发送端口TXP和TXN,所述接收端口RXP和RXN接收待转换成CAN协议串行数据的SERDES协议高速串行数据,所述发送端口TXP和TXN输出转换后的SERDES协议高速串行数据;所述PMA控制器与SERDES总线接口相连接,对待转换的数据进行串并转换;所述PCS控制器与PMA控制器相连接,对待转换的数据进行编码或解码;所述用户总线接口连接PCS控制器和数据管理模块,与数据管理模块进行数据交互;
所述数据管理模块连接在SERDES控制模块与CAN控制模块之间,根据外部控制指令控制SERDES控制模块与CAN控制模块之间的数据信号传输,对发送或接收的并行数据进行缓存与调度;
所述CAN控制模块包括用户总线接口、发送FIFO、接收FIFO、位流时序控制器以及CAN总线接口;所述用户总线接口与数据管理模块进行数据交互;所述CAN总线接口具有串行发送端口TX和串行接收端口RX;所述发送FIFO将用户总线接口上待发送的并行数据进行缓存;所述位流时序控制器将从发送FIFO读取的并行数据转换为CAN协议串行数据后输出给CAN总线接口的串行发送端口TX;所述串行发送端口TX发送对SERDES协议高速串行数进行转换后的CAN协议串行数据;所述串行接收端口RX接收待转换成SERDES协议高速串行数据的CAN协议串行数据,并传送到所述位流时序控制器;所述位流时序控制器按照CAN协议将CAN协议串行数据转换为并行数据后输出给接收FIFO;所述接收FIFO缓存位流时序控制器输出的并行数据并与用户总线接口相连接。
进一步地,所述数据管理模块包含SERDES控制模块侧的数据调度模块、CAN控制模块侧的数据调度模块和传输控制模块;
所述SERDES控制模块侧的数据调度模块对SERDES控制模块的用户总线接口的收发数据进行调度;CAN控制模块侧的数据调度模块对CAN控制模块的用户总线接口的收发数据进行调度;传输控制模块接收外部控制指令,根据所述外部控制指令确定数据传输方向,将在SERDES控制模块侧的数据调度模块和CAN控制模块侧的数据调度模块间进行数据传输。
进一步地,当所述传输控制模块根据外部控制指令确定数据传输方向为从SERDES转换成CAN时,SERDES控制模块侧的数据调度模块在用户总线接口上接收到SERDES控制模块发送的数据后,将该数据传输到CAN控制模块侧的数据调度模块上,CAN控制模块侧的数据调度模块将该数据发送到CAN控制模块,最终由CAN控制模块完成SERDES接口数据到CAN接口数据的转换并输出;
当传输控制模块根据外部控制指令确定数据传输方向为从CAN转换成SERDES时,CAN控制模块侧的数据调度模块在用户总线接口上接收到CAN控制模块发送的数据后,将该数据传输到SERDES控制模块侧的数据调度模块上,SERDES控制模块侧的数据调度模块将该数据发送到SERDES控制模块,最终由SERDES控制模块完成CAN接口数据到SERDES接口数据的转换并输出。
进一步地,当有CAN协议串行数据输入CAN控制模块中CAN总线接口的接收端口RX时,CAN控制模块的位流时序控制器将CAN协议串行数据转换为并行数据,写入到接收FIFO中,并向数据管理模块发送数据读取请求;
所述数据管理模块接收到该数据读取请求后,通过CAN控制模块的用户总线接口读取接收FIFO中的数据,发送到SERDES控制模块的用户总线接口上,并向SERDES控制模块发送数据读取请求;
所述SERDES控制模块接收到数据读取请求后,从SERDES控制模块的用户总线接口上读取该并行数据,经过PCS控制器的编码处理和PMA控制器的并串转换处理后,转换成SERDES协议的高速串行数据,经过SERDES总线接口的TXP和TXN端口输出。
进一步地,当有SERDES协议串行数据输入SERDES控制模块中SERDES总线接口的接收端口RXP和RXN时,SERDES控制模块的PMA控制器对所述SERDES协议串行数据进行串并转换,PCS控制器对要发送的并行数据进行编码或对接收的并行数据进行解码,写至SERDES控制模块用户总线接口上,并向数据管理模块发送数据读取请求;
所述数据管理模块接收到该数据读取请求后,通过SERDES控制模块的用户总线接口读取所述并行数据,发送到CAN控制模块的用户总线接口上,并向CAN控制模块发送数据读取请求;
所述CAN控制模块接收到该数据读取请求后,从CAN控制模块的用户总线接口上读取所述并行数据,写入到发送FIFO,当位流时序控制器判断发送FIFO的空信号无效时,使能读取发送FIFO中的并行数据,将并行数据转换成CAN协议的串行数据,经过CAN总线接口的TX端口输出。
进一步地,所述CAN控制模块、SERDES控制模块和数据管理模块在FPGA内通过RTL、IP核或原理图方式实现。
进一步地,所述在FPGA内部例化至少两个CAN控制模块、至少两个SERDES控制模块。
进一步地,每个所述SERDES控制模块中SERDES总线接口的TXP、TXN、RXP、RXN均分别独立,同时与外部不同的SERDES设备连接;每个SERDES控制模块的用户总线接口均连接到数据管理模块内SERDES控制模块侧的调度模块的独立信号接口上;
每个所述CAN控制模块CAN总线接口的TX、RX均分别独立,同时与外部不同的CAN设备连接;每个CAN控制模块用户总线接口均连接到数据管理模块内CAN控制模块侧的调度模块的独立信号接口上;
所述数据管理模块内的传输控制模块接收外部控制指令,控制SERDES控制模块侧的调度模块接收各SERDES控制模块的数据,以及将待发送数据发送给各SERDES控制模块;所述数据管理模块内的传输控制模块接收外部控制指令,控制CAN控制模块侧的调度模块接收各CAN控制模块的数据,以及将待发送数据发送给各CAN控制模块。
本发明的基于FPGA实现的CAN与SERDES转换器的有益效果如下:
本发明的基于FPGA实现的CAN与SERDES转换器能够同时将SERDES总线接收的数据转换为CAN总线输出、CAN总线接收的数据转换为SERDES总线输出,填补了CAN与高速串行接口转换的技术空白,使得传统采用CAN总线接口的设备可以接入到高速总线接口的系统中应用。具体而言,具备以下优点:
1、转换器的核心芯片采用FPGA实现,数据处理实时性高,可以达到纳秒级。
2、将CAN控制器的功能集成到FPGA内,通过逻辑实现该部分功能,减少硬件组成以降低转换器的成本。
3、CAN控制器的数量可以根据需要增加或减少,具备扩展性。
4、转换器可以实现CAN接口与高速接口的协议转换,例如SERDES。
附图说明
图1是本发明实施例的原理框图。
图2是本发明另一个实施例的原理框图
具体实施方式
下面结合实施例并参照附图对本发明作进一步详细描述。
本发明的一个实施例,为一种基于FPGA实现的CAN与SERDES转换器,用于实现CAN总线与SERDES总线之间协议转换。如图1所示,本发明的基于FPGA实现的CAN与SERDES转换器包括SERDES控制模块、数据管理模块和CAN控制模块。
其中,SERDES控制模块包括SERDES总线接口、PMA控制器、PCS控制器,以及用户总线接口。
SERDES总线接口具有接收端口RXP和RXN、发送端口TXP和TXN。接收端口RXP、RXN接收待转换成CAN协议串行数据的SERDES协议高速串行数据,发送端口TXP、TXN输出转换后的SERDES协议高速串行数据。
PMA控制器与SERDES总线接口相连接,对待转换的数据进行串并转换。
PCS控制器与PMA控制器相连接,对待转换的数据进行编码或解码。
用户总线接口连接PCS控制器和数据管理模块,与数据管理模块进行数据交互。
数据管理模块连接在SERDES控制模块与CAN控制模块之间,根据接收到的外部控制指令控制SERDES控制模块与CAN控制模块之间的数据信号传输,对发送或接收数据进行缓存与调度。
CAN控制模块包括用户总线接口、发送FIFO(First In First Out,先入先出存储器)、接收FIFO、位流时序控制器以及CAN总线接口。
用户总线接口与数据管理模块进行数据交互。
位流时序控制器按照CAN协议对数据进行串并、并串转换。
发送FIFO与CAN总线接口相连接,是从用户总线接口接收的待发送并行数据的缓存器。
接收FIFO与CAN总线接口相连接,是从位流时序控制器接收的由CAN协议串行数据转换所得的并行数据的缓存器。
CAN总线接口具有串行发送端口TX和串行接收端口RX。串行发送端口TX发送转换后的CAN协议串行数据,串行接收端口RX接收待转换成SERDES协议高速串行数据的CAN协议串行数据。
发送FIFO将用户总线接口上待发送的并行数据进行缓存;位流时序控制器将从发送FIFO读取的并行数据转换为CAN协议串行数据后输出给CAN总线接口的串行发送端口TX;串行发送端口TX发送对SERDES协议高速串行数进行转换后的CAN协议串行数据。
串行接收端口RX接收待转换成SERDES协议高速串行数据的CAN协议串行数据,并传送到所述位流时序控制器;位流时序控制器按照CAN协议将CAN协议串行数据转换为并行数据后输出给接收FIFO;接收FIFO缓存位流时序控制器输出的并行数据并与用户总线接口相连接。
CAN控制模块、SERDES控制模块和数据管理模块都在FPGA内通过RTL、IP核(Intellectual Property Core,知识产权核)、原理图等方式实现。
如图1所示,CAN控制模块包含一个CAN总线接口、一个接收FIFO、一个发送FIFO、一个位流时序控制器、以及一个用户总线接口。CAN控制模块在上电后完成内部初始化参数的配置,包括总线速率、工作模式、CAN端口号等。
SERDES控制模块包含一个SERDES总线接口、一个PMA控制器、一个PCS控制器,以及一个用户总线接口。SERDES控制模块在上电后完成内部初始化参数的配置,包括总线速率、时钟频率、传输协议等。
数据管理模块包含SERDES控制模块侧的数据调度模块、CAN控制模块侧的数据调度模块和传输控制模块。SERDES控制模块侧的数据调度模块对SERDES控制模块的用户总线接口的收发数据进行调度;CAN控制模块侧的数据调度模块对CAN控制模块的用户总线接口的收发数据进行调度;传输控制模块接收外部控制指令,根据所述外部控制指令确定数据传输方向,将在SERDES控制模块侧的数据调度模块和CAN控制模块侧的数据调度模块间进行数据传输。
当传输控制模块根据外部控制指令确定数据传输方向为从SERDES转换成CAN时,SERDES控制模块侧的数据调度模块在用户总线接口上接收到SERDES控制模块发送的数据后,将该数据传输到CAN控制模块侧的数据调度模块上,CAN控制模块侧的数据调度模块将该数据发送到CAN控制模块,最终由CAN控制模块完成SERDES接口数据到CAN接口数据的转换并输出。
当传输控制模块根据外部控制指令确定数据传输方向为从CAN转换成SERDES时,CAN控制模块侧的数据调度模块在用户总线接口上接收到CAN控制模块发送的数据后,将该数据传输到SERDES控制模块侧的数据调度模块上,SERDES控制模块侧的数据调度模块将该数据发送到SERDES控制模块,最终由SERDES控制模块完成CAN接口数据到SERDES接口数据的转换并输出。
如图1所示,当有CAN协议串行数据输入CAN控制模块中CAN总线接口的接收端口RX时,CAN控制模块的位流时序控制器将CAN协议串行数据转换为并行数据,写入到接收FIFO中,并向数据管理模块发送数据读取请求;
所述数据管理模块接收到该数据读取请求后,通过CAN控制模块的用户总线接口读取接收FIFO中的数据,发送到SERDES控制模块的用户总线接口上,并向SERDES控制模块发送数据读取请求;
所述SERDES控制模块接收到数据读取请求后,从SERDES控制模块的用户总线接口上读取该并行数据,经过PCS控制器的编码处理和PMA控制器的并串转换处理后,转换成SERDES协议的高速串行数据,经过SERDES总线接口的TXP和TXN端口输出。
当有SERDES协议串行数据输入SERDES控制模块中SERDES总线接口的接收端口RXP和RXN时,SERDES控制模块的PMA控制器对所述SERDES协议串行数据进行串并转换,PCS控制器对要发送的并行数据进行编码或对接收的并行数据进行解码,写至SERDES控制模块用户总线接口上,并向数据管理模块发送数据读取请求;
所述数据管理模块接收到该数据读取请求后,通过SERDES控制模块的用户总线接口读取所述并行数据,发送到CAN控制模块的用户总线接口上,并向CAN控制模块发送数据读取请求;
所述CAN控制模块接收到该数据读取请求后,从CAN控制模块的用户总线接口上读取所述并行数据,写入到发送FIFO,当位流时序控制器判断发送FIFO的空信号无效时,使能读取发送FIFO中的并行数据,将并行数据转换成CAN协议的串行数据,经过CAN总线接口的TX端口输出。
优选地,在另一个实施例中,本发明可通过在FPGA内部例化至少两个CAN控制模块、至少两个SERDES控制模块的方式增加CAN接口或SERDES接口的数量,来实现不同接口需求下的SERDES数据与CAN数据的转换。
每个所述SERDES控制模块中SERDES总线接口的TXP、TXN、RXP、RXN均分别独立,同时与外部不同的SERDES设备连接;每个SERDES控制模块的用户总线接口均连接到数据管理模块内SERDES控制模块侧的调度模块的独立信号接口上;
每个所述CAN控制模块CAN总线接口的TX、RX均分别独立,同时与外部不同的CAN设备连接;每个CAN控制模块用户总线接口均连接到数据管理模块内CAN控制模块侧的调度模块的独立信号接口上;
所述数据管理模块内的传输控制模块接收外部控制指令,控制SERDES控制模块侧的调度模块接收各SERDES控制模块的数据,以及将待发送数据发送给各SERDES控制模块;所述数据管理模块内的传输控制模块接收外部控制指令,控制CAN控制模块侧的调度模块接收各CAN控制模块的数据,以及将待发送数据发送给各CAN控制模块。
如图2所示,本实施例中例化了两个SERDES控制模块。每个SERDES控制模块中SERDES总线接口的TXP、TXN、RXP、RXN均分别独立,可同时与外部两个不同的SERDES设备连接。两个SERDES控制模块用户总线接口上的RDATA、TDATA均连接到数据管理模块内SERDES控制模块侧的调度模块的独立信号接口上。
数据管理模块内的传输控制模块接收外部控制指令,控制SERDES控制模块侧的调度模块接收SERDES控制模块1或SERDES控制模块2的RDATA,以及将TDATA发送给SERDES控制模块1或SERDES控制模块2。
本实施例中例化了两个CAN控制模块。每个CAN控制模块CAN总线接口的TX、RX均分别独立,可同时与外部两个不同的CAN设备连接。两个CAN控制模块用户总线接口上接收的并行数据RDATA、发送的并行数据TDATA均连接到数据管理模块内CAN控制模块侧的调度模块的独立信号接口上。
数据管理模块内的传输控制模块接收外部控制指令,控制CAN控制模块侧的调度模块接收CAN控制模块1或CAN控制模块2的RDATA,以及将TDATA发送给CAN控制模块1或CAN控制模块2。
CAN控制模块1或CAN控制模块2将RX接口接收到的CAN协议串行数据发送给SERDES控制模块1或SERDES控制模块2,再经TXP、TXN接口发出,过程与例化一个SERDES控制模块与CAN控制模块的相应过程相同。
SERDES控制模块1或SERDES控制模块2将RXP、RXN接口接收到的SERDES协议串行数据发送给CAN控制模块1或CAN控制模块2,经TX接口发出,过程与例化一个SERDES控制模块与CAN控制模块的相应过程相同。
本发明的基于FPGA实现的CAN与SERDES转换器能够同时将SERDES总线接收的数据转换为CAN总线输出、CAN总线接收的数据转换为SERDES总线输出,填补了CAN与高速串行接口转换的技术空白,使得传统采用CAN总线接口的设备可以接入到高速总线接口的系统中应用。具体而言,具备以下优点:
1、转换器的核心芯片采用FPGA实现,数据处理实时性高,可以达到纳秒级;
2、将CAN控制器的功能集成到FPGA内,通过逻辑实现该部分功能,减少硬件组成以降低转换器的成本;
3、CAN控制器的数量可以根据需要增加或减少,具备扩展性;
4、转换器可以实现CAN接口与高速接口的协议转换,例如SERDES。
虽然本发明已以较佳实施例公开如上,但实施例并不是用来限定本发明的。在不脱离本发明之精神和范围内,所做的任何等效变化或润饰,同样属于本发明之保护范围。因此本发明的保护范围应当以本申请的权利要求所界定的内容为标准。
- 富氧燃料系统安全切断阀泄漏检测装置及方法
- 燃料泄漏处理系统及燃料电池汽车
- 气体燃料泄漏检测方法、气体燃料泄漏检测装置及具备该装置的燃气发动机
- 燃料电池系统中的气体燃料泄漏自动检测和安全报警系统