基于FPGA的飛行模擬器通信接口設(shè)計(jì)是什么樣的?
2.2 數(shù)據(jù)發(fā)送邏輯
數(shù)據(jù)發(fā)送邏輯需要FPGA通過模擬總線的方法對(duì)SJA1000進(jìn)行控制,SJA1000的發(fā)送緩沖區(qū)的寄存器共有11個(gè)字節(jié),其中前3個(gè)字節(jié)分別是幀信息字節(jié)和兩個(gè)標(biāo)識(shí)碼,后8個(gè)字節(jié)是數(shù)據(jù)。發(fā)送時(shí),用戶需要將待發(fā)送的數(shù)據(jù)按特定的格式組合成一幀報(bào)文,送入SJA1000的發(fā)送緩沖區(qū)中,然后啟動(dòng) SJA1000發(fā)送即可。需要注意的是,在向SJA1000發(fā)送緩存區(qū)送報(bào)文之前,必須先判斷發(fā)送緩沖區(qū)是否鎖定,如果鎖定則等待;判斷上次發(fā)送是否完成,如未完成則需等待發(fā)送完成。總線控制器寫周期的時(shí)序圖如圖2所示。
2.3 數(shù)據(jù)接收邏輯
與數(shù)據(jù)發(fā)送邏輯類似,從接收緩沖區(qū)中讀取一條報(bào)文也需要連續(xù)讀取11個(gè)字節(jié),數(shù)據(jù)接收邏輯除了正常的報(bào)文數(shù)據(jù)接收,還要實(shí)現(xiàn)其他情況的處理。對(duì)接收緩沖區(qū)的數(shù)據(jù)讀取完畢后要釋放CAN接收緩沖區(qū)。圖3所示為總線控制器讀周期的時(shí)序圖。
在FPGA程序編寫時(shí),采用狀態(tài)機(jī)完成邏輯的設(shè)計(jì),分別包括初始化狀態(tài)、空閑狀態(tài)、查詢狀態(tài)、數(shù)據(jù)接收狀態(tài)、數(shù)據(jù)發(fā)送狀態(tài)。
3 結(jié)論
在系統(tǒng)設(shè)計(jì)過程中,采用ALTERA公司的EP1C6型FPGA進(jìn)行設(shè)計(jì),在Quartus II環(huán)境中利用Verilog HDL編程產(chǎn)生SJA1000的片選信號(hào)、地址鎖存信號(hào)以及讀寫信號(hào)等,這些信號(hào)共同驅(qū)動(dòng)SJA1000完成數(shù)據(jù)的發(fā)送和接收。在采用FPGA實(shí)現(xiàn)對(duì) SJA1000的邏輯控制過程中,采用Quartus II中的SignalTap II Logic Analyzer工具對(duì)FPGA各接口信號(hào)進(jìn)行了測(cè)量,經(jīng)檢查各種邏輯均符合SJA1000的接口時(shí)序要求。
基于FPGA的飛行模擬器通信接口設(shè)計(jì)主要由Verilog語言進(jìn)行描述,易于修改和移植,同時(shí)由于FPGA的I/O豐富,還可以將模擬器中一些常用的開關(guān)量連接到FPGA上,這樣就可以將多種功能集成在一個(gè)FPGA上,相較于采用單片機(jī)控制SJA1000實(shí)現(xiàn)CAN總線通信,本設(shè)計(jì)方案可擴(kuò)展性好,穩(wěn)定性高,能降低成本、系統(tǒng)體積及功耗,在飛行模擬器領(lǐng)域中具有廣泛的應(yīng)用前景。
評(píng)論