基于USB 2.0總線的航天設(shè)備地面檢測(cè)系統(tǒng)
摘要:介紹了一種基于USB 2.0總線的接口轉(zhuǎn)換系統(tǒng),主要運(yùn)用于航天設(shè)備的地面檢測(cè)中。討論了USB 2.0控制器CY7C68013A與FPGA構(gòu)成接口轉(zhuǎn)換系統(tǒng)的方式以及系統(tǒng)的通用性,著重論述了通用接口設(shè)計(jì)中的注意事項(xiàng)以及影響USB 2.0設(shè)備速度的因素。應(yīng)用結(jié)果表明,USB 2.0轉(zhuǎn)換的接口有很強(qiáng)的通用性,能達(dá)到很高的傳輸速率,可以廣泛地運(yùn)用于航天設(shè)備地面檢測(cè)以及普通工業(yè)測(cè)試系統(tǒng)中。
關(guān)鍵詞:USB 2.0;DMA;FPGA;CY7C68013A
0 引言
通用串行總線USB 2.0因其可熱插拔特性以及傳輸速度高而得到了越來越廣泛的應(yīng)用,在高速傳輸模式下可以達(dá)到480 Mb/s。相對(duì)于通用串口而言,USB 2.0有速度高的優(yōu)點(diǎn),數(shù)據(jù)的接收發(fā)送速率遠(yuǎn)遠(yuǎn)高于RS 232等接口。而相對(duì)于PCI而言,USB 2.0具有熱插拔以及安裝方便的優(yōu)點(diǎn),不需要停止計(jì)算機(jī)設(shè)備的運(yùn)行便可以進(jìn)行安裝拆卸。因此,考慮到以上優(yōu)點(diǎn),可以通過FPGA將其轉(zhuǎn)換為各種不同接口以滿足不同
的應(yīng)用需求。
USB接口擁有傳輸速度高、應(yīng)用廣泛的特點(diǎn)。在航天設(shè)備的檢測(cè)中,經(jīng)常需要處理多種不同的接口和不同數(shù)據(jù)格式,可以將USB 2.0接口加以轉(zhuǎn)換,在一個(gè)設(shè)備中集成多種不同的接口。本系統(tǒng)將PC機(jī)上的一個(gè)USB 2.0接口轉(zhuǎn)換為L(zhǎng)VDS(Low Voltage Differential Signal)以及RS 422等接口,同時(shí)通過PC上位機(jī)軟件模擬相關(guān)的接口數(shù)據(jù),使得航天設(shè)備的檢測(cè)變得更加簡(jiǎn)便快捷。同時(shí)由于系統(tǒng)采用了可編程邏輯器件FPGA作為系統(tǒng)接口轉(zhuǎn)換單元,可以通過改變FPGA中的邏輯使系統(tǒng)適應(yīng)不同的應(yīng)用需求,加快了系統(tǒng)在不同運(yùn)用場(chǎng)合下的開發(fā)速度,使系統(tǒng)具有很高的通用性。
系統(tǒng)采用Cypress公司的USB控制器Cy7C68013A以及Actel公司的APA300系列FPGA作為系統(tǒng)的主要部分,實(shí)現(xiàn)了USB 2.0總線與多種航天設(shè)備接口之間的互相轉(zhuǎn)換,并成功運(yùn)用于多個(gè)衛(wèi)星任務(wù)有效載荷的地面檢測(cè)中。本文給出了USB 2.0到各種接口轉(zhuǎn)換電路的相關(guān)軟硬件方案,同時(shí)討論了影響USB 2.0速度的相關(guān)問題。
1 系統(tǒng)硬件電路設(shè)計(jì)
1.1 硬件結(jié)構(gòu)框圖
本系統(tǒng)主要用于航天設(shè)備的地面檢測(cè)中,通常需要涉及多種接口,如RS 422,LVDS等,同時(shí)需要模擬外部的開關(guān)控制信號(hào)等,涉及的信號(hào)接口比較雜。在最初設(shè)計(jì)中,該檢測(cè)設(shè)備主要用于某型號(hào)衛(wèi)星電子設(shè)備接口功能和性能的測(cè)試,具體要求如下:
(1)模擬有效載荷功能,通過LVDS接口發(fā)送原始圖像數(shù)據(jù)至測(cè)控接口單元,共4路LVDS接口信號(hào),分別為幀同步、行同步、時(shí)鐘和數(shù)據(jù),傳輸速率為5 Mb/s;
(2)模擬相關(guān)功能,通過雙向異步RS 422串行接口與其他有效載荷接口通信,發(fā)送載荷的工程參數(shù)并接收控制信息然后執(zhí)行相應(yīng)動(dòng)作,接口速率為115.2 Kb/s;
(3)衛(wèi)星平臺(tái)接收來自有效載荷的圖像數(shù)據(jù),接口為L(zhǎng)VDS,數(shù)據(jù)傳輸速率為5 Mb/s;
(4)模擬載荷單元向衛(wèi)星平臺(tái)輸出8路模擬量遙測(cè)信號(hào);
(5)模擬相關(guān)載荷輸出6路遙控指令接口,指令接口為集電極開路輸出。
系統(tǒng)采用可編程邏輯器件完成相關(guān)的邏輯以及接口轉(zhuǎn)換,配合USB接口控制芯片完成系統(tǒng)的相關(guān)功能和需求。硬件設(shè)計(jì)的原理和結(jié)構(gòu)如圖1所示。
如圖1所示,地面檢測(cè)設(shè)備主要由USB接口轉(zhuǎn)換模塊,F(xiàn)PGA,各種通信接口模塊,以及其他的輔助模塊(包括電源,時(shí)鐘和復(fù)位模塊等)組成。
(1)USB接口轉(zhuǎn)換模塊采用Cypress公司的USB協(xié)議芯片CY7C68013A完成USB接口到其他總線接口的轉(zhuǎn)換。該芯片基于Cypress公司的FX2LP平臺(tái),兼容FX2系列,同時(shí)在芯片中集成了USB 2.0收發(fā)控制器以及一個(gè)增強(qiáng)型的8051單片機(jī)。CY7C68013A同時(shí)支持多種傳輸方式,可以通過編程配置為所需要的工作模式。
(2)FPGA模塊作為整個(gè)系統(tǒng)的邏輯控制轉(zhuǎn)換核心,完成USB 2.0接口數(shù)據(jù)到外圍接口數(shù)據(jù)之間的互相轉(zhuǎn)換。本系統(tǒng)采用Actel公司的APA30 0系列的FPGA,其內(nèi)部邏輯如圖2所示。
1.2 USB與LVDS接口的互相轉(zhuǎn)換
以USB和LVDS接口之間的轉(zhuǎn)換為例來說明USB 2.0到各種接口之間的轉(zhuǎn)換方法。LVDS是一種常用的穩(wěn)定的高速串行總線,具有傳輸速度高和穩(wěn)定的優(yōu)點(diǎn),廣泛運(yùn)用于航天、軍工以及各種工業(yè)產(chǎn)品中。
在處理LVDS數(shù)據(jù)的過程中,系統(tǒng)接收到數(shù)據(jù)之后,F(xiàn)PGA內(nèi)部邏輯對(duì)數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,然后對(duì)數(shù)據(jù)進(jìn)行封裝即添加數(shù)據(jù)包頭和包尾,之后將數(shù)據(jù)放入到LVDS專用的FIFO中。數(shù)據(jù)發(fā)送邏輯監(jiān)測(cè)CY7C68013A的總線是否繁忙,如果總線空閑同時(shí)FIFO中有需要上傳到PC機(jī)的數(shù)據(jù),就將相關(guān)數(shù)據(jù)發(fā)送到USB控制器,USB控制器再將數(shù)據(jù)傳送到PC機(jī)中。
PC上位機(jī)到外圍LVDS接口的數(shù)據(jù)傳輸過程與此類似,上位機(jī)USB 2.0接口和RS 422等接口之間的互相轉(zhuǎn)換邏輯也采用類似方法完成。
2 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件主要由兩部分組成,即USB 2.0芯片的固件程序以及PC上位機(jī)的數(shù)據(jù)收發(fā)處理程序,下面分別加以簡(jiǎn)要介紹。
2.1 USB固件設(shè)計(jì)
設(shè)備固件程序的主要功能是對(duì)CY7C68013A總線芯片的相關(guān)寄存器進(jìn)行初始化,從而控制FX2LP的數(shù)據(jù)收發(fā),同時(shí)處理USB驅(qū)動(dòng)程序的請(qǐng)求(如請(qǐng)求設(shè)備描述符或設(shè)置設(shè)備狀態(tài),請(qǐng)求或設(shè)置設(shè)備接口等USB 2.0標(biāo)準(zhǔn)請(qǐng)求),控制芯片中應(yīng)用程序控制指令的接收和執(zhí)行等。CY7C6801 3A內(nèi)部集成了一個(gè)增強(qiáng)型的8051單片機(jī),其配置程序的編寫與下載和標(biāo)準(zhǔn)的8051處理器相同,方便了用戶的開發(fā)。
CY7C68013A支持Slave FIFOs和General Programmable Interface(GPIF)2種工作模式。其中Slave FIFOs主要用于外部包含有控制邏輯的系統(tǒng)中,在這種工作模式下,CY7C68013A的內(nèi)部CPU并不直接接觸和處理數(shù)據(jù),此時(shí)CY7C68013A只是簡(jiǎn)單的用作USB接口和外部控制器之間的數(shù)據(jù)傳輸通道。而GPIF則用于外部沒有控制器的系統(tǒng)中,此時(shí)CY7C68013A通過GPIF接口控制數(shù)據(jù)的傳輸。本系統(tǒng)采用了Aetel的FPGA作為外部的數(shù)據(jù)控制及接口轉(zhuǎn)換邏輯,所以系統(tǒng)采用Slave FIFOs工作模式,CY7C68013A只是簡(jiǎn)單的用于USB接口和FPGA之間的數(shù)據(jù)傳遞。
USB有四種標(biāo)準(zhǔn)的傳輸模式,本系統(tǒng)涉及到高速數(shù)據(jù)的傳輸,所以根據(jù)實(shí)際需要選用Slave FIFO中的批量傳輸(Bulk)模式,同時(shí)為了減少USB芯片自帶增強(qiáng)型8051處理器對(duì)數(shù)據(jù)傳輸速率的影響,本系統(tǒng)將CY7C68013A配置為自動(dòng)數(shù)據(jù)傳輸模式,使得數(shù)據(jù)傳輸不用經(jīng)過8051,此時(shí)USB內(nèi)部的CPU控制器不直接參與數(shù)據(jù)的傳輸,其原理如圖3所示。
本系統(tǒng)分別采用2和6號(hào)端點(diǎn)分別負(fù)責(zé)輸出和輸入數(shù)據(jù)的處理工作,兩個(gè)端點(diǎn)分別有512 B×4的FIFO,此時(shí)CY7C68013A的內(nèi)部FIFO配置如圖4所示。
2.2 上位機(jī)應(yīng)用軟件
2.2.1 DMA傳輸方式
除了通信協(xié)議開銷、帶寬分配以及USB使用的電磁環(huán)境等之外,在高速數(shù)據(jù)傳輸系統(tǒng)中,還必須考慮操作系統(tǒng)對(duì)USB數(shù)據(jù)傳輸速率的影響。
PC機(jī)的通用操作系統(tǒng)Windows并不是一個(gè)嚴(yán)格的實(shí)時(shí)操作系統(tǒng),所以在進(jìn)行USB數(shù)據(jù)傳輸?shù)倪^程中,操作系統(tǒng)的分時(shí)調(diào)度策略會(huì)給數(shù)據(jù)傳輸速率帶來很大的影響。Windows的每個(gè)時(shí)間片長(zhǎng)度約為20 ms,如果要經(jīng)過操作系統(tǒng)的調(diào)度,USB數(shù)據(jù)收發(fā)進(jìn)程將會(huì)在占用CPU一個(gè)時(shí)間片之后就交出控制權(quán),等待下次獲得CPU控制權(quán),從而導(dǎo)致數(shù)據(jù)收發(fā)速率的降低。
因此,為了提高USB傳輸速率,系統(tǒng)應(yīng)當(dāng)采用DMA方式傳輸數(shù)據(jù),也就是使數(shù)據(jù)的傳輸不用經(jīng)過CPU的處理,從而減去操作系統(tǒng)分時(shí)機(jī)制的影響。Cypress公司提供了相關(guān)的支持DMA傳輸方式的接口即“CYAPI”,它較好將底層操作函數(shù)封裝為9個(gè)類,便于操作;同時(shí)CYAPI內(nèi)部集成了多線程的操作,數(shù)據(jù)開始傳輸之后用戶便可以返回繼續(xù)操作其他的內(nèi)容,不需要用戶在程序中自己處理相關(guān)的線程操作或者等到數(shù)據(jù)收發(fā)完畢再繼續(xù)進(jìn)行其他工作。
2.2.2 軟件操作
為了提高數(shù)據(jù)處理能力,本系統(tǒng)不在數(shù)據(jù)接收的過程中處理數(shù)據(jù),而是將數(shù)據(jù)直接存儲(chǔ),數(shù)據(jù)傳輸完畢之后再進(jìn)行相關(guān)分析處理,因?yàn)閿?shù)據(jù)處理過程也會(huì)引入操作系統(tǒng)時(shí)間片的延時(shí)。為了提高數(shù)據(jù)的接收和存儲(chǔ)速度,系統(tǒng)采用多線程結(jié)合乒乓存儲(chǔ)的方式接收、存儲(chǔ)數(shù)據(jù)。乒乓存儲(chǔ)是通常在硬件設(shè)計(jì)中使用的快速存儲(chǔ)方式,應(yīng)用到本系統(tǒng)中,一個(gè)線程接收數(shù)據(jù)的時(shí)候,另一個(gè)線程便存儲(chǔ)數(shù)據(jù),來回對(duì)2個(gè)內(nèi)存區(qū)域分別進(jìn)行操作,從而減少系統(tǒng)延時(shí),加快系統(tǒng)的處理速度,詳細(xì)的流程如圖5所示。
如圖5所示,本系統(tǒng)采用了兩個(gè)線程Read和Write用于數(shù)據(jù)的接收和存儲(chǔ),線程Read專用于讀取USB接口傳輸?shù)臄?shù)據(jù)并存儲(chǔ)到Buffer中,線程Write則從Buffer中提取數(shù)據(jù)并存儲(chǔ)到文件中。兩個(gè)線程通過Full和Empty來互斥其對(duì)緩存操作,從而保證數(shù)據(jù)存儲(chǔ)的正確。
本系統(tǒng)采用Cypress公司設(shè)計(jì)的專用函數(shù)接口CYAPI進(jìn)行軟件設(shè)計(jì),CYAPI相對(duì)于以前的接口具有很大的優(yōu)點(diǎn),它集成了DMA和多線程的操作,提高系統(tǒng)速度的同時(shí)簡(jiǎn)化了用戶的軟件開發(fā)。使用CYAPI進(jìn)行數(shù)據(jù)傳輸操作最主要的是正確的使用Begin-DataXfer、WaitForXfer和Fini-sh DataXfer三個(gè)函數(shù),同時(shí)應(yīng)該注意的是,在數(shù)據(jù)接收發(fā)送過程中應(yīng)該對(duì)函數(shù)FinishDataXfer的返回值加以判斷,否則在惡劣的電磁環(huán)境中會(huì)出現(xiàn)數(shù)據(jù)傳輸錯(cuò)誤的情況。
3 結(jié)語
本系統(tǒng)利用USB 2.0總線實(shí)現(xiàn)了各種接口的轉(zhuǎn)換,利用PC機(jī)的一個(gè)USB口便轉(zhuǎn)換為多種接口,很好的契合了航天設(shè)備檢測(cè)中設(shè)備接口種類多,數(shù)據(jù)格式雜的應(yīng)用背景。利用一個(gè)USB接口便完成了系統(tǒng)需求,極大的節(jié)省了PC機(jī)資源,同時(shí)一個(gè)電路板便可以解決大量設(shè)備的檢測(cè)驗(yàn)證工作,大大簡(jiǎn)化便捷了相關(guān)的工作。采用可編程邏輯器件處理相關(guān)接口轉(zhuǎn)換及數(shù)據(jù)收發(fā)工作,只需要改變FPGA代碼便可以實(shí)現(xiàn)不同任務(wù)的需求,極大的提高的系統(tǒng)的可重復(fù)利用率。
實(shí)踐證明,USB 2.0的高速性能夠滿足多種接口速度的需要,熱插拔性極大的方便了該系統(tǒng)的使用,該地面檢測(cè)系統(tǒng)已經(jīng)運(yùn)用于多個(gè)航天器的檢測(cè)中,很好的滿足了項(xiàng)目的需求,實(shí)現(xiàn)了系統(tǒng)設(shè)計(jì)的目的。