胡子陽,譚延軍
(中國電子科技集團公司第四十七研究所,沈陽110032)
一款帶模數(shù)轉(zhuǎn)換的單片機設計
胡子陽,譚延軍
(中國電子科技集團公司第四十七研究所,沈陽110032)
隨著電路系統(tǒng)體積的不斷縮小,應用上希望在單個芯片上嵌入更多的電路功能。而模數(shù)轉(zhuǎn)換器和單片機的組合,能夠從相當程度上滿足應用需求,并有效縮小電路板的體積和重量。研究如何在MCS51單片機的基礎(chǔ)上,嵌入12位SAR型模數(shù)轉(zhuǎn)換器。嵌入的難點在于單片機本身工作在較高的頻率下,自然會對A/D的轉(zhuǎn)換精度造成一定影響,并且CMOS的工藝精度只能達到10位精度的匹配效果,要想達到12位A/D,必須進行修調(diào)設計。通過對單片機內(nèi)部的研究,提出了從SFR區(qū)嵌入A/D控制功能,并利用上電復位的時間,從flash加載修調(diào)碼至A/D轉(zhuǎn)換器。結(jié)果顯示,12位模數(shù)轉(zhuǎn)換器能夠有效嵌入單片機并達到預計精度。
單片機;CMOS集成電路;模數(shù)轉(zhuǎn)換器;逐次逼近;修調(diào);片上系統(tǒng)
MCS51單片機是傳統(tǒng)單片機的主流架構(gòu),一直以來被廣泛應用。與之相應的是,在要求低功耗等領(lǐng)域,逐次逼近型模數(shù)轉(zhuǎn)換器也有廣泛應用。并且在很多場合,比如溫度和壓力檢測等領(lǐng)域,單片機往往搭配A/D共同使用,這樣就形成了單片機和模數(shù)轉(zhuǎn)換器相結(jié)合的需求[1]。
在工藝制造角度上,單片機采用帶有flash的CMOS工藝,而A/D轉(zhuǎn)換器也可以采用CMOS設計制造,因此單片機和A/D轉(zhuǎn)換器可以在工藝上同時實現(xiàn)。
MCS51單片機有16位的flash和RAM尋址空間,其中64K的外RAM尋址空間一般用于單片機和外設進行配合及擴展。在存儲器內(nèi)部總線上,單片機包含256字節(jié)的尋址空間(如圖1所示),這一空間的特點就是直接連接在內(nèi)部總線上,所以操作速度快。單片機的低128字節(jié)尋址空間被用作程序區(qū)空間,所以這一空間(包含位尋址空間)對于用戶來講完全開放,因此無法在此空間進行嵌入。單片機的高128位直接尋址空間,用于存放特殊功能寄存器,又叫特殊功能寄存器區(qū)(SFR)。比如累加器和P1~P3口等寄存器,都通過直接尋址在此空間找到對應的寄存器。SFR區(qū)可以被直接尋址,并且空間沒有填滿,所以要想通過單片機擴展A/D轉(zhuǎn)換器,通過SFR擴展是最佳選擇[2]。
A/D轉(zhuǎn)換器除了指定嵌入的特殊功能寄存器外,還必須嵌入中斷系統(tǒng),這樣才能保證A/D轉(zhuǎn)換完成的信息,通過中斷系統(tǒng)通知單片機[3]。設計中采用了0E6H和0E7H兩個直接尋址字節(jié)來控制A/D采樣,并得到A/D輸出。當0E6H的bit7位被寫1后,A/D即開始執(zhí)行一條轉(zhuǎn)換指令,轉(zhuǎn)換完成后,會觸發(fā)43H處的中斷,并以0E6H的bit6位置1,來標識轉(zhuǎn)換結(jié)束,并且中斷已經(jīng)觸發(fā)。當0E6H的bit6位被寫0后,A/D可以開始下一次轉(zhuǎn)換過程。轉(zhuǎn)換的結(jié)果,高4位占據(jù)0E6H的bit3~bit0,低8位占據(jù)0E7H。

