基于FPGA的CAN总线控制器设计
0 引言
CAN(控制器局域网)是一种先进的串行通信协议,由德国BOSCH公司开发,并最终成为国际标准(ISO11898),是国际上使用最广泛的 现场总线之一。目前世界上已有20多家CAN总线控制器生产商,110多种CAN总线控制器芯片和集成CAN总线控制器的微处理器芯片。
由于定制的CAN总线控制器芯片不能嵌入到SoC(片上系统)中,而采用分立元器件实现CAN总线接口,使得系统中器件数量增加,同时也增大了系统面积,本文所介绍的CAN总线控制器正是由Verilog HDL语言描述,既可以作为一个独立的设备,也可以作为一个模块集成到FPGA中。
虽然目前国内外已有很多人研究或设计了CAN总线控制器IP核,但其中大多数只是对控制器中的某一个模块进行了研究和设计,并没有实现一个完整 的CAN总线控制器的功能,例如文献只对CAN控制器的状态机进行研究,文献只对CAN控制器的位定时模块进行研究。而完整实现了CAN总线控制器功能的 作品中,最高工作频率又不是很理想,例如Mentor Graphics公司提供的MCAN2D1 CAN2.0 Network Controller的最高工作频率只有32.46MHz,文献中介绍的CAN总线控制器的最高工作频率也只有50MHz,这些IP核显然不能适应高速环 境的要求,同时文献中介绍的控制器对外接口中出现了寄存器使能位等接口,这种接口不符合Avalon总线规范,不利于集成到FPGA芯片中,其通用性肯定 较差,所以研究并设计出一款高速且通用性强的CAN总线控制器的IP核仍然是有其重要意义的。
1 系统实现
1.1 系统框图
本设计中将整个CAN控制器系统分为了11个模块,分别是Avalon总线接口模块、寄存器组模块、接收缓冲器模块、发送缓冲器模块、接收滤波模块、CRC校验模块、状态机模块、标识符填充模块、错误计数器模块、位填充模块、位定时模块。其结构框图如图1所示。
1.2 主要模块介绍
1.2.1 寄存器组模块
本模块由位宽为8bit,深度为256的寄存器组实现其功能,其中已经使用的寄存器为23个,其余的供以后扩展。本设计采用将各个独立的控制及状态寄存器集成在一起的设计思想,任何对控制器的初始化以及数据的接收和发送都是从写寄存器组开始的。
1.2.2 CRC校验模块
CRC(循环冗余校验码)是一种能力非常强的检错、纠错码,常用于串行传送的辅助存储器与主机的数据通信和计算机网络中。它的基本原理是:在k 位信息码后再拼接r位的校验码,整个编码长度为n位,因此,这种编码又叫(n,k)码。对于一个给定的(n,k)码,可以证明存在一个最高次幂位n- k=r的多项式g(x),根据g(x)可以生成七位信息的校验码,而g(x)叫做这个CRC码的生成多项式。
相关文章
- 2024-06-24最小区域评定的斜率判别法模型及其实现
- 2024-04-11流量计量中湿度影响的分析
- 2024-11-08超声一间动电药物渗透疗法及治疗仪器
- 2024-04-02浦煤公司出厂煤气流量计量装置改造的研究
- 2023-02-07手持离心式转速表不确定度分析与表示
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。