其實在FPGA的開發中理想狀況下FPGA之間的數據要經過寄存器輸入、輸出,這樣才能使得延時最小,從而更容易知足創建時間要求。咱們在FPGA內部硬件結構中得知,IOB內是有寄存器的,且IOB內的寄存器比FPGA內部的寄存器更靠近外部的輸出管腳,這樣就可以獲得更小的延時,從而使時序更好。咱們能夠看到在沒有指定的狀況下寄存器的映射都是隨機的,那麼問題來了,如何才能指定寄存器映射到IOB中呢?咱們依然用異步復位D觸發器的例子來給你們演示。異步
如圖1所示,咱們回到工程界面點擊「Assignment Editor」圖標來約束寄存器映射的位置。佈局
圖 1學習
如圖2所示,在打開的「Assignment Editor」界面中點擊「To」下面的「<<new>>」添加要約束的項。spa
圖 23d
點擊如圖3所示的望遠鏡圖標,打開「Node Finder」。blog
圖 3ip
在打開的「Node Finder」界面中咱們找到信號的輸入key_in,如圖4所示,根據序號順序,在①處的「Named :」選項框中輸入「*」,點擊 ②處的「List」,在③處的「Node Found :」列表中就會列出名爲key_in 的信號,雙擊③處的key_in 信號或點擊圖標④,key_in 信號就被添加到⑤處的「Selected Nodes:」中了。若是咱們想取消⑤處選擇的信號則在「Selected Nodes:」選中該信號後點擊圖標⑥便可。設置完畢後點擊「OK」退出。資源
圖 4開發
如圖5所示,設置「Assignment Name」,下拉列表找到「Fast Input Register(Accepts wildcards/groups)」,這是設置將寄存器映射在輸入IOB中的約束,若是設置將寄存器映射在輸出IOB中則選擇「Fast Output Register(Accepts wildcards/groups)」。it
圖 5
如圖7所示,設置「Value」的值爲「on」。
圖 6
所有設置完成後的結果如圖 22-90所示。
圖 7
點擊「Start Compilation」圖標全編譯進行佈局佈線,不然沒法從新映射資源。此時會彈出如圖8所示的對話框,提示是否要保存更改,選擇「Yes」後會執行佈局佈線。
圖 8
當佈局佈線從新完成映射後咱們再來看看Chip Planner視圖,如圖9所示,咱們發現整個視圖都沒有什麼明顯的變化,難道是映射失敗了?
圖 9
如圖10所示,既然不能用肉眼直接看到,那咱們能夠在Chip Planner界面右上角紅色框處的「Find what」處搜索定位信號在版圖模型中的位置,若是沒有找到「Find what」搜索框,按住鍵盤「Ctrl + F」就會自動出現。
圖 10
在圖11中紅色區域中的「Find what」搜索RTL代碼中的信號名「key_in」,而後點擊「List」。
圖 11
點擊圖12所示的「key_in」能夠看到在版圖模型的對應位置高亮顯示,這個位置就是FPGA的IOB區域。
圖 12
如圖13所示,將映射的IOB區域放大,其中①爲咱們key_in的輸入端,而②則是寄存器所映射的新位置。
圖 13
如圖14所示,咱們雙擊②處的寄存器,觀察其內部結構,發現IOB中的寄存器已經高亮顯示了,說明真的映射上了,實現了咱們的要求。
圖 14
歡迎加入FPGA技術學習交流羣,本羣致力於爲廣大FPGAer提供良好的學習交流環境,不按期提供各類本行業相關資料!QQ交流羣號:450843130