一種空間相機的數(shù)據(jù)通信系統(tǒng)設(shè)計
標(biāo)簽:FPGA CAN總線
本文引用地址:http://butianyuan.cn/article/154329.htm在空間相機數(shù)據(jù)采集應(yīng)用中,為了滿足電路板體積重量以及可擴展性的要求,利用FPGA作為主控芯片,控制相機進行數(shù)據(jù)采集和傳輸。在數(shù)據(jù)通信系統(tǒng)中,F(xiàn)PGA替代了傳統(tǒng)的單片機作為CAN總線的主控制器,并給出了詳細的硬件電路設(shè)計方法。在對CAN協(xié)議控制器SJA1000進行功能及時序分析后,利用硬件語言對其通信流程進行設(shè)計。實踐證明,在嚴(yán)格的時序邏輯下,F(xiàn)PGA能夠控制CAN總線穩(wěn)定正確地對相機數(shù)據(jù)進行收發(fā)。
CAN總線是由ISO定義的串行通信總線,主要用于各種過程檢測及控制。它是一種多主總線,具有高位速率和高抗電磁干擾性,而且能夠檢測出傳輸中產(chǎn)生的任何錯誤。顯著的優(yōu)點使得CAN總線成為國際上應(yīng)用最廣泛的現(xiàn)場總線標(biāo)準(zhǔn)之一 [1]。
由于其優(yōu)良的性能及獨特的設(shè)計,CAN總線已被廣泛地應(yīng)用于各種分布式控制系統(tǒng)中。特別是由于CAN總線具有抗干擾性強、高數(shù)據(jù)傳輸率、低成本等優(yōu)點,在小衛(wèi)星和微小衛(wèi)星中得到了越來越廣泛的應(yīng)用。在衛(wèi)星有效載荷數(shù)據(jù)控制傳輸中也會應(yīng)用,如空間相機數(shù)據(jù)通信方面。
一般來說,每個CAN模塊能夠被分成三個不同的功能塊,其結(jié)構(gòu)如圖1所示[2]。CAN總線收發(fā)器提供CAN協(xié)議控制器與物理總線之間的接口,控制從CAN 控制器到總線物理層或相反的邏輯電平信號。它的性能決定了總線接口、總線終端、總線長度和節(jié)點數(shù),是影響整個總線網(wǎng)絡(luò)通信性能的關(guān)鍵因素之一。CAN控制器執(zhí)行在CAN 規(guī)范里規(guī)定的CAN協(xié)議,它通常用于報文緩沖和驗收濾波,對外具有與主控制器和總線收發(fā)器的接口。FGPA主控制器負(fù)責(zé)執(zhí)行應(yīng)用的功能,例如對空間CCD相機控制命令的發(fā)送、讀取圖像數(shù)據(jù)等。它通過對CAN控制器的編程控制CAN總線的工作方式、工作狀態(tài)以及數(shù)據(jù)的發(fā)送和接收。
在本項目的特殊環(huán)境要求下,使用FPGA作為主控芯片,控制空間相機進行數(shù)據(jù)采集與傳輸,并通過CAN總線進行數(shù)據(jù)收發(fā)。較之傳統(tǒng)設(shè)計使用的單片機,F(xiàn)PGA能夠在速度和體積上有更好的適應(yīng)性。FPGA一方面減少了電路板的復(fù)雜程度,縮短了實現(xiàn)周期,另一方面是FPGA具有豐富的資源、超高的性能和靈活的可編程性[3],提高了整個設(shè)備的可靠性,大大增強了電路板設(shè)計的靈活性和可擴展性。
2 通信系統(tǒng)接口設(shè)計
電路設(shè)計如圖2所示。SJA1000的AD0~AD7地址數(shù)據(jù)復(fù)用端口、ALE地址鎖存端口、讀使能信號RD、寫使能信號WR、片選CS端口, 均通過雙向總線收發(fā)器74ALVC164245與FPGA的I/O口相連[4]。這是因為FPGA的3.3 V的LVTTL電平不支持SJA1000的5 V TTL電平,所以利用雙向總線收發(fā)器實現(xiàn)兩器件信號的電平轉(zhuǎn)換。SJA1000的中斷輸出信號INT連入FPGA,這樣CAN通信就可以采用中斷或查詢兩種方式。RST端口的電路實現(xiàn)SJA1000的上電自動復(fù)位功能。MODE模式選擇端接+5 V,設(shè)置SJA1000控制器為Intel模式。SJA1000的時鐘晶振采用16 MHz,頻率調(diào)整電容取15 pF。設(shè)計中CAN總線的終端電阻取120Ω[5]。CAN 驅(qū)動器PCA82C250的RS腳為工作模式選擇位,接地工作于高速模式,接高工作于待機模式。系統(tǒng)通過電阻R將芯片設(shè)定于斜率控制模式, 電阻值為47 kΩ,這時CAN總線應(yīng)工作于低速模式,可提高CAN總線抵抗射頻干擾的能力。在這種情況下,可直接使用非屏蔽雙絞線作為總線[6]。
在接口設(shè)計中,有幾點需要注意:(1)SJA1000的INT端口是開漏輸出,所以在使用時應(yīng)該加上拉電阻,不然電平一直為低,無法實現(xiàn)中斷方式。(2)電平信號AD0~AD7必須按順序連接在總線收發(fā)器74ALVC164245的一個8位端口上,不可分開。
3 通信系統(tǒng)軟件設(shè)計
3.1 系統(tǒng)流程設(shè)計
CAN總線通信模塊的控制主要包括三大部分:CAN總線節(jié)點初始化、報文發(fā)送和報文接收。主流程如圖3所示。
CAN節(jié)點主程序主要包括:作為主控制器的FPGA的初始化、CAN控制器初始化、寄存器狀態(tài)查詢、接收發(fā)送報文以及數(shù)據(jù)處理。在此設(shè)計中,由于通信模塊對接收數(shù)據(jù)的實時性要求并不是很高,因此CAN總線的接收和發(fā)送采用查詢方式[7]。在整個流程實現(xiàn)中,主要是對CAN控制器SJA1000中的寄存器進行讀寫操作。
3.2 讀寫流程控制
SJA1000 的數(shù)據(jù)和地址信號為時分復(fù)用,而FPGA 中不存在地址的概念,因此在讀寫寄存器時,要把SJA1000 中的寄存器地址當(dāng)作數(shù)據(jù)寫入。所以在系統(tǒng)的頂層模塊設(shè)計中,將設(shè)計一個讀寫子模塊來專門產(chǎn)生對CAN寄存器進行讀寫控制的時序,而核心主模塊則只對通信流程進行描述。讀寫時序的狀態(tài)機流程圖如圖4所示。在IDLE狀態(tài),對接口信號進行初始化,其中地址鎖存信號ALE為低電平、寫信號WR 為高電平、讀信號RD為高電平、片選信號CS 為高電平、地址數(shù)據(jù)復(fù)用總線ADDR為高阻態(tài)、writeover和readover為低電平(writeover為高電平表示一個寫時序的完成, readover為高電平表示一個讀時序的完成) 。另外對于核心主模塊的控制信號start和iswr,當(dāng)start為低電平時繼續(xù)在IDLE狀態(tài)循環(huán),反之則進入寫地址狀態(tài)Address0、Address1。然后根據(jù)iswr信號是高電平或低電平而進入寫數(shù)據(jù)進程或讀數(shù)據(jù)進程。讀寫數(shù)據(jù)過程均由兩個狀態(tài)完成,分別是RD0、RD1、WR0、WR1。當(dāng)一個完整的讀或?qū)懖僮魍瓿蓵r,進入IDLE狀態(tài)。每一個狀態(tài)描述了ALE、WR、RD、CS、DIR1、ADDR的變化(OE0、OE1、DIR0分別為定值0、0、1,因此未列出來)。這里為了便于描述,設(shè)1為高電平,0為低電平,對以上幾個信號在各個狀態(tài)的值進行說明,將信號組{ALE、WR、RD、CS、DIR1}設(shè)為CtrS。
FPGA的時鐘為5 MHz,用以上狀態(tài)機來實現(xiàn)SJA1000 寄存器的讀寫,在設(shè)計中每個狀態(tài)占用的時間是一個周期,即200 ns。按照SJA1000 接口讀寫時序參數(shù)可知[8],片選信號必須在讀寫信號有效之前變?yōu)橛行?,并且讀信號有效時存儲數(shù)據(jù)總線上的數(shù)據(jù)。如此,設(shè)計的時序符合時序參數(shù)要求。其他的時序設(shè)計都要嚴(yán)格按照時序參數(shù)表來設(shè)計。
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
上拉電阻相關(guān)文章:上拉電阻原理 雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理
評論