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