??? 摘 要: 介紹了一種用于12路通道溫度采集的PC104采集卡" title="采集卡">采集卡的設(shè)計(jì),。重點(diǎn)描述了實(shí)現(xiàn)通道校正,、采集數(shù)據(jù)的控制器的設(shè)計(jì)過(guò)程,。該控制器提供了一定的數(shù)據(jù)緩沖能力和多種參數(shù)的工作方式,,使得PC104采集卡的功能比較強(qiáng)大和全面,,并且非常靈活,。其設(shè)計(jì)思路值得以后類似的采集卡借鑒,。實(shí)際運(yùn)行結(jié)果表明,,該采集卡的設(shè)計(jì)是成功的,,并且工作可靠,。
??? 關(guān)鍵詞: 溫度采集? AD7711? PC104? 控制器? CPLD
?
??? PC104總線是一種出現(xiàn)已久的棧式總線,基本上屬于ISA總線的變型,。模塊尺寸很?。?0mm×96mm),多個(gè)模塊通過(guò)針孔結(jié)構(gòu)堆疊而成,,形成的系統(tǒng)結(jié)構(gòu)緊湊,、抗沖擊性能好,加上現(xiàn)在廣泛應(yīng)用的低功耗技術(shù),,使PC104總線特別適于用戶自行開發(fā)特殊應(yīng)用產(chǎn)品,。
??? 對(duì)于低速率、高精度的測(cè)量系統(tǒng)而言,,A/D芯片AD7711是個(gè)功能完整的模擬前端,。它直接從傳感器接收信號(hào),通過(guò)一個(gè)可編程的增益控制后將信號(hào)送到模擬調(diào)節(jié)器,,再經(jīng)濾波后輸出一個(gè)16位的串行數(shù)據(jù)" title="串行數(shù)據(jù)">串行數(shù)據(jù)字,。它的主要結(jié)構(gòu)特點(diǎn)是:內(nèi)部包含有一個(gè)∑-△ A/D轉(zhuǎn)換器,,具有非常高的轉(zhuǎn)換精度;兩個(gè)通道的可編程增益前端,;帶內(nèi)部SRAM的校正控制器,,使得校正因子可讀可寫;時(shí)鐘發(fā)生器,;低通數(shù)字濾波器,,具有可編程的通阻帶分截點(diǎn);一個(gè)雙向串行通信端口,,能較方便地與微處理器接口,;可以單電壓或雙電壓供電,具有較低的功耗,。
??? 對(duì)于RTD(電阻式溫度檢測(cè))傳感器的應(yīng)用,,AD7711是一款很不錯(cuò)的選擇。本文介紹的PC104采集卡主要用于分布式溫度點(diǎn)采集測(cè)量,,上面集成了12個(gè)AD7711,,形成12個(gè)通道,每個(gè)通道可以輸入兩路模擬信號(hào),,其中一路為單極性輸入,,另一路為雙極性輸入。
1 電路原理
??? PC104溫度采集卡主要由12個(gè)AD7711,、通道控制器,、PC104棧式連接器組成,其原理框圖如圖1所示,。板卡地址輸入由撥盤開關(guān)完成,。串口" title="串口">串口E2PROM用來(lái)保存每個(gè)通道的校準(zhǔn)參數(shù)和一些板卡工作參數(shù)。另外還提供了配置ROM EPC2,。
?
??? 通道控制器采用Altera公司的CPLD器件FLEX10K50QC240來(lái)實(shí)現(xiàn)。PC104主機(jī)首先初始化通道控制器,,通過(guò)板卡命令對(duì)板卡進(jìn)行操作,,如啟動(dòng)、停止,、設(shè)置工作參數(shù)(如中斷選擇,、每分鐘采樣次數(shù)、輸出因子等),。然后通道控制器對(duì)各個(gè)AD7711通道進(jìn)行操作,,如寫AD7711的控制寄存器" title="控制寄存器">控制寄存器、讀寫其校準(zhǔn)寄存器里的校正因子,、讀取每個(gè)通道的采樣數(shù)據(jù),。通道控制器的另一個(gè)功能是根據(jù)PC104主機(jī)的指示對(duì)串口E2PROM進(jìn)行讀寫操作,,并提供結(jié)果。
??? 采樣頻率有1Hz,、2Hz,、4Hz、8Hz,、16Hz,、32Hz、64Hz等,,指定每個(gè)通道每分鐘等間隔采樣次數(shù),。板卡的控制器提供數(shù)據(jù)緩沖能力,每個(gè)采樣周期都將12個(gè)通道的數(shù)據(jù)保存在緩沖器里,。在存儲(chǔ)了若干個(gè)采樣周期的數(shù)據(jù)后,,向主機(jī)發(fā)出中斷,讓PC104總線讀走數(shù)據(jù),,輸出因子則指定每次中斷間采樣周期的個(gè)數(shù),。板卡提供八個(gè)ISA中斷,主機(jī)可以選擇其中一個(gè),。
??? AD7711每次采樣16位數(shù)據(jù),,所以主機(jī)PC104總線從通道控制器讀取數(shù)據(jù)時(shí),使用16位I/O訪問(wèn),,因此/IOCS16和SBHE信號(hào)應(yīng)當(dāng)被驅(qū)動(dòng),,而IOCHRDY則被用來(lái)插入等待周期。由于通道控制器和AD7711都采用10MHz時(shí)鐘,,所以對(duì)于CPU主頻比較快的PC104總線,,其ALE、/IOW,、/IOR,、AEN等信號(hào)的有效電平脈寬是與時(shí)鐘周期有關(guān)系的,此時(shí)它們的脈寬可能比板卡的時(shí)鐘周期100ns要小,,故不能用它們直接作為時(shí)鐘使能,,而應(yīng)當(dāng)利用它們的沿來(lái)鎖存" title="鎖存">鎖存地址,并觸發(fā)得到寬脈沖信號(hào)完成使能,,鎖存數(shù)據(jù),。
??? AD7711采用自時(shí)鐘方式。SCLK提供串行時(shí)鐘輸出,;SDATA是串行數(shù)據(jù)位,;/DRDY的下降沿表明數(shù)據(jù)字準(zhǔn)備好,當(dāng)傳送完畢時(shí)恢復(fù)到高電平,;/TFS,、/RFS是發(fā)送和接收數(shù)據(jù)幀同步信號(hào),;A0是地址輸入,表明是對(duì)AD7711控制寄存器操作,,還是對(duì)AD7711數(shù)據(jù)或校準(zhǔn)寄存器操作,。
2 通道控制器的設(shè)計(jì)
2.1 邏輯框圖
??? 這里采用CPLD器件FLEX10K50QC240來(lái)實(shí)現(xiàn)通道控制器的所有邏輯。其內(nèi)部邏輯原理框圖如圖2所示,。主要的功能有:①包含有若干個(gè)控制或狀態(tài)寄存器,,主要用來(lái)設(shè)置工作參數(shù)和對(duì)AD7711通道進(jìn)行控制;②對(duì)AD7711的數(shù)字界面提供接口,;③提供足夠的數(shù)據(jù)緩沖能力,;④具有可編程的采樣時(shí)鐘發(fā)生器;⑤具有內(nèi)部RAM和控制讀取片外串口E2PROM的能力,。
?
??? 當(dāng)主機(jī)的PC104總線地址被驅(qū)動(dòng)時(shí),,則在ALE的下降沿鎖存地址。當(dāng)選中板卡地址時(shí)(這里以0x280~0x28f為例),,則利用/IOW的上升沿鎖存數(shù)據(jù),,并根據(jù)地址譯碼的不同,鎖存到不同的寄存器里,。這里有四個(gè)控制寄存器,,即通道操作寄存器(CtlReg,0x282)、板卡命令寄存器(CmdReg,0x286),、用于串口E2PROM和內(nèi)部RAM的存儲(chǔ)器操作控制寄存器(EepReg,,其中包括用于控制的16位寄存器0x288和數(shù)據(jù)寄存器0x289)及參數(shù)寄存器(ParaReg,ox280)。由于通道操作寄存器是32位,,主機(jī)對(duì)同一個(gè)口地址(如0x282)連續(xù)進(jìn)行兩個(gè)16位寫操作,,因此利用兩個(gè)連續(xù)的/IOW寫數(shù)據(jù)。通道操作寄存器低24位是寫入AD7711的數(shù)據(jù),,即24位控制字或校準(zhǔn)數(shù)據(jù),。高8位的含義如下:
???
??? R/W:0表示寫,1表示讀,。
??? F1,F0:00表示對(duì)AD7711控制寄存器操作,,11表示對(duì)AD7711校準(zhǔn)寄存器操作,01則是讀取數(shù)據(jù),。
??? CHCH3CH2CH1CH0:1xxxx表示全通道操作,0xxxx表示某單通道操作,。
??? 因?yàn)榉峙浣o每塊采集卡的I/O地址空間有限,,所以利用板卡命令寄存器的低8位作為參數(shù)數(shù)據(jù),高8位作為命令/參數(shù)類型,。為了穩(wěn)定可靠地鎖存數(shù)據(jù),,參數(shù)寄存器的使能信號(hào)由板卡命令寄存器寫選中信號(hào)延時(shí)兩個(gè)時(shí)鐘周期得到,。參數(shù)類型是指采樣速率、輸出因子,、中斷號(hào),。板卡命令寄存器高8位提供的命令有啟動(dòng)(START)、停止,、同步(驅(qū)動(dòng)AD7711的/sync線),、復(fù)位、FIFO清零等命令,。
??? 圖2中的粗線表示數(shù)據(jù)的流向,。通道主控器(ChnMaster)與AD7711數(shù)字界面接口,負(fù)責(zé)產(chǎn)生AD7711的所有讀寫時(shí)序,。一共有12個(gè)通道主控器,,可以并行地工作,由通道觸發(fā)電路(ChnTrigger)觸發(fā)和指定串/并工作方式,。它將通道操作寄存器給出的并行24位控制字或校準(zhǔn)數(shù)據(jù)(由CtlReg.F1F0決定)轉(zhuǎn)換成串行數(shù)據(jù),由SDATA發(fā)送出去,,或者讀取AD7711的數(shù)據(jù)寄存器和控制/校準(zhǔn)寄存器,將串行數(shù)據(jù)轉(zhuǎn)換成24位和16位的并行數(shù)據(jù),。當(dāng)通道主控器產(chǎn)生Rdy信號(hào)時(shí)表示接收完畢,,新的數(shù)據(jù)已經(jīng)獲得。
??? 根據(jù)通道操作寄存器的24~28位,,有全通道和單通道工作方式,。
??? 當(dāng)CH=1時(shí),為全通道的數(shù)據(jù)采集并行工作方式,。如果板卡命令START有效,,可編程時(shí)鐘發(fā)生器(ProgClkGen)則根據(jù)采樣速率輸出采樣時(shí)鐘。采樣時(shí)鐘直接或經(jīng)定時(shí)器(Timer)延時(shí)后產(chǎn)生Tpt信號(hào)輸入到通道觸發(fā)電路,,產(chǎn)生通道使能信號(hào)Ena,,從而觸發(fā)通道主控器開始工作。每個(gè)通道的通道主控器讀取AD7711的數(shù)據(jù),,當(dāng)16位數(shù)據(jù)讀完時(shí),,輸出Rdy信號(hào)??刂品峙淦鳎―irector)接收采樣時(shí)鐘和Rdy信號(hào),。當(dāng)所有通道的Rdy信號(hào)都收到時(shí),輸出通道選擇信號(hào)到4~16多路選擇器,依次選通各個(gè)通道的數(shù)據(jù),,并產(chǎn)生FIFO寫控制信號(hào),,將每個(gè)通道的數(shù)據(jù)寫入FIFO里。當(dāng)采樣次數(shù)達(dá)到輸出因子大小時(shí),,就通過(guò)中斷產(chǎn)生模塊(IntrGen)輸出一個(gè)指定的中斷脈沖,。PC104主機(jī)接收到中斷后,讀取參數(shù)寄存器(0x280)的值,,其大小即為輸出數(shù)據(jù)的個(gè)數(shù)??刂品峙淦鬟€對(duì)主機(jī)連續(xù)讀取數(shù)據(jù)的/IOR信號(hào)進(jìn)行計(jì)數(shù),,若該次中斷讀取的數(shù)據(jù)完畢,產(chǎn)生中斷處理結(jié)束信號(hào),,允許下次對(duì)FIFO進(jìn)行寫操作,。
??? 當(dāng)CH=0時(shí),由CH3CH2CH1CH0決定對(duì)哪個(gè)通道操作,,一般對(duì)AD7711讀寫控制字和校準(zhǔn)字時(shí)使用單通道的操作,。當(dāng)PC104主機(jī)寫控制寄存器時(shí),內(nèi)部產(chǎn)生一個(gè)表示寫新控制字完畢的脈沖信號(hào),,觸發(fā)通道觸發(fā)電路使之產(chǎn)生一個(gè)通道使能信號(hào)Ena,,使相應(yīng)的通道主控器開始工作。如果寫AD7711控制/校準(zhǔn)寄存器,,則通道主控器將24位數(shù)據(jù)鎖存,,進(jìn)行并-串轉(zhuǎn)換發(fā)送出去。如果讀AD7711控制/校準(zhǔn)寄存器,,則通道主控器接收串行數(shù)據(jù)并轉(zhuǎn)換成24位并行數(shù)據(jù),。通道操作寄存器的通道號(hào)決定多路選擇器的輸出,將數(shù)據(jù)鎖存到通道寄存器數(shù)據(jù)鎖存器(0x284)里,。操作完成后,,狀態(tài)寄存器的busy位為0,主機(jī)就可以從地址0x284讀取到相應(yīng)AD7711控制/校準(zhǔn)寄存器里的數(shù)據(jù),。
??? 圖2里還包括了內(nèi)部RAM和對(duì)外部串口E2PROM,。可以初始化RAM,,使CPLD在上電時(shí)就保存有各通道校準(zhǔn)參數(shù),,但是若修改固化參數(shù),必須重新編譯和對(duì)外部配置器件編程,,用戶主機(jī)不能修改,。若將參數(shù)保存在片外的串口E2PROM,則可以對(duì)其讀和寫,,以方便用戶主機(jī)根據(jù)實(shí)際情況校準(zhǔn)各個(gè)通道,,并保存新的校準(zhǔn)參數(shù)。
2.2? 通道主控器的設(shè)計(jì)
??? 通道主控器的主要結(jié)構(gòu)如圖3所示,,包括左移移位寄存器,、/RFS和/TFS生成模塊、SCLK計(jì)數(shù)器。發(fā)送時(shí),,內(nèi)部輸入數(shù)據(jù)通過(guò)LodSht鎖存,通過(guò)移位從Sdata_o輸出,;接收時(shí),,串行數(shù)據(jù)從Sdata_i輸入,通過(guò)移位得到并行數(shù)據(jù)(24位)輸出到內(nèi)部,。ClrSht和EnaSht分別是清零和使能信號(hào),。
?
2.3? FIFO和RAM
??? FIFO提供數(shù)據(jù)緩沖能力。FLEX10K50QC240能夠提供2880個(gè)邏輯單元,、10個(gè)嵌入式陣列塊(EAB),總計(jì)20480個(gè)RAM位,。根據(jù)板卡的要求,最大的輸出因子為32,,它所需的最大RAM位為32×12×16=6144,。每個(gè)EAB只能配置成256×8bit,深度為384,、數(shù)據(jù)位寬為16的FIFO需要占用4個(gè)EAB,。所以FIEX10K50QC240完全可以滿足要求,實(shí)際上它可以實(shí)現(xiàn)最大輸出因子為64所需要的FIFO緩沖,。這里使用Altera公司提供的參數(shù)化模塊LPM_FIFO來(lái)實(shí)現(xiàn)所需的模塊,。它是一個(gè)單時(shí)鐘同步FIFO,支持同時(shí)讀和寫,。
2.4? 控制分配器
??? 控制分配器主要輸出通道選擇信號(hào)和FIFO的寫控制信號(hào),。當(dāng)條件滿足時(shí),便輸出從1~12變化的通道選擇信號(hào),,同時(shí)輸出12個(gè)FIFO寫控制信號(hào),。這里采用狀態(tài)機(jī)實(shí)現(xiàn)這一過(guò)程。
2.5 可編程時(shí)鐘發(fā)生器
??? 采樣脈沖由10MHz時(shí)鐘計(jì)數(shù)分頻得到,,其頻率由主機(jī)寫到參數(shù)寄存器的參數(shù)決定,。計(jì)數(shù)器的預(yù)置值與參數(shù)存在一一對(duì)應(yīng)關(guān)系。方法一是采用譯碼器,,由于輸出的預(yù)置值是24位,,則邏輯復(fù)雜,需占用大量的邏輯單元資源,。方法二是使用查找表,,采用三段8位的ROM來(lái)實(shí)現(xiàn),僅占用若干RAM位,,簡(jiǎn)單有效,。
??? 通道控制器內(nèi)部邏輯的原理設(shè)計(jì)完成后,所有的詳細(xì)設(shè)計(jì)都采用硬件描述語(yǔ)言VHDL實(shí)現(xiàn),并在MAX+PULSII集成環(huán)境下編譯,、模擬,、綜合,最后下載到外部配置器件EPC2中,。首先規(guī)劃好每個(gè)子功能塊的模型,,子功能模型可以使用狀態(tài)模型,也可以使用時(shí)序圖進(jìn)程模型來(lái)描繪,。其次選擇適當(dāng)?shù)拿枋龇绞骄帉懘a,。編寫代碼的方式非常重要,因?yàn)閂HDL綜合工具將依據(jù)設(shè)計(jì)代碼方式映射成相應(yīng)的器件邏輯,,VHDL代碼的編寫方式將直接影響到設(shè)計(jì)的結(jié)果,。
??? 本文介紹的PC104溫度采集卡不僅完成了代碼設(shè)計(jì)和功能仿真驗(yàn)證,最后還在實(shí)際系統(tǒng)中得到成功應(yīng)用,。結(jié)果表明,,這款PC104溫度采集卡不僅設(shè)計(jì)緊湊、功能強(qiáng)大而且非常靈活,,很適合用于過(guò)程控制,、智能傳感器、便攜式工業(yè)設(shè)備,、分布式工業(yè)測(cè)量等場(chǎng)合,。其中通道控制器是采集卡的設(shè)計(jì)核心,它的詳細(xì)設(shè)計(jì)過(guò)程對(duì)其它類似的采集卡控制器設(shè)計(jì)也有一定的借鑒意義,。
參考文獻(xiàn)
1 宋萬(wàn)杰,,羅 豐,吳順君. CPLD技術(shù)及其應(yīng)用[M]. 西安:西安電子科技大學(xué)出版社, 1999
2 AD7711 DataSheet-LC2MOS Signal Condition ADC. Analog?Devices Inc. 1998
3 侯伯亨. VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)[M].? 西安: 西安電子科技大學(xué)出版社, 1999
4 SysCentreModule/SuperDx Technical Handbook. SBS?Science & Technology Co.,Ltd. 1999