在线观看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
    +關注

    關注

    1645

    文章

    22012

    瀏覽量

    616642
  • Xilinx
    +關注

    關注

    73

    文章

    2184

    瀏覽量

    124830
  • 代碼
    +關注

    關注

    30

    文章

    4894

    瀏覽量

    70460

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

    通過上一篇文章“時鐘管理技術”,我們了解Xilinx 7系列FPGA主要有全局時鐘、區域時鐘、時鐘管理塊(CMT)。 通過以上時鐘資源的結合,Xil
    發表于 08-31 10:44 ?3539次閱讀
    <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 ?1786次閱讀
    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 ?6903次閱讀

    兩種視頻流的展示介紹

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

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

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

    Xilinx 7系列FPGA介紹

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

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

    FPGA采用的是統一的28nm設計架構,客戶不同子系列的使用方式是統一的,消除了不同子系列
    發表于 01-30 06:00 ?21次下載
    <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 ?2296次閱讀

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

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

    淺談S7-200兩種尋址方式

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

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

    Xilinx是一家專業的可編程邏輯器件(PLD)廠商,其產品包括FPGA、CPLD、SOC等。XilinxFPGA產品線有多個系列,其中
    發表于 09-15 14:44 ?7744次閱讀
    <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>的區別
    主站蜘蛛池模板: 天天爽天天爽天天片a久久网 | 黑人性xxxⅹxxbbbbb | 久久的色偷偷 | 午夜剧场黄 | 性欧美videofree另类超大 | 亚洲色图综合图片 | 午夜在线免费视频 | 午夜看黄| 永久免费观看黄网站 | 色婷婷综合久久久久中文一区二区 | 一道精品视频一区二区三区男同 | 欧美一级视频在线观看欧美 | 免费又爽又黄禁片视频在线播放 | 国产日韩三级 | 毛片又大又粗又长又硬 | 一级aa 毛片高清免费看 | 国产亚洲精品久久午夜 | 日韩三级免费观看 | 五月激情啪啪网 | 欧美 亚洲 国产 丝袜 在线 | 国产亚洲新品一区二区 | 性欧美高清短视频免费 | 色一区二区 | 在线看片国产 | 99久久精品99999久久 | 亚洲成网站 | 一区二区三区高清 | 熟妇毛片| 男人的天堂在线精品视频 | 伊人天伊人天天网综合视频 | 中文天堂网在线www 中文天堂资源在线www | 国产叼嘿免费视频网站 | 黑色丝袜在丝袜福利国产 | 黄色视屏免费看 | 日本三级网址 | 国产午夜久久影院 | 欧美一级在线观看视频 | 日韩三级中文 | 久久综合社区 | 成人三级电影在线观看 | 狼人激情网 |