電流舵DAC 學習過程,發部落格來記錄科研

2021-07-25 15:59:12 字數 2512 閱讀 6442

都知道dac,即數碼訊號轉化為模擬訊號的乙個裝置。看了許多文章,介紹dac無非是從dac分類,效能引數,一些基本結構介紹等來介紹dac,但是真正開始了解dac的人都覺得了解這些都比較疏遠,剛開始學並不能輕易上手,我自己覺得這些文章都寫的很類似,並不能學得紮實,學完基本就忘了,所以,自己總結一些自己學的基本知識,概括起來,以來是避免自己忘了,二來總結出來的東西也比較容易上手。

今天描述dac幾個模組的簡單組成,具體分析以後會慢慢接觸

電流舵結構 dac 由模擬部分和數字部分構成。模擬部分包括帶隙基準電壓源電壓轉電流電路寬擺幅高輸出阻抗電流源偏置電路電流源陣列差分開關陣列。數字部分包括溫度計解碼電路鎖存器

電流艙型dac是通過輸入數碼訊號序列來控制不同位權電流源產生的電流的輸出將數碼訊號轉換為模擬訊號,所以為了產生對應數碼訊號,就需要有產生不同權重電流的電流源。電流舵的電流源一般由cascode的差分形式產生的電流(pnp管組成,空穴速率高於電子),如下圖:

通過調節w/l可以調節輸出電流的大小,比如第一位權重碼電流為1lsb,其寬長比為w/l,第二位權重碼電流為2lsb,則其寬長比為2w/l,以此類推。則將所有電流單元輸出併聯,則可累加所有電流,實現與輸入數字碼對應相同的電流。

然而,由於一些誤差原因,當這種二進位制權重的電流很大時,就會產生很大的靜態誤差,為了減小誤差,高權重的輸入碼不能採用這種寬長比依次增大的模式,所以產生了溫度計碼控制,,所謂溫度計碼控制,就是所有的電流單元產生的電流是相同的,然後通過將高位的二進位製碼驅動對應十進位制個數的電流單元,這樣可以減少誤差。

所以一般dac都有高位msb和低位lsb的電流單元,高位電流單元的電流是相同的,低位電流單元是不同的,高位的電流單元是低位電流最大電流的2倍。

上面描述了基本電流源陣列的基本組成,

為了產生電流穩定,且不受外界影響的電流,就需要穩定的vbp和vbp_c(上圖),所以需要帶隙基準電壓源,以及電壓轉電流電路。

利用三極體的基源極vbe電壓具有負的溫度係數,以及不同電流大小的基極發射極電壓之差具有正的溫度係數,

通過調整 r2、r3的比值以及電晶體 q2的數量就可以使輸出電壓具有零溫度係數。

電壓轉電流電路:

運算放大器的作用是提高轉換精度。

寬擺幅高輸出阻抗電流源偏置電路:

為了使輸出擺幅足夠大提供更大的電流變化幅度,而且輸出電壓不能隨外阻變化過大,需要有乙個寬擺幅高輸出阻抗的偏置電路。具體電路以後再詳細學習分析。

差分開關陣列

電流源是通過電流鏡與偏置電路組成的電路,m1管與m2管組成差分陣列,通過控制管子的差分開關實現輸出電流的有效控制。

接下來是數字部分:

溫度計解碼電路:

把高位的二進位制輸入碼譯製成溫度計碼的電路,一般可以通過卡諾圖來實現數位電路的搭建,但其過程繁瑣,一般可以總結一些規律,比如下圖:

有時候為了減少閘電路的管子,可以重複利用一些管子,具體的一些方法暫時不做解釋。

鎖存器:

目的是數字輸入碼同時的輸入給差分管的輸入端。

首先要注意的點是因為高位數字解碼器的與低位的二進位製碼的延遲是不一樣的,為了保證鎖存器的輸出位是一致的,需要保證兩延遲最大不能超過鎖存器的時鐘間隔。

其次是為了給差分管進行控制,需要有乙個合適的調製電壓提供給差分管的柵極,所以還需要有乙個限幅電路,同時需要保證調製期間,差分管不能同時關斷。所以需要如下圖的設計:

再加上限幅電路,整體電路如下:

最後乙個總結的框圖:

以上總結是個人見解,初學者,還望指教。

學習筆記 DAC基礎內容及常見問題

關注 星標公眾 dac,digital to analog converter 數模轉換器 da轉換和ad轉換有著同樣重要的作用,在許多場合都能看到dac的應用。da轉換器是把數字量轉變成模擬量的器件,按模擬量輸出型別通常分為 電流和電壓輸出型別。常見的dac是電壓輸出型,在stm32中整合的dac...

深度學習過擬合

過擬合是深度學習中十分常見的問題,乙個模型如果過擬合了就無法很好的適用於實際的業務場景中。防止過擬合的方法 1 引入正則化 2 dropout 3 提前終止訓練 4 增加樣本量 下面一一作出詳細的介紹 模型過擬合極有可能是模型過於複雜造成的。模型在訓練的時候,在對損失函式進行最小化的同時,也需要對引...

微控制器小白學習之路(四十) DAC轉換編碼

目標 da轉換編碼 狀態圖count和timer1在同乙個中斷中一起自加,數值相同。count加到100後變為0並且value自加1。timer1在自加到1000後變成0,這時候一週期已經結束了,但此時的value才10。想要value到1000,那麼timer1起碼要到1000 100才行。就是v...