0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Xilinx原語IBUFDS、OBUFDS的使用及仿真

C29F_xilinx_inc ? 來源:賽靈思 ? 作者:賽靈思 ? 2022-02-16 16:21 ? 次閱讀

1、介紹
IBUFDS、和OBUFDS都是差分信號緩沖器,用于不同電平接口之間的緩沖和轉(zhuǎn)換。IBUFDS 用于差分輸入,OBUFDS用于差分輸出。

2、IBUFDS
2.1、理論
IBUFDS是差分輸入緩沖器,支持低壓差分信號(如LVCMOS、LVDS等)。在IBUFDS中,一個電平接口用兩個獨特的電平接口(I和IB)表示。一個可以認(rèn)為是主信號,另一個可以認(rèn)為是從信號。

IBUFDS原語示意圖如下所示:

poYBAGIMo8CAALk3AAEdiqFyBeM912.png

端口說明如下表:

pYYBAGIMo8KABdfrAABz27Hr64s722.jpg

信號真值表如下:

pYYBAGIMo8OAWS7NAAB_UX4wMsI250.jpg

2.2、仿真
打開VIvado--Tools--Language Templates,搜索“IBUFDS”,可以找到Xilinx提供的模板如下:

IBUFDS #(
.DIFF_TERM("FALSE"), // Differential Termination
.IBUF_LOW_PWR("TRUE"), // Low power="TRUE", Highest
.IOSTANDARD("DEFAULT") // Specify the input I/O standard
) IBUFDS_inst (
.O(O), // Buffer output
.I(I), // Diff_p buffer input (connect directly to top-level port)
.IB(IB) // Diff_n buffer input (connect directly to top-level port)
);

DIFF_TERM、IBUF_LOW_PWR分別指定差分終端和性能模式,IOSTANDARD指定你需要輸出的電平標(biāo)準(zhǔn)。

接下來例化一個IBUFDS原語進(jìn)行測試,Verilog代碼如下:

//------------------------------------------------------------------------
//--IBUFDS測試模塊
//------------------------------------------------------------------------
//----------------------------------------------------
module IBUFDS_test(
input clk , //時鐘,50M
input rst_n , //復(fù)位,低電平有效
input data_p , //輸入數(shù)據(jù),差分+
input data_n , //輸入數(shù)據(jù),差分-

output out
);
//----------------------------------------------------
IBUFDS #(
.DIFF_TERM ("FALSE") , // Differential Termination
.IBUF_LOW_PWR ("TRUE") , // Low power="TRUE", Highest
.IOSTANDARD ("DEFAULT") // 選擇I/O電平標(biāo)準(zhǔn),這里選擇默認(rèn)
)
IBUFDS_inst (
.O (out) , // 輸出
.I (data_p) , // 差分輸入+(需要直接連接到頂層端口)
.IB (data_n) // 差分輸入-(需要直接連接到頂層端口)
);

endmodule

每隔20ns分別隨機(jī)生成2個1位2進(jìn)制數(shù)據(jù)作為差分輸入,觀察輸出,Testbench如下:

