CN109976216A - 一种can总线控制器及控制方法 - Google Patents
一种can总线控制器及控制方法 Download PDFInfo
- Publication number
- CN109976216A CN109976216A CN201910250783.1A CN201910250783A CN109976216A CN 109976216 A CN109976216 A CN 109976216A CN 201910250783 A CN201910250783 A CN 201910250783A CN 109976216 A CN109976216 A CN 109976216A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- bus
- data frame
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0423—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/25—Pc structure of the system
- G05B2219/25257—Microcontroller
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种CAN总线控制器及控制方法,该CAN总线控制器包括位时序模块、发送模块和接收模块,位时序模块包含了位时间与同步方式的设置;发送模块包括组建数据帧单元、第一数据缓存单元、第一总线监听单元、位编码单元以及总线仲裁单元;接收模块包括第二总线监听单元、数据读取单元、位解码单元、CRC校验单元、仲裁场校验单元以及第二数据缓存单元;本发明CAN总线控制器,通过发送模块、接收模块以及位时序模块的相互配合,能够满足CAN总线的基本功能;发送模块及接收模块包含高速的数据寄存器,使控制器能够在大规模数据流的情况下正常工作。
Description
技术领域
本发明属于总线控制器的设计领域,尤其涉及一种CAN总线控制器及控制方法。
背景技术
CAN(Controller Area Network,控制局域网)是一种支持多主机的异步串行总线,它以其高性能、高可靠性、设计灵活以及价格低廉的特点,已经在汽车工业、工业控制等众多领域得到了广泛应用。目前国内使用的基本都是国外生产的CAN总线控制器芯片,自主研发控制器芯片对逐步摆脱国外产品以及促进我国工业发展有着重大意义。
近年来,FPGA(Field Programmable Gate Array,现场可编程门阵列)的技术也得到了较大的突破。FPGA具有集成度高、含有大量的触发器和存储器等资源、能够重复编程、设计周期短以及灵活可变等优点,可采用硬件描述语言(如Verilog HDL等)对其进行设计,具有较好的灵活性。
发明内容
本发明的目的在于针对现有技术的不足,提供一种CAN总线控制器及控制方法。
本发明的目的是通过以下技术方案来实现的:一种CAN总线控制器,包括位时序模块、发送模块和接收模块;
所述位时序模块将位时间划分为多个时间片段,规定发送点、同步段、传播时间段、相位缓冲段和采样点。
所述发送模块包括组建数据帧单元、第一数据缓存单元、第一总线监听单元、位编码单元以及总线仲裁单元;
所述组建数据帧单元用于将需要发送的数据按照CAN总线标准组建相应的CAN数据帧,包括依次排列的帧起始、仲裁场、控制场、数据场、CRC场、应答场以及帧结尾等部分;
所述第一数据缓存单元用于存储组建数据帧单元组建完毕的数据帧;
所述第一总线监听单元检测到总线空闲时,读取第一数据缓存单元中的数据帧准备进行发送,并在数据帧的仲裁场发送完毕前,对总线进行监听;
所述位编码单元用于将待发送的数据帧通进行位编码处理,然后按照位时序模块提供的发送点逐位发送;
所述总线仲裁单元在数据帧的仲裁场发送完毕前,进行冲突仲裁,若冲突仲裁失败,则停止发送,反之则继续发送数据帧直到数据帧发送完毕。
所述接收模块包括第二总线监听单元、数据读取单元、位解码单元、CRC校验单元、仲裁场校验单元以及第二数据缓存单元;
所述第二总线监听单元检测到总线上有数据传输时,开启数据读取单元;
所述数据读取单元按照位时序模块提供的采样点逐位接收数据;
所述位解码单元对数据读取单元接收的数据进行位解码;
所述第二数据缓存单元存储位解码单元解码后的数据;
所述CRC校验单元在接收完毕数据帧的CRC场后进行CRC校验,如果校验成功则开启仲裁场校验单元,反之则丢弃接收到的数据;
所述仲裁场校验单元校验仲裁场中的标识符是否与接收方相符,如果相符则将数据帧存入第二数据缓存单元等待使用,反之则丢弃该数据帧。
进一步地,所述第一数据缓存单元和第二数据缓存单元均包括若干数据帧寄存器。
进一步地,位时序模块分别与发送模块和接收模块相连并为其提供相关时序。
进一步地,发送模块与接收模块分别与CAN总线相连并分别向总线发送数据与从总线接收数据。
进一步地,该控制器的位时序模块、发送模块和接收模块均采用硬件描述语言Verilog HDL并在FPGA上实现。
一种CAN总线控制器的控制方法,该方法包括发送模块的发送流程和接收模块的接收流程;
所述发送模块的发送流程包括以下步骤:
(1)当有数据需要发送时,组建数据帧单元按照CAN总线标准组建相应的CAN数据帧,包括依次排列的帧起始、仲裁场、控制场、数据场、CRC场、应答场以及帧结尾等部分;
(2)组建完毕的数据帧存入第一数据缓存单元中等待发送;第一数据缓存单元包括若干数据帧寄存器;
(3)当第一总线监听单元检测到总线空闲时,读取数据帧寄存器中的数据帧准备进行发送;
(4)将待发送的数据帧通过位编码单元进行位编码处理,然后按照位时序模块提供的发送点逐位发送;
(5)在数据帧的仲裁场发送完毕前,边发送边通过第一总线监听单元对总线进行监听,并通过总线仲裁单元进行冲突仲裁;
(6)若冲突仲裁失败,则停止发送,反之则继续发送数据帧直到数据帧发送完毕。
所述接收模块的接收流程包括以下步骤:
(1)当第二总线监听单元检测到总线上有数据传输时,开启数据读取单元;数据读取单元按照位时序模块提供的采样点逐位接收数据并通过位解码单元对其进行位解码,解码后存入第二数据缓存单元;
(2)数据读取单元接收完毕数据帧的CRC场后,通过CRC校验单元进行CRC校验,如果校验成功则执行步骤(3),反之则丢弃接收到的数据;
(3)通过仲裁场校验单元校验仲裁场中的标识符是否与接收方相符,如果相符则将数据帧存入第二数据缓存单元等待使用,反之则丢弃该数据帧。
本发明的有益效果是:本发明提供的CAN总线控制器,通过发送模块、接收模块以及位时序模块的相互配合,能够满足CAN总线的基本功能。本发明的发送模块及接收模块包含高速的数据寄存器,使控制器能够在大规模数据流的情况下正常工作。
附图说明
图1是本发明整体设计框架图;
图2是本发明发送模块设计框架图;
图3是本发明接收模块设计框架图;
图4是本发明的一个实施例发送数据帧的仿真结果图;
图5是本发明的一个实施例接收数据帧的仿真结果图。
具体实施方式
下面结合附图和具体实施例详细描述本发明,本发明的目的和效果将变得更加明显。
如图1所示,本发明首先将CAN总线控制器划分为位时序模块、发送模块以及接收模块这三大模块,然后采用硬件描述语言Verilog HDL逐一实现各模块的功能,最后将所提出的CAN总线控制器在FPGA上实现。
本发明所述的位时序模块将位时间划分为多个时间片段,规定发送点、同步段、传播时间段、相位缓冲段和采样点。
本发明所述的发送模块包含组建数据帧单元、第一数据缓存单元、第一总线监听单元、位编码单元以及总线仲裁单元,主要工作流程如图2所示,包括以下步骤:
(1)当有数据需要发送时,组建数据帧单元按照CAN总线标准组建相应的CAN数据帧,包括依次排列的帧起始、仲裁场、控制场、数据场、CRC场、应答场以及帧结尾等部分;
(2)组建完毕的数据帧存入第一数据缓存单元中等待发送;第一数据缓存单元包括若干数据帧寄存器;
(3)当第一总线监听单元检测到总线空闲时,读取数据帧寄存器中的数据帧准备进行发送;
(4)将待发送的数据帧通过位编码单元进行位编码处理,然后按照位时序模块提供的发送点逐位发送;
(5)在数据帧的仲裁场发送完毕前,边发送边通过第一总线监听单元对总线进行监听,并通过总线仲裁单元进行冲突仲裁;
(6)若冲突仲裁失败,则停止发送,反之则继续发送数据帧直到数据帧发送完毕。
本发明所述的接收模块包括第二总线监听单元、数据读取单元、位解码单元、CRC校验单元、仲裁场校验单元以及第二数据缓存单元,主要工作流程如图3所示,包括以下步骤:
(1)当第二总线监听单元检测到总线上有数据传输时,开启数据读取单元;数据读取单元按照位时序模块提供的采样点逐位接收数据并通过位解码单元对其进行位解码,解码后存入第二数据缓存单元;
(2)数据读取单元接收完毕数据帧的CRC场后,通过CRC校验单元进行CRC校验,如果校验成功则执行步骤(3),反之则丢弃接收到的数据;
(3)通过仲裁场校验单元校验仲裁场中的标识符是否与接收方相符,如果相符则将数据帧存入第二数据缓存单元等待使用,反之则丢弃该数据帧。
本发明所述的CAN总线控制器在位时序模块、发送模块以及接收模块的相互协作下能够实现CAN总线的通信。
实施例
图4为节点A、B同时发送数据帧仿真图。两个节点同时发送数据帧涉及到总线仲裁、暂停发送以及重新发送等步骤。具体如下:
1.节点A状态can_A_state与节点B状态can_B_state在总线空闲之前均置1,说明此时各节点均有未发送的数据帧等待发送。
2.检测到总线空闲,节点A发送状态sending_A与节点B发送状态sending_B同时置1,即同时开始发送数据帧。
3.节点B检测到节点B发送的数据can_node_B与CAN总线上的数据can_bus值不符,判定仲裁失败,仲裁失败标志arbitration_failed置1。同时sending_B置0,而节点A继续发送。
4.节点A的数据帧发送完毕,can_A_state与can_node_A同时置0。随后再次检测到总线空闲,节点B开始重新发送其数据帧。
5.节点B的数据帧发送完毕。且can_bus的值与发送数据一致,发送成功。符合实验预期。
通过上述实验仿真,在位时序模块的配合下,发送模块各功能正常,符合该设计预期效果。
图5为节点接收数据仿真图,具体如下:
1.接收节点在原本空闲的CAN总线上检测到下降沿,启动接收模块。首先将硬同步标志hard_syn_flag置1进行硬同步,同步完成后置0。随后接收数据帧标志rx_frame_flag置0,开始接收数据。
2.在位时序中采样点标志sample_point_flag到来时进行采样,每一个位时间进行8次采样决定最终采样值。
3.接收经过位编码的数据时,对其进行检测。检测到5个相同值时,位编码标志decoding_bit_flag置1,表示下一位为多余位不进行保存。下一个位时间过后,该值置0。同时,通过位编码计数器decoding_bit_cnt对忽略的位数进行计数。
4.当接收的解码后的数据位数达到17时,即已接收完控制场的数据长度及之前的场。此时对数据长度进行读取,通过数据长度判断该数据帧还未接收的位数以及何时接收完数据场。
5.已接收完数据场后,对已接收到的所有数据进行CRC校验,计算新的CRC序列。同时继续接收CRC场。将新的CRC序列check_crc与接收到的CRC序列rx_crc进行对比,两者一致,继续接收数据。
6.CRC校验正确后,在应答场的应答间隙由接收节点向总线发送一位显性位,由于显性位会覆盖隐性位,总线将体现为显性。发送节点检测到应答间隙总线为显性位,与自身发送的隐性位不对应,即确认数据帧发送成功。
7.数据帧完全接收完毕,数据帧接收完毕标志rx_frame_flag置1,停止对总线进行采样。
8.将接收到的数据帧的标识符与节点需要的标识符进行匹配,匹配成功对该帧进行保存。
通过仿真验证,接收模块能及时并准确地接收数据帧,符合设计预期效果。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
Claims (6)
1.一种CAN总线控制器,其特征在于,包括位时序模块、发送模块和接收模块;
所述位时序模块将位时间划分为多个时间片段,规定发送点、同步段、传播时间段、相位缓冲段和采样点。
所述发送模块包括组建数据帧单元、第一数据缓存单元、第一总线监听单元、位编码单元以及总线仲裁单元;
所述组建数据帧单元用于将需要发送的数据按照CAN总线标准组建相应的CAN数据帧,包括依次排列的帧起始、仲裁场、控制场、数据场、CRC场、应答场以及帧结尾等部分;
所述第一数据缓存单元用于存储组建数据帧单元组建完毕的数据帧;
所述第一总线监听单元检测到总线空闲时,读取第一数据缓存单元中的数据帧准备进行发送,并在数据帧的仲裁场发送完毕前,对总线进行监听;
所述位编码单元用于将待发送的数据帧通进行位编码处理,然后按照位时序模块提供的发送点逐位发送;
所述总线仲裁单元在数据帧的仲裁场发送完毕前,进行冲突仲裁,若冲突仲裁失败,则停止发送,反之则继续发送数据帧直到数据帧发送完毕。
所述接收模块包括第二总线监听单元、数据读取单元、位解码单元、CRC校验单元、仲裁场校验单元以及第二数据缓存单元;
所述第二总线监听单元检测到总线上有数据传输时,开启数据读取单元;
所述数据读取单元按照位时序模块提供的采样点逐位接收数据;
所述位解码单元对数据读取单元接收的数据进行位解码;
所述第二数据缓存单元存储位解码单元解码后的数据;
所述CRC校验单元在接收完毕数据帧的CRC场后进行CRC校验,如果校验成功则开启仲裁场校验单元,反之则丢弃接收到的数据;
所述仲裁场校验单元校验仲裁场中的标识符是否与接收方相符,如果相符则将数据帧存入第二数据缓存单元等待使用,反之则丢弃该数据帧。
2.根据权利要求1所述的一种CAN总线控制器,其特征在于,所述第一数据缓存单元和第二数据缓存单元均包括若干数据帧寄存器。
3.根据权利要求1所述的一种CAN总线控制器,其特征在于,位时序模块分别与发送模块和接收模块相连并为其提供相关时序。
4.根据权利要求1所述的一种CAN总线控制器,其特征在于,发送模块与接收模块分别与CAN总线相连并分别向总线发送数据与从总线接收数据。
5.根据权利要求1所述的一种CAN总线控制器,其特征在于,该控制器的位时序模块、发送模块和接收模块均采用硬件描述语言Verilog HDL并在FPGA上实现。
6.一种权利要求1-5任一项所述CAN总线控制器的控制方法,其特征在于,该方法包括发送模块的发送流程和接收模块的接收流程;
所述发送模块的发送流程包括以下步骤:
(1)当有数据需要发送时,组建数据帧单元按照CAN总线标准组建相应的CAN数据帧,包括依次排列的帧起始、仲裁场、控制场、数据场、CRC场、应答场以及帧结尾等部分;
(2)组建完毕的数据帧存入第一数据缓存单元中等待发送;第一数据缓存单元包括若干数据帧寄存器;
(3)当第一总线监听单元检测到总线空闲时,读取数据帧寄存器中的数据帧准备进行发送;
(4)将待发送的数据帧通过位编码单元进行位编码处理,然后按照位时序模块提供的发送点逐位发送;
(5)在数据帧的仲裁场发送完毕前,边发送边通过第一总线监听单元对总线进行监听,并通过总线仲裁单元进行冲突仲裁;
(6)若冲突仲裁失败,则停止发送,反之则继续发送数据帧直到数据帧发送完毕。
所述接收模块的接收流程包括以下步骤:
(1)当第二总线监听单元检测到总线上有数据传输时,开启数据读取单元;数据读取单元按照位时序模块提供的采样点逐位接收数据并通过位解码单元对其进行位解码,解码后存入第二数据缓存单元;
(2)数据读取单元接收完毕数据帧的CRC场后,通过CRC校验单元进行CRC校验,如果校验成功则执行步骤(3),反之则丢弃接收到的数据;
(3)通过仲裁场校验单元校验仲裁场中的标识符是否与接收方相符,如果相符则将数据帧存入第二数据缓存单元等待使用,反之则丢弃该数据帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910250783.1A CN109976216A (zh) | 2019-03-29 | 2019-03-29 | 一种can总线控制器及控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910250783.1A CN109976216A (zh) | 2019-03-29 | 2019-03-29 | 一种can总线控制器及控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109976216A true CN109976216A (zh) | 2019-07-05 |
Family
ID=67081784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910250783.1A Pending CN109976216A (zh) | 2019-03-29 | 2019-03-29 | 一种can总线控制器及控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109976216A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111817820A (zh) * | 2020-05-28 | 2020-10-23 | 珠海格力电器股份有限公司 | 设备的编码方法及装置、基于二总线的编码系统 |
CN112765072A (zh) * | 2021-01-28 | 2021-05-07 | 北京方天长久科技股份有限公司 | 一种串行互联总线数据帧格式及传输方法 |
CN113225151A (zh) * | 2021-04-19 | 2021-08-06 | 杭州康吉森自动化科技有限公司 | 一种基于can总线的时钟同步系统、方法和装置 |
CN115065575A (zh) * | 2022-07-26 | 2022-09-16 | 广州智慧城市发展研究院 | 基于can总线控制器的数据传输系统及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106094801A (zh) * | 2016-07-12 | 2016-11-09 | 四川大学 | 一种新型can fd控制器 |
CN106789517A (zh) * | 2017-01-08 | 2017-05-31 | 易晓云 | Can总线数据链路及其逐位无损仲裁方法 |
CN108833377A (zh) * | 2018-05-30 | 2018-11-16 | 武汉高仕达电气有限公司 | 一种改进的can协议数据帧结构及数据处理方法 |
-
2019
- 2019-03-29 CN CN201910250783.1A patent/CN109976216A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106094801A (zh) * | 2016-07-12 | 2016-11-09 | 四川大学 | 一种新型can fd控制器 |
CN106789517A (zh) * | 2017-01-08 | 2017-05-31 | 易晓云 | Can总线数据链路及其逐位无损仲裁方法 |
CN108833377A (zh) * | 2018-05-30 | 2018-11-16 | 武汉高仕达电气有限公司 | 一种改进的can协议数据帧结构及数据处理方法 |
Non-Patent Citations (1)
Title |
---|
邹银超: "支持多现场总线集成的CAN软核设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111817820A (zh) * | 2020-05-28 | 2020-10-23 | 珠海格力电器股份有限公司 | 设备的编码方法及装置、基于二总线的编码系统 |
CN112765072A (zh) * | 2021-01-28 | 2021-05-07 | 北京方天长久科技股份有限公司 | 一种串行互联总线数据帧格式及传输方法 |
CN113225151A (zh) * | 2021-04-19 | 2021-08-06 | 杭州康吉森自动化科技有限公司 | 一种基于can总线的时钟同步系统、方法和装置 |
CN113225151B (zh) * | 2021-04-19 | 2023-08-25 | 杭州康吉森自动化科技有限公司 | 一种基于can总线的时钟同步系统、方法和装置 |
CN115065575A (zh) * | 2022-07-26 | 2022-09-16 | 广州智慧城市发展研究院 | 基于can总线控制器的数据传输系统及电子设备 |
CN115065575B (zh) * | 2022-07-26 | 2022-11-29 | 广州智慧城市发展研究院 | 基于can总线控制器的数据传输系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976216A (zh) | 一种can总线控制器及控制方法 | |
US20080075019A1 (en) | Data Mapping and Sorting Method in Network Communication | |
CN104954096B (zh) | 一种一主多从的高速同步串行通信数据传输方法 | |
CN104484306B (zh) | 基于差分信号的主从同步串行通讯总线及其实现方法 | |
US20200295874A1 (en) | Check code processing method, electronic device and storage medium | |
CN106021165B (zh) | 一种lin总线解码、触发和分析技术 | |
EP3486780B1 (en) | Instruction processing alignment system | |
CN106850331B (zh) | 一种交通领域的带同步时钟功能的以太网发帧装置 | |
CN109951366A (zh) | 一种Modbus RTU总线控制器及控制方法 | |
CN106301654A (zh) | 一种时间触发以太网的时间信号采样方法 | |
CN105553883A (zh) | 基于fpga的多dsp数据交换装置 | |
CN103107862B (zh) | 逻辑器件及其mdio数据发送方法 | |
WO2016131404A1 (zh) | 基于新型can帧进行通信的方法、装置及系统 | |
CN102096734A (zh) | 一种验证总线乱序传输的方法和装置 | |
CN108701112A (zh) | 一种基于查询方式模拟串口通信的方法和装置 | |
CN107066419B (zh) | 可扩展的自适应n×n通道数据通信系统 | |
CN102790663B (zh) | 一种应用于vlbi硬件相关处理机的全硬件网络接口 | |
CN103490995B (zh) | 报文发送方法和装置 | |
Zhang et al. | Modeling time-triggered ethernet in systemc/tlm for virtual prototyping of cyber-physical systems | |
CN204597989U (zh) | 基于cpci接口的afdx终端测试设备 | |
US20030174655A1 (en) | Apparatus & method for caching counter values in network packet traffic sampling | |
CN106209691A (zh) | 一种具备独立mac源地址的网络端口镜像方法 | |
US10599513B2 (en) | Message synchronization system | |
Rajsbaum et al. | On the average performance of synchronized programs in distributed networks | |
Lie et al. | Design of HDLC controller based on Xilinx FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190705 |
|
RJ01 | Rejection of invention patent application after publication |