串行數據轉換器接口知識問答
問:我現在需要安裝節(jié)省空間的數據轉換器,認為串行式轉換器比較適合。為了選擇 和使用這種轉換器,請問我需要了解些什么?
本文引用地址:http://www.ex-cimer.com/article/155482.htm答:首先我們看一下串行接口的工作原理,然后再將它與并行接口相比較,從而可以消 除對串行接口數據轉換的神秘感。
圖101示出了一種8通道多路轉換12位串行式模數轉換器(ADC) AD7890與一種帶串行接 口的 數字信號處理器(DSP) ADSP2105接線圖。圖中還示出了使用DSP與ADC通信的時序圖。通過 一根線以串行數據流的形式傳輸12位轉換結果。串行數據流還包括3位地址,用來表示AD789 0當前被選中的多路轉換器中的輸入通道。為了區(qū)分不同組的數據串行位流,必須提供時鐘 信 號(SCLK),通常由DSP提供。有時ADC作為輸出信號提供這種時鐘信號。DSP通常(但不總是) 提供一個附加的成幀脈沖,它要么在通信開始第一個周期有效,要么在通信期間(例如TFS/R FS)有效。
圖101 串行式ADC與DSP之間的接線圖
在這個實例中,利用DSP的串行端口來設置ADC內部5位寄存器。這個寄存器的位控功能包 括:選擇通道、設定ADC處于電源休眠方式和起動轉換。顯然,這種情況下串行接口必 須雙向工作。
從另一方面來說,并行式ADC的數據總線直接(或可能通過緩沖器)與帶接口的處理器的 數 據總線相連。圖102示出了并行式ADC AD7892與ADSP2101的接線圖。當AD7892完成一次 轉換后,中斷該
圖102 并行式ADC AD7892與ADSP2001接線圖
DSP,DSP響應后,按照ADC的譯碼內存地址讀一次數據。串行式數據轉換器與并行式數據轉換器之間的重要差別在于需要的連接線數。從節(jié)省 空間的角度來看, 串行式數據轉換器有明顯的優(yōu)點。因為它減少了器件的引腳數目,從而有可能做成8腳DIP或 SO封裝的12位串行式ADC或DAC。更重要的是它節(jié)省了印制線路板的空間, 因為串行接口只需連接幾根線條。
問:我的數模轉換器(DAC)必須離中心處理器及其它處理器距離很遠。我最 好采用何種方法?
答:首先你必須確定是使用串行式DAC還是并行式DAC。當使用并行式DAC時,你應該確 定每個DAC進入存儲器I/O端口的地址,如圖10.3所示。然后你應該對每個DAC編程,將寫命 令直 接寫入適當的I/O口地址。但這種結構具有明顯的缺點。它不但需要并行數據總線,而且到 所有遠處的端口都需要一些控制信號線。然而串行接口只需要為數不多的兩條
圖103 多個并行式DAC接線圖
線,顯然它比并行接口經濟得多。 一般說來,雖然串行式數據轉換器不能對處理器的存儲器尋址,但是可以把許多串行DA C接到處理器的串行端口上,然后利用處理器的其它端口產生片選信號來逐一地啟動每個DAC 。片選信號雖然僅需要一條線就能將每個DAC都接到串行接口上,但是接到處理器上傳輸 片選信號線的數目可能受到限制。
解決這個問題的一種方法是采用菊花鏈(daisychained)式結構,將所用的串行式DAC 都連在一起。圖10.4示 出了如何將多個DAC連接到一個I/O端口上。每個DAC都有一個串行數據輸出(SDO)腳,將第一 個DAC(即DAC0)的SDO腳接到本菊花鏈中的下一個DAC(即DAC1)的串行數據輸入(SDI)腳。LDAC 和 SCLK以并行方式被送到本菊花鏈中的所有DAC。因為在時鐘作用下送入SDI的數據最終都要到 達SDO(N個時鐘周期之后),所以一個I/O端口能夠尋址多個DAC。但是這個I/O端口必須輸 出很長的數據流(每個DAC占的N位乘以本菊花鏈中DAC的數目)。這種結構的最大優(yōu)點是不需 要對尋址的DAC進行譯碼。所有的DAC在相同的I/O端口上都有效。菊花鏈式結構的主要缺點 是可達性(accessibility)或等待時間長。即使要改變某一個DAC的狀態(tài),處理器也必須從該 I/O端口輸出全部數據流。
圖104 多個串行式DAC菊花鏈式結構
問:既然串行式數據轉換器節(jié)省許多空間和線路,那么為什么不在每個要求節(jié)省空間的 應用場合都使用它們呢?
答:串行式數據轉換器的主要缺點是為了節(jié)省空間從而降低了速度。例如,對并行DAC 編程,只用一個寫脈沖便可以把數據總線上的數據在時鐘作用下送入DAC。然而,如果要把 數據寫入串行DAC,那么DAC的位數必須等于相繼的時鐘脈沖數(N位DAC需要N個時鐘脈沖), 每個時鐘脈沖后還要跟隨一個裝入脈沖。所以這種處理器的I/O端口與串行數據轉換器通信 要花費相當多的時間。因此吞吐率高于500 ksps 的串行式DAC平常是少見的。
問:我的8位處理器沒有串行接口,有什么辦法可以把一個12位串行 式ADC(例如AD7993)接到該8位處理器總線上?
答:當然我可以使用外部移位寄存器,將數據用串行(和異步)方式裝入移位寄存器,然 后在時鐘作用下進入處理器的并行端口。但是,如果這個問題的著眼點是“沒有外部邏輯” ,那么可以把這個串行式ADC看作1位并行式ADC來連接。將該ADC的SDATA腳接到該處理器 數據總線的一條數據線上,這里接到數據線D0。如圖10.5所示。使用某種譯碼邏輯電路 , 能使 該ADC的口地址看作是該處理器的一個存儲器地址,以便用12個逐次讀命令讀取ADC的轉換結 果。然后用附加的軟件命令把12個字節(jié)的LSB組合起來,拼成一個12位的并行字。
圖105 沒有串行口的8位處理器與串行式ADC的接口
上面介紹的方法有時稱作“位拆裂”(bit banging)。從軟件的觀點來看,這種方法是很 不經濟的,但是當處理器的運行速度遠遠高于ADC的轉換速度時,這種方法可以采用。
問:在前面的例子中,利用了處理器的寫信號門控方式來 起動AD7893轉換。請問這種方法是否有問題?
答:我很高興你看出這一點。在這個例子中,每轉換一次都要對AD7893的尋址存儲器發(fā) 出一個空操作的寫命令。雖然沒有數據交換,但是處理器仍然提供開始轉換所需要的寫脈沖 。從硬件的觀點來看,這種結構非常簡單,因為它不必再產生一個轉換信號。
但是,對信號必須進行周期性采樣的交流數據采集應用場合,不推薦這種方法。即使程 控處理器,對ADC發(fā)出周期性寫命令,寫脈沖的相位抖動將會嚴重降低實際得到的信噪比。 經過門控之后寫脈沖會抖動得更壞。例如,假設采樣時鐘相拉抖動僅僅1 ns,對一個理想的 100kHz正弦波來說,其信噪比會降到大約600dB(低于10有效位分辨率)。另外一個缺點是, 過沖和采樣信號噪聲都會進一步降低模數轉換的完整性。
評論