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