唐海峰,趙建軍,吳光敏,吳亞平,趙 恩
(昆明理工大學 理學院,云南 昆明 650500)
?
基于FPGA的皮秒計數設計*
唐海峰,趙建軍,吳光敏,吳亞平,趙恩
(昆明理工大學 理學院,云南 昆明 650500)
摘要:在實際的現場可編程門陣列(FPGA)設計中,對納秒以下的時間計數至今沒有很好的方法進行處理。在以往的FPGA實現中,往往采用官方提供的DCM或PLL對時鐘信號進行倍頻處理。上述方法由于受到硬件資源的約束,用戶不能隨心所欲地對時鐘信號進行多次處理,原因在于器件內部的DCM有限。提出了以IODELA原語為基礎的方法進行時間計數設計,采用Verilog HDL硬件描述語言對皮秒進行計數操作,以Xilinx官方的Zedboard開發板和Virtex5開發板、以IODELAY原語與IDELAY原語為基礎對納秒以下的時間進行操作。經過功能仿真與板級驗證,成功地實現了對于75 ps~4 ns(主頻250 MHz的頻率)的高精度計數功能。皮秒計數的實現,對于時間測量電路中細時間(主頻頻率<4 ns的時間,即75 ps~4 ns的時間)的生成,以及對于進行FPGA納秒級別以下的時鐘操作產生了巨大且深遠的作用。目前,該單元已經成功地應用在了時間測量電路的設計上。
關鍵詞:現場可編程門陣列;原語;皮秒計數;功能仿真;倍頻
現場可編程門陣列(Field-Programmable Gate Array, FPGA)中使用的晶振為MHz頻率,時鐘周期即為ns級別。在FPGA中要完成對一個信號的倍頻只能利用IP核對其進行倍頻操作,而沒有辦法像分頻處理一樣利用Verilog/VHDL代碼對它直接進行操作[1];但是在FPGA中資源是有限的,PLL/DCM的IP核也是有限的,并不能一直對其進行隨意次的倍頻操作。本設計利用Xilinx公司提供的原語直接對FPGA進行ps級別的操作,完成了直接利用代碼進行源時鐘的倍頻操作,根據需求的不同可以最大倍頻到75 ps。倍頻范圍為75 ps至主頻時鐘。
1基于Zedboard開發板的皮秒計數設計
Zedboard開發板是近年Xilinx公司推出的產品。該開發板采用Xilinx 7系列芯片XC7Z020封裝為CLG484,等級速度為-1。Zedboard具有2個ARM9的硬核,用戶可以單獨對FPGA進行設計,也可以與ARM進行協同設計[2]。在視頻處理、電動機控制和以太網通信等方面得到了廣泛的應用。Zedboard開發板的實物圖如圖1所示,本設計因為只進行FPGA操作而不需要用到ARM,所以應將JP7、JP8、JP9、JP10和JP11接到低電平,JP3和JP6不接短路帽[3]。

圖1 Zedboard開發板實物圖
在Xilinx官方提供的用戶手冊上可以找到關于IDELAY原語的介紹。在Artix 7系列芯片中,每個用戶I/O管腳的輸入通路都有一個IDELAY模塊。IDELAY具有可控制31個抽頭延遲線,每個抽頭的延遲為75 ps,且與進程、電壓和溫度特性無關。IDELAY原語的RTL模塊圖如圖2所示。

圖2 IDELAY原語RTL模型
在圖2中,端口I為來自于IOB的串行輸入數據的單比特輸入信號,其中,端口I應由外部信號輸入,不能由FPGA自身產生的信號作為I口的輸入。簡單而言,就是在頂層模塊端口I應為input。輸入C端口為時鐘輸入信號。INC端口用于增加或減少延遲抽頭數。CE端口為是否能使延遲抽頭數量增加或減少的功能。RST端口為復位延遲鏈的延遲抽頭數。O端口為單比特輸出信號。IDELAY具有3種操作:1)零保持時間延遲模式(IDELAY_TYPE = DEFAULT),在沒有DCM的情況下使用全局時鐘采集數據,用這種延時單元提供“非正保持時間”;2)固定延遲模式(IDELAY_TYPE = FIXED),通過屬性值IDELAY_VALUE確定tap數從而確定延遲時間;3)可變延遲模式(IDELAY_TYPE = VARIABLE),通過控制信號CE和INC來改變延遲時間。本文采用固定延遲模式IDELAY = FIXED來進行75 ps的計數。由于采用的時鐘頻率為2 ns,所以本文要到達由75 ps~2 ns的計數,設定IDELAY_VALUE的值為i,其中i值為0~26,當i為26時,計數到1 950 ps。對IDELAY進行完例化后,根據用戶手冊的要求還應對原語IDELAYCTRL進行例化。IDELAYVTRL原語的RTL模型如圖3所示。

