|
例說(shuō)FPGA連載31:PLL例化配置與LED之PLL的IP核配置 特權(quán)同學(xué),版權(quán)所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1c0nf6Qc
本實(shí)例使用了一個(gè)PLL的硬核IP模塊。關(guān)于PLL,這里簡(jiǎn)單的做些基礎(chǔ)掃盲。 PLL(Phase Locked Loop),即鎖相回路或鎖相環(huán)。PLL用于振蕩器中的反饋技術(shù)。許多電子設(shè)備要正常工作,通常需要外部的輸入信號(hào)與內(nèi)部的振蕩信號(hào)同步,利用鎖相環(huán)路就可以實(shí)現(xiàn)這個(gè)目的。 時(shí)鐘就是FPGA運(yùn)行的心臟,它的每次跳動(dòng)必須精準(zhǔn)而毫無(wú)偏差(當(dāng)然現(xiàn)實(shí)世界中不存在所謂的毫無(wú)偏差,但是我們希望它的偏差越小越好)。一個(gè)FPGA工程中,不同的外設(shè)通常工作在不同的時(shí)鐘頻率,所以一個(gè)時(shí)鐘肯定滿足不了需求;此外,有時(shí)候可能兩個(gè)不同的模塊共用一個(gè)時(shí)鐘頻率,但是由于他們運(yùn)行在不同的工作環(huán)境和時(shí)序下,所以他們常常是同頻不同相(相位),怎么辦?用PLL唄。當(dāng)然了,我們的FPGA里面定義的PLL,可不是僅僅只有一個(gè)反饋調(diào)整功能,它還有倍頻和分頻等功能集成其中。嚴(yán)格一點(diǎn)講,我覺(jué)得這個(gè)PLL實(shí)際上應(yīng)該算是一個(gè)FPGA內(nèi)部的時(shí)鐘管理模塊了。不多說(shuō),如圖3.9所示,大家看看PLL內(nèi)部的功能框圖自己體味體味。
圖3.9 PLL內(nèi)部功能結(jié)構(gòu) 詳細(xì)的工作機(jī)理請(qǐng)大家參考Cyclone IV Device Handbook, Volume1的Chapter 5的內(nèi)容。 Cyclone IV的PLL輸入一個(gè)時(shí)鐘信號(hào),最多可以產(chǎn)生5個(gè)輸出時(shí)鐘信號(hào),輸出的頻率和相位都可以在一定的范圍內(nèi)調(diào)整。 下面我們來(lái)看本實(shí)例如何配置一個(gè)PLL硬核IP,并將其集成到工程中。如圖3.10所示,在新建的工程中,點(diǎn)擊菜單“ToolsàMegaWizard Plug-In Manager”。
圖3.10 菜單選擇MegaWizard 如圖3.11所示,選擇“Creat a new custom megafunction variation”,然后Next。
圖3.11 新建MegaWizard 接著選擇我們所需要的IP核,如圖3.12所示進(jìn)行設(shè)置。 ● 在“Select a megafunction from the list below”下面選擇IP核為“I/O à ALTPLL”。 ● 在“What device family will you be using”后面的下拉欄中選擇我們所使用的器件系列為“Cyclone IV E”。 ● 在“What type of output file do you want to create?”下面選擇語(yǔ)言為“Verilog”。 ● 在“What name do you want for the output file?”下面輸入工程所在的路徑,并且在最后面加上一個(gè)名稱,這個(gè)名稱是我們現(xiàn)在正在例化的PLL模塊的名稱,我們可以給他起名叫pll_controller,然后點(diǎn)擊Next進(jìn)入下一個(gè)頁(yè)面。
圖3.12 選擇ALTPLL IP核 接著來(lái)到了PLL的參數(shù)配置頁(yè)面,做如圖3.13所示的設(shè)置。然后點(diǎn)擊Next進(jìn)入下一個(gè)頁(yè)面。 ● 在“What device speed grade will you be using?”后面選擇“8”,即我們使用的器件的速度等級(jí)。 ● 在“What is the frequency of the inclk0 input?”后面選擇“25MHz”,即我們輸入到該PLL的基準(zhǔn)時(shí)鐘頻率。
圖3.13 PLL參數(shù)設(shè)置 Input/lock頁(yè)面中,如圖3.14所示進(jìn)行設(shè)置,接著點(diǎn)擊Next進(jìn)入下一個(gè)頁(yè)面。 ● 勾選“Create an ‘a(chǎn)reset’ input to asynchronously reset the PLL”,即引出該PLL硬核的’areset’信號(hào),這是該PLL硬核的異步復(fù)位信號(hào),高電平有效。 ● 勾選“Create ‘locked’ output”,即引出該PLL硬核的’locked’信號(hào),該信號(hào)用于指示PLL是否完成內(nèi)部初始化,已經(jīng)可以正常輸出了高電平有效。
圖3.14 PLL復(fù)位和鎖定信號(hào)設(shè)置 Bandwidth/SS、Clock Switchover和PLL Reconfiguration頁(yè)面不用設(shè)置,默認(rèn)即可。直接進(jìn)入Ouput Clocks頁(yè)面,如圖3.15所示,這里有5個(gè)可選的時(shí)鐘輸出通道,通過(guò)勾選對(duì)應(yīng)通道下方的Use this clock選項(xiàng)開(kāi)啟對(duì)應(yīng)的時(shí)鐘輸出通道。可以在配置頁(yè)面中設(shè)置輸出時(shí)鐘的頻率、相位和占空比。這里是 C0通道的設(shè)置。 ● 勾選“Use this clock”,表示使用該時(shí)鐘輸出信號(hào)。 ● 輸入“Enter output clock frequency”為“25MHz”,表示該通道輸出的時(shí)鐘頻率為25MHz。 ● 輸入“Clock phase shift”為“0 deg”,表示該通道輸出的時(shí)鐘相位為0 deg。 ● 輸入“Clock duty cycle(%)”為“50.00%”,表示該通道輸出的時(shí)鐘占空比為50%。
圖3.15 PLL輸出時(shí)鐘C0設(shè)置 和C0的配置一樣,我們可以分別開(kāi)啟并且配置C1、C2、C3和C4,這些時(shí)鐘雖然這個(gè)例程暫時(shí)用不上,但是后續(xù)的例程將會(huì)使用到。 ● C1的時(shí)鐘頻率為33.3333MHz,相位為0deg,占空比為50%。 ● C2的時(shí)鐘頻率為50MHz,相位為0deg,占空比為50%。 ● C3的時(shí)鐘頻率為65MHz,相位為0deg,占空比為50%。 ● C4的時(shí)鐘頻率為100MHz,相位為0deg,占空比為50%。 配置完成后,最后在Summary頁(yè)面,如圖3.16所示,勾選上*_inst.v文件,這是一個(gè)PLL例化的模板文件,一會(huì)我們可以在工程目錄下找到這個(gè)文件,然后打開(kāi)它,將它的代碼復(fù)制到工程中,修改對(duì)應(yīng)接口即可完成這個(gè)IP核的集成。
圖3.16 Summary配置頁(yè)面 點(diǎn)擊Finish完成PLL的配置。工程中若彈出如圖3.17所示的對(duì)話框,勾選“Automatically add Quartus II IP Files to all projects”選項(xiàng)后,點(diǎn)擊Yes。
圖3.17 自動(dòng)添加文件窗口 |