Global Sources
電子工程專輯
 
電子工程專輯 > 放大/轉換
 
 
放大/轉換  

利用8通道PSoC取樣16通道SAR ADC

上網時間: 2015年03月06日     打印版  Bookmark and Share  字型大小:  

關鍵字:PSoC  SAR  ADC  資料路徑  FIFO 

作者:胡泊,Cypress半導體應用工程師

透過類比數位轉換器(ADC)進行訊號取樣是MCU應用中的常見任務,它必須將連續的類比訊號轉換成為一系列的分佈式數位資料供MCU進行處理。在某些應用中,單一ADC需要以高取樣速率對多個通道進行取樣。例如電源監測系統的管理子系統必須對多個穩壓電源的輸出進行取樣,以監測系統的工作狀態。而在基於感測器的應用中,MCU必須對多個感測器進行取樣以建置系統反饋。

例如,客戶想利用Cypress的PSoC4實現以1MSps速率取樣16個通道的設計。16通道的總取樣時間不能超過19us,但PSoC4內建的多工器(SARMUX)只支援8個通道。因此,本文將介紹如何透過PSoC內部的可程式設計模組克服這一設計難題。

分析設計需求

首先,我們必須仔細分析設計需求。客戶希望將16個輸入的完整取樣視為一個取樣週期。如圖1所示,一個取樣週期的最大時間限制為19us。每個取樣週期之間可使用中斷服務請求(ISR)儲存取樣結果。

圖1:對16通道取樣的時序。
圖1:對16通道取樣的時序。

為了以8通道SAR實現這個目標,我們必須根據PSoC4架構中的通用資料模組(UDB)打造客製設計。該設計利用PSoC4架構的數位訊號互連(DSI)多工器切換取樣通道,在基於資料路徑的FIFO中緩衝取樣結果,然後經由中斷服務路徑(ISR)進行全部讀取。

資料路徑是UDB模組中最具價值的部份。每個UDB模組中包含一個資料路徑,每個資料路徑中內含一個具有多個暫存器的8位元ALU。每個資料路徑可實現一個8位元組FIFO。我們需要四個FIFO來緩衝16個12位元SAR的取樣結果。

圖2顯示基於DSI的多工器,能在多個輸入之間自動切換目前的取樣通道。圖3則顯示硬體FIFO緩衝取樣結果的流程圖。

圖2: 16通道SAR取樣。
圖2: 16通道SAR取樣。

圖3:四個8位元組FIFO用於緩衝取樣結果。
圖3:四個8位元組FIFO用於緩衝取樣結果。預設EN為高位,通道從高到低排列。

配置SAR 元件

SAR可被配置成單端模式取樣單一輸入通道,輸入電壓範圍在0~Vdd之間,取樣速率為1MSps。在接收觸發訊號後就開始進行通道轉換,並將產生的‘SDONE’訊號送至DSI網路,並命名為‘ADC_SDONE’。PSoC Creator標準元件庫中提供的SAR元件無法支援DSI匯流排上的輸出取樣結果。因此,我們必須先把SAR元件導入設計中並加以修改,如圖4中的紅色部份所示。

圖4:修改SAR元件的設計細節。
圖4:修改SAR元件的設計細節。

圖5所示是SAR元件的輸出連接。在SAR_Start函數之後,我們還需要添加一行程式碼,使得SAR能將取樣結果輸出到DSI網路:

// 開始SAR元件並等待轉換觸發

SAR_Start();

// 在DSI網路上實現 SAR取樣結果

*((reg32 *)(SAR_SAR_CHAN_CONFIG_IND + (uint32)(0 << 2))) |= SAR_DSI_OUT_EN;

圖5:SAR輸出連接的設計細節。
圖5:SAR輸出連接的設計細節。

基於DSI的多工器

如圖5中藍色部份所示,經由DSI控制的硬體多工器取代SARMUX,可用於切換16個通道。採用SWITCH_CLK時脈觸發Count7單元,可產生通道選擇訊號,使每次通道轉換分為兩個階段:訊號擷取和轉換。

一旦訊號擷取完成後,訊號將保持在SAR中並可切換輸入通道。因此,用於顯示訊號擷取階段完成的SDONE適用於通道切換。實際上,SWITCH_CLK是基於DSI訊號‘ADC_SDONE’(SDONE)定義的時脈,其設置可參見圖6的‘Creator Design Wide Resource’設定。

圖6:在Design Wide Resource中的時脈定義。
圖6:在Design Wide Resource中的時脈定義。

Count7單元屬於客製元件,不在標準元件庫的範圍內。它是一個遞減計數器,將目前的計數器值輸出至DSI,預設值為0x7F。因此,通道選擇的範圍從#15到#0。在主程式中添加以下程式碼實現對Count7的控制。

