基于FPGA的CAN總線控制器設計
2 系統驗證
整個系統的功能仿真和時序仿真是借助Modelsim軟件完成的。圖4所示是對控制器發送數據的驗證,測試用的發送數據為隨意選擇的:00101001,仲裁場和控制場也是任選的,分別為:110100101110、110001,設置好寄存器組后,控制器計算出對應的CRC碼為:110111001111 011,之后控制器將數據按CAN協議的幀格式打包逐位發送出去。本文引用地址:http://www.104case.com/article/191153.htm
控制器最初處于總線脫離模式,復位結束后進入總線啟動模式,當控制器檢測到總線上的1次連續11個隱性位時,進入總線空閑模式,接著當控制器檢測到總線出現第一個顯性位時,進入模式選擇模式,在此模式下,控制器進行的操作就是總線仲裁,確定本節點是否獲得總線控制權,由于本測試采用的是控制器自測模式,即輸出線與輸入線連在一起,所以仲裁時間為12個位時間,仲裁成功后,控制器會進入發送模式,若無錯誤產生,數據發送完成后控制器進入間歇模式,最后進入總線空閑模式。
經過一系列的測試驗證后,表明本CAN總線控制器能夠發送或接收所有符合CAN2.0A協議的報文幀。
3 結束語
本設計實現了所有符合CAN2.0A協議的CAN總線控制器功能,最高工作頻率為139.43MHz,這也達到了最初的設計目的。控制器的時序分析如圖5所示。
本文作者創新點為:首先控制器的外圍接口采用Avalon總線接口,這使得本設計的通用性更強:其次是本設計的最高工作頻率達到了139.43MHz,能夠適應高速通信的要求。
評論