圖1 MCS51單片機的地址空間分配
模數(shù)轉(zhuǎn)換器可以按結(jié)構(gòu)分成逐次逼近型、Pipeline型和Delta-Sigma型。一般來講,逐次逼近型速度較低,轉(zhuǎn)換精度最高達到18位,被廣泛應用于低功耗、便攜式領(lǐng)域;Pipe-line型面向高速領(lǐng)域,此領(lǐng)域大多數(shù)配置DSP等高速處理器形成處理系統(tǒng);Delta-Sigma型在轉(zhuǎn)換過程中需要多次采樣,因此面向?qū)S妙I(lǐng)域,通過數(shù)字濾波算法來實現(xiàn)高精度,有的可達32位精度,也可以和單片機相結(jié)合[4]。
逐次逼近型A/D轉(zhuǎn)換器功耗很低而且通用型強,因此首先在嵌入式單片機領(lǐng)域獲得了廣泛引用。對于SAR架構(gòu)的A/D轉(zhuǎn)換器,可以選擇電容架構(gòu)和電阻架構(gòu)。因為集成電路工藝的精度原因,目前無論是電容匹配能力還是電阻匹配能力,都只能達到10位精度,所以選擇電容結(jié)構(gòu)的模數(shù)轉(zhuǎn)換器。以方便后期的修調(diào)操作。
傳統(tǒng)意義上采用開關(guān)電容實現(xiàn)逐次逼近式模數(shù)轉(zhuǎn)換,主要依據(jù)開關(guān)電容的電荷守恒原理,對電容充電及電荷再分布兩個工作階段,對模擬量進行逐次比較,最終實現(xiàn)數(shù)據(jù)轉(zhuǎn)換。傳統(tǒng)的逐次逼近系統(tǒng)的簡化模型如圖2所示[5]。
由圖2可知,若要實現(xiàn)12位逐次逼近型ADC,需要對電容進行2的冪次方加權(quán)排列,以最低位為單位標準電容,那么最高則需要4096個單位電容,這就存在一種矛盾。若對單位電容賦值太低,電路無法避免噪聲和寄生效應帶來的影響,最終影響ADC的線性度,無法實現(xiàn)12位分辨精度;若對單位電容賦值太高,整體電容總值過大,輸入源難以驅(qū)動,無法保證轉(zhuǎn)換速度。因此,傳統(tǒng)的開關(guān)電容排列不適合應用到8位以上的ADC中,而且這種排列占據(jù)了大量的芯片面積,并不符合現(xiàn)代芯片設計高集成度、小型化的發(fā)展趨勢。

圖2 傳統(tǒng)的逐次逼近系統(tǒng)簡化模型
考慮到盡可能的縮小芯片面積,降低成本,提高芯片性能,采用另一種開關(guān)電容排列方式來實現(xiàn)逐次逼近轉(zhuǎn)換,其簡化模型如圖3所示。
由圖3可知,開關(guān)電容分為兩個陣列,左面陣列實現(xiàn)高5位逐次逼近,右面陣列實現(xiàn)低7位逐次逼近,兩個陣列通過Cc電容串接,其值主要由高陣列最低位電容、低陣列最低位電容及低陣列寄生電容決定。工作原理與傳統(tǒng)的開關(guān)電容陣列一樣。充電階段,輸入模擬量向電容整體充電,ST開關(guān)閉合,Sc開關(guān)閉合,符合采樣時間要求;保持階段,Sc開關(guān)打開,ST仍閉合;再分布階段,ST開關(guān)打開,電路開始將采集到的模擬量與電容提供的基準電壓逐次比較,最終轉(zhuǎn)換成數(shù)字碼。通過兩種排列方式比較可以明顯看出,圖4采用更少的開關(guān)電容實現(xiàn)12位逐次逼近的功能,大大縮小了芯片面積,是一種可實現(xiàn)的架構(gòu)。

圖3 逐次逼近系統(tǒng)簡化模型

