基于Xilinx FPGA的DCM動態(tài)重配置方法研究及實(shí)現(xiàn)
在復(fù)雜的電子系統(tǒng)應(yīng)用中,系統(tǒng)的主時鐘經(jīng)常需要根據(jù)不同的應(yīng)用環(huán)境,采用不同頻率、不同相位的高速時鐘,以滿足系統(tǒng)的不同性能要求。在星載系統(tǒng)中,其不同接口的數(shù)據(jù)輸入速率不同,為了實(shí)現(xiàn)FPGA對不同接口輸入數(shù)據(jù)的實(shí)時復(fù)用處理,需要電子系統(tǒng)產(chǎn)生對應(yīng)的時鐘頻率。DCM(Digital Clock Manager)被廣泛應(yīng)用于電子系統(tǒng)中以產(chǎn)生所需的各種時鐘頻率,所以在系統(tǒng)動態(tài)可變時鐘的過程中,DCM的重配置設(shè)計很重要。
DCM的配置分為簡單的靜態(tài)配置和復(fù)雜的動態(tài)重配置兩種:靜態(tài)配置是指DCM的輸出頻率是事先確定好的,在系統(tǒng)的整個運(yùn)行過程中不會改變,若要改變,必須停止系統(tǒng)對其進(jìn)行重新手動設(shè)置,這對于星載系統(tǒng)而言,難度非常大;而動態(tài)重配置是指在系統(tǒng)運(yùn)行過程中,通過發(fā)送指令便可以實(shí)時地通過改變DCM屬性來產(chǎn)生特定需要的時鐘頻率,這對于星載系統(tǒng)而言,具有十分重要的實(shí)際意義。文中結(jié)合作者的項(xiàng)目研發(fā)體會,對Xilinx公司的Virtex-4系列FPGA(Field Programmable Gate Array)的數(shù)字時鐘管理器DCM的性能特點(diǎn)作了介紹,并給出進(jìn)行DCM動態(tài)重配置的方法,從而使系統(tǒng)時鐘具有較高的靈活性和適應(yīng)性。
1 DCM概述
Virtex-4系列FPGA是Xilinx公司推出的新一代大容量、高性能FPGA。在Virtex-4系列FPGA內(nèi)部最多集成了20個時鐘管理器DCM模塊,DCM提供了一個完整的可以供片內(nèi)和片外使用的時鐘發(fā)生器。DCM使用完全數(shù)字延遲線技術(shù),允許高精度地控制時鐘的相位和頻率;使用完全的數(shù)字反饋系統(tǒng),可以動態(tài)補(bǔ)償由于溫度和電壓偏移引起的時鐘相位和頻率的偏差。DCM主要具有數(shù)字時鐘同步、數(shù)字頻率合成、數(shù)字相位移動和動態(tài)重配置4個基本功能。
Virtex-4的DCM基本單元分為DCM_BASE和DCM_ADV兩種,如圖1所示,而DCM_ADV具有時鐘動態(tài)重配置功能。
DCM_BASE基本單元包含常用的DCM基本功能,簡化了用戶接口。使用DCM_BASE,可以完成對時鐘去歪斜、進(jìn)行頻率合成和固定相移的功能。
DCM_ADV基本單元除包含DCM_BASE中所有DCM功能和可用端口之外,還包含具有動態(tài)重配置功能的端口。DCM_ADV基本單元是DCM_BASE基本單元的擴(kuò)展。DCM_ADV包括所有DCM功能,包括時鐘去歪斜、頻率合成、固定或可變相移以及動態(tài)重配置。
2 DCM動態(tài)重配置的設(shè)計和實(shí)現(xiàn)
通過DCM的一組數(shù)據(jù)和地址總線,在不必重新配置器件其他部分的情況下,改變DCM的屬性。用于動態(tài)重配置DCM功能的引腳有:輸入引腳DADDR[6:0],DI[15:0],DWE,DEN和DCLK;輸出引腳DO[15:0]和DRDY。動態(tài)重配置可以根據(jù)目前的配置設(shè)定實(shí)現(xiàn)修改DCM的屬性,改變其相移、倍頻系數(shù)M或分頻系數(shù)D。
2.1 動態(tài)重配置DCM的原理
DCM的動態(tài)重配置功能通過動態(tài)重配置引腳(Dynamic Reconfiguration Ports,DRP)控制器完成,其不僅可以配置DCM,而且可以配置FPGA的其他邏輯。動態(tài)重配置邏輯塊的重配置流程和配置信號接口如圖2所示。
對于Virtex-4的DCM,倍頻系數(shù)M的值是通過DRP往指定地址(DADDR[6:0])50h中寫數(shù)DI[15:0]來實(shí)現(xiàn)的,分頻系數(shù)D的值是通過DRP往指定地址(DADDR[6:0])52h中寫數(shù)DI[15:0]來實(shí)現(xiàn)的。在寫控制字的過程中,DCM必須保持Reset狀態(tài)。地址(DADDR[6:0])41h的位6(DI[5])用于設(shè)置DFS的頻率模式,0是低頻工作模式,1是高頻工作模式;地址58h的位7和位8(DI[7:6])用于設(shè)置DLL的頻率模式,00是低頻模式,11是高頻模式;地址00h用于存儲DCM的默認(rèn)輸出狀態(tài)。
2.2 系統(tǒng)設(shè)計
如圖3是系統(tǒng)設(shè)計的邏輯框圖。它由動態(tài)重配置引腳控制器和DCM_ADV組成。其動態(tài)重配置引腳控制器的輸入簡單,包括時鐘輸入信號、使能信號以及兩根時鐘模式控制線,它可以控制DCM動態(tài)的輸出最多4種不同頻率的時鐘。時鐘模式控制線可以擴(kuò)展為多位,從而產(chǎn)生多種不同頻率的時鐘,在這里只采用兩根模式控制線產(chǎn)生4個時鐘模式值。
該系統(tǒng)的工作原理:動態(tài)重配置引腳控制器不斷地輸入DCLK頻率采樣時鐘等級值,當(dāng)SPEED_MODE[1:0]有有效地輸入并且SPEED_EN使能信號為高電平時,動態(tài)重置引腳控制器開始產(chǎn)生對應(yīng)的DCM重配置輸入?yún)?shù)。DCM根據(jù)重配置參數(shù)來動態(tài)的產(chǎn)生所需的時鐘頻率,并向動態(tài)重置引腳控制器反饋動態(tài)重配置就緒信號和動態(tài)重配置數(shù)據(jù)輸出信號,從而為下一次的時鐘配置做好就緒準(zhǔn)備。DCM_ADV模塊的CLKFX_OUT是動態(tài)重配置后DCM的輸出時鐘,LOCKED信號出指示DCM時鐘輸出是否有效,即是否輸出正確的頻率和相位。這樣只需改變輸入的時鐘模式值而不需其他改動,便可產(chǎn)生所需的時鐘頻率,從而使得系統(tǒng)時鐘具有較高的靈活性和適應(yīng)性。
2.3 動態(tài)DCM重配置的時序設(shè)計
在整個系統(tǒng)中,配置接口的時序設(shè)計是最關(guān)鍵的。在ISE10.1軟件設(shè)計環(huán)境下,使用VerilogHDL硬件描述語言以自頂向下的方式進(jìn)行設(shè)計。圖4是DCM模塊接口動態(tài)重配置的寫時序。
其中,DCLK是其他接口信號的驅(qū)動時鐘,在上升沿同步工作;DEN是其他接口的使能信號;DWE是讀/寫控制信號,如果DWE是低電平,為讀操作,否則就是寫操作;DADDR是讀/寫地址總線;DI是數(shù)據(jù)輸入總線,只有當(dāng)DEN和DWE同時有效時數(shù)據(jù)輸入有效,而且實(shí)際的寫操作是在DRDY返回之前的某個時刻發(fā)生的;DO是數(shù)據(jù)輸出總線;DRDY是與DEN對應(yīng)的一個信號,標(biāo)志著一個DRP操作周期的完成,DO總線數(shù)據(jù)要在DRDY有效時間內(nèi)DCLK的上升沿讀取才有效。
動態(tài)重配置引腳模塊的總體設(shè)計包括DCLK產(chǎn)生、重配置引腳的產(chǎn)生、RST信號產(chǎn)生。DCLK的產(chǎn)生是通過對輸入時鐘100 MHz的晶振進(jìn)行2.5分頻得到,作為后一級DCM模塊的動態(tài)重配置時鐘40 MHz;重配置引腳的產(chǎn)生是根據(jù)輸入的時鐘等級值來產(chǎn)生的,在不同的時鐘等級值下產(chǎn)生對應(yīng)的DEN、DWE、DADDR[6:0]、DI[15:0];RST信號的產(chǎn)生是根據(jù)DEN來產(chǎn)生的,這里使它持續(xù)的時間比DEN稍長即可。由于對應(yīng)的時鐘等級值300 MHz是屬于高頻模式,而200 MHz、100 MHz、50 MHz是屬于低頻模式,故在改變其時鐘等級值的同時還需要對對應(yīng)時鐘等級值的頻率模式進(jìn)行改變。
對于可重配置功能,在操作時要注意兩點(diǎn):一是需要動態(tài)改變的CLKFX的乘數(shù)M和除數(shù)D的值要先減去1,例如希望分頻比是5/2,就需要載入M/D=4/1;在寫入動態(tài)控制字時,要保持DCM處于復(fù)位狀態(tài),直到控制字寫完后才釋放復(fù)位狀態(tài)。
3 在線采集波形
以上的各模塊在ISE 10.1開發(fā)平臺上進(jìn)行設(shè)計輸入,經(jīng)綜合、實(shí)現(xiàn)后下載到XC4VFX100中去。在動態(tài)配置300 MHz時鐘頻率時,通過ChipScope實(shí)際在線采集波形如圖5所示,對應(yīng)其他的頻率等級的重配置類似。
在對300 MHz的頻率進(jìn)行時鐘等級值配置時,先向地址50h中寫入倍頻系數(shù)0002h,再向地址52h中寫入分頻系數(shù)0000h;在對頻率模式配置時,對地址(DADDR『6:0])41h的位6(DI[5])置為數(shù)1。在向地址中寫數(shù)期間保持DEN、DWE的電平為高,并且在對時鐘等級配置和頻率模式配置時,保持DCM的復(fù)位信號處于復(fù)位狀態(tài)。從圖5中可以看出,在輸入速度等級值時,被DCLK正確采樣后,動態(tài)重配置控制器便產(chǎn)生相對應(yīng)的引腳參數(shù),這時對DCM開始重配置。DRDY信號反饋顯示上次的動態(tài)重配置完畢,可以進(jìn)行下一次的重配置。在配置完成后,CLKFX_OUT是動態(tài)重配置的輸出時鐘。通過ChipScope的實(shí)際在線采集,其動態(tài)重配置后的時鐘頻率CLKFX_OUT符合預(yù)期重配置結(jié)果。
系統(tǒng)時延和相移都默認(rèn)設(shè)置為零,經(jīng)實(shí)際測試,整個動態(tài)變頻過程最多只需要20個DCLK周期就可以完成,DCLK采用的是40 MHz,所以只需要不到1μs的時間便可對DCM重配置完畢,體現(xiàn)了系統(tǒng)很強(qiáng)的實(shí)時性。
4 兩種DCM配置方法的分析比較
對于該系統(tǒng)而言,若想通過靜態(tài)配置來產(chǎn)生300 MHz、200 MHz、100 MHz、50 MHz的輸出時鐘頻率,由于300 MHz是高頻模式,而200 MHz、100 MHz、50 MHz的時鐘是低頻模式。為得到這幾種時鐘頻率,則需要兩個DCM來實(shí)現(xiàn),一個采用低頻模式,另一個采用高頻模式,通過DCM事先設(shè)定好的倍頻和分頻來實(shí)現(xiàn),并且還需要根據(jù)輸入數(shù)據(jù)頻率的不同來選擇對應(yīng)的時鐘頻率。這種方法靈活性差,并且在數(shù)據(jù)分時復(fù)用處理時還需要根據(jù)輸入時鐘頻率的情況進(jìn)行時鐘控制和選擇,其可調(diào)節(jié)能力非常的弱,并且耗費(fèi)的資源較多,在數(shù)據(jù)處理的分時復(fù)用時會有時鐘閑置的情況,不利于系統(tǒng)節(jié)能的要求。此外對系統(tǒng)時鐘的控制,其時鐘頻率穩(wěn)定性較差,且時鐘的質(zhì)量較差。
通過DCM重配置生成的時鐘頻率,可以按需要成比例地調(diào)節(jié),不必對時鐘的控制和選擇便可滿足實(shí)際的需要,系統(tǒng)具體需要什么樣的時鐘頻率便產(chǎn)生對應(yīng)的時鐘,這對于有多種時鐘頻率的產(chǎn)生更具有重要的實(shí)際意義,并且可以通過發(fā)送指令來改變時鐘頻率的相位情況,方便易操作。通過DCM的動態(tài)重配置,可以實(shí)現(xiàn)對FPGA資源的利用較少,資源的利用少有利于系統(tǒng)的節(jié)能,這對于星載系統(tǒng)而言是具有重要的實(shí)際意義。目前該系統(tǒng)已應(yīng)用于某星載系統(tǒng),其運(yùn)行狀態(tài)穩(wěn)定且良好,具有較強(qiáng)的實(shí)時性和靈活性。
5 結(jié)束語
動態(tài)重配置DCM在FPGA電路設(shè)計領(lǐng)域有著廣泛的應(yīng)用,文中系統(tǒng)介紹了基于Virtex-4的DCM動態(tài)重配置設(shè)計方案,給出了一個在工程中可以廣泛應(yīng)用的實(shí)際系統(tǒng)實(shí)例。對該動態(tài)重配置系統(tǒng)在不同輸入時鐘等級值下的輸出時鐘信號頻率進(jìn)行了在線采集測試,信號的波形和頻率達(dá)到系統(tǒng)要求的性能指標(biāo),并且對其性能做出了比較分析。
評論