馮志江,黃鳳鳴
(1.北京信息科技大學 自動化學院,北京 100192;2.中國人民大學 信息學院,北京 100872)
數(shù)據采集是工業(yè)測量和控制系統(tǒng)中的重要部分。它是測控現(xiàn)場的模擬信號源與上位機之間的接口,其任務是采集現(xiàn)場連續(xù)變化的被測信號。系統(tǒng)應將所采集的模擬數(shù)據信號盡可能真實、不失真地顯示給控制人員[1]。
隨著計算機技術和EDA技術的發(fā)展,由于復雜可編程邏輯器件(CPLD)具有高集成度、小體積、低成本、低功耗以及高穩(wěn)定性等諸多優(yōu)點而廣泛使用到諸如傳統(tǒng)工業(yè)控制等各個領域?;贗SA的接口電路,其布線要求遠沒有PCI或USB接口板高[2]。由于它能夠提供16位I/O操作,對I/O的直接讀寫可以完全不考慮復雜的驅動程序和應用程序,因而在ISA總線上開發(fā)接口電路目前仍是首先考慮的方法。因此,這里提出一種基于CPLD和ISA總線的數(shù)據采集系統(tǒng)設計。
數(shù)據采集系統(tǒng)的硬件電路主要包括:CPLD邏輯控制電路、8254定時器電路、A/D轉換電路。該系統(tǒng)硬件設計框圖如圖1所示。
該系統(tǒng)使用XC9572作為主控器件。XC9572是一款高性能可編程邏輯器件,內含4個36 V 18功能模塊,具有1 600個可用系統(tǒng)門。ISA總線上的地址、控制指令和數(shù)據被送進CPLD,經處理后送到相應電路中。由A/D轉換電路得到的數(shù)據也返回到CPLD進行處理,并經ISA總線送至計算機中。

圖1 系統(tǒng)硬件設計框圖
圖2為數(shù)據采集系統(tǒng)的邏輯控制電路,U1是數(shù)據緩沖器74HC245,由ISA總線的讀/寫信號(IOR/IOW)和板卡選擇信號(BSEL)決定數(shù)據的流向。比較器74LS688和XF1組成板卡選擇信號發(fā)生電路。通過在XF1上的跳線可確定采集系統(tǒng)板的基地址。該系統(tǒng)基地址設置為280H。
ISA總線上的讀寫信號,經緩沖器的數(shù)據信號 (LAD0~LAD7),地址信號(A0~A3)均與 XC9572 相連,CPLD 發(fā)送 A/D轉換器的片選信號(ADCS)、A/D時鐘信號(ADCLK)以及通道選擇信號(CHA0~CHA2)。
8254可編程定時器內部具有3個獨立的16位減法計數(shù)器,它可由程序設置成多種工作方式,有6種可選工作方式[3]。計數(shù)器按照設置各工作方式寄存器中控制字工作,按十進制計數(shù)或二進制計數(shù),最高計數(shù)速率可達10 MHz。

圖2 數(shù)據采集系統(tǒng)的邏輯控制電路
該數(shù)據采集系統(tǒng)需要由8254提供AD轉換電路的時鐘信號和片選信號,通過改變8254的控制字改變數(shù)據采集系統(tǒng)的轉換頻率。8254定時器的輸入時鐘由外部晶振提供。定時器和定時器的輸出信號直接送入可編程邏輯器件XC9572,經處理后提A/D轉換電路使用。上位機寫入的控制字經ISA總線送至8254,同時XC9572給8254提供必要的控制信號,如:8254讀/寫信號、片選信號、地址信號等。
假設系統(tǒng)的外部時鐘為2 MHz,如果需要8254的定時器0輸出一個頻率為1 MHz,占空比為50%的時鐘,則8254的定時器控制字可設置為:D7~D0=00110110,其中,D7D6=00,表示選擇定時器;D5D4=11,表示先讀/寫低8位,后讀/寫高 8位數(shù)據;D3D2D1=011,表示工作方式 3,方波發(fā)生器;D0=0,表示二進制計數(shù)。
A/D轉換電路完成數(shù)據采集和轉換,主要包括A/D轉換和模擬信號采樣兩部分電路。
8通道模擬采樣開關ADG508用于采樣模擬信號,由CPLD送來的通道選擇信號(CH0~CH2)用于選擇輸入的通道號。被選通的通道采樣得到的模擬信號送給ADS7816的IN+端,進行AD轉換,如圖3所示。

圖3 A/D轉換電路
A/D轉換電路采用TI公司的ADS7816,該器件是12位串行A/D轉換器,采樣頻率高達200 kHz,轉換所需時間短,轉換精度高[4],輸出形式為位串行,因此在對ADS7816進行讀數(shù)據操作時需注意數(shù)據轉換過程中的時序。