圖4 帶修調(diào)結(jié)構(gòu)的逐次逼近型A/D結(jié)構(gòu)
電容匹配誤差是限制ADC精度的關(guān)鍵因素。以現(xiàn)階段工藝水平為基準,模數(shù)轉(zhuǎn)換器僅能實現(xiàn)10位分辨率,若對轉(zhuǎn)換速率有更高的要求,需要用更小的單位電容,這個值可能還要進行折衷。在實現(xiàn)10位以上逐次逼近型ADC的時候,需要同時設計出一套修調(diào)電路,來滿足ADC的精度要求。對ADC精度修調(diào)方式,通常采用附加一定量的電容或電阻陣列,輸入修調(diào)碼,達到理想設計的分辨精度。
帶修調(diào)電路的逐次逼近型模型如圖4所示,電路中主要對串聯(lián)耦合電容誤差、高4位電容誤差、失調(diào)誤差及增益誤差進行修調(diào)[6]。
模型包括12位主電容陣列,4個高4位電容修調(diào)陣列(C12~C9)。前2位由8位電容組成的陣列進行修調(diào),后2位由7位電容組成的陣列進行修調(diào),修調(diào)范圍±8LSB;1個耦合電容修調(diào)陣列CP,由7位電容組成的陣列進行修調(diào),修調(diào)范圍±2LSB;1個失調(diào)誤差陣列OS,由6位電容組成的陣列進行修調(diào),修調(diào)范圍±4LSB;1個增益誤差陣列GAIN,由8位電容組成的陣列進行修調(diào),修調(diào)范圍±8LSB。
傳統(tǒng)A/D采用熔絲燒結(jié)實現(xiàn)固定存儲器來存儲修調(diào)碼。由于單片機本身帶有flash存儲功能,而且flash里面有512字節(jié)的存儲空間可以用于存儲出廠信息,因此可以用此flash空間,在上電過程中進行加載,以便為A/D電路配置12位精度范圍[7]。
最終單片機嵌入A/D的總體方案如圖5所示。通過內(nèi)部總線,連接SFR區(qū),并設置單片機的兩個SFR寄存器(0E6H和0E7H),通過這兩個寄存器和A/D轉(zhuǎn)換器的控制端相連,實現(xiàn)單片機對A/D的控制。

圖5 單片機嵌入A/D的總體方案
由于A/D在工藝過程中,不同的位置會出現(xiàn)不同的電容匹配。所以對于每一個A/D,都需要單片機首先給出不同的修調(diào)碼修調(diào),才能達到精度要求。單片機在出廠前,首先要進行修調(diào)碼的測試、計算和寫入。在出廠后,單片機在上電復位期間,要從flash中調(diào)出8個字節(jié),并依次寫入修調(diào)陣列,修調(diào)陣列能夠保證把INL、DNL、offset和Gain error的失配降到最低,使之達到12位的線性度。
單片機采用GSMC 0.18μm帶flash的工藝設計加工,整個芯片達到了預期目標。A/D修調(diào)前的INL曲線如圖6所示,可以看出電容失配造成的影響,尤其是高位電容失配的影響很大。經(jīng)過一階修調(diào)算法進行的修調(diào)結(jié)果如圖7所示,雖然修調(diào)匹配了電容誤差,但是在2048處形成了較明顯的拐點,證明一階修調(diào)雖然能夠把INL曲線修至1LSB以內(nèi),但仍有明顯的積分非線性誤差存在。經(jīng)過二階修調(diào)算法進行的修調(diào)結(jié)果如圖8所示,經(jīng)過二階修調(diào),通過修調(diào)電容的整體彌補,使得INL曲線接近理想狀態(tài)[8]。

圖6 未經(jīng)修調(diào)的INL曲線

