<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 一種16位高速數(shù)模轉(zhuǎn)換器(DAC)的設(shè)計與實現(xiàn)

          一種16位高速數(shù)模轉(zhuǎn)換器(DAC)的設(shè)計與實現(xiàn)

          作者:孔瀛 王宗民 許軍 時間:2013-12-26 來源:電子產(chǎn)品世界 收藏
          編者按:基于Mixed-Signal CMOS工藝,本文設(shè)計了一種采用分段式電流舵結(jié)構(gòu)的高速高精度DAC。同時在該DAC的內(nèi)部電路中采用了一種新的電流校準(zhǔn)技術(shù),既保證了DAC電路的高精度,又減小了梯度誤差的影響。電路流片后的實際測試結(jié)果表明,該16位DAC在400MSPS轉(zhuǎn)換速率下仍具有良好的性能。

            引言

          本文引用地址:http://www.ex-cimer.com/article/203231.htm

            隨著微電子技術(shù)的快速發(fā)展,數(shù)模轉(zhuǎn)換器()作為連接數(shù)字世界和模擬信號之間的橋梁正發(fā)揮著越來越重要的作用,而且現(xiàn)代計算機(jī)、無線通訊等信息產(chǎn)業(yè)的不斷進(jìn)步,對的速度、精度等性能指標(biāo)也不斷提出更高的要求。

            為滿足現(xiàn)代航天高科技產(chǎn)業(yè)對高速高精度芯片的需求,本文基于Mixed-Signal(混合信號)工藝技術(shù),設(shè)計了一個采用分段式電流舵結(jié)構(gòu)的16位400MSPS的D/A轉(zhuǎn)換器,論文第二節(jié)在理論分析和電路設(shè)計基礎(chǔ)上確定了該DAC的系統(tǒng)結(jié)構(gòu)及工作原理,第三節(jié)給出了電路中采用的技術(shù)及其設(shè)計實現(xiàn),流片后電路的實測結(jié)果在第四節(jié)予以說明,最后給出論文研究工作的簡要總結(jié)。

            16位400M DAC的系統(tǒng)構(gòu)架

            在目前常用的DAC結(jié)構(gòu)中普遍采用的是電流輸出型DAC,這是因為電流輸出有著速度快、電源利用率高、應(yīng)用廣泛、輸出范圍寬等特點,使得該結(jié)構(gòu)的DAC適合于高速高精度的設(shè)計要求。

            要實現(xiàn)高速高分辨率的DAC,通常采用分段電流舵的結(jié)構(gòu),即溫度計碼和二進(jìn)制碼相結(jié)合的控制結(jié)構(gòu)。溫度計碼具有優(yōu)良的單調(diào)性但其復(fù)雜度、面積和功耗會隨著位數(shù)的增加而急劇增大,二進(jìn)制碼具有結(jié)構(gòu)簡單的特點但會影響DAC單調(diào)性和動態(tài)性能,所以需要在面積、功耗、復(fù)雜度和性能之間進(jìn)行折衷。本論文所采用的分段電流舵DAC電路結(jié)構(gòu)[1]也是基于面積[2]開關(guān)布線復(fù)雜性與電路性能之間的考慮,我們首先利用MATLAB仿真工具仔細(xì)研究了溫度計碼和二進(jìn)制碼對整個電路系統(tǒng)性能的影響,并確定了整個DAC轉(zhuǎn)換器的分段比例,即在本論文所設(shè)計的DAC電路中采用了“7+4+5”的分段結(jié)構(gòu),其中高7位和中間4位分別采用單位結(jié)構(gòu),而低5位則采用二進(jìn)制加權(quán)結(jié)構(gòu)。

            圖1所示為基于上述分段電流舵而設(shè)計的16位400M DAC的系統(tǒng)構(gòu)架框圖。該電路主要由LVDS模塊、行譯碼與列譯碼模塊、帶隙基準(zhǔn)源模塊、校準(zhǔn)模塊、偏置電路、時鐘分配驅(qū)動模塊以及模擬開關(guān)與電流源陣列等部分組成。

            在圖1中,Bit15~Bit0首先通過LVDS接收器[3]轉(zhuǎn)化成標(biāo)準(zhǔn)的信號,然后將其中的高7位二進(jìn)制信號Bit15-Bit9通過譯碼器生成127路溫度計碼信號經(jīng)控制線去控制電流源;中間4位二進(jìn)制信號Bit8-Bit5則通過譯碼器生成15路溫度計碼信號去控制相應(yīng)電流源陣列;低5位二進(jìn)制信號Bit4~Bit0則直接通過同步鎖存邏輯(DFF)去控制5個二進(jìn)制電流源。

            帶隙基準(zhǔn)源模塊為整個電路系統(tǒng)提供了一個幾乎與環(huán)境溫度和電源電壓無關(guān)的精準(zhǔn)電壓源。為了更好地與外部數(shù)據(jù)進(jìn)行同步且確保轉(zhuǎn)換器具有16bit的精度,電路設(shè)計中還采用了電流校準(zhǔn)模塊,利用電流校準(zhǔn)模塊對高7位二進(jìn)制信號Bit15-Bit9所控制的127個單位電流源進(jìn)行必要的校準(zhǔn)以確保其輸出電流的準(zhǔn)確性。

            如圖1所示,電路輸出電流的總量是由兩部分相加而成,即單位電流源和五個二進(jìn)制加權(quán)電流相加組成。若最低位電流源的輸出電流為ILSB,則第二、三、四、五位的輸出電流依次為:2ILSB、4ILSB、8ILSB、16ILSB,即每高一位的電流源輸出電流分別為低一位的2倍,因此整個DAC低五位的總電流輸出為31ILSB,而高7位所控制的127個電流源中的每個電流源的輸出電流由下式給出:

            Iunit=512ILSB?????? (1)

            由此可得到該DAC能夠輸出的總電流為:

            Itotal=ILSB+2ILSB+4ILSB+8ILSB+16ILSB+32ILSB+???+127×512ILSB=65535 ILSB???? (2)

            在圖1中,IoutA和IoutB分別為DAC的兩個互補(bǔ)電流輸出端,當(dāng)輸入的16位數(shù)字碼全為0時,IoutA輸出為0,而互補(bǔ)端IoutB輸出為滿量程電流Itotal,當(dāng)16位輸入數(shù)字碼全為1時,IoutA為滿量程輸出,而互補(bǔ)端IoutB輸出為0,通過公式(3)和(4)我們可以求出不同輸入數(shù)字碼時所對應(yīng)的模擬電流輸出值。

            IoutA=(DAC INPUT CODE/65536)×Itotal?????? (3)
            IoutB=(65535-DAC INPUT CODE/65536)×Itotal?????? (4)

            在上式中,DAC INPUT CODE=0~65535。ILSB和Iunit的大小通常由基準(zhǔn)電壓源和電流輸出管的尺寸來共同決定。如果把DAC的電流輸出端接電阻負(fù)載,那么可以直接將電流轉(zhuǎn)換成電壓輸出,由式(5)和(6)可以得到互補(bǔ)端的電壓輸出值。

            VOUTA=IoutA×RLOAD (5)
            VOUTB=IoutB×RLOAD (6)

            最后總的差分輸出電壓為:

            VDIFF=(IoutA-IoutB)×RLOAD (7)

            由式(7)可以看出,采用差分電流輸出時,當(dāng)把差分變單端應(yīng)用時,可使輸出信號的幅度增加一倍,同時差分輸出可提高DAC轉(zhuǎn)換速度和動態(tài)特性。

            校準(zhǔn)電路設(shè)計

            長期以來,由于工藝中存在匹配誤差,完全依靠工藝本征匹配實現(xiàn)電流型CMOS DAC將很難超過10位精度,同時DAC的動態(tài)特性也會隨著時鐘頻率和信號頻率的增加而變差[4][5]。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();