模數(shù)轉(zhuǎn)換即將模擬信號進(jìn)行數(shù)字化處理,得到與原始信號近似的離散的數(shù)字量,用數(shù)字信號以bit位單位編碼量化表示原始信號,這種量化目前由ADC(模數(shù)轉(zhuǎn)換)芯片的硬件實(shí)現(xiàn),對芯片的控制可以根據(jù)系統(tǒng)特占通過DSP(數(shù)字信號處理器)、ASIC(專用集成電路)和FPGA(現(xiàn)場可編程門陣列)三種不同方式完成。[2]采用FPGA的方式適合與對速率要求較高的可編程環(huán)境,本設(shè)計使用Xilinx公司Spartan3E的FPGA通過對TI的ADS1256芯片控制并完成模數(shù)轉(zhuǎn)換功能。
ADS1256芯片介紹
ADS1256芯片是一種高速低噪聲的24位模擬-數(shù)字(A/D)轉(zhuǎn)換器,能夠提供完整的高分辨率模擬信號測量解決方案。ADS1256內(nèi)部具有利用濾波器穩(wěn)定的緩沖區(qū)和可編程的增益放大器進(jìn)一步降低了信號噪聲,信號采樣率高達(dá)30Ksps可以滿足衛(wèi)生和植物檢疫標(biāo)準(zhǔn)。在外部接口方面,ADS1256具有SPI兼容的5V串行接口,模擬信號的輸入電壓為5V,數(shù)字信號的輸出電壓為1.8V~3.6V。標(biāo)準(zhǔn)工作模式下功耗為38mW,待機(jī)模式下的功耗為0.4mW。
總體及接口設(shè)計
利用FPGA完成的控制系統(tǒng)輸入輸出接口如圖3所示,其一端可以與ADS1256芯片相連,另一端可以將芯片輸出的數(shù)字信號組合成24bit精度的數(shù)據(jù)送出,用以連接設(shè)計者需要此數(shù)據(jù)的其它器件。
控制系統(tǒng)輸入輸出接口
輸入端:
(1)CLK:連接外部20MHz系統(tǒng)主時鐘,用來驅(qū)動主控FPGA工作;
(2)ADC_DRDY_N:A/D數(shù)據(jù)轉(zhuǎn)換準(zhǔn)備好信號,連接ADS1256的/DRDY引腳,用來通知主控FPGA本次模數(shù)轉(zhuǎn)換完成;
(3)ADC_SDIN:主控FPGA的SPI串行數(shù)據(jù)輸出信號,連接ADS1256的DIN引腳,配置ADS1256芯片寄存器;(4)ADC_CHNL_ID(1:0):為A/D轉(zhuǎn)換后的數(shù)字信號的輸入通道,連接ADS1256的D0、D1。
輸出端:
(1)ADC_CS:ADS1256的芯片的使能信號,連接ADS1256的/CS引腳;
(2)ADC_DATA(23:0):為最終數(shù)據(jù)的并行輸出引腳,可連接其它所需器件;
(3)ADC_D_RDY:與ADC_DATA配合使用,指示ADC_DATA有效;(5)ADC_SCLK:利用系統(tǒng)主時鐘CLK分頻出的SPI時鐘,連接ADS1256的SCLK;
(4)ADC_SDOUT:主控FPGA的SPI串行數(shù)據(jù)輸入信號,與ADS1256的DOUT相連。
功能實(shí)現(xiàn)
整體模塊的設(shè)計應(yīng)該包含以下子功能模塊:
(1)時鐘模塊“clk_gen”對20MHz的主時鐘分頻產(chǎn)生供SPI使用的占空比為50%的2MHz時鐘和4MHz的時鐘;(2)延遲模塊“delay_n”在系統(tǒng)上電后延遲一段時間,等待供電穩(wěn)定后再初始化A/D啟動A/D轉(zhuǎn)換,減少系統(tǒng)上電時對模擬信號輸入的瞬時影響,保證ADC轉(zhuǎn)換時可輸出穩(wěn)定的數(shù)據(jù);
(3)初始化模塊“adc_initial”,它的功能是通過SPI接口對ADS1256進(jìn)行初始化,根據(jù)芯片使用說明按步驟設(shè)定它進(jìn)入工作狀態(tài);
(4)AD轉(zhuǎn)換控制模塊“adc_xchange“,它的功能是產(chǎn)生ADS1256需要的時序,把控制字通過SPI發(fā)送到ADS1256,并最終根據(jù)芯片指示讀出A/D轉(zhuǎn)換后的數(shù)字信號。
在FPGA上完成的ADS1256芯片控制系統(tǒng)的RTL結(jié)構(gòu)圖如下圖所示:
SRL16E的應(yīng)用
系統(tǒng)中采用Xilinx原語SRL16E構(gòu)成的16位移位寄存器進(jìn)行時鐘控制,可以通過以下公式進(jìn)行計算:
數(shù)據(jù)輸出位數(shù)=8*A3+4*A2+2*A1+1*A0+1例如本系統(tǒng)采用20Mhz的系統(tǒng)主時鐘,要進(jìn)行5分頻得到4M的SPI接口工作時鐘,只需將A3,A2,D1,D0設(shè)置為0,1,0,0(8*0+4*1+2*0+1*0+1=5)即可。
本設(shè)計中使用SRL16E而沒有采用鎖存器(PLL)進(jìn)行時鐘的分頻,可以進(jìn)一步節(jié)省FPGA的硬件資源。
因?yàn)镕PGA中每個查找表LUT能夠構(gòu)成一個16位的移位寄存器,它可以通過對Xilinx定義的系統(tǒng)宏SRL16E的調(diào)用來實(shí)現(xiàn)。由于LUT中能夠提供一個16位的同步RAM。利用SRL16E這種存儲的能力設(shè)計遞歸的延遲線(RDL),再根據(jù)RDL抽樣個數(shù)倍減而速率倍增的特點(diǎn)與時分復(fù)用技術(shù)相結(jié)合,構(gòu)成遞歸折疊結(jié)構(gòu)。最終以提高主工作時鐘頻率的代價,增大了采樣速率以及相關(guān)運(yùn)算單元的吞吐率,并且極大的降低了資源的使用。
本設(shè)計中采用了1/4的遞歸折疊結(jié)構(gòu),資源消耗僅為優(yōu)化前的1/3。如下圖所示,為FPGA的資源使用情況。
FPGA的資源使用。
評論
查看更多