Vivado使用技巧(13):CSV檔案定義IO Ports
定義I/O Ports資訊
每個完整的FPGA設計必然包含I/O Ports定義與配置環節。I/O Ports包含了FPGA內部訊號、管腳、PCB之間的連線關係。常用的設計方法有兩種:
- RTL工程:完成了RTL設計後,開啟一個設計(如綜合後設計)並換到I/O Planning View Layout,Vivado會自動從設計中讀取I/O埠匯入到I/O Ports視窗中,進行後續設定。
- I/O Planning工程:可以在設計之前預先建立此工程,只定義I/O埠。此工程還可以讀取包含I/O定義的CSV或XDC檔案,將I/O資訊匯入到I/O Ports視窗。此類工程的意義是在設計前就確定好管腳約束資訊,保證硬體設計與RTL設計工作同步展開。
無論是哪種工程,都可以將設計好的I/O埠匯出到CSV格式檔案。CSV檔案是FPGA設計工程師與PCB設計工程師之間交流的一種重要檔案。本文將對該檔案內容及使用方法做詳細介紹。
匯入CSV/XDC檔案
建立I/O Planning工程時,會讓設計者選擇需要匯入的包含I/O資訊的檔案:
如果這時選擇了“Do not import I/O ports at this time”,可以在File選單下點選Import->Import I/O Ports:
彈出的視窗中選擇要匯入的檔案:
CSV是一種用於FPGA和PCB設計者之間交換資訊的標準檔案格式。Vivado需要一種特定的CSV格式來匯入與I/O管腳相關的資料,下文將做詳細介紹,大概檢視如下(可用Excel開啟):
Vivado會解析CSV檔案中的資料,如果有不能識別的資訊,會顯示在Package Pins視窗的user columns中。如果需要修改或建立新的與I/O相關的使用者資訊,該視窗右鍵->Set User Column Values:
除了CSV檔案,也可以匯入XDC檔案(即為常見的物理約束資訊),但是XDC檔案不包含I/O管腳方向,因此I/O的direction屬性會顯示為undefined,需要人工修改。
匯出I/O管腳與封裝資料
I/O Planning工程和RTL工程都可以將I/O管腳和封裝資訊匯出到檔案中,可以完成如下目標:
- I/O管腳資訊:匯出I/O Port到檔案中,用於RTL程式碼編寫,或者PCB原理圖符號建立;
- Package管腳資訊:匯出FPGA的所有管腳資訊到CSV檔案中,可以幫助設計者直接在CSV檔案中完成I/O埠定義。
在File選單下點選Export->Export I/O Ports,開啟如下視窗:
選擇需要匯出的檔案格式,點選OK即可。
CSV檔案格式
CSV檔案中的每一列定義了與I/O埠和封裝引腳相關的資訊,下面給出具體介紹:
- I/O Bank:規定了管腳所處的I/O bank。匯出的CSV檔案中,Vivado會為FPGA的所有管腳設定此值。匯入的CSV檔案中不需要此屬性。
- Pin Number:規定了封裝管腳的位置。匯出的CSV檔案中,Vivado會為FPGA的所有管腳設定此值。匯入的CSV檔案中此屬性用於定義I/O埠的佈局。
- Site:規定了封裝管腳的可替代名稱。該值由Vivado設定,匯入的CSV檔案中不需要此屬性。2016.1之前的Vivado版本中該屬性稱作IOB Alias。
- Site Type:規定了FPGA datasheet中的管腳名稱。該值由Vivado設定,匯入的CSV檔案中不需要此屬性。
- Min/Max Trace Delay(ps):規定了鋼模襯墊(pad site of the die)與封裝球之間的延遲(ball on the package),以ps為單位。該值由Vivado設定,該屬性只能出現在匯出的CSV檔案中。
- Prohibit:I/O設定了Prohibit屬性後,可以阻止使用者I/O被賦值到該I/O。合理使用該屬性可以有效地減少訊號之間的交叉干擾、避免易犯的板級佈線問題。
- Interface:使用者可以將任意使用者I/O(包括匯流排)分為一組,稱作介面(Interface)。比如可以將記憶體的資料、地址、使能訊號放在一個介面內,建立之間的聯絡。
- Signal Name:FPGA設計中使用的使用者I/O名稱。
- Direction:訊號的方向,輸入IN、輸出OUT、雙向INOUT。
- Diffpair Type:用於差分訊號定義,值為P或N,指示了該管腳為差分對的P極還是N極。
- Diffpair Signal:規定了該管腳在差分對中的另一個管腳的名稱。
- IO Standard:規定了使用者I/O所使用的I/O標準。如果為空,Vivado會根據FPGA選擇一個合適的預設值。
- Drive:使用者I/O在指定I/O標準下的驅動強度,不是所有的I/O標準都可以設定驅動強度。如果為空Vivado會使用預設值。
- Slew Rate:使用者I/O在指定I/O標準下的壓擺率,不是所有的I/O標準都可以設定壓擺率。如果為空Vivado會使用預設值。值可以選為FAST或SLOW,UltraScale系列還可以選擇MEDIUM。
- OUTPUT_IMPEDANCE:規定了用於匹配特徵阻抗的驅動阻抗,定義了驅動器源端的端接值。只適用於UltraScale架構。
- PER_EMPHASIS:允許一些I/O標準的預加強,通過減少碼間干擾和最小化傳輸線損失影響,提高高頻訊號的訊號完整性。只適用於UltraScale架構。
- LVDS_PRE_EMPHASIS:允許LVDS I/O標準的預加強,通過減少碼間干擾和最小化傳輸線損失影響,提高高頻訊號的訊號完整性。只適用於UltraScale架構。
- Pull Type:規定了埠的上下拉型別,當使用3態輸出(OBUFT)或雙向快取器(IOBUF)時,輸出可以配置一個弱上拉電阻、弱下拉電阻或弱保持電路。對於輸入快取器(IBUF),輸入可以配置一個弱上拉電阻或弱下拉電阻。
- IN_TERM/OUT_TERM:定義可選的IN_TERM或OUT_TERM驅動阻抗,大多數情況下此值為空,因為目前FPGA產品還不支援該屬性的設定。只適用於7系列FPGA。
- DQS_BIAS:定義偽差分輸入和真差分IO標準輸入的可選DC偏置。只適用於UltraScale結構。
- DIFF_TERM:開啟或關閉內部的差分端接。
- OFFCHIP_TERM:規定了I/O外部PCB上用到的端接。設定此值主要為了用於SSN分析(參考本系列第16篇)。
- Board Signal:規定了由PCB進入到FPGA I/O所使用的訊號名稱,Signal Name是FPGA內部設計所使用的名稱,兩者本質所指物件相同)。
- Board Voltage:規定了由PCB進入到FPGA I/O的訊號的電壓等級。
- ODT:報告了設計的可選片上端接,只適用於UltraScale架構。
接下來再介紹下在CSV檔案中定義差分訊號的幾種方法:
直接定義,兩個埠的DiffPair Signal屬性分別指向對方的Signal Name,且二者的DiffPair Type屬性互補,一個為P,一個為N。Vivado還會檢查I/O Standard等屬性是否與差分對相容。
單向連線定義,兩個埠有互補的DiffPair Type,一個為N,一個為P,但是隻有一個埠的DiffPair Signal指向另一個埠的Signal Name。如果Vivado檢查到其它屬性都相容,也會建立差分對。
單埠定義,CSV檔案中定義了一個帶有差分I/O標準、DiffPair Type、DiffPair Signal的埠,但是沒有定義另一個埠。Vivado會建立與此屬性相匹配、DiffPair Type互補的另一個差分埠。
推測法定義,兩個埠帶有差分I/O標準(如DIFF_HSTL、DIFF_SSTL),訊號名稱分別帶有N和P,如果Vivado檢查到其它屬性都相容,也會建立差分對。
相關文章
- Vivado使用技巧(9):COE檔案使用方法
- Vivado使用技巧(14):IO規劃方法詳解
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- Vivado使用技巧(24):HDL/XDC中設定綜合屬性
- Vivado使用技巧(22):綜合策略與設定的選擇
- js實現使用檔案流下載csv檔案JS
- Vivado使用技巧(10):編輯與改寫IP核原始檔
- 使用 Python 處理 CSV 檔案Python
- Vivado使用技巧(12):設定DCI與內部參考電壓
- Vivado使用技巧(25):Block Synthesis技術BloC
- Vivado使用技巧(20):Waveform功能詳解ORM
- Vivado使用技巧(17):建立IBIS模型模型
- pch檔案的使用, 標頭檔案使用, 常量(const)的定義,以及一些常用的巨集定義
- 兩個IO管腳佈局衝突導致Vivado不能生成bit檔案
- csv是什麼格式檔案 csv檔案是什麼意思
- Modern CSV for mac CSV檔案編輯器Mac
- pandas操作csv檔案
- CSV檔案儲存
- Vivado使用技巧(23):綜合執行與OOC
- Vivado使用技巧(4):查詢功能詳解
- csv檔案用什麼開啟 csv是什麼格式檔案
- Jmeter系列(32)- 詳解 CSV 資料檔案設定JMeter
- Vivado使用技巧(5):屬性編輯器的使用
- 使用PHP原生匯出Excel和CSV檔案PHPExcel
- python 使用字典讀取CSV檔案Python
- 如何使用python把json檔案轉換為csv檔案PythonJSON
- C語言 檔案IO的使用C語言
- 給XML檔案定義DTDXML
- 如何定義Xsd檔案
- Vivado使用技巧(16):SSN轉換噪聲分析
- Vivado使用技巧(8):Core Container打包IP核AI
- Mysql匯入csv檔案MySql
- python生成CSV檔案Python
- iOS讀取.csv檔案iOS
- java匯出CSV檔案Java
- 用Java解析CSV檔案Java
- python - csv : 將text轉為csv檔案 (txt2csv)Python
- 使用import csv檔案方式建立知識圖譜Import