在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在Xilinx 7系列FPGA上兩種實現方式的差別

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-10-19 09:31 ? 次閱讀

FPGA設計開發中,很多場合會遇到同一根信號既可以是輸入信號,又可以是輸出信號,即IO類型(Verilog定義成inout)。

對于inout型的信號,我們既可以使用FPGA原語來實現,也可以使用Verilog代碼來實現。下面將介紹在Xilinx 7系列FPGA上兩種實現方式的差別和注意點。

1.FPGA原語實現

首先,我們編寫的代碼如下:

`define PRIMITIVE 
 
 module io_buf(
     input    T    ,
     input    I    ,
     output    O    ,
     inout    IO
 );
 
 `ifdef PRIMITIVE
     IOBUF #(
         .DRIVE            (12            ),    // Specify the output drive strength
         .IBUF_LOW_PWR    ("TRUE"        ),    // Low Power - "TRUE", High Performance = "FALSE" 
         .IOSTANDARD        ("DEFAULT"    ),    // Specify the I/O standard
         .SLEW            ("SLOW"        )    // Specify the output slew rate
     ) IOBUF_INST (
         .O                (O            ),    // Buffer output
         .IO                (IO            ),    // Buffer inout port (connect directly to top-level port)
         .I                (I            ),    // Buffer input
         .T                (T            )    // 3-state enable input, high=input, low=output
     );
 `else
     assign IO = T? I:1'bz;
     assign O  = IO;
 `endif
     
 endmodule

該代碼通過原語IOBUF實現IO功能,使用Vivado編譯后的原理圖如下圖所示。可以看到IOBUF內部由OBUFT和IBUF原語構成。

8927cd10-4f3d-11ed-a3b6-dac502259ad0.png

2.使用Verilog實現

把`define PRIMITIVE注釋掉,則為通過Verilog的實現方式,如下圖:

//`define PRIMITIVE 

module io_iobuf(
    input    T    ,
    input    I    ,
    output    O    ,
    inout    IO
);

`ifdef PRIMITIVE
    IOBUF #(
        .DRIVE            (12            ),    // Specify the output drive strength
        .IBUF_LOW_PWR    ("TRUE"        ),    // Low Power - "TRUE", High Performance = "FALSE" 
        .IOSTANDARD        ("DEFAULT"    ),    // Specify the I/O standard
        .SLEW            ("SLOW"        )    // Specify the output slew rate
    ) IOBUF_INST (
        .O                (O            ),    // Buffer output
        .IO                (IO            ),    // Buffer inout port (connect directly to top-level port)
        .I                (I            ),    // Buffer input
        .T                (T            )    // 3-state enable input, high=input, low=output
    );
`else
    assign IO = T? I:1'bz;
    assign O  = IO;
