施賽烽, 葉潤川, 林 雪, 徐南陽
(合肥工業(yè)大學 電子科學與應用物理學院,安徽 合肥 230601)
脈沖發(fā)生器在量子信息領域有著極其重要的作用,在量子實驗中,各個儀器的控制與同步都離不開脈沖發(fā)生器。例如,在基于固態(tài)自旋量子調控實驗[1-4]中,會對金剛石中的氮-空位(nitrogen-vacancy,NV) 色心進行一些操作,所用的儀器都是由脈沖發(fā)生器進行控制,如用脈沖信號控制聲光調制器(acousto-optic modulator,AOM)來控制激光的通斷、通過控制微波開關來調節(jié)發(fā)送微波脈沖的時間長度進而調控量子自旋狀態(tài)等。
文獻[5]分析了基于專用集成電路(application-specific integrated circuit,ASIC)芯片設計的脈沖發(fā)生器[6-7]和基于現(xiàn)場可編程門陣列(field-programmable gate array,FPGA)芯片設計的脈沖發(fā)生器[8]的優(yōu)缺點;對于本文項目中的實驗,基于FPGA的脈沖發(fā)生器更能滿足實驗的需求。本文項目組基于Xilinx Spartan-3E 系列 FPGA芯片和同步動態(tài)隨機存儲器(synchronous dynamic random-access memory, SDRAM)實現(xiàn)了最小精度為2 ns的多通道可編程脈沖發(fā)生器[5]。該脈沖發(fā)生器指令存儲空間為32 MiB,通過USB2.0進行PC端與硬件端的通信,為實驗帶來了很大便利。然而對于演化時間非常短的物理現(xiàn)象,脈沖信號的精度和準確度都非常重要,符合實驗要求的脈沖序列往往非常復雜,采用2ns精度脈沖發(fā)生器雖然也能完成實驗,實驗數(shù)據(jù)的準確度卻會受到影響。因此,需要進一步提升精度、指令存儲空間等性能,以便更精確地控制實驗儀器,從而提升整個實驗數(shù)據(jù)的準確度。
本文在文獻[5]研究基礎上,采用Xilinx Artix-7系列 FPGA芯片結合第三代雙倍速率同步動態(tài)隨機存儲器(third generation of double-data-rate synchronous dynamic random-access memory, DDR3 SDRAM)芯片的方式來實現(xiàn)精度為1ns的24通道可編程脈沖發(fā)生器。對于本文實驗,FPGA芯片等級的提升能使本文設計在更高頻率的時鐘下工作,同時將USB2.0傳輸提升至USB3.0以達到更高的數(shù)據(jù)傳輸速度。而DDR3 SDRAM能在時鐘上升沿和下降沿同時傳輸數(shù)據(jù)[9-10],在頻率不變的情況下,能完成的數(shù)據(jù)吞吐量是SDRAM的2倍;同時, DDR3 SDRAM相比于前2代,能夠進行8位預讀取[9],其每次讀寫操作位寬可達256位,大大提高了讀寫效率。
本文高精度數(shù)字脈沖發(fā)生器系統(tǒng)結構框圖如圖1所示,該系統(tǒng)由3部分組成:① 上位機系統(tǒng),實現(xiàn)數(shù)字脈沖序列編碼,向FPGA處理模塊發(fā)送指令并接收狀態(tài)反饋信息;② FPGA處理模塊,主要包括數(shù)據(jù)傳輸模塊、編碼和解碼先進先出(First-in First-out,FIFO)緩沖模塊、DDR3 SDRAM 控制模塊、數(shù)據(jù)解碼模塊、序列輸出模塊及總控制模塊;③ DDR3 SDRAM 芯片,用來存儲上位機發(fā)來的脈沖序列數(shù)據(jù)。
圖1 數(shù)字脈沖發(fā)生器系統(tǒng)結構
本設計的上位機采用 Python語言作為控制和編程環(huán)境,大大簡化了控制和編譯難度;同時,用數(shù)字0和1將電平的高低直接表現(xiàn)出來,這種方式最大的優(yōu)點是可以將脈沖信號時間順序通過數(shù)據(jù)直觀地表現(xiàn)出來[11],但是,采用這種方式也會產(chǎn)生大量的存儲數(shù)據(jù),使得最終輸出的脈沖信號時間長度完全受限于存儲空間的大小,也大大增加了操作難度。因此,本設計對這些二進制數(shù)進行了編碼,在發(fā)送指令時只需給定參數(shù)而不用指定每個時間片的高、低電平,最終通過編碼數(shù)據(jù)在硬件端的處理算出所有的脈沖信息,從而有效降低了數(shù)據(jù)的復雜性和實驗人員的操作難度。
編碼后的脈沖數(shù)據(jù)為128 bit,其數(shù)據(jù)格式如圖2所示。
圖2中:停止位stop為最高位,控制脈沖數(shù)據(jù)傳輸?shù)慕Y束;計數(shù)位count為96~126位,該31位數(shù)據(jù)控制當前脈沖數(shù)據(jù)循環(huán)的次數(shù);序列信息位sequence為低96位,表示24個通道的脈沖序列信息,每個通道占4位。
圖2 編碼后的數(shù)據(jù)格式
編碼完成后的數(shù)據(jù)通過USB3.0發(fā)送給FPGA的數(shù)據(jù)傳輸模塊;同時上位機發(fā)送控制命令控制FPGA的狀態(tài),并通過數(shù)據(jù)傳輸模塊接收FPGA的狀態(tài)反饋信息[12-13]。
FPGA的數(shù)字邏輯模塊如圖1虛線框內(nèi)所示。
總控制模塊用于接收上位機發(fā)來的控制指令,從而控制存儲器、FIFO的復位,存儲控制器的讀寫以及將當前狀態(tài)反饋給上位機;數(shù)據(jù)傳輸模塊用于接收上位機發(fā)來的指令并傳送給總控制模塊,以及將上位機發(fā)送的編碼數(shù)據(jù)傳輸給編碼FIFO,實現(xiàn)上位機與FPGA之間的通信;編碼FIFO模塊和解碼FIFO模塊則是起到了優(yōu)化電路時序和改變數(shù)據(jù)位寬的作用[14]。
本設計通過調用MIG IP核以及對用戶接口進行相應的設計來實現(xiàn)對DDR3 SDRAM的控制。外部輸入時鐘為200 MHz,位寬為32位。DDR3 SDRAM工作時鐘為400 MHz,而DDR3 SDRAM雙邊沿讀寫數(shù)據(jù)的特點能使讀寫速率達到800 MHz。DDR3 SDRAM控制器如圖3所示。
圖3 DDR3 SDRAM控制器
寫狀態(tài)包含:① IDLE,初始化完成后,等待寫指令;② FIFO1-WRITE,判斷編碼FIFO中的數(shù)據(jù)是否有效;③ FIFO1-READ,判斷DDR3 SDRAM中的存儲空間是否足夠完成一次突發(fā)寫入,若可以,則將數(shù)據(jù)從編碼FIFO模塊中讀出;④ DDR-WRITE,存儲控制器向DDR3 SDRAM中寫入數(shù)據(jù);⑤ ADDRESS-WRITE,判斷存儲控制器向DDR3 SDRAM中寫入的數(shù)據(jù)是否完成,若完成,則將寫地址加8。讀狀態(tài)包含:① IDLE,初始化完成后,等待讀指令;② FIFO2-READY,判斷FIFO中的存儲空間是否能夠完成一次突發(fā)寫入;③ ADDRESS-READ,判斷讀寫地址是否相同,若相同,則讀地址置0。若不相同,則讀地址加8;④ DDR-READY,判斷DDR3 SDRAM中的數(shù)據(jù)是否有效;⑤ DDR-READ,將數(shù)據(jù)從存儲器中讀出寫入編碼FIFO。
數(shù)據(jù)解碼模塊的功能是將軟件端編碼的數(shù)據(jù)進行相應的解碼。低96位通道信息數(shù)據(jù)傳輸給序列輸出模塊產(chǎn)生高精度脈沖;31位count值設計為一個減法計數(shù)器,在count=0之前,循環(huán)地將當前96位的通道信息數(shù)據(jù)傳輸給序列輸出模塊;stop用來控制單次脈沖的結束,stop=1時,停止脈沖數(shù)據(jù)更新;stop=0時,繼續(xù)從解碼FIFO中更新脈沖數(shù)據(jù)。
序列輸出模塊的功能是將解碼模塊產(chǎn)生的96位通道信息數(shù)據(jù)進行序列化輸出。數(shù)據(jù)以24×4的形式并行輸入,通過高速并串轉換產(chǎn)生脈沖序列。并串轉換的過程如圖4所示。
圖4 解碼與高速序列化輸出過程
整個并串轉換過程分為2段,第1段以250 MHz的工作時鐘完成2位數(shù)據(jù)的并轉串,第2段再以500 MHz的工作時鐘進行并串轉換,并通過專用數(shù)據(jù)輸出寄存器(dedicated dual data rate output register,ODDR)完成數(shù)據(jù)的輸出。ODDR能實現(xiàn)數(shù)據(jù)在上升沿和下降沿同時輸出數(shù)據(jù),因此在500 MHz的工作時鐘下,最終實現(xiàn)了24個通道精度為1 ns的脈沖序列信號,其電平標準為LVCOMS33。
本設計的軟件環(huán)境采用Python2.7,硬件綜合工具為Vivado2016.3。硬件部分選用Xilinx公司Artix-7系列的XC7A200T-1FGG484芯片和2片Micron公司MT41K256M16TW型號DDR3 SDRAM芯片。2片DDR3 SDRAM的位寬為32位,存儲空間高達1 GiB。本文對脈沖發(fā)生器進行測試的設備是普源公司的DS4054型號示波器,其帶寬為500 MHz,最高實時采樣率為4 GSa/s。最終的測試與實驗結果如圖5所示。
圖5 脈沖測試和拉比振蕩實驗結果
圖5a所示為同一時間脈沖發(fā)生器3個通道的輸出脈沖信號,其寬度的設置分別為1、2、4 ns。由圖5a可知,其輸出實際值與設定值基本吻合。因此,可以得出以下結論:① 可以產(chǎn)生最小脈沖寬度和精度為1 ns的信號;② 上升沿和下降沿時間均小于1 ns;③ 各個通道可獨立穩(wěn)定工作。
本文還通過拉比振蕩實驗分別對2種精度的脈沖發(fā)生器進行了驗證。首先,通過一段532 nm激光將電子自旋態(tài)以較高保真度初始化到ms=0基態(tài)上,然后施加微波脈沖序列實現(xiàn)電子自旋態(tài)翻轉[15],最后利用激光讀出NV電子自旋熒光信息。
由圖5b可知,2種精度下擬合系數(shù)分別為0.97、0.78,這表明用1 ns精度產(chǎn)生的數(shù)據(jù)擬合度更高;2種精度下差值平方和分別為0.78、1.34,這表明1 ns精度擬合圖形上的點與真實實驗數(shù)據(jù)差值更小。由此可見,本文設計的1 ns精度脈沖發(fā)生器大大提高了實驗數(shù)據(jù)的準確性。
本文實現(xiàn)了基于FPGA和DDR3 SDRAM的1 ns精度多通道可編程脈沖發(fā)生器。本設計在提高精度和提升指令存儲空間的同時,仍保持了2 ns精度脈沖發(fā)生器多通道、可編程、可與外部時鐘同步等特點。對系統(tǒng)產(chǎn)生的脈沖信號進行測試,結果表明,輸出脈沖達到1 ns精度且各通道工作穩(wěn)定、互不影響。采用NV量子實驗平臺通過拉比振蕩實驗對本設計加以驗證,并與2 ns精度的脈沖信號對比,結果表明其不僅能夠產(chǎn)生符合量子調控實驗需求的脈沖信號,而且能使實驗數(shù)據(jù)更加準確。由于本設計的最小精度主要受限于FPGA芯片的工作頻率,隨著FPGA性能不斷進步,本設計可達到的最小精度仍會有很大的提升空間。