新聞中心

EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 一種PC104溫度采集卡的設(shè)計(jì)

一種PC104溫度采集卡的設(shè)計(jì)

作者: 時(shí)間:2011-06-08 來源:網(wǎng)絡(luò) 收藏

  因?yàn)榉峙浣o每塊采集卡的I/O地址空間有限,所以利用板卡命令寄存器的低8位作為參數(shù)數(shù)據(jù),高8位作為命令/參數(shù)類型。為了穩(wěn)定可靠地鎖存數(shù)據(jù),參數(shù)寄存器的使能信號由板卡命令寄存器寫造中信號延時(shí)兩個(gè)野兔周期得到。參數(shù)類型是指采樣速率、輸出因子、中斷號。板卡命令寄存器高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信號時(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信號輸入到通道觸發(fā)電路,產(chǎn)生通道使能信號Ena,從而觸發(fā)通道主控器開始工作。每個(gè)通道的通道主控器讀取AD7711的數(shù)據(jù),當(dāng)16位數(shù)據(jù)讀完時(shí),輸出Rdy信號??刂品峙淦鳎―irector)接收采樣時(shí)鐘和Rdy信號。當(dāng)所有通道的Rdy信號都收到時(shí),輸出通道選擇信號到4~16多路選擇器,依次選通各個(gè)通道的數(shù)據(jù),并產(chǎn)生FIFO寫控制信號,將每個(gè)通道的數(shù)據(jù)寫入FIFO里。當(dāng)采樣次數(shù)達(dá)到輸出因子大小時(shí),就通過中斷產(chǎn)生模塊(IntrGen)輸出一個(gè)指定的中斷脈沖。主機(jī)接收到中斷后,讀取參數(shù)寄存器(0x280)的值,其大小即為輸出數(shù)據(jù)的個(gè)數(shù)??刂品峙淦鬟€對主機(jī)連續(xù)讀取數(shù)據(jù)的/IOR信號進(jìn)行計(jì)數(shù),若該次中斷讀取的數(shù)據(jù)完畢,產(chǎn)生中斷處理結(jié)束信號,允許下次對FIFO進(jìn)行寫操作。
  當(dāng)CH=0時(shí),由CH3CH2CH1CH0決定對哪個(gè)通道操作,一般對AD7711讀寫控制字和校準(zhǔn)字時(shí)使用單通道的操作。當(dāng)主機(jī)寫控制寄存器時(shí),內(nèi)部產(chǎn)生一個(gè)表示寫新控制字完畢的脈沖信號,觸發(fā)通道觸發(fā)電路使之產(chǎn)生一個(gè)通道使能信號Ena,使相應(yīng)的通道主控器開始工作。如果寫AD7711控制/校準(zhǔn)寄存器,則通道主控器將24位數(shù)據(jù)鎖存,進(jìn)行并-串轉(zhuǎn)換發(fā)送出去。如果讀AD7711控制/校準(zhǔn)豁口,則通道主控器接收串行數(shù)據(jù)并轉(zhuǎn)換成24位并行數(shù)據(jù)。通道操作寄存器的通道號決定多路選擇器的輸出,將數(shù)據(jù)鎖存到通道寄存器數(shù)據(jù)鎖存器(0x284)里。操作完成后,狀態(tài)寄存器的busy位為0,主機(jī)就可以從地址0x284讀取到相應(yīng)AD7711控制/校準(zhǔn)寄存器里的數(shù)據(jù)。
  圖2里還包括了內(nèi)部RAM和對外部串口E2PROM??梢猿跏蓟疪AM,使CPLD在上電時(shí)就保存有各通道校準(zhǔn)參數(shù),但是若修改固化參數(shù),必須重新編譯和對外部配置器件編程,用戶主機(jī)不能修改。若將參數(shù)保存在片外的串口E2PROM,則可以對其讀和寫,以方便用戶主機(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ù)通過LodSht鎖存,通過移位從Sdata_o輸出;接收時(shí),串行數(shù)據(jù)從Sdata_I輸入,通過移位得到并行數(shù)據(jù)(24位)輸出到內(nèi)部。ClrSht和EnaSht分別是清零和使能信號。
  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來實(shí)現(xiàn)所需的模塊。它是一個(gè)單時(shí)鐘同步FIFO,支持同時(shí)讀和寫。
  2.4 控制分配器
  控制分配器主要輸出通道選擇信號和FIFO的寫控制信號。當(dāng)條件滿足時(shí),便輸出從1~12個(gè)FIFO寫控制信號。這里休用狀態(tài)機(jī)實(shí)現(xiàn)這一過程。
  2.5 可編程時(shí)鐘發(fā)生器
  采樣脈沖由10MHz時(shí)鐘計(jì)數(shù)分頻得到,其頻率由主機(jī)寫到參數(shù)寄存器的參數(shù)決定。計(jì)數(shù)器的預(yù)置值與參數(shù)存在一一對應(yīng)關(guān)系。方法一是采用譯碼器,由于輸出的預(yù)置值是24位,則邏輯復(fù)雜,需占用大量的邏輯單元資源?! 》椒ǘ鞘褂貌檎冶?,采用三段8位的ROM來實(shí)現(xiàn),僅占用若干RAM位,簡單有效。
  通道控制器內(nèi)部邏輯的原理設(shè)計(jì)完成后,所有的詳細(xì)設(shè)計(jì)都采用硬件描述語言VHDL實(shí)現(xiàn),并在MAX+PULSII集成環(huán)境下編譯、模擬、綜合,最后下載到外部配置器件E2中。首先規(guī)劃好每個(gè)子功能塊的模型,子功能模型可以使用狀態(tài)模型,也可以使用時(shí)序圖進(jìn)程模型來描繪。其次選擇適當(dāng)?shù)拿枋龇绞骄帉懘a。編寫代碼的方式非常重要,因?yàn)閂HDL綜合工具將依據(jù)設(shè)計(jì)代碼方式映射成相應(yīng)的器件邏輯,VHDL代碼的編寫方式將直接影響到設(shè)計(jì)的結(jié)果。
  本文介紹的PC卡不僅完成了代碼設(shè)計(jì)和功能仿真驗(yàn)證,最后還在實(shí)際系統(tǒng)中得到成功應(yīng)用。結(jié)果表明,這款PC104卡不僅設(shè)計(jì)緊湊、功能強(qiáng)大而且非常靈活,很適合用于過程控制、智能傳感器、便攜式工業(yè)設(shè)備、分布式工業(yè)測量等場合。其中通道控制器是采集核心,它的詳細(xì)設(shè)計(jì)過程對其它類似的采集卡控制器設(shè)計(jì)也有一定的借鑒意義。

本文引用地址:http://www.butianyuan.cn/article/194906.htm


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