在fpga設計中,雙向io(輸入輸出引腳)是乙個比較麻煩的東西,但是訊號線用作匯流排等雙向資料傳輸時就要用到inout型別。
以下用液晶的的資料線用作雙向io示例:
說是雙向io埠,其實輸入和輸出不是同時進行的,需要有乙個控制訊號out_en來控制埠什麼時候為輸出,什麼時候為輸入。
那這裡就需要引入乙個三態門結構電路。
那麼三態門的結構是怎樣的呢?
三態閘電路的輸出結構和普通閘電路的輸出結構有很大的不同,因為它在電路中增加了乙個輸出控制端en。
由上圖看出,在單相三態門中,當en=1時,對原電路無影響,電路的輸出符合原來電路的所有邏輯關係,即a可以輸出到b。當en= 0時,電路內部的所有輸出與外部將處於一種關斷狀態。
因此,當fpga的訊號線存在雙向io時,可以有兩個三態門來控制,乙個控制輸出,乙個控制輸入,結構如下:
當enout=1,enin=0時,雙向三態門的電路傳輸方向是a->b;
當enout=0,enin=1時,雙向三態門的電路傳輸方向是b->a;
下面簡單做個簡易模型來說明雙向io如何分別實現作為輸入埠和輸出埠的功能,模組圖如下:
模型引腳定義
(1)輸入口a定義:當雙向埠dinout作為輸出口時,我們將a埠輸入資料傳到模組中,讓資料從dinout口出來。
(2)輸出埠b定義:噹噹雙向埠dinout作為輸入口時,我們將dinout埠輸入資料傳到模組中,讓資料從b口出來。
(3)en控制訊號定義:當en=1時,開通三態門,將dinout作為輸出口使用,當en=0時,把三態門置為高阻態,這時dinout作為輸入口用。
編譯分析後檢視rtl視角邏輯電路,符合原有模型設計。
(1)fpga內部不允許傳遞雙向io訊號,只有fpga對外部才能定義為雙向io埠,即只有在頂層輸出的訊號才可以被賦值為高阻態。
(2)在結構化建模的過程中,乙個模組乙個功能的建模,當涉及到內部模組的埠是雙向io埠時,然後根據乙個雙向io對應乙個輸入,乙個輸出和乙個使能控制,把模組中雙向io的輸出用輸出埠代替,雙向io的輸入用輸入埠代替,引出使能訊號,並把對應assign中賦值的高阻態z根據實際情況給出0或1,來解決fpga內部雙向io連線問題。
FPGA三態詳解
1 本節目錄 2 本節引言 3 fpga簡介 4 fpga三態詳解 5 結束語。不積跬步,無以至千里 不積小流,無以成江海。就是說 不積累一步半步的行程,就沒有辦法達到千里之遠 不積累細小的流水,就沒有辦法匯成江河大海。fpga field programmable gate array 是在pal...
三態門三個狀態vhdl 匯流排實現形式之三態門
什麼是三態門?三態門即三態電路。三態電路可提供三種不同的輸出值 邏輯 0 邏輯 1 和高阻態。高阻態主要用來將邏輯門同系統的其他部分加以隔離。例如雙向i o電路和共用匯流排結構中廣泛應用三態特性。乙個簡單的三態緩衝電路如上圖所示,圖 a 為表示符號,圖 b 為邏輯結構。由允許訊號e控制輸出,當e 1...
FPGA 基礎篇 數位電路設計 三態門
1.what is three state gate?三態指其輸出既可以是一般二值邏輯電路,即正常的高電平 邏輯1 或低電平 邏輯0 又可以保持特有的高阻抗狀態。高阻態相當於隔斷狀態 電阻很大,相當於開路 高阻態是乙個數位電路裡常見的術語,指的是電路的一種輸出狀態,既不是高電平也不是低電平,如果高阻...