论文部分内容阅读
CAN (Controller Area Network)总线是当前自动控制领域中应用较为广泛的一种现场总线。它是一种全数字、多主机的异步串行总线,在OSI七层模型中仅定义了物理层和数据链路层。由于其具有高效的报文滤波机制、错误检测和通信恢复机制、通信距离随波特率可调以及便利的应用层接口等特点,CAN总线目前除了在汽车工业、工业控制、智能化小区等领域中得到广泛的应用外,更是朝着更多的应用领域发展。市面上存在的CAN总线控制器芯片都是标准订制的,接口固定,不易集成到嵌入式系统中。目前FPGA在嵌入式设计领域中占据着越来越重的地位,目前更是提出了软硬双可编程的要求,软核进入FPGA已成为嵌入式发展的需要。因此将功能标准化了的CAN总线控制器设计成软核放入IP库可以很好的满足这个要求。同时接口部分可以进行灵活设计,以满足不同的嵌入式需求。本文对CAN总线控制器进行了前端设计,用VHDL完成了CAN2.0A协议数据链路层的RTL设计。控制器采用自顶向下的设计方法。即先将控制器分解为既相互独立又相互关联的功能模块,再进一步阐述各功能模块的设计思想和设计流程。本设计将控制器分解为三大模块:寄存器控制模块、位时序逻辑模块和位流处理器模块。为提高FPGA功能集成度,控制器没有采用传统的51接口,而是采用Xilinx的8位嵌入式软核PicoBlaze的接口。寄存器模块的设计参考了PHILIPS公司的SJAl000。位时序逻辑主要实现了位定时和同步功能。位流处理器由主体部分、CRC校验子模块、验收滤波器子模块、RXFIFO子模块、通信故障处理子模块构成。每个功能模块都采用边设计边利用Modelsim软件进行功能仿真的方法。最后将通过功能仿真的完整代码编译成位流文件下载到Nexys2开发板的Spartan3E中进行测试,结果表明控制器达到设计要求。FPGA芯片集成了丰富的系统资源,这为将来将更多的定制功能同CAN总线控制器功能结合,融入一块FPGA芯片以构建片上可编程系统奠定基础。