新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Inout雙向端口的用法

        Inout雙向端口的用法

        作者: 時間:2016-12-13 來源:網絡 收藏
        如果data_inout不是高阻態,則用作輸出,無法做輸入的,否則兩者豈不有了沖突?
        inout端口信號做輸入時,觀察例子中的輸出data_out_t就應該是高阻態的.


        見許多問這個問題的,總結一下大家的貼子,希望能對大家有點用處,如果有不對的地方,歡迎指出.
        芯片外部引腳很多都使用inout類型的,為的是節省管腿。就是一個端口同時做輸入和輸出。 inout在具體實現上一般用三態門來實現。三態門的第三個狀態就是高阻Z。 當inout端口不輸出時,將三態門置高阻。這樣信號就不會因為兩端同時輸出而出錯了,更詳細的內容可以搜索一下三態門tri-state的資料.
        1 使用inout類型數據,可以用如下寫法:
        inout data_inout;
        input data_in;
        reg data_reg;//data_inout的映象寄存器
        reg link_data;
        assign data_inout=link_data?data_reg:1bz;//link_data控制三態門

        //對于data_reg,可以通過組合邏輯或者時序邏輯根據data_in對其賦值.通過控制link_data的高低電平,從而設置data_inout是輸出數據還是處于高阻態,如果處于高阻態,則此時當作輸入端口使用.link_data可以通過相關電路來控制.
        2 編寫測試模塊時,對于inout類型的端口,需要定義成wire類型變量,而其它輸入端口都定義成reg類型,這兩者是有區別的.
        當上面例子中的data_inout用作輸入時,需要賦值給data_inout,其余情況可以斷開.此時可以用assign語句實現:assign data_inout=link?data_in_t:1bz;其中的link ,data_in_t是reg類型變量,在測試模塊中賦值.
        另外,可以設置一個輸出端口觀察data_inout用作輸出的情況:
        Wire data_out;
        Assign data_out_t=(!link)?data_inout:1bz;


        關鍵詞: Inout雙向端

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 洪雅县| 铁岭市| 上思县| 滁州市| 本溪市| 东方市| 和林格尔县| 都昌县| 临江市| 凤凰县| 康乐县| 辽宁省| 汶上县| 石阡县| 阿坝县| 景泰县| 本溪市| 深泽县| 定州市| 西城区| 金山区| 塔河县| 法库县| 阜新| 博湖县| 肃南| 陆良县| 东平县| 航空| 桂东县| 昌黎县| 盐源县| 延吉市| 海南省| 闵行区| 济宁市| 斗六市| 双城市| 涡阳县| 思南县| 阿合奇县|