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