Vivado使用技巧(14):IO規劃方法詳解
本系列第13篇簡單介紹了使用RTL工程IO佈局工程兩種方法定義IO Ports。在I/O Planning View Layout中(IO佈局工程中是Default Layout),顯示了FPGA器件資源、封裝管腳、I/O Ports等詳細資訊。設計者藉助這些資訊來完成I/O規劃。
建立單端/差分I/O Ports
RTL工程會直接從RTL設計中獲取I/O埠資訊;IO佈局工程可以從CSV/XDC檔案中匯入I/O埠資訊,或者人工建立I/O埠(RTL工程不允許人工建立)。在I/O Ports視窗中右鍵->Create I/O Ports,彈出視窗:
設定埠名稱、方向、是否是差分對、是否是匯流排、I/O標準、上下拉型別、埠位置等資訊,當方向為Output時還可設定驅動強度和壓擺率。
如果希望將I/O Ports視窗中已有的單端I/O組合為一對差分訊號,選中兩者,右鍵->Make Diff Pair:
點選Swap可以交換差分對的P端和N端。差分訊號在I/O Ports視窗中只顯示在一行裡中(只會顯示P端訊號,N端訊號顯示在Neg Diff Pair屬性欄中)。如過希望將一組差分訊號拆成兩個單端訊號,右鍵->Split Diff Pair即可。上述功能只能在I/O規劃工程中使用,不能在RTL工程中使用。
上述功能操作所對應的Tcl命令如下:
create_port port_1 -direction in #建立一個單端I/O
create_port port_2 -direction in -diff_pair #建立一個差分I/O
make_diff_pair_ports port_1 port_2 #組合一個差分對
split_diff_pair_ports port_1 port_2 #拆開一個差分對
配置I/O Ports
Xilinx的FPGA器件支援可配置的SelectIO介面驅動器和接收器,支援多種標準介面。這些標準介面包含如下功能:可程式設計的輸出強度和壓擺率控制、使用DCI的片內端接、生成內部參考電壓。
配置可以直接在I/O Ports視窗的屬性列中進行,也可以點選右鍵->Configure Ports,在下面視窗中配置:
其中Pull type包括弱上拉PULLUP、弱下拉PULLDOWN和保持KEEPER和NONE四種,前兩種讓三態輸出或雙向埠在不被驅動時可以避免浮動,KEEPER可以讓其保持當前的值。
每一個埠都有Fixed屬性,表明該邏輯埠是由使用者賦值的。埠必須保持鎖定狀態,才能避免生成位元流時不會發生錯誤。選中I/O埠,右鍵選單中通過Fix Ports和Unfix Ports來切換埠狀態。
RTL工程中,埠的方向只能從RTL原始檔中獲取,不能人工定義;在I/O規劃工程中,需要人工定義I/O的方向。對於7系列、Zynq系列、UltraScale系列FPGA而言,所有I/O埠PACKAGE_PIN和IOSTANDARD屬性必須有明確的值,否則不能生成bit流檔案。
I/O Port介面的使用
Vivado提供了介面(Interface)用於管理有功能關係的一組I/O和匯流排。一組介面的屬性可以同時賦值,減輕工作量,也有助於將介面隔離在某一時鐘區域或PCB佈線範圍內。
在I/O Ports中選中所有需要組合在一起的訊號,右鍵->Create I/O Port Interface,在新視窗中選中介面名稱:
建立好的介面會按一定層次關係顯示在I/O Ports視窗中:
新增其它I/O埠到介面中,選中I/O,右鍵->Assign to Interface,選中需要新增的介面即可;如果要從介面中移除某些I/O,右鍵->Unassign from Interface。
如果要刪除某一介面,選中該介面右鍵->Delete或之間按鍵盤上的Delete按鍵,彈出如下視窗中,只選擇介面點選OK即可。
Prohibit屬性的使用
Vivado提供了Prohibit屬性,設定了該屬性的I/O管腳或I/O Bank會遮蔽掉埠布局。在Package Pin視窗中選中需要遮蔽的I/O,勾選中Prohibit:
在Device和Package視窗中相應的管腳會顯示為帶斜槓的圈:
上述功能操作所對應的示例Tcl命令如下:
set_property PROHIBIT 1 [get_sites U17] #遮蔽一個I/O的佈局
set_property PROHIBIT 0 [get_sites U17] #解除遮蔽
I/O Ports佈局
如果已經提前知道了I/O埠和封裝管腳之間的聯絡,直接在I/O Ports中填寫即可。如果需要進行I/O Ports佈局,Vivado提供瞭如下三種方法:
- 順序佈局:選中需要佈局的I/O,右鍵->Place I/O Ports Sequentially,在Device視窗中依次點選,選擇佈局的位置,直到所有I/O全部佈局完成。
- I/O Bank佈局:選中需要佈局的I/O,右鍵-> Place I/O Ports in an I/O Bank,在Device視窗中點選一個管腳位置,Vivado會盡可能的將I/O佈局在該管腳所在的Bank中。如果還有I/O沒有賦值,需要繼續點選選擇位置,直到所有I/O全部佈局完成。
- 區域佈局:選中需要佈局的I/O,右鍵->Place I/O Ports in a Defined Area,箭頭變為十字,在Device視窗中拖動一個矩形區域,Vivado會盡可能的將I/O佈局在該區域中。如果還有I/O沒有賦值,需要繼續選擇區域,直到所有I/O全部佈局完成。
注意,所有佈局方式所用的佈局順序都與埠在I/O Ports視窗中排列的順序有關,如有需要應該在佈局前先調整I/O在I/O Ports中的順序。
除了人工佈局外,Vivado還提供了自動佈局功能。Vivado可以根據I/O標準和差分對規則,自動將I/O埠賦值到封裝管腳上。在I/O Ports視窗中選擇需要佈局的I/O,在Tools選單欄中點選I/O Planning->Auto-place I/O Ports:
選擇佈局全部I/O或僅佈局選中I/O,點選下一步:
如果選中的I/O中有部分已經賦值,會出現如上視窗,選擇保持原有賦值或尋找新的賦值位置,點選下一步,再點選Finish即可執行自動佈局。接下來再介紹I/O佈局過程中可能會用到的兩個小操作:
- 交換佈局位置:選中需要交換位置的兩個I/O,右鍵->Swap Location;
- 移除已經完成的佈局:選中需要刪除佈局的I/O,右鍵->Unplace;
I/O規劃工程遷移為RTL工程
已經完成的I/O規劃工程可以直接遷移為RTL工程,埠定義會用於建立RTL設計中的頂層模組(該過程不可逆,RTL工程不可遷回I/O規劃工程)。在File選單或Flow Navigator中點選Migrate to RTL:
Top RTL file設定頂層模組檔案;Netlist format選中Verilog或VHDL;選中write diff buffers會將差分對快取器保留在頂層模組定義中。點選OK遷移完成後,即可以RTL工程為基礎完成FPGA設計,工程中有一個包含I/O約束的XDC檔案。
相關文章
- Vivado使用技巧(32):IO延遲的約束方法
- Vivado使用技巧(20):Waveform功能詳解ORM
- Vivado使用技巧(4):查詢功能詳解
- Vivado使用技巧(13):CSV檔案定義IO Ports
- Vivado使用技巧(19):使用Vivado Simulator
- Vivado使用技巧(9):COE檔案使用方法
- Vivado使用技巧(15):DRC設計規則檢查
- Vivado使用技巧(31):時鐘的約束方法
- Vivado使用技巧(27):RAM編寫技巧
- Vivado使用技巧(26):HDL編寫技巧
- Vivado使用技巧(17):建立IBIS模型模型
- Vivado使用技巧(6):Messages視窗管理
- Vivado使用技巧(29):約束功能概述
- Vivado使用技巧(18):模擬功能概述
- Vivado使用技巧(33):時序異常
- Vivado使用技巧(25):Block Synthesis技術BloC
- 動態規劃解題方法動態規劃
- Vivado使用技巧(3):Force Up-to-Date功能
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- Vivado使用技巧(8):Core Container打包IP核AI
- Vivado使用技巧(34):路徑分割現象
- Vivado使用技巧(28):支援的Verilog語法
- Vivado使用技巧(5):屬性編輯器的使用
- Vivado使用技巧(30):使用時序約束嚮導
- 網站頁面規劃和佈局的方法技巧網站
- Vivado使用技巧(16):SSN轉換噪聲分析
- Vivado使用技巧(23):綜合執行與OOC
- Vivado使用技巧(21):模擬中的Debug特性
- 元規劃:使用規劃器解決數學問題
- 【動態規劃】樹形DP完全詳解!動態規劃
- Vivado使用技巧(7):使用IP核自帶Testbench進行模擬
- 動態規劃之 KMP 演算法詳解動態規劃KMP演算法
- IO多路複用詳解
- socket.io 原理詳解
- engine.io 原理詳解
- Vivado使用技巧(10):編輯與改寫IP核原始檔
- Vivado使用技巧(24):HDL/XDC中設定綜合屬性
- Vivado使用技巧(22):綜合策略與設定的選擇