一種空間相機的數據通信系統設計
標簽:FPGA CAN總線(xiàn)
本文引用地址:http://dyxdggzs.com/article/154329.htm在空間相機數據采集應用中,為了滿(mǎn)足電路板體積重量以及可擴展性的要求,利用FPGA作為主控芯片,控制相機進(jìn)行數據采集和傳輸。在數據通信系統中,FPGA替代了傳統的單片機作為CAN總線(xiàn)的主控制器,并給出了詳細的硬件電路設計方法。在對CAN協(xié)議控制器SJA1000進(jìn)行功能及時(shí)序分析后,利用硬件語(yǔ)言對其通信流程進(jìn)行設計。實(shí)踐證明,在嚴格的時(shí)序邏輯下,FPGA能夠控制CAN總線(xiàn)穩定正確地對相機數據進(jìn)行收發(fā)。
CAN總線(xiàn)是由ISO定義的串行通信總線(xiàn),主要用于各種過(guò)程檢測及控制。它是一種多主總線(xiàn),具有高位速率和高抗電磁干擾性,而且能夠檢測出傳輸中產(chǎn)生的任何錯誤。顯著(zhù)的優(yōu)點(diǎn)使得CAN總線(xiàn)成為國際上應用最廣泛的現場(chǎng)總線(xiàn)標準之一 [1]。
由于其優(yōu)良的性能及獨特的設計,CAN總線(xiàn)已被廣泛地應用于各種分布式控制系統中。特別是由于CAN總線(xiàn)具有抗干擾性強、高數據傳輸率、低成本等優(yōu)點(diǎn),在小衛星和微小衛星中得到了越來(lái)越廣泛的應用。在衛星有效載荷數據控制傳輸中也會(huì )應用,如空間相機數據通信方面。
一般來(lái)說(shuō),每個(gè)CAN模塊能夠被分成三個(gè)不同的功能塊,其結構如圖1所示[2]。CAN總線(xiàn)收發(fā)器提供CAN協(xié)議控制器與物理總線(xiàn)之間的接口,控制從CAN 控制器到總線(xiàn)物理層或相反的邏輯電平信號。它的性能決定了總線(xiàn)接口、總線(xiàn)終端、總線(xiàn)長(cháng)度和節點(diǎn)數,是影響整個(gè)總線(xiàn)網(wǎng)絡(luò )通信性能的關(guān)鍵因素之一。CAN控制器執行在CAN 規范里規定的CAN協(xié)議,它通常用于報文緩沖和驗收濾波,對外具有與主控制器和總線(xiàn)收發(fā)器的接口。FGPA主控制器負責執行應用的功能,例如對空間CCD相機控制命令的發(fā)送、讀取圖像數據等。它通過(guò)對CAN控制器的編程控制CAN總線(xiàn)的工作方式、工作狀態(tài)以及數據的發(fā)送和接收。

在本項目的特殊環(huán)境要求下,使用FPGA作為主控芯片,控制空間相機進(jìn)行數據采集與傳輸,并通過(guò)CAN總線(xiàn)進(jìn)行數據收發(fā)。較之傳統設計使用的單片機,FPGA能夠在速度和體積上有更好的適應性。FPGA一方面減少了電路板的復雜程度,縮短了實(shí)現周期,另一方面是FPGA具有豐富的資源、超高的性能和靈活的可編程性[3],提高了整個(gè)設備的可靠性,大大增強了電路板設計的靈活性和可擴展性。
2 通信系統接口設計
電路設計如圖2所示。SJA1000的AD0~AD7地址數據復用端口、ALE地址鎖存端口、讀使能信號RD、寫(xiě)使能信號WR、片選CS端口, 均通過(guò)雙向總線(xiàn)收發(fā)器74ALVC164245與FPGA的I/O口相連[4]。這是因為FPGA的3.3 V的LVTTL電平不支持SJA1000的5 V TTL電平,所以利用雙向總線(xiàn)收發(fā)器實(shí)現兩器件信號的電平轉換。SJA1000的中斷輸出信號INT連入FPGA,這樣CAN通信就可以采用中斷或查詢(xún)兩種方式。RST端口的電路實(shí)現SJA1000的上電自動(dòng)復位功能。MODE模式選擇端接+5 V,設置SJA1000控制器為Intel模式。SJA1000的時(shí)鐘晶振采用16 MHz,頻率調整電容取15 pF。設計中CAN總線(xiàn)的終端電阻取120Ω[5]。CAN 驅動(dòng)器PCA82C250的RS腳為工作模式選擇位,接地工作于高速模式,接高工作于待機模式。系統通過(guò)電阻R將芯片設定于斜率控制模式, 電阻值為47 kΩ,這時(shí)CAN總線(xiàn)應工作于低速模式,可提高CAN總線(xiàn)抵抗射頻干擾的能力。在這種情況下,可直接使用非屏蔽雙絞線(xiàn)作為總線(xiàn)[6]。

