張志剛 趙玉彬 徐 凱 鄭 湘 李 正 趙申杰 常 強 侯洪濤 劉建飛
?
基于FPGA的多cell腔的場平坦度控制
張志剛1,2趙玉彬1,2徐 凱1,2鄭 湘1,2李 正1,2趙申杰1,2常 強1,2侯洪濤1,2劉建飛1,2
1(中國科學院上海應(yīng)用物理研究所嘉定園區(qū) 上海201800)2(上海市低溫超導高頻腔技術(shù)重點實驗室 上海201800)
在多cell腔的場平坦度控制處理中,最重要的算法為除法運算,而傳統(tǒng)整數(shù)除法算法采用多次相減和移位的方法來實現(xiàn),其算法存在以下缺點:相減運算消耗大量時鐘即“吃時鐘”、每完成一次算法所需時鐘周期不固定以及此算法在實際工程中不能有效工作。針對傳統(tǒng)整數(shù)除法器的弊端,提出一種基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array, FPGA)的循環(huán)型不可恢復(fù)除法器。設(shè)計的循環(huán)型不可恢復(fù)除法器通過改善程序結(jié)構(gòu)和優(yōu)化時序,實現(xiàn)除法運算速度的提高和固定運算所需時鐘周期的目的。此算法通過QuartusII編譯和綜合,以及仿真工具ModelSim的仿真驗證,達到預(yù)期功能效果,同時在上海光源增強器高頻數(shù)字低電平控制器中被采用,實現(xiàn)場平坦度穩(wěn)定度在±1.3%以內(nèi),完成每次運算所需35個時鐘周期,優(yōu)于設(shè)計指標。
現(xiàn)場可編程門陣列,循環(huán)型,除法器,場平坦度控制,時鐘周期
隨著加速器對高能量和高性價比的要求,多cell高頻腔得到發(fā)展及應(yīng)用。在多cell高頻腔的控制中,為保障腔體的正常工作,高頻低電平控制器除了包含頻調(diào)環(huán)路控制外,還需要增加場平坦度控制。同時,數(shù)字技術(shù)得到快速發(fā)展,低電平控制技術(shù)也基本實現(xiàn)數(shù)字化,例如:上海光源(Shanghai Synchrotron Radiation Facility, SSRF)增強器高頻數(shù)字化低電平控制器[1]、歐洲自由電子激光(European X-ray Free-Electron Laser, European XFEL)數(shù)字高頻控制器[2]等。
以SSRF的增強器高頻系統(tǒng)(圖1)為例引入多cell腔的控制,此系統(tǒng)主要包含低電平控制器(Low Level Radio Frequency, LLRF)、高頻功率源(Klystron)、功率分配器(Magic T)、兩臺5-cell常溫腔(Cavity#1和Cavity#2)和傳輸系統(tǒng)[3?4]。在5-cell常溫腔的第2個cell和第4個cell處安裝有步進馬達,主要用于腔的頻率和場平坦控制,場平坦度的計算如式(1)[1,3]:
數(shù)字低電平控制器主要采用的是數(shù)字同向/正交/(In-phase/Quadrature)技術(shù)[5?6]。
圖1 上海光源增強器高頻系統(tǒng)框圖
Fig.1 Layout of the radio frequency system of SSRF booster.
在場平坦度控制算法中,除法作為最重要的運算影響控制器的整體性能。除法是四則基本運算里面最繁雜的,也是最難實現(xiàn)的。特別是在現(xiàn)場可編程門陣列(Field-Programmable Gate Array, FPGA)的算法設(shè)計中,除法器的運算精度、運算速度和預(yù)知運算所占時鐘周期對系統(tǒng)的整體性能具有較大影響。目前,實現(xiàn)除法器的方法主要有兩種:硬件實現(xiàn)和軟件實現(xiàn)。硬件實現(xiàn)的方法主要通過將被除數(shù)寄存器的內(nèi)容不斷地向除數(shù)的最高位移動來完成除法運算,以耗費硬件資源為代價,來實現(xiàn)高速計算的特點;件實現(xiàn)除法器算法主要是通過“減并移位”的思想來實現(xiàn),即從被除數(shù)中重復(fù)地減去除數(shù),直到已檢測到余數(shù)小于除數(shù)為止,這樣可以通過累計減法運算的次數(shù)而得到商,而余數(shù)是在減法運算結(jié)束時被除數(shù)中的剩余值。軟件實現(xiàn)除法器算法進一步提高器件的工作頻率和設(shè)計的靈活性,可以從總體上提高設(shè)計性能。因此,設(shè)計一種基于Verilog的硬件描述語言(Hardware Description Language, HDL)且運算速度快和預(yù)知運算所占時鐘周期的循環(huán)型除法器,在FPGA數(shù)據(jù)處理中具有很重要的實際意義和工程價值。
循環(huán)型除法器也稱位操作除法器,算法主要包含移位、相減和比較三種操作,通過此三種操作實現(xiàn)求商和余數(shù)。
假設(shè)給定比特自然數(shù)(被除數(shù))與比特整數(shù)(除數(shù))[7],也即:0≤<2和0≤<2。則除以的整數(shù)除法器可以表示為:
?()(2)
式中:為除法運算的商;為除法運算的余數(shù)。并且都為自然數(shù)。
在進行除法運算時,首先須將被除數(shù)與除數(shù)對齊。采用¢=2?來替代,則精度為的除法可以寫為:
2?=?′′ (′<′) (3)
或者是:
=?′?2+R′?2=?′?2
(=′/2<′) (4)
為了減少運算過程中的位寬,式(4)可以用′=/2來替代,用′=2?1?來替代。相應(yīng)的迭代過程為:
其中:(0)=。式(4)可以寫成下面的方程:
?2[(1)?2?1(2)?2?2()?20]?() (6)
因此:
=(1)?2?1(2)?2?2()?20(7)
′=() (8)
除法器有操作簡單的傳統(tǒng)除法器和優(yōu)化設(shè)計的循環(huán)型除法器,傳統(tǒng)除法器主要是通過遞減和比較兩種操作實現(xiàn)求商和余數(shù),而循環(huán)型除法器通過移位、相減和比較三種操作實現(xiàn)求商和余數(shù)[8?10]。
2.1 傳統(tǒng)除法器算法設(shè)計
傳統(tǒng)除法器的設(shè)計相對簡單,主要是采用下列步驟:1) 初始化,包括:獲取除數(shù)(Divisor)和被除數(shù)(Dividend)的正負關(guān)系、正值化被除數(shù)和除數(shù)、商數(shù)遞增(被除數(shù)與除數(shù)遞減)、正值化除數(shù);2) 遞減()結(jié)束:當正值化被除數(shù)小于正值化除數(shù)時,遞減過程剩下的是余數(shù),且?guī)氡怀龜?shù)的正負關(guān)系;3) 判斷輸出的結(jié)果正負關(guān)系:根據(jù)除數(shù)和被除數(shù)的正負關(guān)系決定商(Quotient)和余數(shù)(Reminder)的符號。傳統(tǒng)除法器算法設(shè)計流程框圖如圖2所示。
圖2 傳統(tǒng)型除法器算法設(shè)計流程圖
雖然傳統(tǒng)除法器的設(shè)計和實現(xiàn)較為簡單,但是當被除數(shù)和除數(shù)相差較大時,整個除法運算所消耗的時鐘周期較多的弊端就會顯露出來,其不僅影響算法的運算速度,而且每次算法所耗時鐘周期不固定,對整個系統(tǒng)的性能帶來影響,實際用途較低。故提出一種基于Verilog HDL的循環(huán)型恢復(fù)除法器,此除法器通過改善程序結(jié)構(gòu)和優(yōu)化時序,能提高除法運算速度,同時具有預(yù)知每次除法運算所需的時鐘周期的特點。
2.2 循環(huán)型除法器算法設(shè)計
循環(huán)型除法器也叫位操作除法器,典型的循環(huán)型除法器可分為可恢復(fù)和不可恢復(fù),可恢復(fù)是指滿足特定條件后,運算空間得到釋放,恢復(fù)到初始化的狀態(tài),反之則相反。實驗時采用控制簡便、邏輯清晰的不可恢復(fù)循環(huán)型除法器。
為方便討論,假設(shè)被除數(shù)Dividend為位和除數(shù)Divisor為(≤)位,則運算空間就有+?1,[?1:0]為正值化的被除數(shù)Dividend,[+?1:?1]作為除數(shù)減法運算。為了便于減法運算,創(chuàng)建位數(shù)為+1的空間用于存儲除數(shù)Divisor的負值補碼。同時,為保證運算結(jié)果準確,還需要研究同步運算,使[+?1:?1]和[?1:0]的減法在別的運算空間中進行,命名為空間,空間與空間具有相同的位寬,即用[+?1:0]表示。
循環(huán)型除法器算法的運算流程如下:1)空間被賦予“[+?1:?1]+”;2) 判斷[+?1:0]的最高位,即符號位是邏輯1還是邏輯0,如果為1則表示[+?1:?1]的值小于正值化除數(shù),[+?1:0]左移一位并補0。否則表示[+?1:?1]的值大于正值化除數(shù),空間被賦予空間的值,并且左移一位補1。循環(huán)次數(shù)用表示,具體流程如圖3所示。
圖3 循環(huán)型除法器運算流程圖
針對圖2、3分別用Verilog HDL硬件描述語言編程,為便于討論,假設(shè)被除數(shù)為32位帶符號數(shù),除數(shù)為16位帶符號數(shù),其程序系統(tǒng)模塊圖如圖4所示,其中Clk為系統(tǒng)時鐘信號,Rst為復(fù)位信號,Start_flag為除法器算法啟動信號,Dividend[31:0]為32位被除數(shù),Divisor[15:0]為除數(shù),Done_flag為除法器算法完成信號,Quotient[15:0]為除法器運算得到的商,Reminder[15:0]為除法器運算得到的余數(shù),Sq_diff[47:0]和Sq_temp[47:0]為循環(huán)型除法器運算所拓展的運算空間。
圖4 除法器系統(tǒng)模塊(a) 傳統(tǒng)型除法器,(b) 循環(huán)型除法器
傳統(tǒng)型除法器主要采用遞減和比較兩種操作,故其空間沒有進行拓展。而在循環(huán)型除法器除了采用遞減和比較外,還增加移位操作,故其操作空間需要進行拓展。從圖3可以看出,循環(huán)型除法器比傳統(tǒng)型除法器多使用了兩個48位的操作空間,管腳增加96個,當然在實際使用時并不需要占用寄存器單元,定義Wire類型即可。
本除法器的設(shè)計基于美國Altera公司的StratixII系列的EP2S60F1020I4芯片開發(fā)。經(jīng)QuartusII編譯綜合后,循環(huán)性除法器最高工作頻率能達到288.94MHz,而傳統(tǒng)除法器最高工作頻率為188.43MHz。表1為經(jīng)QuartusII軟件編譯、綜合及時序分析后傳統(tǒng)型和循環(huán)型除法器芯片資源占用情況比較。從表1可得知,傳統(tǒng)型除法器實現(xiàn)組合邏輯和時序邏輯總的邏輯單元數(shù)為206個,而循環(huán)型除法器需要315個,比傳統(tǒng)型除法器增加99個,增加了邏輯資源占用量,同時在管腳數(shù)上也多使用96個,說明循環(huán)型除法器犧牲部分邏輯單元和管腳提高了除法器的運算速度。
表1 邏輯資源占用
在ModelSim仿真工具下對傳統(tǒng)型除法器和循環(huán)型除法器分別進行仿真,假設(shè)Dividend和Divisor分別取4組數(shù)據(jù)如下:?50/4、127000/?534、52700/850、?16434/?1558。仿真波形如圖5所示。
Sq_diff[47:0]和Sq_temp[47:0]分別為在仿真中便于觀察的空間和空間。從圖5(a)可知,傳統(tǒng)除法器在不一樣的被除數(shù)和除數(shù)情況下,就有不一樣的時鐘消耗,在被除數(shù)和除數(shù)相差較小時(?50/4和?16434/?1558),所用時鐘周期較少;被除數(shù)和除數(shù)相差較大時(127000/?534和52700/850),所用時鐘周期較多,且被除數(shù)和除數(shù)相差越大,所花時鐘周期越多,如127000/?534比52700/850所花時鐘周期多。這就說明只要被除數(shù)和除數(shù)相差較大,傳統(tǒng)型除法器就要“多吃”時鐘。而循環(huán)型除法器完成除法運算具有固定的時鐘周期消耗,不會因為被除數(shù)和除數(shù)而變化,如圖5(b)所示。
圖5顯示,在ModelSim仿真工具中,系統(tǒng)時鐘頻率設(shè)定為50MHz,當被除數(shù)和除數(shù)相差較小,如被除數(shù)為?16434、除數(shù)為?1558時,循環(huán)型除法器完成一次除法運算只需要0.75ms,而傳統(tǒng)型除法器則需要的時間為0.35ms,循環(huán)型除法器的運算速度沒有體現(xiàn)出來;但是當被除數(shù)和除數(shù)相差較大,如被除數(shù)127000、除數(shù)為?534時,循環(huán)型除法器完成一次除法運算只需要0.75ms,而傳統(tǒng)型除法器則需要4.5ms,循環(huán)型除法器比傳統(tǒng)型除法器的運算速度提高了6倍。因此針對傳統(tǒng)型除法器因被除數(shù)與除數(shù)相差比較大,而“吃時鐘”的現(xiàn)象,循環(huán)型除法器很好地克服了這個弊端,提高了除法運算整體的運算速度,同時也對完成每次除法器的運算時鐘周期有準確的把握。
依托循環(huán)型觸發(fā)器算法,設(shè)計場平坦度環(huán)路控制邏輯,同時在場平坦度控制中,為了減少步進電機驅(qū)動馬達的頻率,采用二級閾值控制,具體如圖6所示。黑粗線表示場平坦度的活動范圍,±1表示場平坦度控制環(huán)路啟動馬達閾值設(shè)置,±2表示場平坦度控制環(huán)路馬達停止閾值,實線箭頭表示場平坦度在此范圍內(nèi)變化過程中馬達是動作的,虛線箭頭表示場平坦度變化過程時馬達是不動作的。場平坦度環(huán)路失衡超過一定閾值時,驅(qū)動同一腔上的步進電機朝相反方向動作。
圖6 場平坦度環(huán)路中馬達動作關(guān)系
圖7為采用傳統(tǒng)型和循環(huán)型除法器監(jiān)測得到的場平坦度(圖7(b)作為控制用,圖7(a)作為監(jiān)測用),從結(jié)果來看,數(shù)據(jù)已經(jīng)出現(xiàn)錯誤,不能在工程上使用。具體原因可以通過比較傳統(tǒng)型和循環(huán)型除法器的算法設(shè)計可知,循環(huán)型除法器能確定除法運算所需要的時鐘周期,運算過程主要采取移位操作,且考慮到同步因素,被除數(shù)和除數(shù)實際是在另外的寄存器中進行運算;而傳統(tǒng)型除法器未考慮以上三點因素,雖然仿真可以通過,但是在實際工程應(yīng)用中則不能有效地工作。
上海光源增強器主要是對能量為150MeV的電子補充能量,主要工作在升能模式,在長達10h的時間內(nèi),采用循環(huán)型除法器能使場平坦度的控制穩(wěn)定在±1.3%以內(nèi),優(yōu)于設(shè)計指標(≤±4%),如圖7(b)所示。
圖7 在升能模式下的場平度穩(wěn)定性(a) 傳統(tǒng)型除法器,(b) 循環(huán)型除法器
除法作為多cell腔的場平坦度控制中最重要的算法,但因傳統(tǒng)除法器存在完成一次算法時鐘周期不固定且有“吃時鐘”的弊端,同時在實際工程中將不能有效地工作,故升級改進為基于Verilog HDL硬件描述語言的循環(huán)型除法器。循環(huán)型除法器在系統(tǒng)最高工作頻率、完成算法時鐘數(shù)是否固定以及被除數(shù)和除數(shù)相差較大時所消耗的時鐘周期都得到明顯提升。在上海光源增強器高頻數(shù)字低電平控制器中采用循環(huán)型除法器,實現(xiàn)了場平坦度穩(wěn)定度在±1.3%以內(nèi),完成每次運算所需35個時鐘周期,優(yōu)于設(shè)計指標(≤±4%)。
1 Zhang Z G, Zhao Y B, Xu K,. Digital LLRF controller for SSRF booster RF system upgrade[J]. Nuclear Science and Techniques, 2015, 26(3): 030106. DOI: 10.13538/j.1001-8042/nst.26.030106.
2 Hassanzadegan H, Perez F. Analogue LLRF for the ALBA booster[C]. Proceedings of the 11th European Particle Accelerator Conference, Genoa, Italy, 2008: 1416?1418.
3 Jiang M H, Yang X, Xu H J,. Shanghai synchrotron radiation facility[J]. Chinese Science Bulletin, 2009, 54: 4171–4181. DOI: 10.1007/s11434-009-0689-y.
4 Gu Q, Chen L X, Chen M,. RF system for the SSRF booster synchrotron[C]. Proceedings of the 11th European Particle Accelerator Conference, Genoa, Italy, 2008: 754–756.
5 張志剛, 趙玉彬, 徐凱, 等. 基于I/Q解調(diào)原理的校準方法及實驗[J]. 核技術(shù), 2015, 38(3): 030102. DOI: 10. 11889/j.0253-3219.2015.hjs.38.030102.
ZHANG Zhigang, ZHAO Yubin, XU Kai,. Calibration method and experiment based on I/Q demodulation principle[J]. Nuclear Techniques, 2015, 38(3): 030102. DOI: 10.11889/j.0253-3219.2015.hjs.38. 030102.
6 鐘少鵬, 趙明華, 張俊強. 數(shù)字化I/Q技術(shù)用于磁控管頻率控制[J]. 核技術(shù), 2014, 37(4): 040103. DOI: 10.11889/j.0253-3219.2014.hjs.37.040103.
ZHONG Shaopeng, ZHAO Minghua, ZHANG Junqiang. Digital I/Q technology used for magnetron frequency control[J]. Nuclear Techniques, 2014, 37(4): 040103. DOI: 10.11889/j.0253-3219.2014.hjs.37.040103.
7 劉波. 精通Verilog HDL 語言編程[M]. 北京: 電子工業(yè)出版社, 2007: 461?464. LIU Bo. Proficient in Verilog HDL programming language[M]. Beijing: Electronic Industry Press, 2007: 461?464.
8 葉顯陽, 張海勇, 皮代軍, 等. 基于Verilog計算精度可調(diào)的整數(shù)除法器的設(shè)計[J]. 現(xiàn)代電子技術(shù), 2009, 32(3): 146–148. DOI: 10.3969/j.issn.1004-373x.2009.03.046.
YE Xianyang, ZHANG Haiyong, PI Daijun,. Design of integer divider with adjustable precision based on Verilog[J]. Modern Electronics Technique, 2009, 32(3): 146–148. DOI: 10.3969/j.issn.1004-373x.2009.03.046.
9 周殿鳳, 王俊華. 基于FPGA的32位除法器設(shè)計[J]. 信息化研究, 2010, 36(3): 26–28. DOI: 10.3969/j.issn. 1674-4888.2010.03.008.
ZHOU Dianfeng, WANG Junhua. Design of a 32-bit divider based on FPGA[J]. Informatization Research, 2010, 36(3): 26–28. DOI: 10.3969/j.issn.1674-4888.2010. 03.008.
10 李文彬, 陳金鷹, 王惟潔, 等. 基于FPGA的32位循環(huán)型除法器設(shè)計[J]. 物聯(lián)網(wǎng)技術(shù), 2014, 25(11): 62–63. DOI: 10. 3969/j.issn.2095-1302.2014.11.025.
LI Wenbin, CHEN Jinying, WANG Weijie,. Design of a 32-bit circular divider based on FPGA[J]. Internet of Things, 2014, 25(11): 62–63. DOI: 10.3969/j.issn. 2095-1302.2014.11.025.
Control of field flatness based on FPGA for multi-cell cavity
ZHANG Zhigang1,2ZHAO Yubin1,2XU Kai1,2ZHENG Xiang1,2LI Zheng1,2ZHAO Shenjie1,2CHANG Qiang1,2HOU Hongtao1,2LIU Jianfei1,2
1(Shanghai Institute of Applied Physics, Chinese Academy of Sciences, Jiading Campus, Shanghai 201800, China)2(Shanghai Key Laboratory of Cryogenics & Superconducting RF Technology, Shanghai 201800, China)
Background: The most important processing is division in the algorithm for the field flatness controller on multi-cell cavity. The algorithm in conventional integer division uses multiple subtraction and shift methods to achieve the operation. A lot of clocks are consumed in the subtraction process, and the cycles consuming is not fixed on each cycle of the division. Purpose: This study aims to design a circular unrecoverable divider based on FPGA (Field-Programmable Gate Array). Methods: Improvement is taken for meliorating the program structure and optimizing the time sequences to achieve speedup of the division and same clock cycle for each conventional division. This algorithm is implemented on FPGA chip using QuartusII, simulated and verified by ModelSim toolkits. Results: The stability of field flatness is less than ±1.3% and 35 cycles for each algorithm when it applied in the controller of DLLRF (Digital Low Level Radio Frequency) for the booster of Shanghai Synchrotron Radiation Facility (SSRF). Conclusion: Control of field flatness based on FPGA for multi-cell cavity satisfies all functional requirements, overperforms the design expectations.
FPGA, Conventional, Divider, Field flatness control, Clock cycle
ZHANG Zhigang, male, born in 1981, graduated from University of Chinese Academy of Sciences with a doctoral degree in 2015, focusing on the controller on low level radio frequency
LIU Jianfei, E-mail: liujianfei@sinap.ac.cn
2016-09-05, accepted date: 2016-11-18
TL506
10.11889/j.0253-3219.2017.hjs.40.020101
張志剛,男,1981年出生,2015年于中國科學院大學獲博士學位,主要從事低電平研究
劉建飛,E-mail: liujianfei@sinap.ac.cn
2016-09-05,
2016-11-18
Supported by National Natural Science Foundation of China (No.11335014)
國家自然科學基金(No.11335014)資助