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