基于CPLD和ISA總線的數(shù)據(jù)采集系統(tǒng)設(shè)計
1.2 8254可編程定時器電路
8254可編程定時器內(nèi)部具有3個獨立的16位減法計數(shù)器,它可由程序設(shè)置成多種工作方式,有6種可選工作方式。計數(shù)器按照設(shè)置各工作方式寄存器中控制字工作,按十進制計數(shù)或二進制計數(shù),最高計數(shù)速率可達(dá)10 MHz。
該數(shù)據(jù)采集系統(tǒng)需要由8254提供AD轉(zhuǎn)換電路的時鐘信號和片選信號,通過改變8254的控制字改變數(shù)據(jù)采集系統(tǒng)的轉(zhuǎn)換頻率。8254定時器的輸入時鐘由外部晶振提供。定時器和定時器的輸出信號直接送入可編程邏輯器件XC9572,經(jīng)處理后提A/D轉(zhuǎn)換電路使用。上位機寫入的控制字經(jīng)ISA總線送至8254,同時XC9572給8254提供必要的控制信號,如:8254讀/寫信號、片選信號、地址信號等。
假設(shè)系統(tǒng)的外部時鐘為2 MHz,如果需要8254的定時器0輸出一個頻率為l MHz,占空比為50%的時鐘,則8254的定時器控制字可設(shè)置為:D7~D0=00110110,其中,D7D6=00,表示選擇定時器;D5D4=11,表示先讀/寫低8位,后讀/寫高8位數(shù)據(jù);D3D2Dl=011,表示工作方式3,方波發(fā)生器;D0=0,表示二進制計數(shù)。
1.3 A/D轉(zhuǎn)換電路
A/D轉(zhuǎn)換電路完成數(shù)據(jù)采集和轉(zhuǎn)換,主要包括MD轉(zhuǎn)換和模擬信號采樣兩部分電路。
8通道模擬采樣開關(guān)ADG508用于采樣模擬信號。由CPLD送來的通道選擇信號(CH0~CH2)用于選擇輸入的通道號。被選通的通道采樣得到的模擬信號送給ADS7816的IN+端,進行AD轉(zhuǎn)換,如圖3所示。本文引用地址:http://www.ex-cimer.com/article/191750.htm
A/D轉(zhuǎn)換電路采用TI公司的ADS7816,該器件是12位串行A/D轉(zhuǎn)換器,采樣頻率高達(dá)200 kHz,轉(zhuǎn)換所需時間短,轉(zhuǎn)換精度高,輸出形式為位串行,因此在對ADS7816進行讀數(shù)據(jù)操作時需注意數(shù)據(jù)轉(zhuǎn)換過程中的時序。
圖4是ADS7816的數(shù)據(jù)轉(zhuǎn)換時序。當(dāng)ADS7816的片選端下降沿到來時,開始啟動一次A/D轉(zhuǎn)換,保持轉(zhuǎn)換時鐘輸入和片選信號低電平,最初的1.5~2個時鐘時間里,完成模擬信號的采樣,這段時間ADS7816的輸出呈高阻狀態(tài)(HI-Z)。緊接著的1個時鐘周期里,DOUT輸出1個空位(NULL BIT)。隨后,ADS7816在12個連續(xù)的時鐘周期內(nèi)把12位的A/D轉(zhuǎn)換結(jié)果輸出,其中先輸出最高位(MSB),最后輸出最低位(LSB)。如果12位數(shù)據(jù)送出后仍有轉(zhuǎn)換時鐘且ADS7816的片選仍保持低電平,那么轉(zhuǎn)換器會從最低位起逐位重復(fù)輸出之前轉(zhuǎn)換的結(jié)果。當(dāng)下一個片選信號的下降沿到來時,A/D轉(zhuǎn)換器開始啟動下一次A/D轉(zhuǎn)換。
2 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件設(shè)計包括基于VHDL的邏輯控制程序設(shè)計和基于C語言的上位機采集測試程序設(shè)計。
2.1 VHDL程序設(shè)計
系統(tǒng)設(shè)計硬件中,可編程邏輯器件完成的內(nèi)容有:接收上位機的地址和數(shù)據(jù),為模擬開關(guān)提供通道選擇信號,為A/D轉(zhuǎn)換電路提供時鐘信號和片選信號,接收ADS7816轉(zhuǎn)換的數(shù)據(jù),向上位機傳送轉(zhuǎn)換結(jié)果。
從圖4中可得到ADS7816在片選信號下降沿到來后的14.5~15個時鐘周期里,完成一次轉(zhuǎn)換并逐位輸出12位轉(zhuǎn)換結(jié)果。為了能夠得到完整的正確的A/D轉(zhuǎn)換結(jié)果,采用計數(shù)方式設(shè)置標(biāo)志位FLG。在ADS7816的片選信號為低電平的前15個時鐘周期中,即“計數(shù)器計數(shù)值≤14”時,F(xiàn)LG=l,表示A/D轉(zhuǎn)換正在進行;當(dāng)“計數(shù)器的計數(shù)值>14”,則FLG=0,表示A/D轉(zhuǎn)換結(jié)束。當(dāng)FLG=0時,程序可讀取一次正確的A/D轉(zhuǎn)換數(shù)據(jù)。
因為ADS7816的數(shù)據(jù)轉(zhuǎn)換結(jié)果是串行輸入到CPLD中,需在CPLD中將得到的數(shù)據(jù)進行串并轉(zhuǎn)換后再通過ISA總線的8位數(shù)據(jù)線分2次送出。
系統(tǒng)進行數(shù)據(jù)轉(zhuǎn)換前需先選擇輸入通道,確定采集哪一路信號。上位機輸入的通道號經(jīng)CPLD送至8路模擬采樣開關(guān)。
評論