劉銘洋,焦繼業(yè),呂昱青
(1.西安郵電大學(xué)專用集成電路設(shè)計(jì)工程技術(shù)中心,陜西西安 710121;2.西安郵電大學(xué)電子工程學(xué)院,陜西 西安 710121)
電容式濕度傳感器的主要工作原理是將環(huán)境濕度的變化轉(zhuǎn)化為電容變化,利用此特性將非電量轉(zhuǎn)化為電容量。通常電容式濕度傳感器的電容變化范圍較小,為皮法量級(jí),屬于微小電容變化。
國(guó)內(nèi)外學(xué)者進(jìn)行了多種電容檢測(cè)電路的研究,文獻(xiàn)[1]利用諧振法設(shè)計(jì)電容測(cè)量電路,但容易受到寄生電容、雜散電容的影響。因此該類方法很少使用于測(cè)量電容式傳感器這種微小的電容方面。文獻(xiàn)[2]利用交流電橋法設(shè)計(jì)電容測(cè)量電路,此電路雖然能夠測(cè)量差動(dòng)電容值,但是不能測(cè)量單個(gè)電容的容值,具有較大的非線性。文獻(xiàn)[3]利用電容充放電法設(shè)計(jì)電容測(cè)量電路,該電路使用的模擬開(kāi)關(guān)可能會(huì)引入電荷注入效應(yīng)和時(shí)鐘饋通效應(yīng)的問(wèn)題。文獻(xiàn)[4]利用電容-頻率法設(shè)計(jì)電容測(cè)量電路,該電路雖然抗干擾能力強(qiáng),便于長(zhǎng)距離傳輸,可移植性高,便于與其他數(shù)字電路進(jìn)行組合,但也易受電路寄生電容影響,并且需要設(shè)計(jì)電路讀取頻率的變化。
針對(duì)以上問(wèn)題,設(shè)計(jì)了一種基于FPGA 的高分辨率電容檢測(cè)電路,根據(jù)得到的實(shí)驗(yàn)數(shù)據(jù)分析誤差來(lái)源,針對(duì)寄生電容對(duì)測(cè)量結(jié)果的影響進(jìn)行了一定程度的抑制。
基于現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)的高分辨率電容檢測(cè)電路整體如圖1 所示,它主要由電容-頻率電路和時(shí)間間隔測(cè)量電路組成。其中電容轉(zhuǎn)頻率電路主要利用電容充放電特性將容值的變化轉(zhuǎn)為頻率的變化。時(shí)間間隔測(cè)量電路以Xilinx 公司的Artix-7 系列FPGA 芯片為載體,可以精確地測(cè)量由電容-頻率電路輸出的脈沖信號(hào)的持續(xù)時(shí)間。
圖1 基于FPGA的高分辨電容檢測(cè)系統(tǒng)結(jié)構(gòu)
電容轉(zhuǎn)換電路主要有電容-電壓和電容-頻率這兩種基本理念[5],電容轉(zhuǎn)電壓電路利用開(kāi)關(guān)電容電路原理,通過(guò)時(shí)分復(fù)用模擬開(kāi)關(guān),利用電荷累計(jì)和電容反饋,得到與待測(cè)電容值有關(guān)的輸出電壓[6]。
但是開(kāi)關(guān)電容電路只能在CMOS 工藝中實(shí)現(xiàn)。并且隨著模擬開(kāi)關(guān)的打開(kāi)或關(guān)斷,少量電荷可從數(shù)字控制線上通過(guò)電容耦合至模擬信號(hào)通路,即可能發(fā)生電荷注入效應(yīng),這會(huì)導(dǎo)致輸出的電壓值有一個(gè)不可估計(jì)的誤差[7]。輸出的電壓還需要模數(shù)轉(zhuǎn)換器(ADC)進(jìn)行采集,將電壓信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。若C1與C2的比值差別不明顯,則Vout的變化也不明顯,這就需要有效位數(shù)更高的ADC,從而導(dǎo)致整個(gè)電容檢測(cè)電路的難度上升。
因此,利用對(duì)待測(cè)電容的充放電特性設(shè)計(jì)電容-頻率電路,其結(jié)構(gòu)和原理如圖2 和圖3 所示。
圖2 電容-頻率電路
圖3 電容充放電原理
其工作分為兩個(gè)階段:充電階段(Charge time)和放電階段(Discharge time)[7]。
在充電階段時(shí),系統(tǒng)開(kāi)始時(shí)VCC通過(guò)R1、R2給Cx充電,OUT 輸出1,則UC從1/3VCC上升到2/3VCC所需時(shí)間為:
當(dāng)UC上升到2/3VCC時(shí),觸發(fā)RST 引腳置0,芯片內(nèi)部的放電管導(dǎo)通,Cx通過(guò)R2放電,UC下降,OUT 輸出0,則UC從2/3Vcc下降到1/3Vcc所需時(shí)間為:
當(dāng)UC點(diǎn)電壓下降到1/3VCC時(shí),繼續(xù)重復(fù)給待測(cè)電容Cx充電和放電。因此整個(gè)系統(tǒng)工作一個(gè)周期的時(shí)間應(yīng)該為:
利用電容轉(zhuǎn)頻率電路對(duì)芯片充電,通過(guò)測(cè)出電路輸出高電平的持續(xù)時(shí)間來(lái)反解出待測(cè)電容Cx,因此待測(cè)電容Cx為:
這種電容-頻率電路容易實(shí)現(xiàn),而且可以結(jié)合基于FPGA 設(shè)計(jì)的時(shí)間間隔測(cè)量電路進(jìn)行電容容值檢測(cè),該方案具有易移植性和可集成性。因此只要精準(zhǔn)測(cè)量電容-頻率電路輸出的脈沖信號(hào)持續(xù)時(shí)間就可以得到待測(cè)電容的容值,因此需要設(shè)計(jì)一個(gè)高分辨率的時(shí)間間隔測(cè)量電路。
在前期的工作中,電容-頻率電路已經(jīng)將待測(cè)電容值轉(zhuǎn)化為一個(gè)持續(xù)時(shí)間待測(cè)的脈沖信號(hào),其電路輸出的脈沖信號(hào)持續(xù)時(shí)間為微秒級(jí)。因此需要利用FPGA 設(shè)計(jì)一個(gè)時(shí)間間隔測(cè)量電路,用于將這段脈沖信號(hào)的高電平轉(zhuǎn)化為數(shù)字信號(hào)。其中最常用的方法是采用直接計(jì)數(shù)法,其電路原理是當(dāng)脈沖信號(hào)上升沿到來(lái)時(shí),由系統(tǒng)時(shí)鐘控制的計(jì)數(shù)器開(kāi)始計(jì)數(shù);當(dāng)脈沖信號(hào)的下降沿到來(lái)時(shí),計(jì)數(shù)器停止計(jì)數(shù)[8]。實(shí)際直接計(jì)數(shù)法原理如圖4所示。
圖4 實(shí)際直接計(jì)數(shù)法原理
理想中脈沖信號(hào)的持續(xù)時(shí)間為:
在實(shí)際的應(yīng)用電路中,脈沖信號(hào)不可能恰好在一個(gè)系統(tǒng)時(shí)鐘的上升沿到來(lái),如圖4 所示,因此無(wú)論使用多快的時(shí)鐘都難免存在一定的誤差,所以實(shí)際脈沖信號(hào)的高電平時(shí)間為:
雖然在FPGA 里可以用PLL 來(lái)實(shí)現(xiàn)時(shí)鐘的倍頻,從而通過(guò)提高時(shí)鐘頻率來(lái)提升脈沖信號(hào)的測(cè)量精度,進(jìn)而提升整個(gè)測(cè)量系統(tǒng)的分辨率[9]。若是分辨率想要達(dá)到納秒級(jí)甚至更高,則至少需要頻率量級(jí)為千兆赫茲的時(shí)鐘。高頻率的時(shí)鐘在翻轉(zhuǎn)的過(guò)程中,若不滿足建立時(shí)間的約束,則觸發(fā)器會(huì)產(chǎn)生“亞穩(wěn)態(tài)”狀態(tài),導(dǎo)致無(wú)法得到正確的鎖存結(jié)果[10],所以僅僅使用直接計(jì)數(shù)法的測(cè)量技術(shù)很難用于對(duì)分辨率要求高的領(lǐng)域。
抽頭延遲鏈法(Tapped Delay Line,TDL)利用器件延遲來(lái)檢測(cè)待測(cè)脈寬,從而實(shí)現(xiàn)測(cè)量分辨率的提高[11]。隨著CMOS 工藝水平的提高與半導(dǎo)體ASIC 技術(shù)的發(fā)展,門(mén)級(jí)單元延遲時(shí)間大大縮短,集成度越來(lái)越高。延遲鏈?zhǔn)怯啥鄠€(gè)具有固定延時(shí)的門(mén)級(jí)單元級(jí)聯(lián)構(gòu)成的,將延遲鏈的輸出通過(guò)D 觸發(fā)器實(shí)現(xiàn)信號(hào)鎖存,這種方式稱為抽頭延遲鏈法[12]。其原理如圖5所示。
圖5 抽頭延遲鏈法結(jié)構(gòu)
圖5 中使用若干個(gè)理論上延遲大小均為τ的延遲單元串聯(lián)為線性結(jié)構(gòu),在每個(gè)延遲單元后面引出一個(gè)輸入到D 觸發(fā)器中鎖存。Start 信號(hào)觸發(fā)后脈沖信號(hào)在延遲鏈中開(kāi)始傳播,經(jīng)過(guò)n級(jí)延遲單元并在Stop 信號(hào)邊沿觸發(fā)后,D 觸發(fā)器陣列對(duì)延遲鏈中多個(gè)數(shù)據(jù)值進(jìn)行鎖存。根據(jù)抽頭延遲鏈法的測(cè)量原理,測(cè)量的時(shí)間間隔可以表示為:
其中,K為時(shí)間間隔測(cè)量期間Start 信號(hào)在延遲鏈中鎖存的延遲單元數(shù)量。
隨著半導(dǎo)體工藝的不斷進(jìn)步,采用延遲單元構(gòu)造延遲鏈設(shè)計(jì)的TDC 電路具有皮秒級(jí)的測(cè)量分辨率,并且易于封裝到集成度高的芯片里,配合其他功能電路焊接較小面積電路板實(shí)現(xiàn)測(cè)量[12]。此外,基于延遲鏈設(shè)計(jì)的TDC 的動(dòng)態(tài)測(cè)量范圍受到延遲單元個(gè)數(shù)的約束,需要結(jié)合其他TDC 方案增加其動(dòng)態(tài)測(cè)量范圍。
文中結(jié)合直接計(jì)數(shù)法和延遲鏈法,設(shè)計(jì)了一種基于延遲鏈內(nèi)插法的時(shí)間間隔測(cè)量電路。基于延遲鏈內(nèi)插法時(shí)間間隔測(cè)量主要有三方面,其結(jié)構(gòu)如圖6所示。一是采用直接計(jì)數(shù)法設(shè)計(jì)粗測(cè)量模塊,保證所設(shè)計(jì)時(shí)間間隔測(cè)量電路的測(cè)量精度滿足應(yīng)用場(chǎng)景需求;二是結(jié)合細(xì)測(cè)量模塊,設(shè)計(jì)啟停信號(hào)提取模塊;三是采用延遲鏈設(shè)計(jì)細(xì)測(cè)量模塊,提高所設(shè)計(jì)時(shí)間間隔測(cè)量的測(cè)量精度。
圖6 時(shí)間間隔測(cè)量電路結(jié)構(gòu)
粗測(cè)量模塊是基于直接計(jì)數(shù)法設(shè)計(jì)的TDC 模塊,其作用是在最大脈沖信號(hào)的測(cè)量范圍之內(nèi),對(duì)外部輸入的待測(cè)信號(hào)Pulse 進(jìn)行分辨率為一個(gè)時(shí)鐘周期的粗略測(cè)量。其模塊本質(zhì)是以計(jì)數(shù)時(shí)鐘為時(shí)基的時(shí)序電路,也就是同步計(jì)數(shù)器。
待測(cè)信號(hào)Pulse 的高電平持續(xù)時(shí)間的粗略值可用Count×TCLK來(lái)表示,其中Count 表示同步計(jì)數(shù)器輸出的值,TCLK表示計(jì)數(shù)時(shí)鐘的時(shí)鐘周期,在這里使用外部晶振頻率為100 MHz 作為系統(tǒng)時(shí)鐘和計(jì)數(shù)時(shí)鐘。
文中設(shè)計(jì)的粗測(cè)量模塊可以測(cè)量的脈沖持續(xù)時(shí)間為0~2 s,測(cè)量分辨率為一個(gè)時(shí)鐘周期,即10 ns。
信號(hào)提取模塊的作用是提取出用來(lái)在延遲單元組成的延遲鏈進(jìn)行傳播的信號(hào)Start。信號(hào)提取電路結(jié)構(gòu)如圖7 所示。
圖7 信號(hào)提取電路結(jié)構(gòu)
可配置邏輯塊(CLB)是每個(gè)FPGA 芯片邏輯單元的基本單元,也是實(shí)現(xiàn)時(shí)序電路和組合電路的主要組成邏輯資源。并且每個(gè)CLB 都包含一對(duì)Slice,每個(gè)Slice 是FPGA 芯片內(nèi)部最小的邏輯單元,每個(gè)Slice 由四個(gè)查找表(LUT)、八個(gè)觸發(fā)器(FF)和其他一些邏輯所組成。其他邏輯中包含著一個(gè)CARRY4邏輯,稱為四位超前進(jìn)位邏輯[13]。
使用Vivado 原語(yǔ)實(shí)例化CARRY4 進(jìn)位邏輯[14]。將Start 信號(hào)作為第一級(jí)CARRY4 進(jìn)位邏輯的進(jìn)位初始端口CYINIT 的輸入,將每一級(jí)的進(jìn)位輸出的最高位CO[3]作為下一級(jí)CARRY4 進(jìn)位邏輯的進(jìn)位端口CI 的輸入,因此就可以實(shí)例化出一個(gè)以CARRY4 進(jìn)位邏輯為延遲單元組成的延遲鏈,并且該延遲鏈的級(jí)數(shù)可根據(jù)測(cè)量范圍的大小進(jìn)行調(diào)整。
在細(xì)測(cè)量模塊布局布線后,對(duì)其進(jìn)行時(shí)序仿真,仿真數(shù)據(jù)顯示,經(jīng)過(guò)一個(gè)CARRY4 進(jìn)位邏輯構(gòu)成的延遲單元所需的時(shí)間為114 ps。FPGA 采用的是外部晶振,頻率為100 MHz 的時(shí)鐘。因此整個(gè)基于FPGA 的高分辨率電容檢測(cè)電路的測(cè)量分辨率為114 ps,可將10 ns 之內(nèi)脈沖信號(hào)的高電平持續(xù)時(shí)間精準(zhǔn)測(cè)出。
在前文對(duì)CARRY4 進(jìn)位邏輯作為延遲單元進(jìn)行時(shí)序仿真時(shí),得到信號(hào)經(jīng)過(guò)一個(gè)CARRY4 所需時(shí)間為114 ps,但是仍需對(duì)延遲鏈進(jìn)行仿真測(cè)試。在進(jìn)行時(shí)序仿真時(shí),使用小于10 ns 的脈沖信號(hào)在延遲鏈中進(jìn)行傳播。得到小于10 ns 的脈沖信號(hào)通過(guò)延遲單元的個(gè)數(shù),以此驗(yàn)證信號(hào)經(jīng)過(guò)一個(gè)CARRY4 所需時(shí)間是否可以作為L(zhǎng)SB。
從表1 以及圖8 數(shù)據(jù)中可以直觀看出,待測(cè)脈沖持續(xù)時(shí)間與對(duì)應(yīng)的測(cè)量結(jié)果之間的誤差絕對(duì)值均小于114 ps,由此可以確定文中所設(shè)計(jì)的基于延遲鏈內(nèi)插法TDC 的分辨率為114 ps。對(duì)此,若應(yīng)用場(chǎng)景在系統(tǒng)設(shè)計(jì)測(cè)量分辨率的范圍內(nèi),文中所設(shè)計(jì)的基于延遲鏈內(nèi)插法TDC 能夠達(dá)到所需的性能指標(biāo)和功能需求。
表1 時(shí)序仿真測(cè)量結(jié)果
圖8 時(shí)序仿真測(cè)量誤差圖
分別用容值不同的貼片電容作為電容讀出電路結(jié)構(gòu)中的待測(cè)電容。以10 pF 容值的貼片電容開(kāi)始,每次以10 pF 遞增,分別記錄基于FPGA 頻率轉(zhuǎn)數(shù)字電路在測(cè)量10~100 pF 的貼片電容輸出數(shù)據(jù),如表2所示。
表2 電容測(cè)量結(jié)果與誤差
從表2 中不難看出,文中所設(shè)計(jì)的基于FPGA 的高分辨率電容檢測(cè)系統(tǒng)測(cè)量誤差均在0.1 pF 以下,并且平均誤差約為0.04 pF,滿足大部分微小電容的測(cè)量場(chǎng)景需求。
通過(guò)FPGA 的工程開(kāi)發(fā)流程方式,選用XC7A35TICSG324 型號(hào)的FPGA 芯片進(jìn)行綜合與布局布線。資源消耗與分辨率對(duì)比如表3 所示。其中,文獻(xiàn)[15]是基于游標(biāo)卡尺法設(shè)計(jì)的TDC,因此文中設(shè)計(jì)相比于文獻(xiàn)[15],在資源消耗上有所增加,但是文中對(duì)于脈沖信號(hào)持續(xù)時(shí)間的檢測(cè)分辨率比文獻(xiàn)[16]高,而且文中所設(shè)計(jì)的TDC 未用到PLL 資源。文獻(xiàn)[16]對(duì)于信號(hào)高電平持續(xù)時(shí)間的檢測(cè)分辨率要比文中設(shè)計(jì)高,但是其資源消耗較高。
表3 資源消耗與分辨率對(duì)比
文獻(xiàn)[15-16]均未說(shuō)明脈沖寬度檢測(cè)量程的大小,在不能保證量程的情況下對(duì)輸入的脈沖寬度進(jìn)行檢測(cè)會(huì)導(dǎo)致數(shù)據(jù)讀出錯(cuò)誤。文中所設(shè)計(jì)的基于延遲鏈內(nèi)插法TDC 可檢測(cè)2 s 之內(nèi)的信號(hào)高電平持續(xù)時(shí)間,并且在保持測(cè)量范圍的同時(shí),將測(cè)量電路的分辨率從10 ns 提高到114 ps,并且占用資源適中,適用于測(cè)量電路的集成化開(kāi)發(fā)。
文中面向微小電容的檢測(cè)提出一種基于FPGA的高分辨率電容檢測(cè)系統(tǒng)方案,測(cè)量誤差均在0.1 pF 以下,并且平均誤差約為0.04 pF。針對(duì)現(xiàn)有電路的脈沖信號(hào)時(shí)間間隔測(cè)量分辨率低的問(wèn)題,提出了一種基于延遲鏈內(nèi)插法的時(shí)間轉(zhuǎn)數(shù)字電路,在保證系統(tǒng)測(cè)量量程的同時(shí)提高了測(cè)量分辨率。對(duì)整個(gè)FPGA 系統(tǒng)進(jìn)行了時(shí)序仿真,仿真結(jié)果顯示分辨率在114 ps 之內(nèi),并且測(cè)量范圍為2 s 之內(nèi),后續(xù)可以作為芯片原型,啟動(dòng)ASIC 設(shè)計(jì)。