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