既然我們可以指定暫存器放在IOB內,那我們同樣也可以指定PLL的位置。首先要確保我們有多個PLL才行。如圖1所示,我們所使用的EP4CE10F17C8晶片剛好有兩個。
圖 1
為了演示這個例子,我們使用pll工程,RTL程式碼如下所示:
1 //-------------------------------------------------- 2 module pll( 3 input wire sys_clk , //系統時鐘50MHz 4 5 output wire clk_mul_2 , //系統時鐘經過2倍頻後的時鐘 6 output wire clk_div_2 , //系統時鐘經過2分頻後的時鐘 7 output wire clk_phase_90 , //系統時鐘經過相移90°後的時鐘 8 output wire clk_ducle_20 , //系統時鐘變為佔空比為20%的時鐘 9 output wire locked //檢測鎖相環是否已經鎖定,只有該訊號為高時輸出的時鐘才是穩定的 10 11 ); 12 13 //------------------------pll_ip_inst------------------------ 14 pll_ip pll_ip_inst( 15 .inclk0 (sys_clk ), //input inclk0 16 17 .c0 (clk_mul_2 ), //output c0 18 .c1 (clk_div_2 ), //output c1 19 .c2 (clk_phase_90 ), //output c2 20 .c3 (clk_ducle_20 ), //output c3 21 .locked (locked ) //output locked 22 ); 23 24 endmodule 25 //-------------------------------------------------
程式碼編寫完後依然需要點選“Start Analysis & Synthesis”圖示進行分析和綜合。然後雙擊“Netlist Viewers”下的“RTL Viewer”檢視RTL檢視。
圖 2
點選“Start Compilation”圖示全編譯進行佈局佈線,然後開啟Chip Planner檢視。Chip Planner開啟後的介面如圖3所示,我們可以看到在版圖模型中左下角有一塊顏色變深的區域,與之形成鮮明對比的是右上角顏色沒有變深的位置,這就是我們FPGA晶片中兩個PLL的位置,而顏色變深的區域說明資源被佔用。
圖 3
放大並點選該PLL,如圖4所示,可以在右側看到該PLL的結構圖中顯示的部分藍色高亮訊號,下面“Location”則顯示了該PLL的名字為“PLL_1”。
圖 4
如圖5所示,選中該PLL後點選左側的圖示顯示扇入扇出線路徑,可以看到PLL在晶片內的連線關係。
圖 5
如圖6所示,我們回到工程介面點選“Assignment Editor”圖示來約束PLL的位置。
圖 6
如圖7所示,在開啟的“Assignment Editor”介面中點選“To”下面的“<<new>>”新增要約束的項。
圖 7
在開啟的“Node Finder”介面中我們找到訊號的輸入key_in,如圖8所示,根據序號順序,在①處的“Named :”選項框中輸入“*pll*”,點選 ②處的“List”,在③處的“Node Found :”列表中就會列出名為altpll:altpll_component的訊號,雙擊③處的altpll:altpll_component 訊號或點選圖示④,altpll:altpll_component訊號就被新增到⑤處的“Selected Nodes:”中了。如果我們想取消⑤處選擇的訊號則在“Selected Nodes:”選中該訊號後點選圖示⑥即可。設定完畢後點選“OK”退出。
圖 8
如圖9所示,設定“Assignment Name”,下拉選單找到“Location(Accepts wildcards/groups)”,這是設定位置的約束。
圖 9
如圖10所示,點選“Value”下的“...”。
圖 10
如圖11所示,在彈出的“Location”對話方塊中的“Element:”選擇“PLL”。可以看到在這裡我們還可以設定其他元素的位置。
圖 11
如圖12所示,“Location:”選擇“PLL_2”。
圖 12
如圖13所示,“Location”對話方塊設定完畢後點選“OK”。
圖 13
全部設定完成後的結果如圖14所示。
圖 14
點選“Start Compilation”圖示全編譯進行佈局佈線,否則無法重新對映資源。此時會彈出如所示的對話方塊,提示是否要儲存更改,選擇“Yes”後會執行佈局佈線。
圖 15
當佈局佈線重新完成對映後我們再來看看Chip Planner檢視,如圖16所示,我們可以發現在版圖模型的右上角一塊顏色變深的區域,與左下顏色沒有變深的位置形成鮮明的對比,顏色變深的區域說明資源被佔用。
圖 16
放大並點選該PLL,如圖17所示,可以在右側看到該PLL的結構圖中顯示的部分藍色高亮訊號,下面“Location”則顯示了該PLL的名字為“PLL_2,說明已經成功對映上了。
圖 17
如圖18所示,選中該PLL後點選左側的圖示顯示扇入扇出線路徑,可以看到PLL在晶片內的連線關係。
圖 18
修改PLL的對映位置意義何在呢?當我們的時序在某些情況下不好的時候就可以通過修改PLL的對映位置來調整時序,以實現時序的收斂。
歡迎加入FPGA技術學習交流群,本群致力於為廣大FPGAer提供良好的學習交流環境,不定期提供各種本行業相關資料!QQ交流群號:450843130