簡(jiǎn)介
LTC2387-18是一款低噪聲,高速,18位15Msps逐次逼近型寄存器(SAR)ADC。良好的線性度和寬動(dòng)態(tài)范圍的結(jié)合使LTC2387-18成為高速成像和儀器儀表應(yīng)用的理想選擇。無(wú)延遲操作為高速控制環(huán)路應(yīng)用提供了獨(dú)特的解決方案。高輸入頻率下的低失真使通信應(yīng)用成為需要寬動(dòng)態(tài)范圍和顯著信號(hào)帶寬的應(yīng)用。 LTC2387-18支持高速運(yùn)行,同時(shí)最大限度地減少數(shù)據(jù)線數(shù)量,具有串行LVDS數(shù)字接口,可輕松連接到FPGA。 LVDS接口具有單通道和雙通道輸出模式,允許用戶優(yōu)化每個(gè)應(yīng)用的接口數(shù)據(jù)速率。
DC2290A-A是LTC2387-18的演示電路。該電路板的采樣率(Fs)為15Msps,數(shù)字化數(shù)據(jù)以串行方式退出ADC。以下是LTC2387-18,但適用于LTC2387系列的所有成員(LTC2386和LTC2385)以及DC2290A演示電路的其他變化,唯一的區(qū)別是采樣率和位數(shù)。
DC2290A演示電路包括一個(gè)Altera Cyclone III FPGA,它采用Verilog編程,用于對(duì)ADC輸出數(shù)據(jù)流進(jìn)行反串行化,并將其傳送到DC890B USB數(shù)據(jù)采集卡的18位并行總線上。 DC890B對(duì)這些數(shù)據(jù)進(jìn)行調(diào)節(jié),以便將其傳遞到PC并顯示在PSCOPE中。 PScope軟件在時(shí)域和頻域中收集和分析來(lái)自ADC的數(shù)據(jù),并顯示被評(píng)估設(shè)備的相關(guān)參數(shù)。 PSCOPE的最大FFT大小為131K,在這種情況下,每個(gè)箱的光譜分辨率約為114Hz。下面是在這些條件下9.76KHz音調(diào)的典型65K點(diǎn)FFT的一部分,每箱的噪聲為-139.4dBFS。
通過(guò)下采樣提高頻率分辨率&低通濾波器
如果我們想要更高的頻率分辨率或想要觀察非常接近零頻率的噪聲水平和信號(hào)怎么辦?降低采樣率是一種選擇。這應(yīng)該具有縮小箱尺寸并因此降低每箱的噪音水平的效果。這種方法的問(wèn)題是混疊。別名是采樣過(guò)程的正常結(jié)果。這意味著模擬輸入光譜被切成Fs / 2寬的塊,它們彼此重疊以構(gòu)成最終輸出光譜。通常,選擇采樣率使得模擬輸入信號(hào)內(nèi)容的大部分低于Fs / 2。通過(guò)對(duì)模擬輸入信號(hào)和噪聲進(jìn)行低通濾波,信號(hào)內(nèi)容限于該頻譜區(qū)域。這就是簡(jiǎn)單地降低采樣率的問(wèn)題 - 這意味著用戶必須降低模擬輸入信號(hào)或ADC之前的低通濾波器的帶寬。這些措施都不實(shí)用。
更好的選擇是單獨(dú)保留采樣率并對(duì)ADC的數(shù)字化輸出進(jìn)行下采樣。注意,為了避免信號(hào)和噪聲的混疊(如上所述),我們必須在下采樣之前對(duì)輸出進(jìn)行低通濾波。這是使用數(shù)字濾波器而不是模擬濾波器完成的。因?yàn)檫@可以在FPGA中完成,所以很容易實(shí)現(xiàn)和修改。例如,如果我們有一個(gè)通過(guò)15Msps采樣獲得的頻譜,我們可能希望將頻率分辨率提高128倍。為了有效地做到這一點(diǎn),輸出樣本必須限制在介于0Hz和7.5之間的頻譜。 / 128MHz,或58.593KHz。然后可以將樣本下采樣128倍,很少或沒(méi)有混疊。分辨率將增加128倍,每個(gè)bin的噪聲應(yīng)比原始頻譜低21dB。
這個(gè)處理可以通過(guò)在現(xiàn)有的Verilog代碼上添加一個(gè)模塊來(lái)完成。 18位數(shù)據(jù)字在傳遞到數(shù)據(jù)收集系統(tǒng)之前。然后編譯新版本的代碼,可用于在JTAG或主動(dòng)串行編程模式下對(duì)DC2290A演示板進(jìn)行編程。
梳狀積分器級(jí)聯(lián)濾波器
《 p》低通濾波器和下采樣的一種簡(jiǎn)單方法是使用梳狀積分器級(jí)聯(lián)(CIC)濾波器。該過(guò)濾器的獨(dú)特之處在于它不需要乘法。 CIC過(guò)濾器實(shí)際上只是移動(dòng)平均(或boxcar)過(guò)濾器的另一個(gè)名稱,后面跟著一個(gè)下采樣器。注意,該濾波器的脈沖響應(yīng)僅僅是一系列N個(gè)單位幅度樣本。由于濾波器的時(shí)間響應(yīng)是矩形脈沖,因此頻率響應(yīng)是Dirichlet函數(shù)。
sin(πfN)/(Nsin(πf))
此函數(shù)的第一個(gè)空值為Fs / N,在本例中為117.187KHz。下面是此過(guò)濾器的低頻響應(yīng)示例。
在Verilog中實(shí)現(xiàn)CIC過(guò)濾器
有幾種方法可以實(shí)現(xiàn)此目的在Verilog過(guò)濾。一種方法是建立一個(gè)移位寄存器,該寄存器保存N個(gè)數(shù)據(jù)字,在加載每個(gè)新字時(shí)對(duì)寄存器的N個(gè)位置求和。然后對(duì)求和的輸出進(jìn)行下采樣以形成最終輸出。以下是N = 128的示例。
首先,F(xiàn)PGA對(duì)18位數(shù)據(jù)字進(jìn)行反序列化。
該字以及運(yùn)行頻率為15MHz的時(shí)鐘傳遞給模塊cic_128
wire [17:0] dout,dout_f;
cic_128 fir(
.clk(fir_clk),
.din (DOUT),結(jié)果,.dout(dout_f),點(diǎn)擊);
第一個(gè)變量是時(shí)鐘;在轉(zhuǎn)換的反序列化數(shù)據(jù)可用之后,此時(shí)鐘的上升沿出現(xiàn)。接下來(lái)的兩個(gè)變量是18位數(shù)據(jù)字 - 第一個(gè)是濾波器輸入,第二個(gè)是輸出。以下是模塊本身的代碼。
clk,
din,
dout
);
輸入clk;
輸入[17:0] din; //未過(guò)濾的樣本
輸出[17:0] dout; //過(guò)濾樣本
reg [2303:0] shift_reg;
reg [24:0] regout;
reg [17:0] dout;
initial
shift_reg = 0;
wire [24:0] regout_a [63:0];
wire [24:0] regout_b [31:0];
wire [24:0] regout_c [15:0] ;
wire [24:0] regout_d [7:0];
wire [24:0] regout_e [3:0];
wire [24:0] regout_f [1:0]; 《 br》 wire [24:0] regout_g;
始終@(posedge clk)//在‘clk’的每個(gè)上升沿將最新的位加載到串行位數(shù)組中《 br》開始
:7];
end
genvar j;
生成
for(j = 0; j 《64; j = j + 1)
begin:echelon_a
assign regout_a [j] = {{7 {shift_reg [j * 18 + 17]}},shift_reg [j * 18 + 17:j * 18]} + {{7 {shift_reg [(j 64)* 18 + 17]}},shift_reg [第(j + 64)* 18 + 17:(J + 64)* 18]};結(jié)果,端
《跨度》 for(j = 0; j 《32; j = j + 1)開始:echelon_b
分配regout_b [j] = regout_a [j] + regout_a [j + 32];
結(jié)束
for(j = 0; j 《16; j = j + 1)開始:echelon_c
assign regout_c [j] = regout_b [j] + regout_b [ J + 16];結(jié)果,端
for(j = 0; j 《8; j = j + 1)開始:echelon_d
分配regout_d [j] = regout_c [j] + regout_c [j + 8]; 《 br》結(jié)束
for(j = 0; j 《4; j = j + 1)開始:echelon_e
assign regout_e [j] = regout_d [ j] + regout_d [j + 4];
end
for(j = 0; j 《2; j = j + 1)開始:echelon_f
分配regout_f [j] = regout_e [j] + regout_e [j + 2];
end
endgenerate
分配regout_g = regout_f [0] + regout_f [1];
endmodule
模塊的核心是 shift_reg ;這是一個(gè)移位寄存器,可容納128 x 18位字。這些字是一個(gè)接一個(gè)地加載到移位寄存器中的數(shù)據(jù)輸入 din 。在每個(gè)時(shí)鐘上升沿,最新的數(shù)據(jù)字被加載到寄存器中,最舊的數(shù)據(jù)字被丟棄。寄存器中128個(gè)位置的總和是濾波器的輸出。然后將該輸出按比例縮小7位以適合18位字,并作為 dout 傳遞回主模塊。此時(shí),這些樣本的頻譜只是ADC輸出的低通濾波副本。
下一步是下采樣,通過(guò)傳遞每128個(gè)濾波器樣本來(lái)完成到數(shù)據(jù)采集板
第1部分的結(jié)果
結(jié)果是一個(gè)覆蓋從DC到58.593KHz的奈奎斯特區(qū)域的光譜。使用65K點(diǎn)的FFT,箱寬為1.78Hz。這是濾波和下采樣信號(hào)的FFT,每個(gè)區(qū)間的噪聲為-151.3dBFS。
每個(gè)區(qū)間的噪聲水平每箱減少了近12dB。由于兩個(gè)原因,這低于預(yù)測(cè)的21dB減少。首先,因?yàn)闉V波器不理想,所以在通帶外存在非零響應(yīng)。下采樣過(guò)程會(huì)將這些非零波瓣中的噪聲混疊回通帶。這些旁瓣的總功率大約是主瓣功率的十分之一。其次,更重要的是,最終頻譜中的量化噪聲。對(duì)于正弦波,量化噪聲使用以下公式計(jì)算,其中N是位數(shù)。
SNR = 1.76 + 6.02 * N
最終樣本量化為18位,量化噪聲約等于110.1dB,或每箱為155.3dBFS。通過(guò)濾波和下采樣獲得的結(jié)果接近這一水平,揭示了更多的光譜細(xì)節(jié)和分辨率。
使用Altera Cyclone III FPGA對(duì)這些數(shù)據(jù)進(jìn)行反序列化和過(guò)濾是資源密集型的。 Verilog代碼的編譯報(bào)告顯示該實(shí)現(xiàn)使用了74%的可用邏輯元素。原因是所需的寄存器和加法器的數(shù)量。在每個(gè)采樣時(shí)刻,所有128個(gè)寄存器以二進(jìn)制方式加在一起,梯隊(duì)后梯隊(duì)。嘗試構(gòu)建具有更高下采樣率的濾波器將失敗,因?yàn)樵撛O(shè)計(jì)將不適合該FPGA。還有其他更簡(jiǎn)化的方法來(lái)構(gòu)建這種類型的過(guò)濾器,我們將在下一部分中介紹它。右側(cè)面板上提供了Verilog和本文所述代碼的編程文件。
-
寄存器
+關(guān)注
關(guān)注
31文章
5274瀏覽量
119674 -
usb
+關(guān)注
關(guān)注
60文章
7854瀏覽量
263365 -
adc
+關(guān)注
關(guān)注
97文章
6351瀏覽量
543414
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論