文獻標識碼: B
文章編號: 0258-7998(2014)09-0075-03
隨著航空器以高度自動化的趨勢發(fā)展,傳感器數(shù)據(jù)需要被快速采集和高精度轉換,以便飛行控制系統(tǒng)使用和處理。傳統(tǒng)的集成于DSP的A/D轉換芯片往往不能滿足速度和精度的要求,因此需要使用獨立的A/D轉換芯片實現(xiàn)傳感器數(shù)據(jù)的采集和轉換。同時,隨著嵌入式計算機種類的多樣化,部分嵌入式計算機不再集成A/D芯片,由于各種因素在選擇不含A/D轉換功能的嵌入式計算機時,也必須考慮如何對獨立A/D芯片進行控制以實現(xiàn)對模擬信號的快速采集與轉換。在項目的研發(fā)中,通過使用SBS公司的CDT2000模塊,實現(xiàn)了對AD7891芯片的控制,取得了快速、精確的轉換效果。CDT2000含有豐富的I/O口,同時電位值與普通A/D芯片的引腳電位吻合,因此可以方便地與A/D芯片引腳連接;而且其I/O的電位變化迅速,能夠滿足高速轉換的要求。文中給出了系統(tǒng)主要的硬件電路和CDT2000 I/O對AD7891芯片的控制方法,同時對A/D轉換結果做了數(shù)據(jù)分析。
1 系統(tǒng)硬件構成
1.1 系統(tǒng)概況
本轉換系統(tǒng)要求轉換頻率不低于100 Hz,對于0~10 V的輸入電壓,轉換誤差不大于10 mV。為達到以上要求, 系統(tǒng)選用的硬件包括SBS公司的嵌入式PC/104計算機、CDT2000模塊,ADI公司的AD7891型號芯片和Fairchild公司的DM74LS73A型號JK觸發(fā)器。
1.2 PC/104與CDT2000 I/O口
PC/104是嵌入式PC的機械電氣標準,它秉承了IBM-PC開放式總線結構的優(yōu)點,與IBM-PC 100%兼容。
CDT2000是16位計數(shù)器/定時器與數(shù)字量I/O模塊,通過總線與PC/104模塊連接,可將由PC/104模塊構成的系統(tǒng)變成一個高性能的控制系統(tǒng)。CDT2000有48通道TTL/CMOS 兼容的數(shù)字量I/O,這些I/O由模塊上的71055可編程外圍接口(PPI)芯片提供,由I/O連接器引出。端口能直接與外部設備或信號連接,端口高電位為5 V,低電位為0 V。
CDT2000的48通道數(shù)字量I/O在硬件上以兩排I/O口排列,每排包括24路數(shù)字量I/O;這24路I/O又分為口0(8條線)、口1(8條線)、口2(8條線)3組,每組I/O都分配有獨立的基地址,因此可以單獨決定每組I/O的輸入/輸出模式。
1.3 AD7891芯片
AD7891是一款8通道、12位數(shù)據(jù)采集系統(tǒng),有并行和串行兩種接口模式。本系統(tǒng)采用的輸入量程為-10 V~
+10 V,理論轉換精度可達4.88 mV。
在單通道輸入,采用硬件啟動轉換時,AD7891的轉換速率可達454.5 kS/s。芯片的每個輸入通道都擁有過電壓保護機制,允許的過壓值為±17 V。
AD7891可以通過MODE引腳來選擇并行或串行接口模式。無論是串行還是并行工作模式,芯片均能提供標準控制輸入及快速數(shù)據(jù)訪問時間特性,確保與現(xiàn)代微處理器、微控制器和數(shù)字信號處理器輕松對接[2]。由于CDT2000模塊提供豐富的I/O口,本轉換系統(tǒng)采用并行接口方式。芯片端口的控制以及數(shù)據(jù)的讀寫全部通過CDT2000的I/O口實現(xiàn),既滿足轉換的快速性要求,在硬件上也較容易實現(xiàn)。
1.4 DM74LS73A型號JK觸發(fā)器
DM74LS73A是負脈沖邊緣觸發(fā)型的主-從JK觸發(fā)器,當觸發(fā)器CLK端電位由低升高時,可觸發(fā)輸出端Q、的電位變化。
A/D轉換結束時,AD7891的EOC端輸出脈寬為80 ns的負脈沖。但CDT2000沒有捕捉負脈沖的功能,因此在AD7891與CDT2000之間增加一個JK觸發(fā)器,由觸發(fā)器CLK端捕捉EOC引腳輸出的負脈沖。EOC引腳輸出的負脈沖使JK觸發(fā)器Q端的電位變化時,表明A/D轉換結束。
1.5 系統(tǒng)硬件連接
根據(jù)以上系統(tǒng)各硬件的性能及特性,設計系統(tǒng)硬件連接電路如圖1所示。
圖1中,由CDT2000 I/O指向AD7891和JK觸發(fā)器的箭頭線表示CDT2000 I/O口以輸出模式與AD7891和JK觸發(fā)器的引腳連接,I/O通過輸出電位的變化實現(xiàn)AD7891和JK觸發(fā)器中與之連接的各引腳的功能;由AD7891和JK觸發(fā)器指向CDT2000 I/O的箭頭線表示CDT2000 I/O口以輸入模式與AD7891和JK觸發(fā)器的引腳連接,I/O口讀取AD7891和JK觸發(fā)器中與之連接的各引腳的電位,通過總線傳遞給PC/104;CDT2000 I/O與AD7891間的雙向箭頭線表示AD7891上的引腳為復用端口,I/O口既要以輸出模式控制該引腳的電位,又要在A/D轉換結束時,以輸入模式讀取該引腳的電位。
在A/D轉換過程中,CDT2000 I/O始終向AD7891的STANDBY和MODE引腳輸出高電位,以使AD7891處于正常工作狀態(tài)和并行工作模式;向JK觸發(fā)器的J引腳和K引腳分別給予低電位和高電位,以使A/D轉換開始前JK觸發(fā)器的Q輸出端為低電位。A/D轉換結束時由AD7891的EOC引腳輸出的負脈沖將使Q輸出端的低電位轉換為高電位,經(jīng)I/O口讀取后告知PC/104 A/D轉換結束。同時在每次A/D轉換開始前,向JK觸發(fā)器的CLR引腳給予一不小于30 ns的負脈沖,使Q輸出端恢復低電位。
2 系統(tǒng)軟件實現(xiàn)
2.1 AD7891時序分析
為實現(xiàn)系統(tǒng)的高速轉換,首先對AD7891的轉換時序進行分析。并行接口模式下AD7891的轉換時序見圖2。
圖2中,t1為從CS到RD/WR的觸發(fā)時間,為0 ns;t2為寫脈沖寬度,不小于35 ns;t3為寫有效數(shù)據(jù)時間,不小于25 ns;t4為有效數(shù)據(jù)保持時間,不小于5 ns;t5為CS到RD/WR的保持時間,為0 ns;t6為CONVST脈沖寬度時間,不小于35 ns;t7為EOC脈沖寬度時間,不小于55 ns;t8為讀脈沖寬度,不小于35 ns;t9為RD下降沿之后讀數(shù)據(jù)時間,不小于25 ns;tCONV為A/D轉換時間,不大于1.6 μs;t10不小于30 ns。
2.2 I/O口對AD7891工作時序的控制
AD7891的工作時序由CDT2000的I/O口控制,因此在操作I/O口的電位變化時,必須根據(jù)AD7891的轉換時序,合理地分配以上時間,以實現(xiàn)快速高效的轉換。
在硬件層,PC/104核心處理器的晶振頻率為100 MHz,單周期指令的執(zhí)行時間為10 ns。PC/104通過總線操作改變CDT2000的I/O口的電位。一次總線操作的時間在1 μs以上,即C語言操縱I/O口電位變化的代碼執(zhí)行時間在1 μs以上,遠大于時序中要求的各負脈沖時間。因此在連續(xù)改變I/O口電位時,無需考慮延時。
AD7891的DB0~DB5為復用數(shù)據(jù)線,寫入數(shù)據(jù)時,通過這6個引腳改變AD7891控制寄存器的數(shù)值;讀取數(shù)據(jù)時,通過這6個引腳獲得A/D轉換結果的低6位數(shù)值。因此在每次A/D轉換中,與這6個引腳連接的I/O口都要進行一次輸入/輸出模式的轉換。而CDT2000 I/O的特性是在某一路I/O由輸入模式轉變?yōu)檩敵瞿J綍r,同一排I/O中所有輸出口的電位都會清零,因此必須保證與AD7891 DB0~DB5連接的6個I/O口的輸入/輸出模式改變時,不會影響其他輸出端口的電位,否則將導致轉換失敗。為實現(xiàn)以上條件,需將與AD7891 DB0~DB5連接的6個I/O口單獨安排在CDT2000 I/O的一排,而與AD7891其他引腳連接的I/O口在另一排。
使用CDT2000 I/O對AD7891的控制操作中,首先向JK觸發(fā)器的CLR引腳輸出一負脈沖,使其Q輸出端恢復低電位;然后將與AD7891芯片DB0~DB5引腳連接的I/O置為輸出模式,并向其輸出電位以選擇A/D輸入通道和轉換結果輸出格式;然后向WR引腳輸出負脈沖,將DB0~DB5引腳的電位數(shù)據(jù)寫入控制寄存器;隨后向CONVST引腳輸出負脈沖啟動A/D轉換,待Q端電位升高后,將與DB0~DB5引腳連接的I/O改為輸入模式;然后將RD引腳電位置底,讀取DB0~DB11引腳的電位值,獲得A/D轉換結果;最后將RD引腳電位置高,完成A/D轉換。以上為完成一次A/D轉換的操作流程,其執(zhí)行時間不超過25 μs,轉換頻率可達4×104 Hz,滿足系統(tǒng)對轉換頻率大于100 Hz的要求。
3 試驗結果
AD7891轉換數(shù)值的輸出格式既可以是普通二進制形式也可以是補碼形式,由FORMAT引腳的電位控制。普通二進制形式時,輸出范圍為0~4 095;補碼形式時,輸出范圍為-2 048~2 047。轉換數(shù)值理論上與輸入電壓呈線性關系。由于項目要求采集的電壓范圍為0~10 V,因此本轉換系統(tǒng)選擇的輸出格式為普通二進制形式。試驗中輸入電壓由穩(wěn)壓電源提供,在輸入電壓固定時,取轉換數(shù)值的平均值作為轉換結果,試驗數(shù)據(jù)如圖3所示。
對試驗轉換值線性擬合獲得的參數(shù)中,R平方值(相關系數(shù))為1,說明A/D轉換結果與輸入電壓呈現(xiàn)良好的線性關系,這與理論相符合。對試驗轉換值擬合得到的線性函數(shù)為:
式(1)、(2)中y為A/D轉換值,x為輸入電壓。對比式(1)和式(2)表明,試驗轉換結果相較理論值存在2 077.26-2 047.50=29.76的偏差,即零漂值。將零漂值修正后,試驗值與理論值的差值為:
式(3)說明轉換誤差隨著采集電壓增大而增大,當輸入電壓范圍為0~10 V時,試驗轉換值與理論值的最大差值為0.4,轉換誤差在最低有效位以內。對于12位的A/D轉換器,一個最低有效位的誤差表征4.88 mV轉換誤差,因此該系統(tǒng)滿足轉換誤差不大于10 mV的設計要求。
本文基于CDT2000 I/O對A/D芯片的控制,設計了一種A/D高速采集轉換系統(tǒng),通過使用CDT2000 I/O對AD7891和JK觸發(fā)器各引腳電位的控制及讀取,實現(xiàn)了對模擬數(shù)據(jù)的高速采集和轉換。系統(tǒng)完成一次A/D轉換的時間小于25 μs,滿足系統(tǒng)對轉換頻率大于100 Hz的要求;對轉換結果中存在的固定偏差修正后,轉換誤差不超過4.88 mV,滿足系統(tǒng)對采集精度的要求。本系統(tǒng)具有硬件結構簡單、編程容易、易于實現(xiàn)的特點。
參考文獻
[1] 何學輝,蘇濤.TMS320VC5402 DSP與串行AD73360 A/D轉換器的接口設計[J].電子技術應用,2003,29(11):67-70.
[2] 趙綱領,蔚永強,張寧,等.基于DSP I/O口的多路高速數(shù)據(jù)采集系統(tǒng)設計[J].電測與儀表,2007,44(2):54-56.
[3] 劉春生,游志剛,李小波.AD7891高速數(shù)據(jù)采集系統(tǒng)的原理與應用[J].國外電子元器件,2001(3):6-9.
[4] 陳勁操.利用增強型并行口設計12位數(shù)據(jù)采集系統(tǒng)[J].電子工程師,2001,27(7):1-3
[5] 鄺堅.Tornado/VxWorks入門與提高[M].北京:科學出版社,2004.
[6] 譚浩強.C程序設計(第3版)[M].北京:清華大學出版社,2005.