圖3 IDELAYCTRL原語的RTL模型
在圖3中,RST端口為復位端口,當RST為高時,開始工作,REFCLK提供了一個參考時鐘,校準IDELAY模塊在同一時鐘區域。RDY端口表示在特定區域的IODELAY模塊準備就緒。在例化中RST置為高,其他2管腳懸空。完成上述所有設計后,應用Modelsim軟件對其仿真產生波形(見圖4)。
由圖4可以觀察到第1位比第0位滯后75 ps,第2位比第1位滯后75 ps,依次類推直到第26位。
2基于Virtex5開發板的皮秒計數設計
Virtex5開發板屬于Xilinx公司Virtex系列芯片,XC5VLX50T封裝為ff1136,等級速度為-1。此款開發板并沒攜帶硬核只能單獨進行FPGA的設計,但這個開發板的IOB資源比Zedboard開發板資源多。采用時鐘頻率為250 MHz,所以要到達75 ps~4 ns的設計要求。Virtex5開發板的實物圖如圖5所示。

圖5 Virtex5開發板實物圖
根據Xilinx官方提供的Virtex5系列的用戶手冊,可以觀察到IODELAY的原語介紹,V5開發板并沒有IDELAY的原語。其中,IODELAY原語相對于IDELAY原語而言,多了一種配置方式,可以將IODELAY配置成ODELAY的方式進行延遲,其余的和IDELAY的無太大差別。在ODELAY的方式下,輸入管腳不再必須由外端輸入,可以由FPGA內部的信號產生。在工程量很大的情況下,大大減少了外接輸入管腳的麻煩。IODELAY原語的RTL模型如圖6所示。

圖6 IODELAY原語的RTL模型
在圖6中,IDATAIN為來自IOB的IODELAY數據輸入信號,ODATAIN為來自OSERDES/OLOGIC的IODELAY模式的輸入信號,DATAIN為FPGA內部資源的IODELAY數據輸入。DATAOUT為經過IODELAY延遲后的輸出數據。T端口可以控制IODELAY是作為IDELAY模式還是作為ODELAY模式。CE為啟動遞增或遞減功能。INC為Tap延遲的遞增/遞減數。RST將IODELAY單元復位到預設定值。C為可變模式下使用的時鐘輸入。IODELAY仍選擇固定延遲模式,由ODATAIN進行信號的輸入。在ODELAY模式下可以不必例化IDELAYVTRL原語。利用Modelsim進行仿真后與圖4完全一樣。其中,應注意在ODELAY模式下輸出DATAOUT端口在頂層模塊中應作為輸出端口[4]。
3對原語延遲后進行優化處理
由圖4可以清楚地看出,后一位數據相對于前一位數據延遲了75 ps。利用后一位與前一位相異或處理,可以得到波形(見圖7)[5-6]。

圖7 進過優化后的皮秒計數
在圖7中可以清楚地看到,時鐘信號被分為了M等份,相當于把時鐘信號倍頻了M等份,清楚表現了納秒以下的時鐘操作。
4總結
本文基于Zedboard和V5開發板進行了納秒以下時間的計數,提出了一種基于原語的方式進行皮秒計數的一種方式,為TDC等許多方面的設計提供了一種參考。本文完成了納秒級別以下的計數,為很多FPGA無法處理皮秒時鐘提供了參考。
參考文獻
[1] 張澤,劉慧慧,田濤,等. 基于Verilog的FPGA整數分頻器設計[J]. 北京:新技術新工藝,2015(4):40-42.
[2] 陸佳華,潘祖龍,彭競宇. 嵌入式系統軟硬件協調設計實戰指南[M]. 北京:機械工業出版社,2014.
[3] 何賓. Xilinx All Programmable Zynq-7000 SOC設計指南[M]. 北京:清華大學出版社,2013.
[4] 何賓. Xilinx可編程邏輯器件設計技術詳解[M]. 北京:清華大學出版社,2010.
[5] 夏宇聞. Verilog數字系統設計交叉[M]. 北京:北京航空航天大學出版社,2013.
[6] 宋建. 基于Fpga的精密時間-數字轉換電路研究[D]. 合肥:中國科學技術大學,2007.
* 國家自然基金資助項目(11103069)
責任編輯彭光宇
Picosecond Counting Design Based on FPGA
TANG Haifeng, ZHAO Jianjun, WU Guangmin, WU Yaping, ZHAO En
(Kunming University of Science and Technology, Kunming 650500, China)
Abstract:In the actual FPGA design, there are not very good methods for counting under nanosecondtime. The implementation of the clock signal frequency doubling is usually used in official DCM or PLL.Due to the constraints of the hardware resources, the above method could not make the user deal with the clock signal for many times in free.The reason is that the numbers of DCM are limited in the internal device. Put forward a method to design time count based on the IODELA. Use hardware description language of Verilog HDL to count picosecond. Operate under nanosecond time based on IODELAY primitive and IDELAY primitive with Xilinx official Zedboard development board and Virtex5 development board. Propose a method of counting under nanosecond time based on primitive. Through the function simulation and board level validation, it is successful in implementation for 75 ps to 4 ns (main frequency 250 MHZ frequency) of high precision counting function. Implementation of picosecond count is very important for time measurement circuit of fine time (frequency frequency under 4 ns time is that time of the 75 ps to 4 ns), as well as for the FPGA nanosecond level below the clock operation. At present, the unit has been successfully used in the design of time measurement circuit.
Key words:field programmable gate array, primitive, picosecond count, functional simulation, frequency doubling
收稿日期:2015-06-23
通信作者:趙建軍
作者簡介:唐海峰(1988-),男,碩士研究生,主要從事嵌入式等方面的研究。
中圖分類號:TN 40
文獻標志碼:A