1 . TCSPC技術(shù)原理
TCSPC時(shí)間相關(guān)單光子計(jì)數(shù)技術(shù)是一種成熟且通用的單光子計(jì)數(shù)技術(shù),是一種功能強(qiáng)大的分析方法,目前廣泛應(yīng)用于熒光壽命測(cè)量、時(shí)間分辨光譜、熒光壽命成像、飛行時(shí)間測(cè)量等眾多領(lǐng)域,尤其是在生命科學(xué)和基礎(chǔ)物理學(xué)中使用。
TCSPC技術(shù)使用高重復(fù)頻率的脈沖激光器作為光源,使用高靈敏度探測(cè)器對(duì)信號(hào)多次重復(fù)測(cè)量,計(jì)量離散光子脈沖實(shí)現(xiàn)甄別信號(hào),把探測(cè)器探測(cè)到的信號(hào)看成單個(gè)光子形成的脈沖序列,每當(dāng)探測(cè)器輸出一個(gè)脈沖則代表探測(cè)到一個(gè)光子,不是記錄脈沖強(qiáng)度,而是記錄脈沖密度來(lái)實(shí)現(xiàn)測(cè)量。
單光子探測(cè)器的輸出信號(hào)是對(duì)應(yīng)于探測(cè)到單個(gè)光子的隨機(jī)分布的脈沖序列。一般情況下,一個(gè)信號(hào)周期內(nèi)探測(cè)到多于一個(gè)光子的幾率是很小的,有些信號(hào)周期會(huì)探測(cè)到一個(gè)光子,也有可能許多信號(hào)周期內(nèi)沒(méi)有檢測(cè)到光子。
當(dāng)探測(cè)到一個(gè)光子時(shí),就可以在信號(hào)周期內(nèi)測(cè)得與探測(cè)器脈沖對(duì)應(yīng)的時(shí)間。每記錄一次這樣的事件(光子),就在對(duì)應(yīng)的存儲(chǔ)單元中加“1”,該存儲(chǔ)單元的地址與探測(cè)時(shí)間對(duì)應(yīng)。在記錄了許多光子之后,就可以根據(jù)存儲(chǔ)器中各個(gè)單元的光子數(shù),得到探測(cè)時(shí)間的分布,即光脈沖的波形。
TCSPC技術(shù)將多個(gè)激光脈沖周期采集到的光子信號(hào)累積,光子信號(hào)與激光同步信號(hào)之間具有時(shí)間相關(guān)性,會(huì)在時(shí)域上形成光子計(jì)數(shù)峰,同時(shí)剔除隨機(jī)分布在各個(gè)時(shí)刻,計(jì)數(shù)值較少的暗計(jì)數(shù)。如圖1所示為T(mén)CSPC計(jì)數(shù)原理。
圖1 TCSPC計(jì)數(shù)原理
2 .TCSPC計(jì)數(shù)FPGA實(shí)現(xiàn)
在普通的激光測(cè)距系統(tǒng)中,可以將經(jīng)過(guò)TDC時(shí)間數(shù)字轉(zhuǎn)換技術(shù)求取的時(shí)刻值通過(guò)傳輸接口,傳輸給上位機(jī)軟件或直接由MCU進(jìn)行處理,得到測(cè)距值。但是在多通道、高重頻單光子激光三維成像系統(tǒng)中,為了得到高質(zhì)量的圖像信息,勢(shì)必需要大容量的點(diǎn)云數(shù)據(jù),進(jìn)行分析,此時(shí),需要進(jìn)行實(shí)時(shí)的在線處理,完成圖像數(shù)據(jù)的提取。
圖2為時(shí)間相關(guān)單光子技術(shù)模塊結(jié)構(gòu)圖,在這里,等比鑒別器我們將在后續(xù)的文章中做具體的講解,而時(shí)間數(shù)字轉(zhuǎn)換器的FPGA實(shí)現(xiàn)前面已分多個(gè)章節(jié)講解過(guò),在這里主要講解,如何在FPGA中實(shí)現(xiàn)在線的TCSPC的累積,即生成柱狀圖。有需要的讀者,可以聯(lián)系筆者,下載程序,或者一起探討。
圖2 時(shí)間相關(guān)單光子技術(shù)模塊
其實(shí),FPGA實(shí)現(xiàn)TCSPC的累積相對(duì)比較簡(jiǎn)單,也就是統(tǒng)計(jì)時(shí)刻值的個(gè)數(shù)。通過(guò)FPGA內(nèi)的RAM模塊進(jìn)行實(shí)現(xiàn),如圖3所示。
將計(jì)算得到的TDC值作為RAM的讀寫(xiě)地址,首先將當(dāng)前的時(shí)刻值的統(tǒng)計(jì)值從RAM中讀出,然后完成加1,將新的計(jì)數(shù)值存在RAM中,這樣完成一個(gè)TCSPC累積,根據(jù)系統(tǒng)具體的累積時(shí)間要求,完成TCSPC的累積。
圖3時(shí)間相關(guān)光子計(jì)數(shù)FPGA實(shí)現(xiàn)
根據(jù)上次基于多相位的TDC設(shè)計(jì),輸出的TDC值位寬為16bit,因此在這里設(shè)置簡(jiǎn)單雙端口RAM的界面如圖4所示,數(shù)據(jù)位寬為16bit,即累積最大的值為65536,數(shù)據(jù)深度為65536(根據(jù)TDC的位寬決定)。
圖4 RAM IP核設(shè)置
//* tb文件,從文件中讀取仿真數(shù)據(jù) //
reg [15:0]TDC_data[4999:0];
integer i;
initial
begin
i=0;
begin
$readmemh("D:/TDC_data.txt",TDC_data,0,4999);
end
forever
begin
@(posedge Clk_in or posedge Reset)
if(Reset == 1'b1)
begin
TDC_Data1 <= 12'd0;
TDC_Data_Valid1 <= 1'b0;
end
else
begin
i <= i+1;
TDC_Data1 <= TDC_data[i];
TDC_Data_Valid1<= 1'b1;
end
end
end
// FPGA部分代碼 //
ram_enb <= 1'b0;
ram_ena <= 1'b1;
ram_wea <= 1'b1;
ram_addra <= TDC_Data;
ram_dina <= ram_doutb + 16'd1; //讀出RAM值進(jìn)行+1
if(acc_cnt == 16'd5000)//累積5000個(gè)數(shù)據(jù)結(jié)束
begin
ms_ram <= 4'd4;
acc_cnt <= 16'd0;
end
else
begin
fms_ram <= 4'd0;
acc_cnt <= acc_cnt + 16'd1;
end
圖5為T(mén)CSPC仿真結(jié)果圖,在這里累積了5000個(gè)點(diǎn),在實(shí)際程序中,可以按累積時(shí)間點(diǎn)來(lái)計(jì)算,也可以按數(shù)據(jù)點(diǎn)數(shù)來(lái)計(jì)算。和圖6 Matlab程序進(jìn)行比較,得出FPGA的計(jì)算結(jié)果是正確的。
圖5 TCSPC FPGA仿真結(jié)果
圖6為T(mén)CSPC Matlab計(jì)算結(jié)果圖
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26517 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7492瀏覽量
163834 -
數(shù)字轉(zhuǎn)換器
+關(guān)注
關(guān)注
0文章
235瀏覽量
27533 -
上位機(jī)
+關(guān)注
關(guān)注
27文章
942瀏覽量
54813 -
單光子探測(cè)器
+關(guān)注
關(guān)注
1文章
31瀏覽量
4443
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論