《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 一種空間相機(jī)的數(shù)據(jù)通信系統(tǒng)設(shè)計
一種空間相機(jī)的數(shù)據(jù)通信系統(tǒng)設(shè)計
來源:電子技術(shù)應(yīng)用2011年第1期
張培坤1,2, 高 偉1,宋宗璽1
1.中國科學(xué)院西安光學(xué)精密機(jī)械研究所,陜西 西安 710119; 2.中國科學(xué)院研究生院,北京 100039
摘要: 在空間相機(jī)數(shù)據(jù)采集應(yīng)用中,為了滿足電路板體積重量以及可擴(kuò)展性的要求,利用FPGA作為主控芯片,控制相機(jī)進(jìn)行數(shù)據(jù)采集和傳輸。在數(shù)據(jù)通信系統(tǒng)中,F(xiàn)PGA替代了傳統(tǒng)的單片機(jī)作為CAN總線的主控制器,并給出了詳細(xì)的硬件電路設(shè)計方法。在對CAN協(xié)議控制器SJA1000進(jìn)行功能及時序分析后,利用硬件語言對其通信流程進(jìn)行設(shè)計。實踐證明,在嚴(yán)格的時序邏輯下,F(xiàn)PGA能夠控制CAN總線穩(wěn)定正確地對相機(jī)數(shù)據(jù)進(jìn)行收發(fā)。
中圖分類號:TP336  
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)01-0077-03
Data communication system design in a space camera
Zhang Peikun1,2, Gao Wei1, Song Zongxi1
1. Xi’an Institute of Optics Precision Mechanics, Chinese Academy Sciences, Xi’an 710119, China; 2. Graduate School of the Chinese Academy of Sciences, Beijing 100039, China
Abstract: Data collection in a spcace camera application, to fulfil the demands of the circuit board about size, weight, and scalability, using FPGA as the main chip, control the camera for data collection and transmission. In data communication systems, FPGA replaces the traditional MCU as the main controller of the CAN communication system. And give the detailed hardware circuit design method. After analyzing the CAN protocol controller SJA1000 on function and timing demand, we design its communication flow with the hardware description language. Proctice has proved that, under strict sequential logic, FPGA is able to control the CAN bus to send and receive the camera data accurately and steadily.
Key words : space camera; data communication; CAN bus; FPGA


    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總線具有抗干擾性強(qiáng)、高數(shù)據(jù)傳輸率、低成本等優(yōu)點,在小衛(wèi)星和微小衛(wèi)星中得到了越來越廣泛的應(yīng)用。在衛(wèi)星有效載荷數(shù)據(jù)控制傳輸中也會應(yīng)用,如空間相機(jī)數(shù)據(jù)通信方面。
1 數(shù)據(jù)通信系統(tǒng)
    一般來說,每個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相機(jī)控制命令的發(fā)送、讀取圖像數(shù)據(jù)等。它通過對CAN控制器的編程控制CAN總線的工作方式、工作狀態(tài)以及數(shù)據(jù)的發(fā)送和接收。

    在本項目的特殊環(huán)境要求下,使用FPGA作為主控芯片,控制空間相機(jī)進(jìn)行數(shù)據(jù)采集與傳輸,并通過CAN總線進(jìn)行數(shù)據(jù)收發(fā)。較之傳統(tǒng)設(shè)計使用的單片機(jī),F(xiàn)PGA能夠在速度和體積上有更好的適應(yīng)性。FPGA一方面減少了電路板的復(fù)雜程度,縮短了實現(xiàn)周期,另一方面是FPGA具有豐富的資源、超高的性能和靈活的可編程性[3],提高了整個設(shè)備的可靠性,大大增強(qiáng)了電路板設(shè)計的靈活性和可擴(kuò)展性。
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腳為工作模式選擇位,接地工作于高速模式,接高工作于待機(jī)模式。系統(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中的寄存器進(jìn)行讀寫操作。
3.2 讀寫流程控制
    SJA1000 的數(shù)據(jù)和地址信號為時分復(fù)用,而FPGA 中不存在地址的概念,因此在讀寫寄存器時,要把SJA1000 中的寄存器地址當(dāng)作數(shù)據(jù)寫入。所以在系統(tǒng)的頂層模塊設(shè)計中,將設(shè)計一個讀寫子模塊來專門產(chǎn)生對CAN寄存器進(jìn)行讀寫控制的時序,而核心主模塊則只對通信流程進(jìn)行描述。讀寫時序的狀態(tài)機(jī)流程圖如圖4所示。在IDLE狀態(tài),對接口信號進(jìn)行初始化,其中地址鎖存信號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),反之則進(jìn)入寫地址狀態(tài)Address0、Address1。然后根據(jù)iswr信號是高電平或低電平而進(jìn)入寫數(shù)據(jù)進(jìn)程或讀數(shù)據(jù)進(jìn)程。讀寫數(shù)據(jù)過程均由兩個狀態(tài)完成,分別是RD0、RD1、WR0、WR1。當(dāng)一個完整的讀或?qū)懖僮魍瓿蓵r,進(jìn)入IDLE狀態(tài)。每一個狀態(tài)描述了ALE、WR、RD、CS、DIR1、ADDR的變化(OE0、OE1、DIR0分別為定值0、0、1,因此未列出來)。這里為了便于描述,設(shè)1為高電平,0為低電平,對以上幾個信號在各個狀態(tài)的值進(jìn)行說明,將信號組{ALE、WR、RD、CS、DIR1}設(shè)為CtrS。

    FPGA的時鐘為5 MHz,用以上狀態(tài)機(jī)來實現(xiàn)SJA1000 寄存器的讀寫,在設(shè)計中每個狀態(tài)占用的時間是一個周期,即200 ns。按照SJA1000 接口讀寫時序參數(shù)可知[8],片選信號必須在讀寫信號有效之前變?yōu)橛行?,并且讀信號有效時存儲數(shù)據(jù)總線上的數(shù)據(jù)。如此,設(shè)計的時序符合時序參數(shù)要求。其他的時序設(shè)計都要嚴(yán)格按照時序參數(shù)表來設(shè)計。
    在編寫讀寫模塊時,需注意雙向總線的編寫技巧。雙向口最好在頂層定義,否則模塊綜合時容易出錯。