//------------------------------------------------
//--IBUFDS原語仿真
//------------------------------------------------
`timescale 1ns/1ns //時間單位/精度
//----------------------------------------------------
module tb_IBUFDS_test();

reg clk ;
reg rst_n ;
reg data_p ;
reg data_n ;

wire out ;
//----------------------------------------------------
IBUFDS_test IBUFDS_test_inst(
.clk (clk) ,
.rst_n (rst_n) ,
.data_p (data_p) ,
.data_n (data_n) ,

.out (out)
);
//----------------------------------------------------
initial begin
clk = 1'b1; //初始時鐘為1
rst_n data_p data_n #60 //60個時鐘周期后
rst_n end
//----------------------------------------------------------
always #10 clk = ~clk; //系統(tǒng)時鐘周期20ns

always #20 data_p always #20 data_n

endmodule

仿真結(jié)果如下:

poYBAGIMo8WAVpdHAABSPSP73JI139.png

每隔20ns,2個差分輸入端口分別隨機(jī)生成2個1位2進(jìn)制數(shù)據(jù);輸出輸入符合上述的真值表。

3、OBUFDS
3.1、理論
OBUFDS 是一個差分輸出緩沖器,用于將來自 FPGA 內(nèi)部邏輯的信號轉(zhuǎn)換成差分信號輸出,支持 TMDS、LVDS等電平標(biāo)準(zhǔn)。它的輸出用O和OB兩個獨立接口表示。一個可以認(rèn)為是主信號,另一個可以認(rèn)為是從信號。

OBUFDS原語示意圖如下所示:

pYYBAGIMo8eAbDmlAAB2RftdfvY623.png

端口說明如下表:

pYYBAGIMo8iAURjGAABz9h5PcJg152.jpg

信號真值表如下:

poYBAGIMo8qACBjeAABWnDTlHRQ858.jpg

可以看出,輸出+端與輸入一致,輸出-端與輸入相反。

3.2、仿真
打開VIvado--Tools--Language Templates,搜索“OBUFDS”,可以找到Xilinx提供的模板如下:

OBUFDS #(
.IOSTANDARD("DEFAULT"), // Specify the output I/O standard
.SLEW("SLOW") // Specify the output slew rate
) OBUFDS_inst (
.O(O), // Diff_p output (connect directly to top-level port)
.OB(OB), // Diff_n output (connect directly to top-level port)
.I(I) // Buffer input
);

其中IOSTANDARD指定你需要輸出的差分電平標(biāo)準(zhǔn),SLEW根據(jù)你的要求輸出FAST或者SLOW。

接下來例化一個OBUFDS原語進(jìn)行測試,Verilog代碼如下:

//------------------------------------------------------------------------
//--OBUFDS測試模塊
//------------------------------------------------------------------------
//----------------------------------------------------
module OBUFDS_test(
input clk , //時鐘,50M
input rst_n , //復(fù)位,低電平有效
input data , //輸入數(shù)據(jù)

output out_p , //輸出數(shù)據(jù),差分+
output out_n //輸出數(shù)據(jù),差分-
);
//----------------------------------------------------
OBUFDS #(
.IOSTANDARD ("DEFAULT") , // 選擇I/O電平標(biāo)準(zhǔn),這里選擇默認(rèn)
.SLEW ("SLOW") // 選擇輸出速率,這里選擇SLOW
)
OBUFDS_inst (
.O (out_p) , // 差分輸出+(需要直接連接到頂層端口)
.OB (out_n) , // 差分輸出-(需要直接連接到頂層端口)
.I (data) // 輸入
);

endmodule

每隔20ns隨機(jī)生成一個1位2進(jìn)制數(shù)據(jù),觀察差分輸出,Testbench如下:

//------------------------------------------------
//--OBUFDS原語仿真
//------------------------------------------------
`timescale 1ns/1ns //時間單位/精度
//----------------------------------------------------
module tb_OBUFDS_test();
reg clk ;
reg rst_n ;
reg data ;

wire out_p ;
wire out_n ;
//----------------------------------------------------
OBUFDS_test OBUFDS_test_inst(
.clk (clk),
.rst_n (rst_n),
.data (data),

.out_p (out_p),
.out_n (out_n)
);
//----------------------------------------------------
initial begin
clk = 1'b1; //初始時鐘為1
rst_n data #60 //60個時鐘周期后
rst_n end
//----------------------------------------------------------
always #10 clk = ~clk; //系統(tǒng)時鐘周期20ns
always #20 data

endmodule

仿真結(jié)果如下:

pYYBAGIMo8yAeXMTAABKljcqjio357.png

每隔20ns,data隨機(jī)生成0或者1,out_p與輸入一致,out_n與輸入相反;差分輸出信號符合上述的真值表。

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2169

    瀏覽量

    121799
  • 仿真
    +關(guān)注

    關(guān)注

    50

    文章

    4113

    瀏覽量

    133802
