韓世川,黃建國,李 力
(電子科技大學自動化工程學院,四川 成都 611731)
USB(Universal Serial Bus)通用串行總線是應用在PC領域的新型接口技術(shù),由于具有速度快、連接簡單快捷、可熱插拔的特點,USB總線已經(jīng)被廣泛的應用于各種自動測試系統(tǒng)的開發(fā)[1-2]。程控信號發(fā)生器通過USB總線與筆記本電腦連接,通過上層軟件控制輸出多路地、開離散信號,用來激勵被測設備,并采集被測設備反饋回來的測試結(jié)果,送到電腦屏幕上顯示,供測試人員分析。實現(xiàn)了一臺筆記本電腦+專用測試模塊的檢測方案[3]。
如圖1程控信號發(fā)生器硬件結(jié)構(gòu)示意圖所示,程控信號發(fā)生器模塊通過USB總線與計算機進行連接,控制檢測模塊工作并讀回測試結(jié)果。其中USB總線接口電路用于實現(xiàn)檢測模塊與PC之間的通信,傳遞控制信息和返回測試數(shù)據(jù)[4];輸出模塊主要采用FPGA控制模擬開關(guān)通斷,切換各個輸出通道的輸出狀態(tài),將地、高阻信號電平對應輸出給被測設備;輸入檢測模塊,進行多路輸入通道的切換,并將切換后輸入的信號送給AD7854,進行模數(shù)轉(zhuǎn)換,然后將模數(shù)轉(zhuǎn)換后的2進制數(shù)據(jù)送回到計算機分析顯示。為保證輸入/輸出電路的可靠工作,模擬輸出和輸入電路設計為具有自檢測功能。輸出信號在輸出給被測設備的同時,還要經(jīng)過自檢測電路,送回A/D進行模數(shù)轉(zhuǎn)換,得到實際的輸出信號電平。
圖1 程控信號發(fā)生器硬件結(jié)構(gòu)示意圖
模擬輸出電路以ULN2803為核心進行設計。ULN2803內(nèi)部為8個達林頓管,根據(jù)要求設計成8個晶體管反相器[5],當成8個模擬開關(guān)。FPGA的I/O輸出電平為3.3V或者0V,所以該電壓可以直接控制達林頓管模擬開關(guān)的關(guān)斷或者開啟。程控信號發(fā)生器輸出模塊電路示意圖如圖2所示。根據(jù)晶體管反相器工作原理,當達林頓管輸入3.3V時,模擬開關(guān)打開,輸出接地,實現(xiàn)了地信號的輸出;當達林頓管輸入0V時,模擬開關(guān)關(guān)斷,輸出端28V接反向二級管,相當于輸出端高壓大電阻上拉,實現(xiàn)了高阻電平輸出。通過FPGA控制邏輯,打開、關(guān)斷相應的反相器模擬開關(guān),就能給相應通道輸出所需的地信號或者高阻信號。該設計輸出通道有160路,所以需要160個FPGA的可編程I/O引腳,ULN2803總共20片。
圖2 程控信號發(fā)生器輸出模塊電路示意圖
輸入測試電路以耐高壓的多路開關(guān)DG408、DG409和AD7854為核心構(gòu)成,其中DG408為八選一多路開關(guān),DG409為四選一多路開關(guān),AD7854為轉(zhuǎn)換速率為4M的模數(shù)轉(zhuǎn)換芯片。通過FPGA控制邏輯將各個檢測通道的輸入信號切換到ADC進行測試。在測試的同時,還可以將模塊自身輸出的信號切換到輸入端進行測試。根據(jù)設計,總共需要27片DG408和1片DG409。程控信號發(fā)生器輸入模塊電路示意圖見圖3。
當離散輸入為開狀態(tài)時,輸入A/D的測試電壓為3.3V左右,當離散輸入為地時輸入A/D的測試電壓為2V左右,從而實現(xiàn)了外部離散(地/開)輸入的的檢測。
圖3 程控信號發(fā)生器輸入模塊電路示意圖
圖4 程控信號發(fā)生器通道切換示意圖
如圖4程控信號發(fā)生器通道切換示意圖所示,因為在某一特定時刻只能有選定的一路信號送入A/D轉(zhuǎn)換器,并保持一定時間不變。該設計采用了三級開關(guān)進行選通。通道選擇切換時,第一級需要三位控制碼,可以選通160路中的20路信號;第二級需要三位控制碼,可以選通第一級的20路中的3路信號;第三級二位控制碼選通第二級3路中的1路。所以在某一時刻選通160路中的一路,只需要輸出八位控制碼到三級開關(guān),就可以一個A/D模數(shù)轉(zhuǎn)換器的分時復用。
該設計的數(shù)據(jù)傳輸方式采用USB的控制傳輸,以保證數(shù)據(jù)傳輸?shù)姆€(wěn)定性和準確性。USB讀寫譯碼示意圖如圖5所示。USB地址碼不管是寫地址還是讀地址,首先要經(jīng)過地址譯碼模塊譯碼,產(chǎn)生相應的低電平有效的地址選通信號。地址碼一個時鐘周期后,低電平有效的USB讀/寫信號到來,然后再和之前的地址選通信號經(jīng)過一個組合邏輯,產(chǎn)生一個上升沿。如果是Write寫信號就鎖存相應的控制信息輸出;如果是Read信號,就對A/D進行一次讀操作,讀回相應的數(shù)值。
圖5 USB讀寫譯碼示意圖
A/D的控制邏輯采用Verilog硬件描述語言來實現(xiàn)。Convst為A/D開始工作的開始信號。A/D正在工作的時候,Busy信號為高,此時不能讀數(shù)。當A/D完成一次數(shù)據(jù)采集過后,A/D輸出的Busy變成低電平,通知上層可以讀數(shù)。Hben為讀數(shù)的高低位選擇信號,當hben為低時,上層讀取A/D轉(zhuǎn)換數(shù)據(jù)的低八位,當hben變成高時,在讀取A/D轉(zhuǎn)換數(shù)據(jù)的高八位。AD7854時序控制示意圖見圖6。
通過萬用表測試模塊輸出的GND為0V,模塊自檢測電壓也為0V,證明輸出的地信號正常。高阻信號通過一個3.3V串接一個1 kΩ的上拉電阻,用萬用表測得電壓為3.3V,高阻信號經(jīng)過自檢測模塊后A/D輸出為3.3 V,證明輸出的高阻信號正常,輸入模塊輸入5V,A/D采集到的電壓最大為5.1V,最小為4.7V,滿足測試精度要求。最后將模塊輸出激勵被測設備,被測設備工作正常。再檢測模塊的反饋信號,輸入部分正常。
該設計利用了USB總線的優(yōu)點,采用可編程邏輯器件為主控芯片[6],實現(xiàn)了160路離散信號的自檢測與輸出和32路離散電壓信號檢測。該設計極大地減少了測試人員的人工操作,可以實現(xiàn)機載航空電子設備的快速動態(tài)測試。另外該設計采用了通用化、模塊化、標準化的思想,可移植性強,對其他類似航電自動測試系統(tǒng)的開發(fā)具有參考和推廣價值。
[1] 李廣軍,林水生.微機系統(tǒng)原理與接口技術(shù)[M].成都:電子科技大學出版社,2005.
[2] 甄國涌,張森峰.高速USB接口設計[J].電子設計工程,2009,17(3):80-82.
[3] 楊瑞瑞.基于USB總線燈光告警系統(tǒng)監(jiān)測模塊的設計[D].成都:電子科技大學出版社,2007.
[4] 許永和.USB外圍設備設計與應用[M].北京:北京航空航天大學出版社,2002.
[5] 林 生,金京林.數(shù)字設計原理與實踐 [M].北京:機械工業(yè)出版社,2003.
[6] 王 誠,吳繼華.Altera FPGA/CPLD設計[M].北京:人民郵電出版社,2005.