`endif
    
endmodule

該代碼使用Vivado編譯后的原理圖如下圖所示。該實現方式也會調用IOBUF原語,但多消耗了一個LUT資源。

894d860e-4f3d-11ed-a3b6-dac502259ad0.png

通過Verilog實現時,我們在把IO信號當成輸入時給賦值高阻態(1‘bz)。假如我們把此時的IO信號賦值1‘b0或者1‘b1,會出現什么情況呢?我們把1‘bz寫成1‘b1,如下所示:

 //`define PRIMITIVE 
 
 module io_iobuf(
     input    T    ,
     input    I    ,
     output    O    ,
     inout    IO
 );
 
 `ifdef PRIMITIVE
     IOBUF #(
         .DRIVE            (12            ),    // Specify the output drive strength
         .IBUF_LOW_PWR    ("TRUE"        ),    // Low Power - "TRUE", High Performance = "FALSE" 
         .IOSTANDARD        ("DEFAULT"    ),    // Specify the I/O standard
         .SLEW            ("SLOW"        )    // Specify the output slew rate
     ) IOBUF_INST (
         .O                (O            ),    // Buffer output
         .IO                (IO            ),    // Buffer inout port (connect directly to top-level port)
         .I                (I            ),    // Buffer input
         .T                (T            )    // 3-state enable input, high=input, low=output
     );
 `else
     assign IO = T? I:1'b1;
     assign O  = IO;
 `endif
     
 endmodule

編譯后的原理圖如下,可以看到并不會調用IOBUF原語,IO的不能實現輸入功能,這就是解釋了為什么在使用Verilog實現一根信號的IO功能時需要賦值1‘bz。

8958dd56-4f3d-11ed-a3b6-dac502259ad0.png

審核編輯:彭靜

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21759

    瀏覽量

    604321
  • Xilinx
    +關注

    關注

    71

    文章

    2168

    瀏覽量

    121690
  • 代碼
    +關注

    關注

    30

    文章

    4803

    瀏覽量

    68749

原文標題:FPGA之IO信號類型深入理解

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Xilinx 7系列FPGA的時鐘結構解析

    通過上一篇文章“時鐘管理技術”,我們了解Xilinx 7系列FPGA主要有全局時鐘、區域時鐘、時鐘管理塊(CMT)。 通過以上時鐘資源的結合,Xil
    發表于 08-31 10:44 ?2661次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>的時鐘結構解析

    AMD Xilinx 7系列FPGA的Multiboot多bit配置

    Multiboot是一AMD Xilinx 7系列FPGA
    的頭像 發表于 02-25 10:54 ?1322次閱讀
    AMD <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>的Multiboot多bit配置

    求大神分享基于FPGA的DDFS與DDWS的兩種實現方式

    DDS的基本原理是什么,有什么性能指標?基于FPGA的DDFS與DDWS兩種實現方式
    發表于 04-30 06:13

    Xilinx 7系列FPGA管腳是如何定義的?

    FPGAs Package Files的ASCII Pinout Files子節中,按照FPGA器件家族和器件封裝分類,給出了7系列所有器件Pinout定義鏈接地址。官網給出CSV和
    發表于 05-28 09:23

    Xilinx 7系列FPGA芯片管腳定義與封裝

    FPGAs Package Files的ASCII Pinout Files子節中,按照FPGA器件家族和器件封裝分類,給出了7系列所有器件Pinout定義鏈接地址。官網給出CSV和
    發表于 07-08 08:00

    xilinx公司的7系列FPGA應用指南

    本文是關于 xilinx公司的7系列FPGA應用指南。xilinx公司的7
    發表于 08-07 17:22 ?201次下載
    <b class='flag-5'>xilinx</b>公司的<b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>應用指南

    實現ARM9與FPGA的并口通信的兩種方式

    并口通信是最常用基礎功能,實現ARM9與FPGA的并口通信有兩種方式,一頗為巧妙,利用SMC(Static Memory Controll
    發表于 06-17 09:41 ?6447次閱讀

    兩種視頻流的展示介紹

    該視頻演示展示了兩種視頻流,這些視頻流通過Xilinx?7系列FPGA和SoC器件實現的機器視覺
    的頭像 發表于 11-23 06:43 ?3309次閱讀

    兩種JESD204B A/D轉換器轉FPGA設置與實現技巧

    來自ADI公司和Xilinx公司的專家共同展示兩種JESD204B A/D轉換器轉FPGA設置,同時介紹其實現技巧。
    的頭像 發表于 06-21 06:01 ?2434次閱讀

    Xilinx 7系列FPGA介紹

    Xilinx 7系列FPGA概覽 文章目錄 Xilinx 7
    的頭像 發表于 11-13 18:03 ?1.5w次閱讀

    Xilinx 7系列FPGA簡介--選型參考

    FPGA采用的是統一的28nm設計架構,客戶不同子系列的使用方式是統一的,消除了不同子系列
    發表于 01-30 06:00 ?17次下載
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>簡介--選型參考

    MATLAB/simulink中建模時的兩種不同實現方式

    導讀:本期文章主要介紹MATLAB/simulink中建模時的兩種不同實現方式,一是直接用現成的文件庫中的模塊進行搭建,一
    的頭像 發表于 09-15 10:07 ?1914次閱讀

    MATLAB/simulink中兩種實現建模方式的優勢

    導讀:本期文章主要介紹MATLAB/simulink中建模時的兩種不同實現方式,一是直接用現成的文件庫中的模塊進行搭建,一
    的頭像 發表于 09-15 10:10 ?5118次閱讀

    淺談S7-200兩種尋址方式

    S7-200系列中,尋址方式分為兩種:直接尋址和間接尋址。直接尋址方式是指在指令中直接使用存儲
    的頭像 發表于 10-09 16:43 ?3464次閱讀

    Xilinx 7系列與Ultrascale系列FPGA的區別

    Xilinx是一家專業的可編程邏輯器件(PLD)廠商,其產品包括FPGA、CPLD、SOC等。XilinxFPGA產品線有多個系列,其中
    發表于 09-15 14:44 ?5862次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b>與Ultrascale<b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>的區別
    主站蜘蛛池模板: 国产农村三片免费网站| 丁香婷婷综合网| 激情四月婷婷| 网站在线观看你懂的| 六月丁香深爱六月综合激情| 四虎永久免费地ww4hu57| 日本69av| 美女张开腿露尿口给男人亲| yyy6080韩国三级理论| 在线观看播放视频www| 欧美性猛交xxxx免费看久久| 亚洲三级成人| 中文字幕11页| 婷婷激情六月| 萌白酱香蕉白丝护士服喷浆| 色.www| 亚洲欧美一区二区久久香蕉| 婷婷激情五月综合| 欧美三级欧美一级| 操碰视频在线| 奇米7777影视| 欧美一级高清黄图片| 波多野结衣50连精喷在线| 91精品国产亚洲爽啪在线影院| 永久免费人成网ww555kkk手机| 91在线免费看| 伊人9999| 欧美一区二区视频在线观看| 国产床戏无遮掩视频播放| 手机看片久久| 欧美1819| 亚洲国产精品嫩草影院| 男人的天堂视频在线| 久久综合精品视频| 在线视频精品免费| 亚洲日本黄色| 亚洲国产片| 国产精品夜夜春夜夜| 国产综合视频在线观看| h视频免费看| 婷婷综合在线观看丁香|