圖7 采用一階修調(diào)算法得到的INL修調(diào)曲線
逐次逼近型A/D和單片機的結(jié)合,目前能夠見到的主流器件,基本上只達到12位的水平。但是從本文的方法上看,該架構(gòu)也可實現(xiàn)14位A/D的水平。但是如果希望達到16位的嵌入水平,就需要A/D轉(zhuǎn)換器采用新的架構(gòu)調(diào)節(jié)方式。單片機不僅限于MCS51單片機,對于32位的ARM單片機,也可采用同樣的方法嵌入A/D轉(zhuǎn)換器。

圖8 采用二階修調(diào)算法得到的INL曲線
[1] 王劍峰,吳龍勝,許軍,等.航天用SoC發(fā)展思考[J].航天標準化,2011(1):31-34. WANG Jianfeng,WU Longsheng,XU Jun,et al.Considger about Spaceflight SOC Development[J].Spaceflight Standardization,2011(1):31-34.
[2] 楊明莉.基于單片機的壓電加速度傳感器低頻信號采集系統(tǒng)的設計[D].合肥:安徽大學,2007. YANG Mingli.A Design of The Piezoelectric Accelerometer’s Low-Frequency Signal Gathering System Based on MCU[D].Hefei:Anhui University,2007.
[3] Atmel corporation.AT89S52 DATA SHEET,revision D[Z].Atmel corporation,2008.
[4] 陳娟娟,鐘德剛,徐靜平.用于便攜式設備的12位低功耗SAR A/D轉(zhuǎn)換器[J].微電子學,200828(3):401-403. CHEN Juanjuan,ZHONG Degang,XU Jingping.A Low-Power 12-Bit SAR A/D Converter for Portable Devices[J].Microelectronics.2008,28(3):401-403.
[5] 張詩娟.12位逐次逼近型A/D轉(zhuǎn)換器的設計[D].武漢:華中科技大學,2005. Zhang Shijuan.Design of a 12-bit Successive Approximation Analog-to-Digital Converter[D].WuHan:Huazhong University of Science&Technology,2005.
[6] 周文婷,李章全.SAR A/D轉(zhuǎn)換器中電容失配問題的分析[J].微電子學,2007,37(2):199-203. ZHOUWenting,LEE Changchuan.Analysis of Capacitor Mismatch Effect in SAR A/D Converter[J].Microelectronics,2007,37(2):199-203.
[7] 萬輝,馬丹,張靖,等.16位逐次逼近A/D轉(zhuǎn)換器熔絲誤差修調(diào)技術(shù)[J].微電子學,2011,41(3):363-366. WAN Hui,MA Dan,ZHANG Jing,et al.Fuse-Error Correction for 16-Bit Successive Approximation Register A/D Converter[J].Microelectronics,2011,41(3):363-366.
[8] 羅業(yè)平.A/D轉(zhuǎn)換芯片測試方法及應用[J].信息與電子工程,2005,3(2):123-125. LUO Ye-ping.Testing Method and Application of A/D Converters[J].INFORMATION AND ELECTRONIC ENGINEERING,2005,3(2):123-125.
A Microcontroller W ith On-chip A/D Converter
Hu Ziyang,Tian Yanjun
(The47th Research Institute of China Electronics Technology Group Corporation,Shenyang 110032,China)
With the size reduction in electronic system,the requirement ofmore functions integrated into a single chip is produced.So analog to digital converter combining with microcontroller will be used in more applications,such as reducing the size and weight.A way to embed a 12 bit SAR A/D converter into MCS51 microcontroller is discussed.The difficulties are made from the Microcontroller's working speed and CMOS process precision.The designmust be fixable if12 bit precision needs to be achieved. A/D control circuit is embedded in SFR,and the fixed code is transferred from flash by means of reset timing.Test result shows that 12 bit A/D converter can be embedded into microcontroller and get the aimed precision.
Microcontroller;CMOS;A/D converter;SAR;Fix;SOC
10.3969/j.issn.1002-2279.2016.06.002
TN47
B
1002-2279(2016)06-0005-04
胡子陽(1978-),男,遼寧省鐵嶺市人,高級工程師,碩士,主研方向:集成電路設計與應用。
2016-01-25