在接口設計中,有幾點(diǎn)需要注意:(1)SJA1000的INT端口是開(kāi)漏輸出,所以在使用時(shí)應該加上拉電阻,不然電平一直為低,無(wú)法實(shí)現中斷方式。(2)電平信號AD0~AD7必須按順序連接在總線(xiàn)收發(fā)器74ALVC164245的一個(gè)8位端口上,不可分開(kāi)。
3 通信系統軟件設計
3.1 系統流程設計
CAN總線(xiàn)通信模塊的控制主要包括三大部分:CAN總線(xiàn)節點(diǎn)初始化、報文發(fā)送和報文接收。主流程如圖3所示。

CAN節點(diǎn)主程序主要包括:作為主控制器的FPGA的初始化、CAN控制器初始化、寄存器狀態(tài)查詢(xún)、接收發(fā)送報文以及數據處理。在此設計中,由于通信模塊對接收數據的實(shí)時(shí)性要求并不是很高,因此CAN總線(xiàn)的接收和發(fā)送采用查詢(xún)方式[7]。在整個(gè)流程實(shí)現中,主要是對CAN控制器SJA1000中的寄存器進(jìn)行讀寫(xiě)操作。
3.2 讀寫(xiě)流程控制
SJA1000 的數據和地址信號為時(shí)分復用,而FPGA 中不存在地址的概念,因此在讀寫(xiě)寄存器時(shí),要把SJA1000 中的寄存器地址當作數據寫(xiě)入。所以在系統的頂層模塊設計中,將設計一個(gè)讀寫(xiě)子模塊來(lái)專(zhuān)門(mén)產(chǎn)生對CAN寄存器進(jìn)行讀寫(xiě)控制的時(shí)序,而核心主模塊則只對通信流程進(jìn)行描述。讀寫(xiě)時(shí)序的狀態(tài)機流程圖如圖4所示。在IDLE狀態(tài),對接口信號進(jìn)行初始化,其中地址鎖存信號ALE為低電平、寫(xiě)信號WR 為高電平、讀信號RD為高電平、片選信號CS 為高電平、地址數據復用總線(xiàn)ADDR為高阻態(tài)、writeover和readover為低電平(writeover為高電平表示一個(gè)寫(xiě)時(shí)序的完成, readover為高電平表示一個(gè)讀時(shí)序的完成) 。另外對于核心主模塊的控制信號start和iswr,當start為低電平時(shí)繼續在IDLE狀態(tài)循環(huán),反之則進(jìn)入寫(xiě)地址狀態(tài)Address0、Address1。然后根據iswr信號是高電平或低電平而進(jìn)入寫(xiě)數據進(jìn)程或讀數據進(jìn)程。讀寫(xiě)數據過(guò)程均由兩個(gè)狀態(tài)完成,分別是RD0、RD1、WR0、WR1。當一個(gè)完整的讀或寫(xiě)操作完成時(shí),進(jìn)入IDLE狀態(tài)。每一個(gè)狀態(tài)描述了ALE、WR、RD、CS、DIR1、ADDR的變化(OE0、OE1、DIR0分別為定值0、0、1,因此未列出來(lái))。這里為了便于描述,設1為高電平,0為低電平,對以上幾個(gè)信號在各個(gè)狀態(tài)的值進(jìn)行說(shuō)明,將信號組{ALE、WR、RD、CS、DIR1}設為CtrS。

FPGA的時(shí)鐘為5 MHz,用以上狀態(tài)機來(lái)實(shí)現SJA1000 寄存器的讀寫(xiě),在設計中每個(gè)狀態(tài)占用的時(shí)間是一個(gè)周期,即200 ns。按照SJA1000 接口讀寫(xiě)時(shí)序參數可知[8],片選信號必須在讀寫(xiě)信號有效之前變?yōu)橛行?,并且讀信號有效時(shí)存儲數據總線(xiàn)上的數據。如此,設計的時(shí)序符合時(shí)序參數要求。其他的時(shí)序設計都要嚴格按照時(shí)序參數表來(lái)設計。
數字通信相關(guān)文章:數字通信原理
通信相關(guān)文章:通信原理
上拉電阻相關(guān)文章:上拉電阻原理 雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理
評論