摘要:門光子計數(shù)器是量子光學實驗中單光子探測常用的數(shù)據(jù)采集設備,,用于收集單光子探測器探測到的單個光子信號。由于不同的場合需要用到不同的計數(shù)模式,,商用的計數(shù)器往往難以滿足具體的需求,,或者造成采集效率低下。系統(tǒng)采用的是一種基于MicroBlaze系統(tǒng)FSL總線的可擴展計數(shù)器設計架構(gòu),,該架構(gòu)能夠靈活的添加不同的計數(shù)功能,,并通過統(tǒng)一的FSL總線和Microblaze CPU與PC通信。在該架構(gòu)的基礎上實現(xiàn)了針對量子單自旋調(diào)控實驗中常用的計數(shù)模式,。系統(tǒng)所采用的設計和實現(xiàn)方式可以推廣到其他光子計數(shù)需求中,,并具有較低的設計和生產(chǎn)成本。
0 引言
光學領(lǐng)域尤其是量子光學領(lǐng)域的實驗常常需要進行單個相干光子的探測用于實現(xiàn)實驗數(shù)據(jù)的采集,。一般常用的配置是一個單光子探測器加上一個門光子計數(shù)器,,其前端的單光子探測器用來收集光子信號,每探測到一個光子產(chǎn)生一個TTL脈沖,,后端的門光子計數(shù)器用來記錄該TTL上升沿數(shù)目并且與PC等其他器件通信或者同步,。APD的工作方式相對簡單,而門光子計數(shù)器則由于具體實驗需求不同而要求不同的工作方式,,很難有一種通用的計數(shù)模式能夠滿足各種情況的需求,。由于成本限制,功能固定的計數(shù)器往往因為沒有廣闊的市場而造成價格很高,。另一方面,,工業(yè)和科研界購買的商用計數(shù)器往往無法滿足自己的具體需求而導致工作效率低下,,甚至無法滿足要求。
所謂門光子計數(shù)器就是針對單自旋量子調(diào)控實驗研究中對單個光子探測的需求所研制的,。單自旋量子調(diào)控是對晶體中的缺陷,,如量子點和金剛石色心進行控制,其信號讀出一般是通過自旋發(fā)生的單個光子進行探測實現(xiàn)的,。在此類實驗中常用的技術(shù)有三種:門光子計數(shù),、定時計數(shù)和相關(guān)函數(shù)測量。文中所述的系統(tǒng)建立了一種可擴展的通信和控制架構(gòu)能夠添加不同方式的計數(shù)功能,。
1 系統(tǒng)結(jié)構(gòu)設計
整體系統(tǒng)結(jié)構(gòu)示意圖如圖1所示,,通過PC機的以太網(wǎng)口實現(xiàn)與計數(shù)系統(tǒng)的數(shù)據(jù)通訊與命令傳輸,PC機將工作模式選擇等命令通過網(wǎng)口向系統(tǒng)發(fā)送,,而系統(tǒng)將在不同模式下的計數(shù)值及計數(shù)狀態(tài)等數(shù)據(jù)通過網(wǎng)口發(fā)送到PC機,,交由PC機對數(shù)據(jù)進行處理。系統(tǒng)的主芯片采用Xilinx的SPARTAN 3E系列的XC3S500E,。系統(tǒng)的光子計數(shù)輸入由兩個BNC接口引入,,這兩個接口可以由FPGA進行配置,使光子計數(shù)器以不同的模式進行工作,。系統(tǒng)的固件燒寫在FLASH芯片內(nèi),,SDRAM提供了大容量存儲空間,用于運行時裝載Microblaze軟核代碼,、計數(shù)應用代碼以及存儲計數(shù)的數(shù)據(jù),。
系統(tǒng)以FPGA為處理中心,實現(xiàn)各種工作模式,,其功能框圖如圖2所示,。功能模塊主要包括軟核Microblaze、對外部存儲器的接口MPMC,、以及需要設計實現(xiàn)的Counterpulse IP核,。在Counterpulse IP核與處理器軟核之間,采用了FSL總線進行連接,,實現(xiàn)由Microbalze對Counterpu-lse核的配置,,以及由Counterpulse核到Microblaze的數(shù)據(jù)傳輸。
系統(tǒng)工作時,,由Microblaze軟核通過網(wǎng)口接收由PC機發(fā)送來的命令,,根據(jù)命令,通過一路FSL總線對光子計數(shù)IP核進行工作模式的選擇和配置,。計數(shù)IP核對外部計數(shù)源進行計數(shù),,計數(shù)的結(jié)果和狀態(tài)數(shù)據(jù)通過另一路FSL總線發(fā)送到Microblaze軟核,由Microblaze軟核將該數(shù)據(jù)在DDRRAM內(nèi)進行緩沖,,并通過網(wǎng)口將這些數(shù)據(jù)最終發(fā)送給PC機,,由PC機進行分析處理,。
系統(tǒng)有三種工作模式:模式一:使能計數(shù),使能信號有效時(高電平有效),,對光子計數(shù)輸入的計數(shù)脈沖信號進行計數(shù),;模式二:定周期計數(shù),根據(jù)設定的計數(shù)周期,,對光子計數(shù)輸入的計數(shù)脈沖信號進行計數(shù),;模式三:啟動和停止信號分開的計時,根據(jù)輸入的計數(shù)啟動信號和計數(shù)停止信號(均為上升沿有效),,進行以系統(tǒng)基頻為基準的計時,,以實現(xiàn)函數(shù)測量。
2 系統(tǒng)設計實現(xiàn)
2.1 系統(tǒng)硬件框圖
計數(shù)系統(tǒng)硬件結(jié)構(gòu)如圖3所示,,由FPGA,、64MB的DDR存儲器、16MB的FLASH存儲器和10M/100M以太物理層(PHY)等組成,。系統(tǒng)工作時,,由PC機通過網(wǎng)口發(fā)送命令到FPGA,F(xiàn)PGA內(nèi)部的Microblaze軟核配置計數(shù)IP核的工作模式,,由FPGA通過兩路BNC接口對外部計數(shù)源進行計數(shù),,并將數(shù)據(jù)在DDRRAM內(nèi)進行緩沖,最終將這些數(shù)據(jù)通過網(wǎng)口發(fā)送到PC機,。
2.2 主要元器件介紹
2.2.1 FPGA芯片及其配置芯片選用
FPGA選用Xilinx公司的Spartan-3E系列XC3S500E,,采用先進的90nm制造工藝生產(chǎn),,其器件密度為50萬門,。Spartan3系列的FPGA是Xilinx公司專門針對大容量、低成本需求的電子設計而開發(fā)的,,可支持多種電平的I/O標準,;含有豐富的邏輯資源。XC3S500E具有360kbits的塊RAM,、73kbits的分布式RAM,、10476個邏輯單元、20個18×18的乘法器和4個DCM時鐘管理模塊,。
FPGA的配置芯片選用的是Xilinx公司的在系統(tǒng)可編程配置芯片XCF04S,,該芯片可為XC3S500E提供易于使用、成本低且可重復編程的配置數(shù)據(jù)存貯方法,,該芯片支持IEEE1149.1標準的JTAG邊界掃描測試和編程,。在本系統(tǒng)設計中,XCF04S主要存放用于引導Microblaze軟核及應用程序的引導代碼,。
2.2.2 存儲芯片
系統(tǒng)使用的RAM是Micron Technology公司的DDRSDRAM(MT46V32M16),,是一片容量為512Mbit(32Mx16)的16位總線寬度存儲芯片,,用于上電后加載Microblaze軟核代碼和應用程序代碼,以及對計數(shù)數(shù)據(jù)進行緩沖,。FLASH芯片是Intel StrataFlash parallel NORFlash,,型號為28F256J3,存儲密度為256Mbit,,在本系統(tǒng)中用于保存Microblaze軟核代碼和應用程序代碼,。
3 功能設計實現(xiàn)
3.1 基于EDK的FPGA軟核Microblaze的應用設計實現(xiàn)
系統(tǒng)設計工具主要采用Xilinx公司的嵌入式開發(fā)套件EDK,它是用于設計嵌入式處理系統(tǒng)的集成解決方案,。它包括搭建硬件平臺的XPS和進行軟件配置的SDK,。
Microblaze是Xilinx公司推出的32位軟處理器核,支持CoreConnect總線的標準外設集合,。MicroBlaze處理器運行在150MHz時鐘下,,可提供125 D-MIPS的性能,這種高效的軟核在本系統(tǒng)中可用于實現(xiàn)處理器功能,,實現(xiàn)對計數(shù)IP核的配置,,以及支撐Xilinx的clockgenerator、Et-hernet等IP核,。系統(tǒng)對計數(shù)器的實現(xiàn)采用Verilog語言將計數(shù)功能編寫為IP核,,將其通過FSL總線掛在Microblaze軟核上,以實現(xiàn)計數(shù)功能,。
3.2 通訊協(xié)議
Microblaze到計數(shù)IP核之間的通訊數(shù)據(jù)定義如下:
計數(shù)IP核到Microblaze之間的通訊數(shù)據(jù)定義如下:
3.3 計數(shù)IP核的設計實現(xiàn)
3.3.1 計數(shù)IP核的結(jié)構(gòu)
計數(shù)IP核采用verilog硬件語言編寫,,其結(jié)構(gòu)如圖6所示,頂層文件counterpulse3對接口進行配置,,并根據(jù)FSL總線上的命令參數(shù)選擇工作模式,,pulsecount1、pulsecount2和pulsecount3分別是3種工作模式的代碼實現(xiàn),,fsloprt是與FSL進行接口的代碼,。
3.3.2 與FSL總線接口
fslopn.v的代碼完成與FSL總線接口功能。FSL總線是單向點對點的通道,,它用于完成任意FPGA中兩個模塊的快速通訊,。FSL總線是基于FIFO的,基于非共享的無仲裁通信機制,,它的深度是可以設置的,,最大可以到8k,具備高速的通信性能,,其結(jié)構(gòu)如圖7所示,。
由于FSL總線是單向的,所以系統(tǒng)中采用了兩條FSL總線,實現(xiàn)Mieroblaze到計數(shù)IP核之間的雙向通訊,,計數(shù)IP核在面對兩條FSL總線時,,擔當?shù)姆謩e是MASTER(主)和SLAVE(從)兩種角色。因此,,fsloprt.v的代碼應該同時滿足與FSL總線接口的讀和寫時序,。讀寫時序如圖8和圖9所示。
3.4 計數(shù)IP核和FSL總線的在EDK中的連接實現(xiàn)
為了能使用FSL總線,,首先應該在XPS圖形界面中對Microblaze進行配置,,在Buses中將Number of FSL Links設置為1。再在IP Catalog中將FSL總線加入到工程中兩次,。
在計數(shù)IP核編寫后并綜合通過后,,將該IP核導入到XPS工程中。
在XPS中,,分別對Microblaze和計數(shù)IP核的MFSL和SFSL進行連接,,將Microblaze的MFSL端連接到計數(shù)IP核的SFSL端,反之將計數(shù)IP核的MFSL端連接到Microblaze的SFSL端,。并在system.mhs中進行如下配置:
由于從計數(shù)IP到Microblaze方向數(shù)據(jù)量較大,,所以對FSL總線的深度進行了配置,如上述代碼中,,PARAMETERC_FSL_DEPTH=128,,被配置為128級深度。
4 結(jié)論
在系統(tǒng)的設計中,,光子計數(shù)IP核與Mieroblaze軟核之間通過FSL總線進行通訊,,并且對FSL總線上的FIFO緩沖進行了深度擴充,大大增強了光計數(shù)數(shù)據(jù)的傳輸可靠性,。由于系統(tǒng)將門光子計數(shù)的三種模式,,以IP核的方式實現(xiàn),相對于市場上商用的計數(shù)器來說,,實現(xiàn)方式靈活,,易于配置和擴展,,這種方式為門光子其他可能潛在的計數(shù)需求留下了擴展的基礎,,并具有較低的設計和生產(chǎn)成本。
作者:馬正源 徐南陽 來源:現(xiàn)代電子技術(shù)