基于FPGA的CAN總線控制器設計
摘要:使用Verilog HDL硬件描述語言完成了對CAN總線控制器的設計,能夠實現符合CAN2.0A協議的所有功能。本總線控制器的外部接口采用Altera公司開發的Avalon總線接口,增強了控制器的應用靈活性。本設計使用Modelsim軟件完成了功能仿真和時序仿真。
關鍵詞: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所示。
評論