圖4 ADS7816的數(shù)據轉換時序
圖4是ADS7816的數(shù)據轉換時序。當ADS7816的片選端下降沿到來時,開始啟動一次A/D轉換,保持轉換時鐘輸入和片選信號低電平,最初的1.5~2個時鐘時間里,完成模擬信號的采樣,這段時間ADS7816的輸出呈高阻狀態(tài)(HI-Z)。緊接著的1個時鐘周期里,DOUT輸出1個空位 (NULL BIT)。隨后,ADS7816在12個連續(xù)的時鐘周期內把12位的A/D轉換結果輸出,其中先輸出最高位(MSB),最后輸出最低位(LSB)。如果12位數(shù)據送出后仍有轉換時鐘且ADS7816的片選仍保持低電平,那么轉換器會從最低位起逐位重復輸出之前轉換的結果。當下一個片選信號的下降沿到來時,A/D轉換器開始啟動下一次A/D轉換。
系統(tǒng)軟件設計包括基于VHDL的邏輯控制程序設計和基于C語言的上位機采集測試程序設計。
系統(tǒng)設計硬件中,可編程邏輯器件完成的內容有:接收上位機的地址和數(shù)據,為模擬開關提供通道選擇信號,為A/D轉換電路提供時鐘信號和片選信號,接收ADS7816轉換的數(shù)據,向上位機傳送轉換結果[5-6]。
從圖4中可得到ADS7816在片選信號下降沿到來后的14.5~15個時鐘周期里,完成一次轉換并逐位輸出12位轉換結果。為了能夠得到完整的正確的A/D轉換結果,采用計數(shù)方式設置標志位FLG。在ADS7816的片選信號為低電平的前15個時鐘周期中,即“計數(shù)器計數(shù)值≤14”時,F(xiàn)LG=1,表示A/D轉換正在進行;當“計數(shù)器的計數(shù)值>14”,則FLG=0,表示A/D轉換結束。當FLG=0時,程序可讀取一次正確的A/D轉換數(shù)據。
因為ADS7816的數(shù)據轉換結果是串行輸入到CPLD中,需在CPLD中將得到的數(shù)據進行串并轉換后再通過ISA總線的8位數(shù)據線分2次送出。
系統(tǒng)進行數(shù)據轉換前需先選擇輸入通道,確定采集哪一路信號。上位機輸入的通道號經CPLD送至8路模擬采樣開關。
上位機的數(shù)據采集測試程序采用C語言設計。因為系統(tǒng)采用ISA接口,所以功能測試無需編寫復雜的應用程序,只需在Win98操作系統(tǒng)里編寫C語言的測試程序即可實現(xiàn)系統(tǒng)的數(shù)據采集功能。上位機的數(shù)據采集測試程序主要完成:采集系統(tǒng)的硬件初始化、通道選擇、數(shù)據采集、數(shù)據處理和數(shù)據輸出。其程序設計流程如圖5所示。

圖5 數(shù)據采集測試程序流程
圖6所示為寫入XC9572的VHDL程序的仿真波形,主要是CPLD控制A/D轉換的功能仿真。從仿真波形圖中可以看出,當?shù)刂稟為7時,寫入通道號3,得到的輸入通道選通信號為3,實現(xiàn)通過上位機選擇輸入通道功能。當ADCS的下降沿到來后開始啟動A/D轉換;ADCS下降沿起的第3個時鐘對應的ADDATA為系統(tǒng)轉換的第1個數(shù)據,直到這次轉換完畢。由給定的ADDATA數(shù)據得知,串行輸入的數(shù)據是767H(0111 0110 0111B)。仿真結果中,地址為4時,數(shù)據的低8位結果為67H;地址為5時,數(shù)據的高8位結果為07H,仿真結果完全正確。

圖6 VHDL仿真波形
在Windows98下,使用基于C語言的數(shù)據采集測試程序,可得到如表1所示的測試數(shù)據。從所列數(shù)據看出,該數(shù)據采集系統(tǒng)采集數(shù)據正確,且精度高。

基于CPLD的數(shù)據采集系統(tǒng)具有硬件線路簡單、精度高、采集速度快的特點。ISA總線和CPLD結合的數(shù)據采集系統(tǒng)有其獨特的優(yōu)勢。該數(shù)據采集系統(tǒng)可循環(huán)采樣多路(8路)模擬信號采樣。實際測試結果表明該設計方案可行,且具有很高的實用價值。
[1]牛強軍.基于ISA總線的ADC板卡設計[J].電子設計工程,2005,13(7):21-23.
[2]蔣志峰,蔣偉峰,劉濟林.基于ISA總線接口電路的設計及研究[J].實驗室研究與探索,2000(1):76-80.
[3]周明德.微型計算機系統(tǒng)原理及應用[M].北京:清華大學出版社,1998.
[4]Texas Instruments.ADS7816 Datasheet[EB/OL].2000.http://focus.ti.com.cn/cn/lit/ds/symlink/ads7816.pdf.
[5]胡遠望,廖冬初.基于VHDL的高速串行AD轉換器控制設計與實現(xiàn)[J].常州信息職業(yè)技術學院學報,2007,6(1):28-31.
[6]朱然剛,葉春逢,鐘子發(fā).基于VHDL實現(xiàn)邏輯控制的高速數(shù)據采集系統(tǒng)[J].微處理機,2005(3):49-51,56.