謝立利,陳 洋
(無錫中微愛芯電子有限公司,江蘇 無錫 214072)
A/D信號的處理與解析
謝立利,陳洋
(無錫中微愛芯電子有限公司,江蘇 無錫 214072)
音頻A/D轉換芯片的輸出增益和失真度是無法直接測試的,需要對輸出的數(shù)字信號進行解析還原成模擬信號方可以進行測試。有些A/D產(chǎn)品輸出的數(shù)字信號可以直接進行解析還原成模擬信號,而有些則需要先對輸出的數(shù)字信號進行處理。以某A/D轉換芯片為例,首先利用了六反向施密特觸發(fā)器74HC14和8位串入并出移位寄存器74HC164對輸出信號時序進行轉換,然后采用stm32f103對時序轉換后的數(shù)字信號進行解析,最后將解析后的數(shù)據(jù)傳送至上位機,最終實現(xiàn)了對該A/D轉換芯片輸出增益及失真度測試的目的。
A/D; 測試; 時序; 解析; 增益; 失真度
隨著電子技術的不斷發(fā)展,集成芯片不只是單純的模擬或數(shù)字邏輯,越來越多的芯片使用了數(shù)模混合的設計,A/D就是比較常見的一種。文中以某A/D芯片為例,介紹了輸出數(shù)字信號的分析與處理至解析的過程,實現(xiàn)了對輸出幅度及失真度測試的目的,對于相關A/D芯片的測試具有一定的參考和借鑒意義。
A/D芯片功能框圖如圖1所示。
輸入信號經(jīng)AD轉換后經(jīng)濾波器輸入譯碼器后輸出,其中輸出引腳包括SDOUT、SCLK及LRCK引腳。
數(shù)字信號輸出時序如圖2所示。
SDOUT為輸出的數(shù)字信號,SCLK為時鐘信號,頻率為3 MHz,LRCK為輸入通道選擇信號,用于判斷輸出為左聲道或右聲道輸出。從LRCK上升沿或下降沿開始,32個時鐘周期的信號表示一個模擬量,低8位為無效信號,最高位的數(shù)據(jù)為標識位,用來表示模擬量的正負值,若為“0”則表示該模擬量為正值,可直接運算,若為“1”則表示該模擬量為負值,需將輸出數(shù)字信號取補碼后進行運算。該A/D輸出的運算公式為out=(SDOUT/223)× REF,其中out為輸出的模擬量,SDOUT為數(shù)字量,REF為被測器件的基準電壓,由于最高位數(shù)據(jù)為標識位,所以實際的有效數(shù)字信號只有23位。
圖1 功能框圖
圖2 數(shù)字信號時序
以右聲道為例。將波形放大,如圖3。
圖3 右聲道時序
如圖3所示,當LRCK為低時,符號位在時鐘的下降沿被鎖存,但是LRCK的下降沿與第一個時鐘下降沿的時間很短,約為10 ns,stm32無法達到該處理速度,所以無法直接解析,要滿足解析條件必須使LRCK的下降沿與第一個時鐘下降沿的時間足夠長,盡量達到一個周期時間的50%以上,對于該問題可以采用一個移位寄存器,將LRCK信號向后移位,由于使用的移位寄存器是74HC164為上升沿觸發(fā),如果直接使用該時鐘信號對LRCK信號進行移位,那么LRCK將會在時鐘信號的第一個上升沿后出現(xiàn)下降沿,如圖4。
圖4 LRCK移位時序
這顯然是不行的,必須使移位寄存器在下降沿觸發(fā),對于這個問題,可以在74HC164前面使用一個反相器,使時鐘信號反向。根據(jù)上面的波形推斷,如果將LRCK移位,那么在采樣的時候就會將SDOUT數(shù)據(jù)向后錯一位,并且符號位丟失,所以必須也將SDOUT數(shù)據(jù)進行移位,SDOUT數(shù)據(jù)可直接根據(jù)時鐘信號移位,無需將時鐘信號反向,否則時序將出現(xiàn)錯誤,根據(jù)以上對輸出信號的處理結果如圖5。
圖5 處理后時序
圖5中LRCK、SCLK、SDOUT為原始信號,LRCK1、SCLK1、SDOUT1為經(jīng)過處理的信號,不難看出。LRCK1、SCLK、SDOUT1這3組信號完全滿足了解析的要求。
輸出的數(shù)字信號需進行解析方可還原成模擬信號,這里采用的解析芯片是stm32f013,利用stm32f103的SPI工作模式對數(shù)字信號進行采集。在軟件方面使SPI工作在從模式,設置上將NSS端口設置為硬件觸發(fā),并將鎖存信號設置為下降沿鎖存,一次采集16位數(shù)據(jù),硬件方面將LRCK1與NSS引腳相連,將SCLK與SCK引腳相連,SDOUT1與MOSI引腳相連,在程序設計上需要一個觸發(fā)腳,用于判斷采樣通道,該觸發(fā)腳與LRCK1及NSS相接,若為左聲道,需將LRCK1信號經(jīng)過反相器后再與NSS引腳及觸發(fā)腳相接。讀取數(shù)據(jù)程序如下:
for(int z=0;z<257;z++) //采集257個點的數(shù)據(jù),其中將第一個點的數(shù)據(jù)舍去
{
while((GPIOG->IDR & GPIO_BRR_BR0)==0); //等待低電平結束
while((GPIOG->IDR & GPIO_BRR_BR0)==1);//等待LRCK時鐘下降沿結束
w h i l e(S P I_I 2 S_G e t F l a g S t a t u s(S P I 2,SPI_I2S_FLAG_RXNE) == RESET);//采集數(shù)據(jù)
Data[z]=SPI_I2S_ReceiveData(SPI2);//將采集數(shù)據(jù)放至數(shù)組
}
由于一個點的數(shù)據(jù)為16位,而USB設置為一次只可以傳送64個8位的數(shù)據(jù),所以必須將一個16位數(shù)據(jù)拆分為2個8位數(shù)據(jù)后進行傳送。
拆分及傳送數(shù)據(jù)程序如下:
Void Data_log(unsigned int j)
{
unsigned char Write[64];
for(inti=0;i<32;i++)//分段處理
{
if(Data[(j*32)+i+1]&0x800000) //判斷符號位
{
Data_logo[(j*32)+i+1]=~Data_logo[(j*32)+i+1];//為1取反
Data_logo[(j*32)+i+1]=Data_logo[(j*32)+i+1]&0xffff00;//數(shù)據(jù)校正
Write[i*2]=0x80;//符號位傳至數(shù)組準備發(fā)送
}
else
{
Write[i*2]=0x00; //符號位傳至數(shù)組準備發(fā)送
}
Data_logo[(j*32)+i+1]=Data_logo[(j*32)+i+1]&0x007ffff f;//數(shù)字量至模擬量轉換
AD_Data[i]=Data_logo[(j*32)+i+1]/33554;//134216;//數(shù)字量至模擬量轉換
Spill=0;
if(AD_Data[i]>255)//數(shù)據(jù)溢出位
{
Spill=AD_Data[i]/256;//提取溢出位
Write[i*2]|=Spill;//將數(shù)據(jù)溢出位傳至數(shù)組準備發(fā)送。
}
Write[i*2+1]=AD_Data[i]-Spill*256;//溢出位與數(shù)字位處理并將模擬量傳至數(shù)組準備發(fā)送
}
USB_SendData(Write,sizeof(Write));//通過USB通信將數(shù)據(jù)發(fā)送至上位機
}
轉換后的數(shù)據(jù)傳送給上位機進行運算還原出模擬波形。如圖6所示,由于在解析芯片中已經(jīng)將數(shù)字量轉換成為模擬量,所以在上位機中只需將接收到的數(shù)據(jù)直接還原成連續(xù)的模擬信號即可,本例中共采集了128個點的模擬數(shù)據(jù)。采集時輸入信號幅度為2.2 Vpp,頻率為1 kHz,解析輸出信號的幅度為2 Vpp值,失真度<0.5%,如圖7所示。由于A/D芯片內(nèi)部存在固有衰減,所以輸出信號幅度比輸入信號幅度偏低。
圖6 上位機還原程序
圖7 輸出顯示
通過以上對A/D輸出信號解析過程的介紹,實現(xiàn)了將數(shù)字信號還原為模擬信號,達到了對輸出信號的幅度與失真度進行測試的目的。
另外,如果A/D芯片輸出的高電平電壓與stm32工作電壓不一致,需采用電平轉換芯片將輸出高電平電壓轉換成與stm32工作電壓一致,否則可能對解析結果造成影響,嚴重時會使stm32損壞。并且在解析時對地線也有一定的要求,需保證有良好的接地。
[1] 章佳榮,王璨,趙國宇. 精通LabVIEW虛擬儀器程序設[2] 喻金錢,喻斌. STM32F系列ARM Cortex-M3核微控制開發(fā)與應用[M]. 北京:清華大學出版社,2011.4.
計與案例實現(xiàn)[M]. 北京:人民郵電出版社,2013.4.
[3] 劉強,等. 深入淺出USB系統(tǒng)開發(fā):基于 ARM Cortex-M3[M]. 北京:北京航空航天大學出版社,2012.8.
[4] 張順興,等. 數(shù)字電路與系統(tǒng)設計[M]. 南京:東南大學出版社,2004.8.
A/D Signal Process and Analysis
XIE Lili, CHEN Yang
(Wuxi i-CORE Electronics Co., Ltd, Wuxi 214072, China)
The output Gain and Total Harmonic Distortion (THD) of Audio A/D converter chip cannot be tested directly. The appropriate way requires analysis and reduction of digital output signal into analog signal which can be tested. Some output digital signal from some product can be transformed into digital signal directly,some others needs digital signal processing for transformation. This article introduces a process to treat the digital output signal into analog signal, with the timing sequence transformation using 14 Hex Inverting Schmitt triggerand 74HC164 8-bit Serial-in/Parallel-out Shift Register on top of sampling, analysis and reduction using stm32, which will be transmitted to host computer.
A/D; test; timing sequence; analysis; gain; THD
TN402
A
1681-1070(2015)12-0020-03
謝立利(1981—),男,黑龍江哈爾濱人,2007年畢業(yè)于華德應用技術學院應用電子技術系,本科,主要從事數(shù)?;旌霞呻娐窇门c測試工作。
2015-8-12