基于Verilog HDL語(yǔ)言的CAN總線(xiàn)控制器設計及驗證
接著(zhù)使用ModelSim軟件對所設計的各個(gè)模塊和整個(gè)CAN總線(xiàn)控制器進(jìn)行了功能仿真,仿真結果表明達到了設計目標。
2 測試驗證
本文最后設計了CAN總線(xiàn)控制器的測試程序,其目的是模擬一塊微處理器對CAN總線(xiàn)控制器進(jìn)行讀寫(xiě)操作,從而實(shí)現對CAN總線(xiàn)控制器的寄存器訪(fǎng)問(wèn),完成總線(xiàn)收發(fā)功能。在該測試程序編寫(xiě)中,各個(gè)功能基本上以任務(wù)的形式實(shí)現,進(jìn)行不同的仿真時(shí)只需調用相關(guān)的任務(wù)模塊。圖8為驗證程序的組成框圖。
仿真驗證完成以后將其HDL CAN總線(xiàn)程序下載到FPGA中進(jìn)行測試,目標芯片采用Cyclone系列的EP1C6Q240C8,為了驗證所設計的FPGA CAN總線(xiàn)控制器,還設計了一款基于該FPGA的CAN總線(xiàn)控制器的節點(diǎn)電路,然后利用所設計的節點(diǎn)電路與其他3個(gè)利用SJA1000作為控制器的CAN總線(xiàn)節點(diǎn)進(jìn)行了通信測試。所有的節點(diǎn)使用AT89S52單片機作為節點(diǎn)微處理器,PCA82C250作為收發(fā)器,測試結果表明下載到FPGA中的控制器程序工作正常,實(shí)現了預計的CAN總線(xiàn)通訊功能。測試網(wǎng)絡(luò )示意圖如圖9所示。
測試時(shí),按動(dòng)節點(diǎn)1上的開(kāi)關(guān)并將該狀態(tài)發(fā)送到節點(diǎn)2,在節點(diǎn)2上能顯示對應的狀態(tài),反之也可。同時(shí)也可在節點(diǎn)2通過(guò)鍵盤(pán)輸入某一代碼,而在節點(diǎn)1上的數碼管上顯示相應的結果。該實(shí)驗結果表明下載到FPGA中的控制器程序工作正常。
3 結語(yǔ)
本項目利用Verilog HDL語(yǔ)言設計了一款CAN總線(xiàn)控制器芯片,并使用ModelSire軟件對所設計的CAN總線(xiàn)控制器進(jìn)行了功能仿真;之后為了驗證設計,還編制一個(gè)驗證程序,并將驗證之后的設計配置到了FPGA中;最后用所設計的基于FPGA的CAN總線(xiàn)控制器制作了CAN節點(diǎn),并與其他采用SJA1000為控制器的CAN節點(diǎn)進(jìn)行了通訊測試,實(shí)現了CAN總線(xiàn)良好的工作,驗證了設計的正確性。
評論