Xilinx原语的用法
Xilinx公司原語的使用方法
原語,其英文名字為Primitive,是Xilinx針對其器件特征開發(fā)的一系列常用模塊的名字,用戶可以將其看成Xilinx公司為用戶提供的庫函數(shù),類似于C++中的“cout”等關鍵字,是芯片中的基本元件,代表FPGA中實際擁有的硬件邏輯單元,如LUT,D觸發(fā)器,RAM等,相當于軟件中的機器語言。在實現(xiàn)過程中的翻譯步驟時,要將所有的設計單元都轉譯為目標器件中的基本元件,否則就是不可實現(xiàn)的。原語在設計中可以直接例化使用,是最直接的代碼輸入方式,其和HDL語言的關系,類似于匯編語言和C語言的關系。?
Xilinx公司提供的原語,涵蓋了FPGA開發(fā)的常用領域,但只有相應配置的硬件才能執(zhí)行相應的原語,并不是所有的原語都可以在任何一款芯片上運行。在Verilog中使用原語非常簡單,將其作為模塊名直接例化即可。本節(jié)以Virtex平臺介紹各類原語,因為該系列的原語類型是最全面的。其它系列芯片原語的使用方法是類似的。?
Xilinx公司的原語按照功能分為10類,包括:計算組件、I/O端口組件、寄存器和鎖存器、時鐘組件、處理器組件、移位寄存器、配置和檢測組件、RAM/ROM組件、Slice/CLB組件以及G比特收發(fā)器組件。下面分別對其進行詳細介紹。?
在Vivado 中可以打開所有支持的原語,位置如下:
TOOL->Language Template
3.4.1 計算組件?
計算組件值得就是DSP48核,也有人將其稱為硬件乘法器,功能描述如表3-6所示。
?表3-6 計算組件清單
DSP48 其結構為一個18*18比特的有符號乘法器,且在后面還級聯(lián)了一個帶有可配置流水線的3輸入加法器?
DSP48核由一個18比特的乘法后面級聯(lián)一個48比特的加法器,乘法器和加法器的應用位寬分別可以在18、48比特內任意調整。其在乘加模塊中有廣泛應用,特別是各類濾波器系統(tǒng)中,不僅可以提高系統(tǒng)穩(wěn)定性,還能夠節(jié)省邏輯資源且工作在高速模式下。其在Verilog中的例化模版為:?
?
3.4.2 時鐘組件
時鐘組件包括各種全局時鐘緩沖器、全局時鐘復用器、普通I/O本地的時鐘緩沖器以及高級數(shù)字時鐘管理模塊,如表3-7所示。
表3-7 時鐘組件的清單
下面對幾個常用時鐘組件進行簡單介紹,其余組件的使用方法是類似的。?
1.BUFG?
BUFG是具有高扇出的全局時鐘緩沖器,一般由綜合器自動推斷并使用,其和同類原語的RTL結構如圖3-28所示。全局時鐘是具有高扇出驅動能力的緩沖器,可以將信號連到時鐘抖動可以忽略不計的全局時鐘網(wǎng)絡,BUFG組件還可應用于典型的高扇出信號和網(wǎng)絡,如復位信號和時鐘使能信號。如果要對全局時鐘實現(xiàn)PLL或DCM等時鐘管理,則需要手動例化該緩沖器。其例化的代碼模板如下所示:?
// BUFG: 全局時鐘緩存(Global Clock Buffer),只能以內部信號驅動?
// Xilinx HDL庫向導版本,ISE 9.1?
BUFG BUFG_inst (?
.O(O), //時鐘緩存輸出信號?
.I(I) // /時鐘緩存輸入信號?
);?
// 結束BUFG_ins模塊的例化過程?
在綜合結果分析中,其和同類原語的RTL結構如圖3-32所示。
圖3-32 全局時鐘原語的RTL級結構示意圖
2. BUFMUX?
BUFMUX是全局時鐘復用器,選擇兩個輸入時鐘I0或I1中的一個作為全局時鐘,其和同類原語BUFMUX1的RTL級結構如圖M所示。當選擇信號S為低時,選擇I0;否則輸出I1,其真值表如表M所示。BUFMUX原語和BUFMUX1原語的功能一樣,只是選擇邏輯不同,對于BUFMUX1,當選擇信號S為低時,選擇I1;否則輸出I0。
BUFMUX原語的例化代碼模板如下所示:?
BUFMUX原語的例化代碼模板如下所示:?
// BUFGMUX: 全局時鐘的2到1復用器(Global Clock Buffer 2-to-1 MUX)?
// 適用芯片:Virtex-II/II-Pro/4/5, Spartan-3/3E/3A?
// Xilinx HDL庫向導版本,ISE 9.1?
BUFGMUX BUFGMUX_inst (?
.O(O), //時鐘復用器的輸出信號?
.I0(I0), // 0時鐘輸入信號?
.I1(I1), //1時鐘輸入信號?
.S(S) // 時鐘選擇信號?
);?
// 結束BUFGMUX_inst模塊的例化過程?
需要注意的是:該原語只用用全局時鐘處理,不能作為接口使用。在綜合結果分析時,它和同類原語BUFMUX1的RTL級結構如圖3-33所示。
圖3-33 全局時鐘復用器的RTL級結構示意圖
3. BUFIO?
BUFIO是本地I/O時鐘緩沖器,其RTL結構如圖M所示,只有一個輸入與輸出,非常簡單。BUFIO使用獨立于全局時鐘網(wǎng)絡的專用時鐘網(wǎng)絡來驅動縱向I/O管腳,所以非常適合同步數(shù)據(jù)采集。BUFIO要求時鐘和相應的I/O必須在同一時鐘區(qū)域,而不同時鐘網(wǎng)絡的驅動需要BUFR原語來實現(xiàn)。需要注意的是,由于BUFIO引出的時鐘只到達了I/O列,所以不能來驅動邏輯資源,如CLB和塊RAM。?
BUFIO的例化代碼模板如下:?
?
在綜合結果分析時,其RTL級結構如圖3-34所示。
圖3-34 本地I/O時鐘緩沖器的RTL級結構示意圖
4. BUFR?
BUFR是本地I/O時鐘、邏輯緩沖器,其RTL結構如圖M所示。BUFR和BUFIO都是將驅動時鐘引入某一時鐘區(qū)域的專用時鐘網(wǎng)絡,而獨立于全局時鐘網(wǎng)絡;不同的是,BUFR不僅可以跨越不同的時鐘區(qū)域(最多3個),還能夠驅動I/O邏輯以及自身或鄰近時鐘區(qū)域的邏輯資源。BUFIO的輸出和本地內部互聯(lián)都能驅動BUFR組件。此外,BUFR能完成輸入時鐘1~8的整數(shù)分頻。因此,BUFR是同步設計中實現(xiàn)跨時鐘域以及串并轉換的最佳方式。?
BUFIO的例化代碼模板如下:?
?
需要注意的是:BUFIO和BUFR只能在Virtex-4系列以及更高系列芯片中使用。在綜合結果分析時,其RTL結構如圖3-35所示。
圖3-35 本地I/O時鐘、邏輯緩沖器的RTL級結構示意圖
5. DCM_BASE?
DCM_BASE是基本數(shù)字時鐘管理模塊的縮寫,是相位和頻率可配置的數(shù)字鎖相環(huán)電路,常用于FPGA系統(tǒng)中復雜的時鐘管理。如果需要頻率和相位動態(tài)重配置,則可以選用DCM_ADV原語;如果需要相位動態(tài)偏移,可使用DCM_PS原語。DCM系列原語的RTL結構如圖3-8所示。
模塊接口信號的說明如表3-8所列。?
DCM_BASE組件可以通過Xilinx的IP Wizard向導產生,也可以直接通過下面的例化代碼直接使用。其Verilog的例化代碼模板為:?
?
在綜合結果分析時,DCM系列原語的RTL結構如圖3-36所示。
圖3-36 DCM模塊的RTL級結構示意圖
3.4.3 配置和檢測組件?
配置和檢測組件提供了FPGA內部邏輯和JTAG掃描電路之間的數(shù)據(jù)交換以及控制功能,只要由6個原語組成,如表3-9所示。
表3-9 配置和檢測原語列表
下面對BSCAN_VIRTEX4組件進行簡單介紹,其余組件的使用方法是類似的。?
1.BSCAN_VIRTEX4?
當JTAG USER1/2/3/4指令被加載后,BSCAN_VIRTEX4允許設計人員來檢測TCK、TMS以及TDI等專用JTAG管腳的數(shù)據(jù),并且可以將用戶數(shù)據(jù)寫入到TDO管腳上,這樣可以在PC上通過JTAG鏈讀取芯片內部的用戶數(shù)據(jù)。?
BSCAN_VIRTEX4的管腳信號說明如下:?
CAPTURE:位寬為1的輸出信號,用于指示是否加載了用戶指令,當JTAG接口處于CAPTURE-DR狀態(tài)時,輸出為高。?
DRCK:位寬為1的輸出信號,用于監(jiān)測JTAG電路的TCK信號。當JTAG鏈路處于用戶指令模式或者JTAG接口為SHIFT-DR狀態(tài)時,才有信號輸出。?
RESET:位寬為1的輸出信號,在加載用戶指令時有效。當JTAG接口控制器處于TEST-LOGIC-RESET狀態(tài)時置高。?
SEL:位寬為1的輸出信號,高有效。用于指示USER1數(shù)據(jù)是否加載到JTAG指令寄存器中。在UPDATE-IR狀態(tài)時有效,直到加載新的指令之前,一直保持有效電平。?
SHIFT:位寬為1的輸出信號,加載用戶指令時有效。當JTAG接口控制器處于SHIFT-DR狀態(tài)時置高。?
TDI:位寬為1的輸出信號,用于檢測JTAG鏈的TDI信號。?
UPDATE:位寬為1的輸出信號,加載USER1指令和USER2指令時有效。當JTAG接口控制器處于UPDATE-DR狀態(tài)時置高。?
TDO:位寬為1的輸入信號,可以將外部JTAG鏈的TDO信號直接連到該管腳上。?
在Virtex-4芯片中,有4個BSCAN_VIRTEX4硬件原語可用。因此,其屬性JTAG_CHAIN的有效值為1~4,默認值為1。?
BSCAN_VIRTEX4原語的例化代碼模板如下所示:?
在綜合結果分析時,BSCAN_VIRTEX4的RTL結構圖如圖3-37所示。
圖3-37?BSCAN_VIRTEX4原語的RTL圖
3.4.4 吉比特收發(fā)器組件?
吉比特收發(fā)器組件用于調用RocketIO千兆位級收發(fā)器,支持從622 Mbps 到 6.5 Gbps的多速率應用,符合最廣泛的芯片、背板和光學器件的標準及協(xié)議,具有高級Tx/Rx均衡技術,收發(fā)器最多可達24個,提供了完整的串行 I/O 解決方案。具體包括4個組件,如表3-10所示。
表3-10 吉比特收發(fā)器組件
?
由于吉比特收發(fā)器操作復雜,使用原語很容易出錯,不易配置,因此需要在ISE中通過結構向導完成。有關吉比特收發(fā)器的原理和使用方法,將在第11章詳細介紹。?
3.4.5 I/O端口組件?
I/O組件提供了本地時鐘緩存、標準單端I/O緩存、差分I/O信號緩存、DDR專用I/O信號緩存、可變抽頭延遲鏈、上拉、下拉以及單端信號和差分信號之間的相互轉換,具體包括了21個原語,如表3-11所示。
?表3-11 I/O端口組件?
下面對幾個常用I/O組件進行簡單介紹,其余組件的使用方法是類似的。
1. BUFIO?
BUFIO是FPGA芯片內部簡單的時鐘輸入、輸出緩存器,其RTL結構如圖3-38所示。BUFIO使用獨立于全局時鐘網(wǎng)絡的專用時鐘網(wǎng)絡來驅動I/O列,因此非常適合用于源同步的數(shù)據(jù)采集。但要注意的是:BUFIO只能在單一的時鐘區(qū)域內使用,不能跨時鐘域操作。此外,BUFIO也不能用于驅動邏輯資源(CLB、塊RAM等),因此其只能到達I/O列。
圖3-38 BUFIO的RTL結構圖
2. IBUFDS?
IBUFDS原語用于將差分輸入信號轉化成標準單端信號,且可加入可選延遲。在IBUFDS原語中,輸入信號為I、IB,一個為主,一個為從,二者相位相反。?
IBUFDS的邏輯真值表如表3-12所列,其中“-*”表示輸出維持上一次的輸出值,保持不變。
表3-12 IBUFDS原語的輸入、輸出真值表?
BUFDS原語的例化代碼模板如下所示:?
?
在綜合結果分析時,IBUFDS的RTL結構如圖3-39所示。
圖3-39 IBUFDS原語的RTL結構圖
3. IDELAY?
在Virtex-4系列芯片中,每個用戶I/O管腳的輸入通路都有一個IDELAY模塊,可用于數(shù)據(jù)信號或時鐘信號,以使二者同步,準確采集輸入數(shù)據(jù)。IDELAY具有可控的64抽頭延遲線,每個抽頭的延遲都是經過精密校準的78ps,且與進程、電壓和溫度特性無關,其內部結構如圖3-40所示。
圖3-40 IDELAY模塊的RTL級結構圖
IDELAY原語的信號說明如下:?
I:單比特輸入信號,來自于IOB的串行輸入數(shù)據(jù);?
C:單比特輸入信號,時鐘輸入信號;?
INC:單比特輸入信號,用于增加或減少延遲抽頭數(shù);?
CE:單比特輸入信號,使能延遲抽頭數(shù)增加或減少的功能;?
RST:單比特輸入信號,復位延遲鏈的延遲抽頭數(shù),如果沒有編程輸入,則為0;?
O:單比特輸出信號。?
IDELAY原語的例化代碼模板如下所示:?
在綜合結果分析時,IDELAY原語的RTL結構如圖3-41所示。
圖3-41 IDELAY原語的RTL結構圖
4. OBUFDS原語?
OBUFDS將標準單端信號轉換成差分信號,輸出端口需要直接對應到頂層模塊的輸出信號,和IBUFDS為一對互逆操作。OBUFDS原語的真值表如表3-13所列。
表3-13 OBUFDS原語的真值表?
OBUFDS原語的例化代碼模板如下所示:?
?
在綜合結果分析時,OBUFDS原語的RTL結構如圖3-42所示。
圖3-42 OBUFDS的RTL結構圖
5. IOBUF原語?
IOBUF原語是單端雙向緩沖器,其I/O接口必須和指定的電平標準相對應,支持 LVTTL、LVCMOS15、LVCMOS18、LVCMOS25以及LVCMOS33等信號標準,同時還可通過DRIVE、 FAST 以及SLOW等約束來滿足的不同驅動和抖動速率的需求。默認的驅動能力為12mA,低抖動。IOBUF由IBUF和OBUFT兩個基本組件構成,當I/O端口為高阻時,其輸出端口O為不定態(tài)。IOBUF原語的功能也可以通過其組成組件的互聯(lián)來實現(xiàn)。?
IOBUF原語的輸入輸出真值表如表3-14所列。
表3-14 IOBUF原語的真值表
IOBUF原語的例化代碼模板如下所示:?
?
在綜合結果分析時,IOBUF原語的RTL結構如圖3-43所示。
圖3-43 OBUFDS的RTL結構圖
6. PULLDOWN和PULLUP原語?
數(shù)字電路有三種狀態(tài):高電平、低電平、和高阻狀態(tài)。有些應用場合不希望出現(xiàn)高阻狀態(tài),可以通過上拉電阻或下拉電阻的方式使其處于穩(wěn)定狀態(tài),如圖3-44所示。FPGA的I/O端口,可以通過外接電阻上下拉,也可以在芯片內部,通過配置完成上下拉。上拉電阻是用來解決總線驅動能力不足時提供電流的,而下拉電阻是用來吸收電流。通過FPGA內部配置完成上下拉,能有效節(jié)約電路板面積,是設計的首選方案。
圖3-44 上、下拉電路示意圖
上、下拉的原語分別為PULLUP和PULLDOWN。?
1)PULLUP原語的例化代碼?
?
3.4.6 處理器組件?
處理器組件主要包括高速以太網(wǎng)MAC控制器和PowerPC硬核,如表3-15所示。
表3-15處理器組件列表?
更過原語的介紹,可以參看官方文檔《FPGAs SelectIO Resources User Guide》。
推薦閱讀
例說七層OSI參考模型
TCP/IP模型
TCP和UDP
以太網(wǎng)遵循的IEEE?802.3?標準
媒體訪問控制(MAC,Media Access Control)
媒體獨立接口(MII,Meida Independent Interface)
GMII、SGMII和SerDes的區(qū)別和聯(lián)系
PHY(Physical Layer,PHY)通俗理解
FPGA實現(xiàn)網(wǎng)口通信的幾種方式
千兆網(wǎng)UDP通信
FPGA千兆網(wǎng)TCP通信分析
基于FPGA的網(wǎng)口通信實例設計
基于UDP/IP協(xié)議的電口通信(一)
一大波HLS設計資料來了
2020版深入淺出玩轉FPGA視頻教程
點擊上方字體即可跳轉閱讀喲
總結
以上是生活随笔為你收集整理的Xilinx原语的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《消费者行为学》读书笔记 第二章 知觉
- 下一篇: Facebook_Pop的使用指北