/* Enter critical section */

interruptState = CyEnterCriticalSection();

/* Set the Count Start bit */

MYCOUNT7_AUX_CTL |= (1 << 5);

/* Exit critical section */

CyExitCriticalSection(interruptState);

// set default value of count7 as 0x7F

MYCOUNT7_COUNTER = MYCOUNT7_PERIOD;

產生SAR取樣觸發

第1步:在完成目前取樣任務前產生下一個觸發訊號

由於針對SAR只有一個實際的輸入,因此一旦完成對目前通道的取樣,SAR就需要為下一次取樣觸發訊號。許多訊號都適用於此目的,但觸發訊號選擇應遵循以下兩個原則:

1. 在觸發訊號和現有取樣完成之間不應存在間隔,否則觸發可能提前發生。這樣就可以降低延遲。

2. 觸發訊號必須確保不會破壞目前的取樣作業。

根據上述規則,可選用SDONE和EOC進行觸發。然而,使用EOC要求每通道取樣時間至~1.4us,這可能在觸發訊號上升緣和SAR開始取樣之間帶來額外開銷。SAR需要至少5個SARADC_CLK時脈將DSI觸發訊號轉換為開始訊號取樣。

另一種情況更嚴重。EOC訊號與SARADC_CLK上升緣同步。在穿過DSI網路並到達SAR的SOC(開始轉換)之後,已經略為滯後於取樣時脈的上升緣。因此,它需要6個SARADC_CLK時脈或低於340ns的觸發超載。

我們必須尋求另一種觸發訊號。所幸在SAR作業時可儲存一個觸發訊號,但僅限一個且用於下一次掃描。因此,我們可以使用SDONE觸發轉換。讓觸發過載與SAR轉換時間平行,SAR就可在現有轉換完成之前儲存該觸發事件。現在針對16通道的取樣大約會有1us的轉換時間了(如圖12的SDONE週期)。

第2步:在16通道取樣週期結束後暫停觸發訊號產生

在每16通道取樣週期結束時,必須暫時停止觸發訊號產生,否則持續的取樣將使FIFO溢出。如圖7的紅色部份所示,在選擇通道#0時,必須關閉同步的D觸發器(DFF)以暫停觸發器輸出。一旦FIFO被ISR清空後,可使用0x7F重設Count7單元,以便重新啟用DFF輸出。同時,使用韌體觸發的方式在新的週期中開始第1通道的取樣,如圖8所示。

圖7:基於DSI的多工器和觸發訊號產生。
圖7:基於DSI的多工器和觸發訊號產生。

圖8:SAR ADC時序。
圖8:SAR ADC時序。

FIFO控制

UDB可被配置為8位元組FIFO,用於儲存來自DSI網路的資料。圖9顯示了配置資料路徑的概略圖。FIFO時脈取樣資料至FIFO。F0 Load和F1 Load可啟用或停用FIFO。兩種狀態訊號可提示FIFO Full事件。

圖9:8位元組FIFO的資料路徑配置。
圖9:8位元組FIFO的資料路徑配置。

圖10顯示FIFO的時序。12位元SAR結果分別儲存在LSB_FIFO和MSB_FIFO中。Count7單元可為從15到0的通道進行排序。因此通道15到8儲存於FIFO上層,通道7到0儲存於FIFO下層。載入訊號根據FULL狀態和啟用訊號而產生。

圖10:FIFO時序。
圖10:FIFO時序。

最後4個通道的結果一旦儲存完成後就會觸發ISR讀取FIFO。FIFO Enable取決於Count7單元的位元(如圖11紅色部份所示),同時與SWITCH_CLK(SDONE)同步。這樣可確保EN變化不會破壞FIFO取樣。

圖11:為FIFO產生EN的設計細節。
圖11:為FIFO產生EN的設計細節。

設計測試

圖12顯示單一訊號取樣週期。16個SDONE和EOC脈衝表示通道轉換。16個FIFOCLK和1個FIFO的FULL訊號可對最後4個結果進行緩衝,以指示FIFO的作業狀態。值得注意的是,SDONE和FIFOCLK之間的間隔是1us。

圖13是多個取樣週期的波形。從FIFO儲存到SRAM的兩個週期之間的資料儲存間隔大約為9.56us。

圖12:單一取樣週期的訊號測試結果。
圖12:單一取樣週期的訊號測試結果。

圖13:多個取樣週期的測試結果。
圖13:多個取樣週期的測試結果。

(參考原文: Sampling a 16-channel SAR with an 8-channel programmable SoC,by Bob Hu)





投票數:   加入我的最愛
我來評論 - 利用8通道PSoC取樣16通道SAR ADC
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首