其實在FPGA的開發中理想情況下FPGA之間的數據要通過寄存器輸入、輸出,這樣才能使得延時最小,從而更容易滿足建立時間要求。我們在FPGA內部硬件結構中得知,IOB內是有寄存器的,且IOB內的寄存器比FPGA內部的寄存器更靠近外部的輸出管腳,這樣就能夠得到更小的延時,從而使時序更好。我們可以看到在沒有指定的情況下寄存器的映射都是隨機的,那麼問題來了,如何才能指定寄存器映射到IOB中呢?我們依然用異步復位D觸發器的例子來給大家演示。

    如圖1所示,我們回到工程界面點擊“Assignment Editor”圖標來約束寄存器映射的位置。

FPGA虛擬化映射_寄存器

 

    如圖2所示,在打開的“Assignment Editor”界面中點擊“To”下面的“<<new>>”添加要約束的項。

 

FPGA虛擬化映射_搜索_02

如圖3所示的望遠鏡圖標,打開“Node Finder”。

 

FPGA虛擬化映射_寄存器_03

    在打開的“Node Finder”界面中我們找到信號的輸入key_in,如圖4所示,根據序號順序,在①處的“Named :”選項框中輸入“*”,點擊 ②處的“List”,在③處的“Node Found :”列表中就會列出名為key_in 的信號,雙擊③處的key_in 信號或點擊圖標④,key_in 信號就被添加到⑤處的“Selected Nodes:”中了。如果我們想取消⑤處選擇的信號則在“Selected Nodes:”選中該信號後點擊圖標⑥即可。設置完畢後點擊“OK”退出。

FPGA虛擬化映射_List_04

 

    如圖5所示,設置“Assignment Name”,下拉列表找到“Fast Input Register(Accepts wildcards/groups)”,這是設置將寄存器映射在輸入IOB中的約束,如果設置將寄存器映射在輸出IOB中則選擇“Fast Output Register(Accepts wildcards/groups)”。

 

FPGA虛擬化映射_List_05

    如圖7所示,設置“Value”的值為“on”。

 

FPGA虛擬化映射_寄存器_06

 

FPGA虛擬化映射_List_07

    點擊“Start Compilation”圖標全編譯進行佈局佈線,否則無法重新映射資源。此時會彈出如圖8所示的對話框,提示是否要保存更改,選擇“Yes”後會執行佈局佈線。

FPGA虛擬化映射_FPGA虛擬化映射_08

 

圖9所示,我們發現整個視圖都沒有什麼明顯的變化,難道是映射失敗了?

FPGA虛擬化映射_搜索_09

 

    如圖10所示,既然不能用肉眼直接看到,那我們可以在Chip Planner界面右上角紅色框處的“Find what”處搜索定位信號在版圖模型中的位置,如果沒有找到“Find what”搜索框,按住鍵盤“Ctrl + F”就會自動出現。

 

FPGA虛擬化映射_FPGA虛擬化映射_10

圖11中紅色區域中的“Find what”搜索RTL代碼中的信號名“key_in”,然後點擊“List”。

FPGA虛擬化映射_List_11

 

    點擊圖12所示的“key_in”可以看到在版圖模型的對應位置高亮顯示,這個位置就是FPGA的IOB區域。

FPGA虛擬化映射_FPGA虛擬化映射_12

 

    如圖13所示,將映射的IOB區域放大,其中①為我們key_in的輸入端,而②則是寄存器所映射的新位置。

 

FPGA虛擬化映射_List_13

 

    如圖14所示,我們雙擊②處的寄存器,觀察其內部結構,發現IOB中的寄存器已經高亮顯示了,説明真的映射上了,實現了我們的要求。

 

FPGA虛擬化映射_寄存器_14