1.前言
在數(shù)字電路中,邏輯輸出有兩個正常態(tài):低電平狀態(tài)(對應(yīng)邏輯0)和高電平狀態(tài)(對應(yīng)邏輯1)。此外,電路還有不屬于0和1狀態(tài)的高阻態(tài),高阻態(tài)常用字母 Z 表示。
高阻態(tài)可做開路理解??梢园阉醋鬏敵觯ㄝ斎耄?a target="_blank">電阻非常大,它的極限狀態(tài)可以認(rèn)為懸空(開路)。也就是說理論上高阻態(tài)不是懸空,它是對地或?qū)?a target="_blank">電源電阻極大的狀態(tài)。而實際應(yīng)用上與引腳的懸空幾乎是一樣的?;蛘呖梢岳斫鉃檩敵雠c電路是斷開的。高阻抗?fàn)顟B(tài)將器件與電路的其余部分電路隔離。高阻態(tài)時引腳對地電阻無窮,此時讀引腳電平就可以讀到真實的電平值。高阻態(tài)的重要作用就是I/O口在用作輸入(input)時讀入外部電平。
一般門與其它電路的連接,無非是兩種狀態(tài),0或者1,在比較復(fù)雜的系統(tǒng)中,為了能在一條傳輸線上傳送不同的信號,研制了相應(yīng)的邏輯器件稱為三態(tài)門。三態(tài)門是一種控制開關(guān)。
三態(tài)門主要是用于總線的連接,因為總線只允許同時只有一個器件使用。通常在數(shù)據(jù)總線上接有多個器件,每個器件通過OE/CE之類的信號選通。如果器件沒有選通的話它就處于高阻態(tài),相當(dāng)于沒有接在總線上,不影響其它器件的工作。三態(tài)邏輯門允許許多設(shè)備連接到相同的數(shù)據(jù)線上,例如數(shù)據(jù)和地址總線。然而,任何時候只有一個設(shè)備“連接”,所有其他設(shè)備都處于高阻抗?fàn)顟B(tài),因此電氣斷開。
雙向信號本質(zhì)上是由一個三態(tài)門組成,具體細(xì)節(jié)參見后面的描述。
2. 三態(tài)門
2.1示意圖、真值表
Verilog中有四個元件模型來表示三態(tài)門電路,分別是bufif1,bufif0,notif1,notif0。三態(tài)門的示意圖、真值表分別如下圖所示:
2.2 三態(tài)門結(jié)構(gòu)
三態(tài)門電路的輸出結(jié)構(gòu)和普通門電路的輸出結(jié)構(gòu)有很大的不同,因為它在電路中增加了一個輸出控制端。
2.2.1 單向三態(tài)門
單向三態(tài)門的結(jié)構(gòu)示意圖如下:
由上圖看出,在單向三態(tài)門中,當(dāng)E為高電平時,B與A相連,數(shù)據(jù)流向是A-->B;而當(dāng)E為低電平時,B的輸出為高阻態(tài),相當(dāng)于B側(cè)電路與A側(cè)電路之間的連線斷開,此時可以從外部向B驅(qū)動信號,實現(xiàn)相反方向的數(shù)據(jù)流向(B-->A)。
2.2.1 雙向三態(tài)門
當(dāng)信號線存在雙向IO時,可以有兩個三態(tài)門來控制,一個控制輸出,一個控制輸入,雙向三態(tài)門的結(jié)構(gòu)示意圖如下:
當(dāng)E1=1,E2=0時,雙向三態(tài)門的電路傳輸方向是 A -> B;
當(dāng)E1=0,E2=1時,雙向三態(tài)門的電路傳輸方向是 B -> A;
2.3 三態(tài)門建模
三態(tài)門的RTL建模方式如下所示
//Tristate Buffer moduletristate_buffer(input_x,enable,output_x); inputinput_x; inputenable; output output_x; assign output_x = enable? input_x : 'bz; endmodule
testbench如下:
module tb(); reg r_in_x; reg w_enable; wire w_output_x; initial begin $display("---------------------- Tri-State Buffer ---------------------- "); $monitor("input_x = %b, enable = %b, output_x = %b", r_in_x, w_enable, w_output_x); // Generation of stimulus r_in_x = 0; w_enable= 0; # 10 r_in_x = 0;# 10 r_in_x = 1; # 10 w_enable = 1; # 10 r_in_x = 1; # 10 r_in_x = 0; end // Tri-state buffer instantiation tristate_buffer u_tristate_buffer( .input_x (r_in_x), .enable (w_enable), .output_x (w_output_x)); endmodule
仿真結(jié)果
3. 雙向信號
在芯片驗證的過程中,有時候會遇到雙向信號(既能作為輸出,也能作為輸入的信號叫雙向信號)。比如,IIC總線中的SDA信號就是一個雙向信號,QSPI Flash的四線操作的時候四根信號線均為雙向信號。在Verilog中用關(guān)鍵字inout定義雙向信號。
如下圖所示,雙向信號的本質(zhì)是由一個三態(tài)門組成的,三態(tài)門可以輸出高電平、低電平和高阻態(tài)三種狀態(tài),其結(jié)構(gòu)大致如下圖所示:
描述這個邏輯的Verilog代碼如下:
module inout_top ( input I_data_in , inout IO_data , output O_data_out , input Control ); assign IO_data = Control ? I_data_in : 1‘bz ; assign O_data_out = IO_data ; endmodule
當(dāng)Control為1時,IO_data為輸出,輸出I_data_in的值
當(dāng)Control為0時,IO_data為輸入,把輸入的信號賦值給O_data_out。
審核編輯:湯梓紅
-
Verilog
+關(guān)注
關(guān)注
29文章
1366瀏覽量
111966 -
邏輯器件
+關(guān)注
關(guān)注
0文章
88瀏覽量
20360 -
三態(tài)門
+關(guān)注
關(guān)注
1文章
34瀏覽量
18990 -
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1637瀏覽量
81660
原文標(biāo)題:Verilog中的三態(tài)門與雙向信號
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
什么是三態(tài)門和OC門?
VERILOG關(guān)于三態(tài)門
集電極開路 漏極開路 推挽 上拉電阻 弱上拉 三態(tài)門 準(zhǔn)雙向口
高阻態(tài)與三態(tài)門的電路原理分析
【夢翼師兄今日分享】 三態(tài)門程序設(shè)計講解
什么是三態(tài)門? 三態(tài)邏輯與非門電路以及三態(tài)門電路

三態(tài)門邏輯功能的Multisim仿真方案

三態(tài)門有哪三態(tài)_三態(tài)門有什么特點

三態(tài)門怎么理解
FPGA之三態(tài)門
三態(tài)門的用法及模塊功能介紹
三態(tài)門原理HDL語言DSP和ARM總線的仿真及Modelsim使用教程資料

評論