李 戈,夏 威,李 雷
(電子科技大學(xué)電子工程學(xué)院,四川成都 611731)
?
基于FPGA的ADC自檢系統(tǒng)
李 戈,夏 威,李 雷
(電子科技大學(xué)電子工程學(xué)院,四川成都 611731)
在監(jiān)測接收機(jī)中要實現(xiàn)快速的ADC(Analog-To-Digital)內(nèi)核處理功能檢測,針對這個問題,提出了一種基于ADC內(nèi)置自測(BUILD-IN SELF-TEST)技術(shù)的ADC自檢系統(tǒng)。該系統(tǒng)以現(xiàn)場可編程門陣列(FPGA)為核心,實現(xiàn)了對ADC檢測的控制。經(jīng)過測試,系統(tǒng)能夠快速完成對ADC芯片內(nèi)核處理功能的檢測。
BIST;ADC;現(xiàn)場可編程門陣列;SPI;寄存器
隨著通信、計算機(jī)等技術(shù)的飛速發(fā)展和普及,數(shù)據(jù)采集系統(tǒng)迅速得以應(yīng)用。ADC轉(zhuǎn)換器是采集通道的核心,也是影響數(shù)據(jù)采集系統(tǒng)速率和精度的重要因素。所以對ADC內(nèi)核性能的測試[1-3]就顯得尤為重要。目前有很多介紹內(nèi)置自測系統(tǒng)的著作[4-5],但還沒有詳細(xì)地論述ADC內(nèi)置自測功能使用方法的文獻(xiàn)。因此本文以監(jiān)測接收機(jī)的模數(shù)轉(zhuǎn)換器AD9265為背景,提出了基于ADC芯片內(nèi)置自測功能的ADC自檢系統(tǒng),此檢測系統(tǒng)適用于所有具有BIST功能的ADC,比如AD6642、AD9231等。BIST是一項用戶可以調(diào)用的功能,它可以證明ADC芯片的內(nèi)核處理功能符合預(yù)期。
ADC自檢系統(tǒng)FPGA實現(xiàn)的總體流程如圖1所示。當(dāng)FPGA接收到啟動ADC自檢的指令之后會通過SPI接口將啟動指令發(fā)送給ADC,然后ADC會把一個PN序列送至轉(zhuǎn)換器的數(shù)字模塊并將數(shù)字模塊的輸出與累加器相加。累加結(jié)果包含通過數(shù)字模塊的所有PN序列的和,累加器在BIST周期開始時清零。BIST檢測之后的結(jié)果會被放在多輸入狀態(tài)寄存器(MISR)中。
FPGA會通過SPI接口讀取這些寄存器中的值并對ADC進(jìn)行軟復(fù)位。 然后判斷從寄存器中讀取的檢測結(jié)果是否為默認(rèn)值0x00,若是默認(rèn)值則說明ADC已損壞且無法正常進(jìn)行自檢,若不是默認(rèn)值則說明ADC已正常進(jìn)行了自檢并將檢測的結(jié)果存入了指定寄存器。最后重復(fù)上述過程并將兩次讀取的值相比較,對于任何給定的配置累加結(jié)果是確定的,所以兩次檢測的值相同的話說明ADC芯片內(nèi)核處理功能正常,不相同則說明芯片內(nèi)核已有損壞。
圖1 ADC自檢流程圖
BIST測試結(jié)果以簡單的“正確/不正確”方式確定器件是否在正常工作,最終的檢測結(jié)果存儲在ADC內(nèi)部的寄存器中。由于ADC數(shù)字后端的編程選項并不唯一,因此正確響應(yīng)的值也并不唯一。但是當(dāng)ADC的配置確定以后就可以在正常工作的器件上讀取此器件的值,這個值就是正確的響應(yīng)。
ADC配置的任何改變,比如改變數(shù)據(jù)(偏置或增益等)和改變數(shù)據(jù)格式(偏移二進(jìn)制或二進(jìn)制補(bǔ)碼等),都會影響最終累加結(jié)果。由于偽隨機(jī)序列是可預(yù)測的,因此對于任何給定的配置累加結(jié)果是確定的。這樣就能確定ADC是否在正常工作。
1.1 SPI總線及其時序
FPGA對ADC自檢的控制是通過SPI端口實現(xiàn)的,SPI端口由3個引腳組成:串行時鐘引腳(SCLK)、串行數(shù)據(jù)輸入/輸出引腳(SDIO)和片選引腳(CSB)[6-7]。
串行時鐘引腳SCLK用來使串行接口的讀寫操作同步。輸入數(shù)據(jù)在SCLK的上升沿有效,輸出數(shù)據(jù)在下降沿有效。串行數(shù)據(jù)輸入/輸出引腳SDIO是雙向端口,既可以輸入也可以輸出。引腳CSB為選通信號,低電平有效。一旦數(shù)據(jù)流開始,CSB就不能拉高直到數(shù)據(jù)流結(jié)束。
在使用SPI接口傳輸數(shù)據(jù)時,幀開始于CSB拉低之后SCLK的第一個上升沿。當(dāng)確定了幀的開始,傳輸?shù)牡谝浑A段是指令,即傳送數(shù)據(jù)時的前十六位。指令周期時序如圖2所示。第一位是讀/寫指示位,拉高表示讀指令,拉低表示寫指令。W1和W0表示需要寫或者讀的字節(jié)數(shù),傳輸?shù)淖止?jié)數(shù)為(W1:W0 + 1)。剩下的十三位指令是傳輸數(shù)據(jù)的首地址,如果發(fā)送的指令不止一個字節(jié),會以順序?qū)ぶ返姆绞綇氖椎刂烽_始遞增或者遞減。
圖2 指令周期時序
傳輸?shù)牡诙A段是數(shù)據(jù),數(shù)據(jù)由多個8位組成,長度由W1和W2決定。數(shù)據(jù)周期時序如圖3所示。
圖3 數(shù)據(jù)周期時序
1.2 寄存器
為了對ADC進(jìn)行編程,需要定義一個結(jié)構(gòu)化的寄存器空間。此寄存器可以細(xì)分為許多地址,SPI數(shù)據(jù)線上進(jìn)行數(shù)據(jù)傳輸?shù)闹噶铍A段中的地址即指向這些地址。寄存器分為16個地址,每個地址有8位字節(jié),下面對BIST所用到的寄存器進(jìn)行詳細(xì)介紹。
1.2.1 啟動軟件傳輸?shù)募拇嫫?/p>
地址為0x0FF的寄存器用來啟動軟件傳輸。許多寄存器都需要用到主從鎖存器來進(jìn)行緩沖,緩沖可以增強(qiáng)系統(tǒng)的多器件同步能力,并且當(dāng)其他寄存器寫入的值對某寄存器的寫操作有影響時,能夠?qū)Ρ挥绊懙降募拇嫫鬟M(jìn)行緩沖。SPI端口負(fù)責(zé)把信息放入寄存器,但是對于有緩沖的寄存器必須啟動傳輸才能把主寄存器中的信息傳到從寄存器。把該寄存器的第零位設(shè)置為1即可啟動軟件傳輸,當(dāng)狀態(tài)機(jī)識別出這一位被設(shè)置為1時,它會產(chǎn)生一個允許數(shù)據(jù)從主寄存器移到從寄存器的內(nèi)部傳送信號。寄存器的十六進(jìn)制默認(rèn)值為0x00。寄存器格式如表1所示。
表1 啟動軟件傳輸?shù)募拇嫫鞲袷?/p>
1.2.2 啟動BIST的寄存器
地址為0x00E的寄存器用來啟動內(nèi)置自測(BIST)功能。把寄存器的第零位設(shè)置為1就可以啟動BIST模式,此時ADC內(nèi)部會產(chǎn)生一個偽隨機(jī)序列并把輸出累加在地址為0x024和0x025的寄存器中。把第二位設(shè)置為1,MISR就會在每次BIST啟動之前清零,這樣就可以連續(xù)地進(jìn)行多次測試,并連續(xù)查看多次測試的結(jié)果而不是只能查看一次測試的結(jié)果。寄存器的十六進(jìn)制默認(rèn)值為0x04。寄存器格式如表2所示。
表2 啟動內(nèi)置自測的寄存器格式
1.2.3 存儲自檢結(jié)果的寄存器
地址為0x024和0x025的寄存器用來存儲自檢的結(jié)果,它們分別為多輸入狀態(tài)寄存器(MISR)的低字節(jié)和高字節(jié)。該寄存器是內(nèi)核MISR的鏡像,與BIST功能一起使用,只能讀取。寄存器的十六進(jìn)制默認(rèn)值為0x00。寄存器格式如表3所示。
表3 存儲自檢結(jié)果的寄存器格式
讀取寄存器時,CSB引腳的電平值需要特別注意。如果傳輸數(shù)據(jù)時CSB被拉高,數(shù)據(jù)流的處理就會被終止,當(dāng)CSB再次被拉低時,將開始新的指令周期。如果在流處理時CSB一直為低電平,那么第一個指令就會被不斷地執(zhí)行下去。這意味著一旦寫(讀)周期被啟動,就不能再對器件進(jìn)行讀(寫)操作。讀寫的首地址也會根據(jù)工作模式遞增或者遞減,不能改變狀態(tài)機(jī)的地址。因此在對寄存器進(jìn)行寫操作之后想要正確地讀取寄存器中存儲的信息,就要將CSB拉高使?fàn)顟B(tài)機(jī)回到初始狀態(tài)之后再進(jìn)行讀操作。
1.2.4 配置串行接口的寄存器
地址為0x000的寄存器用來配置串行接口。第五位能夠控制軟復(fù)位,默認(rèn)值為0,拉高即可實現(xiàn)軟復(fù)位,且第五位必須鏡像到第二位。一旦軟復(fù)位完成,該位清零。第六位決定接收或者發(fā)送數(shù)據(jù)的順序,第六位為高則是以MSB優(yōu)先的方式處理數(shù)據(jù),為低則是以LSB優(yōu)先的方式處理數(shù)據(jù)。寄存器的十六進(jìn)制默認(rèn)值為0x18。寄存器格式如表4所示。
表4 控制軟復(fù)位的寄存器格式
1.3 ADC兩種模式的切換
ADC有2種工作模式:引腳模式和SPI模式,通過控制CSB引腳的電平值可以選擇兩種工作模式。一般情況下,上電時只要CSB為邏輯高電平,器件便默認(rèn)進(jìn)入引腳控制模式。一旦CSB變?yōu)榈碗娖?,ADC即切換到SPI模式。再經(jīng)過9個時鐘周期(代表1個字節(jié)和1個時鐘周期)后,ADC內(nèi)部狀態(tài)機(jī)不再檢查CSB引腳的電平值并默認(rèn)ADC已經(jīng)切換至SPI模式。此時執(zhí)行軟復(fù)位功能無法使器件回歸到引腳模式,唯一途徑是開機(jī)重啟或者利用器件的引腳復(fù)位功能。
利用QuartusII軟件的signaltapII功能對SDIO端口返回的數(shù)據(jù)進(jìn)行采集,便可驗證ADC自檢功能的正確性。因為如果ADC內(nèi)核正常工作,則每次啟用內(nèi)置自測(BIST)功能時,它都會做出同樣的響應(yīng)。否則,就會做出不同的響應(yīng)。
圖4是用signaltapII采集的第一次向ADC發(fā)送自檢指令的截圖。從圖4可以看到通過SPI接口首先對ADC地址為0x0FF的寄存器發(fā)送了啟動軟件傳輸指令,接著又對地址為0x00E的寄存器發(fā)送了啟動BIST的指令。
圖4 向ADC發(fā)送啟動自檢指令的截圖
圖5是用signaltapII采集的SPI返回ADC自檢結(jié)果和發(fā)送第二次自檢指令的截圖。從圖5可以看到通過SPI接口對ADC地址為0x024和0x025的寄存器發(fā)送了讀寄存器的指令之后,SDIO開始返回自檢的結(jié)果,其十六進(jìn)制的值為B501。讀取了寄存器中的值后便向地址為0x000的寄存器發(fā)送了軟復(fù)位的指令。緊接著便開始發(fā)送第二次自檢的指令。
圖5 返回自檢結(jié)果并發(fā)送軟復(fù)位指令的截圖
圖6是用signaltapII采集的連續(xù)兩次ADC自檢結(jié)果的截圖。從圖6可以看到兩次自檢的結(jié)果是一樣的,說明ADC處于正常工作狀態(tài)。
圖6 兩次自檢結(jié)果對比的截圖
本文設(shè)計了一種使用ADC內(nèi)置自檢(BIST)功能的系統(tǒng)。該系統(tǒng)將ADC由引腳模式轉(zhuǎn)換到SPI模式,通過SPI端口對ADC的寄存器進(jìn)行讀寫,從而完成對ADC芯片內(nèi)核處理功能的檢測。這種方法簡便且非常準(zhǔn)確。
[1] AD9265: 16-BIT,125 MSPS/105 MSPS/80 MSPS,1.8V ANALOG-TO-DIGITAL CONVERTER:Analog Devices,Inc,2009.
[2] 徐萍.寬帶數(shù)字接收機(jī)算法研究及FPGA實現(xiàn):[學(xué)位論文].成都: 電子科技大學(xué),2012.
[3] 王曉.寬帶數(shù)字監(jiān)測接收機(jī)算法研究及硬件實現(xiàn):[學(xué)位論文].成都:電子科技大學(xué),2011
[4] 鄒小芳,許劍.便攜式高速數(shù)據(jù)采集處理系統(tǒng).儀表技術(shù)與傳感器,2008(3): 28-29.
[5] 劉家松,劉承璽,鄭暉,等.印制電路板的可測性設(shè)計問題.儀表技術(shù)與傳感器,1990(3):3.
[6] AN-877 APPLICATION NOTE:Analog Devices,Inc,2007.
Design of FPGA-based ADC Self-test System
LI Ge,XIA Wei,LI Lei
(School of Electronic Engineering,UESTC,Chengdu 611731,China)
In order to realize the rapid detection of ADC (Analog-To-Digital) core processing functions in the monitoring receiver ,this paper designed and realized an ADC self-test system based on ADC’s build-in self-test functions[1-3].The system used FPGA as its core and realized the control of ADC testing. Test results show that the system can quickly complete the detection of ADC core processing functions.
BIST; ADC; FPGA; SPI;register
圖16 電磁干擾濾波前后的波
國家自然科學(xué)基金(61101173);中央高校基本科研業(yè)務(wù)費(fèi)(ZYGX2010J020)
2013-12-25 收修改稿日期:2014-10-17
TN919
A
1002-1841(2015)02-0051-03
李戈(1988—),碩士研究生,主要研究領(lǐng)域為雷達(dá)信號處理。E-mail:geleon@126.com 夏威(1980—),工學(xué)博士,副教授,主要研究方向:數(shù)字信號處理,自適應(yīng)信號處理。E-mail:wx@uestc.edu.cn