3.3 INOUT雙向端口
    芯片外部引腳很多都使用inout類型的,目的是節(jié)省管腳,即一個端口同時做輸入和輸出。inout 在具體實現(xiàn)上一般用三態(tài)門來實現(xiàn)。三態(tài)門的第三個狀態(tài)就是高阻“Z”。 當(dāng)inout端口不輸出時,將三態(tài)門置為高阻。這樣信號就不會因為兩端同時輸出而出錯了。本設(shè)計中地址數(shù)據(jù)復(fù)用的ADDR為8位雙向端口,使用時可以寫為:
    inout ADDR;
    wire [7:0] ADDR;
    wire [7:0] input_of_ADDR;
    wire [7:0] output_of_ADDR;
    wire en;
    assign ADDR =  (en==1)?output_of_ADDR:8'hzz ;
    assign input_of_ADDR  = ADDR;
    可見,此時input_of_ADDR和output_of_ADDR就可以當(dāng)作普通信號使用了。對于雙向端口的測試用例如下:
    wire [7:0] ADDR;
    reg link;
    reg [7:0] data_in_t;
    assign ADDR=link?data_in_t:8'hzz;
    對于有inout(雙向)端口的verilog程序設(shè)計,需要注意幾點:(1)對于inout端口,要定義一個與之相連的“映像寄存器”。當(dāng)inout端口作為輸出端口時,將兩者連通;而當(dāng)inout端口不作為輸出端口時,要給i~t端口賦高阻態(tài)來斷開與“映像寄存器”的連接。(2)在實例化含inout(雙向)端口的模塊時,與inout端口相連的只能是一個wire類型的變量。(3)不論是模塊設(shè)計還是仿真, 由于inout端口兼有輸人端口和輸出端口的功能,所以必須分別指定當(dāng)inout端口作為輸人端口(輸出端口)時,它與其他單元的連接情況和需要完成的操作。
4 實驗結(jié)果
    在FPGA中利用Verilog編程產(chǎn)生SJA1000的片選信號CS,地址鎖存信號ALE,讀寫信號RD、WR。這些控制信號共同驅(qū)動SJA1000進(jìn)行數(shù)據(jù)接收發(fā)送,同時產(chǎn)生OE0、OE1、DIR0、DIR1,來控制雙向總線收發(fā)器。設(shè)計選取的是Xilinx公司Virtex系列的芯片,邏輯開發(fā)在ISE平臺上進(jìn)行。在FPGA的調(diào)試階段,使用Xilinx提供的在線邏輯分析儀ChipScope pro來在線觀察FPGA設(shè)計內(nèi)部信號的波形,它比傳統(tǒng)的邏輯分析儀更方便。圖5就是在線進(jìn)行數(shù)據(jù)傳送時的波形。

    在本文空間相機(jī)通信系統(tǒng)的設(shè)計中,放棄了傳統(tǒng)的基于單片機(jī)的方法,而采用以FPGA為核心控制單元,代替單片機(jī)及其外圍芯片電路。通過設(shè)計整個空間相機(jī)通信系統(tǒng)的硬件電路,并利用Verilog硬件語言描述通信流程,快速準(zhǔn)確地實現(xiàn)了相機(jī)數(shù)據(jù)的通信功能。在軟硬件的聯(lián)調(diào)和驗證時,利用chipscope在線邏輯儀功能,方便準(zhǔn)確地實現(xiàn)了預(yù)期目的。
參考文獻(xiàn)
[1] 饒運濤,鄒繼軍,鄭勇蕓.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2007.
[2] Philips Semiconductors. Application note of SJA1000[Z]. 1997.
[3] Xilinx Inc. Product Specification:Virtex 2.5v FPGA Complete Data sheet. 2001.
[4] 陳萍.星載電場儀地面檢測設(shè)備設(shè)計與研制[D].北京:中科院研究生院,2009.
[5] 郭慧玲,劉羽,魏文.基于SJA1000的CAN總線雙機(jī)通訊技術(shù)的研究[J].儀表技術(shù)與傳感器,2008(9):46-48.
[6] Philips  Semieonduetors. PCA82C250 CAN Controller interfaee datasheet[Z]. 1997.
[7] 林志琦,宋國明. CAN總線在激光敵我識別系統(tǒng)中的應(yīng)用[J].電子技術(shù)應(yīng)用,2009,35(3):80-82.
[8] Philips Semiconductors. SJA1000 Stand-alone CAN controller[Z]. 2000.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。