收藏 人收藏

    評論

    相關(guān)推薦

    調(diào)試Xilinx Zynq + ADS58C48,ADC使用的是LVDS模式,ADC不能正常工作怎么解決?

    我正在調(diào)試Xilinx Zynq + ADS58C48,ADC使用的是LVDS模式,ADC不能正常工作。有以下幾點問題: 1)通過Xilinx FPGA差分原語輸給ADC一個10MHz的差分時
    發(fā)表于 12-10 07:34

    采用Xilinx FPGA的AFE79xx SPI啟動指南

    電子發(fā)燒友網(wǎng)站提供《采用Xilinx FPGA的AFE79xx SPI啟動指南.pdf》資料免費下載
    發(fā)表于 11-15 15:28 ?0次下載
    采用<b class='flag-5'>Xilinx</b> FPGA的AFE79xx SPI啟動指南

    如何申請xilinx IP核的license

    在使用FPGA的時候,有些IP核是需要申請后才能使用的,本文介紹如何申請xilinx IP核的license。
    的頭像 發(fā)表于 10-25 16:48 ?442次閱讀
    如何申請<b class='flag-5'>xilinx</b> IP核的license

    Xilinx ZYNQ 7000系列SoC的功能特性

    本文介紹下Xilinx ZYNQ 7000系列SoC的功能特性、資源特性、封裝兼容性以及如何訂購器件。
    的頭像 發(fā)表于 10-24 15:04 ?1084次閱讀
    <b class='flag-5'>Xilinx</b> ZYNQ 7000系列SoC的功能特性

    如何在ModelSim中添加Xilinx仿真

    今天給大俠帶來在FPGA設(shè)計應(yīng)用中如何在ModelSim中添加Xilinx仿真庫,話不多說,上貨。 注意:ModelSim一定要安裝在不帶空格的目錄下,即不要安裝在“Program
    發(fā)表于 07-03 18:16

    快速開箱即用體驗 AMD / Xilinx Kria? KD240驅(qū)動器入門套件

    快速開箱即用體驗 AMD / Xilinx Kria? KD240驅(qū)動器入門套件
    的頭像 發(fā)表于 06-22 10:26 ?8134次閱讀
    快速開箱即用體驗 AMD / <b class='flag-5'>Xilinx</b> Kria? KD240驅(qū)動器入門套件

    FPGA | Xilinx ISE14.7 LVDS應(yīng)用

    號的收發(fā):OBUFDS(差分輸出BUF),IBUFDS(差分輸入BUF)。 注意在分配引腳時,只需要分配SIGNAL_P的引腳,SIGNAL_N會自動連接到相應(yīng)差分對引腳上;若沒有使用差分信號原語
    發(fā)表于 06-13 16:28

    Trion DSP 原語使用問題 - 1

    ? 在使用Trion乘法器可能會遇到以下問題: (1)[EFX-0652 ERROR] 'EFX_MULT' instance 'mult' port 'CEA' is not permanently disabled in the Register Bypass mode.? 說明:如果輸 入寄存器A_REG沒有使能,CEA接口要設(shè)置為0 (2)[EFX-0652 ERR OR] 'EFX_MULT' instance 'mult' port 'RSTA' is not permanently disabled in the Register Bypass mode. 說明:如果輸 入寄存器A_REG沒有使能,RSTA接口要設(shè)置為0 (3)[EFX -0652 ERROR] 'EFX_MULT' instance 'mult' port 'CLK' is not permanently disabled in the Register Bypass mode. 說明:如果 輸入和輸出寄
    的頭像 發(fā)表于 05-20 16:35 ?410次閱讀
    Trion DSP <b class='flag-5'>原語</b>使用問題 - 1

    xilinx中的carry4原語在高云FPGA中用什么原語替代?

    xilinx中的carry4原語在高云FPGA中用什么原語替代
    發(fā)表于 05-09 16:13

    Xilinx ISE14.7 LVDS的應(yīng)用

    最近項目需要用到差分信號傳輸,于是看了一下FPGA上差分信號的使用。Xilinx FPGA中,主要通過原語實現(xiàn)差分信號的收發(fā):OBUFDS(差分輸出BUF),IBUFDS(差分輸入BU
    的頭像 發(fā)表于 05-07 17:17 ?1083次閱讀
    <b class='flag-5'>Xilinx</b> ISE14.7 LVDS的應(yīng)用

    電路仿真軟件有哪些類型 電路仿真接線app軟件哪個好

    軟件有Xilinx ISE、Altera Quartus等。這類軟件提供了大量的數(shù)字邏輯器件模型庫,用戶可以通過拖拽和連接不同的器件模型,輕松構(gòu)建和驗證數(shù)字電路的功能和性能。在這類軟件中,用戶可以對時序關(guān)系、邏輯功能等進(jìn)行仿真與調(diào)試,以確
    的頭像 發(fā)表于 05-04 10:49 ?3372次閱讀

    Xilinx SelectIO資源內(nèi)部的IDELAYE2應(yīng)用介紹

    本文我們介紹下Xilinx SelectIO資源內(nèi)部IDELAYE2資源應(yīng)用。IDELAYE2原句配合IDELAYCTRL原句主要用于在信號通過引腳進(jìn)入芯片內(nèi)部之前,進(jìn)行延時調(diào)節(jié),一般高速端口信號由于走線延時等原因,需要通過IDELAYE2原語對數(shù)據(jù)做微調(diào),實現(xiàn)時鐘與數(shù)據(jù)
    的頭像 發(fā)表于 04-26 11:33 ?2142次閱讀
    <b class='flag-5'>Xilinx</b> SelectIO資源內(nèi)部的IDELAYE2應(yīng)用介紹

    基于FPGA的TMDS編碼

    操作我們可以使用原語OSERDES2實現(xiàn)10-to-1的過程。最后用OBUFDS將串行數(shù)據(jù)轉(zhuǎn)換為差分信號輸出即可。
    發(fā)表于 04-09 15:45

    Xilinx fpga芯片系列有哪些

    Xilinx FPGA芯片擁有多個系列和型號,以滿足不同應(yīng)用領(lǐng)域的需求。以下是一些主要的Xilinx FPGA芯片系列及其特點。
    的頭像 發(fā)表于 03-14 16:24 ?3426次閱讀

    請問兩個KC705板子之間,用USER_SMA_GPIO Y23互連不成功,求教。

    做成差分信號了,兩根SMA線纜各0.4米長, 發(fā)送端用了這個原語 --OBUFDS_inst0 : OBUFDS --generic map ( --IOSTANDARD =>
    發(fā)表于 02-02 16:23