基于CAN核的四冗余通信板设计与仿真
时间:03-18
来源:互联网
点击:
3 软件设计
CAN通信板的正常工作离不开强大的软件支持,本系统中控制部分的核心采用PC/104嵌入式计算机系统。PC/104嵌入式计算机拥有可以和PC机媲美的强大功能,CAN通信板软件部分的开发和设计就是在PC/104计算机上完成的,采用C语言进行设计。C语言具有通用性、高效性和实时性,能满足仪器的实时性要求。在设计过程中采用了模块化、结构化的设计方法,把软件按功能分成若干个模块,这些模块既有一定的独立性,又有一定联系。每个模块的编制要求相对独立,以便对各模块进行检验调试和修改、维护。这种框架模式的程序可以保证良好的通用性、可维护性、可扩展性、移植性、互换性和独立性。
由于CAN核的内部结构和SJA1000一样,因此,开发时就像面对SJA1000一样,编写起来简单方便。本设计采用中断处理的方式来进行任务的处理。在中断到来后进行相应的处理就可以了。
通信板初始化流程如图3所示。
数据发送流程如图4所示,数据接收流程如图5所示。
4 系统的仿真
采用Modelsim进行仿真。
系统的测试平台(TestBench),例化了模块can4core和1个CAN核cantop,并仿真它们之间的通信。
本仿真完全按照 CAN核正常工作过程进行,仿真过程如下:
①初始化设置。首先进行时间寄存器的设置和数据格式的设置。通过平台对本系统设计模块和CAN 核进行设置。
②同步测试。包括硬同步测试和重新同步测试。一个硬同步后,内部的位时间以同步段重新开始。硬同步使引起硬同步的跳变沿位于重新开始的位时间同步段之内。
③空FIFO测试(test_empty_fifo_ext)。该测试通过接收2个数据帧,然后读取接收缓冲器,接着清空缓冲器,再读取缓冲器,反复清空和读取,看FIFO中的数据是否被完全清除。
④满FIFO测试 (test_full_fifo_ext)。首先清空寄存器,然后通过不断地接收数据帧来填满FIFO并读取信息,检测是否能正常工作。
⑤ 总线空闲测试(bus-off-test)。通过不断发送数据来使总线处于忙状态,致使总线产生错误,测试中断寄存器是否能检测到错误,以及错误清除后 CAN核能否继续正常工作。
⑥Basic CAN模式发送帧检测。测试CAN核能否正常发送帧。
⑦寄存器测试。通过不停地读写寄存器,检测CAN核寄存器是否正常工作。
⑧总线上数据的传输。仿真过程中重要的一点就是总线上是否能够正常传输数据信息。
经过仿真可以看到该CAN通信板突破了SJA1000在速度方面的限制,传输速度可达2 MHz,有效传输速率得到了大幅提高,工作性能良好。
结语
本文设计的CAN总线通信板完成了PC/104与CAN总线的通信转换,改变了传统的应用CAN控制器加外部控制器的设计方法,在设计 CAN核的基础上,将通信板中所有数字信号处理部分都放在FPGA内部来实现,使通信速度得到很大提高。无论是在传输速率还是在抗干扰、抗震性等方面,CAN核应用的综合性能都得到了很大的提高。
作者:徐军涛,许化龙 (第二炮兵工程学院,西安 710025)
来源:《单片机与嵌入式系统应用》2010年01期
CAN通信板的正常工作离不开强大的软件支持,本系统中控制部分的核心采用PC/104嵌入式计算机系统。PC/104嵌入式计算机拥有可以和PC机媲美的强大功能,CAN通信板软件部分的开发和设计就是在PC/104计算机上完成的,采用C语言进行设计。C语言具有通用性、高效性和实时性,能满足仪器的实时性要求。在设计过程中采用了模块化、结构化的设计方法,把软件按功能分成若干个模块,这些模块既有一定的独立性,又有一定联系。每个模块的编制要求相对独立,以便对各模块进行检验调试和修改、维护。这种框架模式的程序可以保证良好的通用性、可维护性、可扩展性、移植性、互换性和独立性。
由于CAN核的内部结构和SJA1000一样,因此,开发时就像面对SJA1000一样,编写起来简单方便。本设计采用中断处理的方式来进行任务的处理。在中断到来后进行相应的处理就可以了。
通信板初始化流程如图3所示。
数据发送流程如图4所示,数据接收流程如图5所示。
4 系统的仿真
采用Modelsim进行仿真。
系统的测试平台(TestBench),例化了模块can4core和1个CAN核cantop,并仿真它们之间的通信。
本仿真完全按照 CAN核正常工作过程进行,仿真过程如下:
①初始化设置。首先进行时间寄存器的设置和数据格式的设置。通过平台对本系统设计模块和CAN 核进行设置。
②同步测试。包括硬同步测试和重新同步测试。一个硬同步后,内部的位时间以同步段重新开始。硬同步使引起硬同步的跳变沿位于重新开始的位时间同步段之内。
③空FIFO测试(test_empty_fifo_ext)。该测试通过接收2个数据帧,然后读取接收缓冲器,接着清空缓冲器,再读取缓冲器,反复清空和读取,看FIFO中的数据是否被完全清除。
④满FIFO测试 (test_full_fifo_ext)。首先清空寄存器,然后通过不断地接收数据帧来填满FIFO并读取信息,检测是否能正常工作。
⑤ 总线空闲测试(bus-off-test)。通过不断发送数据来使总线处于忙状态,致使总线产生错误,测试中断寄存器是否能检测到错误,以及错误清除后 CAN核能否继续正常工作。
⑥Basic CAN模式发送帧检测。测试CAN核能否正常发送帧。
⑦寄存器测试。通过不停地读写寄存器,检测CAN核寄存器是否正常工作。
⑧总线上数据的传输。仿真过程中重要的一点就是总线上是否能够正常传输数据信息。
经过仿真可以看到该CAN通信板突破了SJA1000在速度方面的限制,传输速度可达2 MHz,有效传输速率得到了大幅提高,工作性能良好。
结语
本文设计的CAN总线通信板完成了PC/104与CAN总线的通信转换,改变了传统的应用CAN控制器加外部控制器的设计方法,在设计 CAN核的基础上,将通信板中所有数字信号处理部分都放在FPGA内部来实现,使通信速度得到很大提高。无论是在传输速率还是在抗干扰、抗震性等方面,CAN核应用的综合性能都得到了很大的提高。
作者:徐军涛,许化龙 (第二炮兵工程学院,西安 710025)
来源:《单片机与嵌入式系统应用》2010年01期
电子 EDA FPGA 嵌入式 总线 CAN总线 Altera Quartus VHDL 电路 收发器 电压 电流 二极管 CMOS C语言 仿真 单片机 相关文章:
- 变革电信网网络安全框架 (01-03)
- 浅谈IPv6技术的若干问题(01-09)
- LG电子低成本CDMA手机的设计原则剖析 (01-12)
- 专家教你做个病毒高手(04-30)
- 数据库归档要考虑的四大问题(05-26)
- 5个步骤成功加密电子邮件(07-18)