[color=darkred][size=medium]三態緩衝器也稱三態門,其典型應用是雙向埠,常用於雙向資料匯流排的構建。
在verilog hdl中,inout型雙向埠訊號不能被定義成reg型變數,因此在always塊內不能被直接賦值使用。
由於現在fpga設計和外部儲存器或cpu資料交換的頻繁運用,以及引腳資源有限,使用雙向埠設計可以成倍地節省資料引腳線,所以利用verilog hdl實現雙向埠至關重要。在設計雙向埠時應注意亮點:其一,要用三態門的控制來處理實現雙向埠;其二,要分別指定雙向埠作為輸出口和輸入口時,對外部物件的資料操作。[/size][/color]
下面是乙個雙向埠的verilog hdl例項:
module inout(din, clk, z, dout, dinout);
input [7:0] din;
input clk;
input z;
output [7:0] dout;
inout [7:0] dinout;
reg [7:0] dout, din_reg;
assign dinout = din_reg;
always @(posedge clk) begin
if(!z)
din_reg <= din; // inout型雙向埠訊號不能被定義成reg型變數,因此在always塊內不能被直接賦值使用
else
dout <= dinout;
endendmodule
[color=red][size=small]注意:z為三態門選通訊號,當z=1時,把三態門置為高阻態,這時dinout作為輸入口;當z=0時,開通三態門,dinout作為輸出埠。[/size][/color]
[color=darkred][size=medium]雙向埠的**:
編寫測試模組時,對於inout型別的埠,需要定義成wire型別變數,而其他輸入埠都定義成reg型別,這兩者是有區別的。此外,對於雙向埠本身,**其輸出埠和輸入埠的語法是不同的。[/size][/color]
[color=red][size=medium](1)輸出埠特性**:當雙向埠作為輸出口時,不需要對其進行初始化,只要開通三態門即可。[/size][/color]
`timescale 1ns/1ps
module tb_inout;
reg [7:0] din;
reg z;
reg clk;
wire [7:0] dout;
wire [7:0] dinout;
integer i;
inout uut(
.din(din),
.z(z),
.clk(clk),
.dout(dout),
.dinout(dinout)
);always #5 clk = ~clk;
initial begin
din = 0;
z = 0;
clk = 0;
#100 din = 10;
for(i=0; i<10; i=i+1)
#10 din = din + 1;
endendmodule
**圖為:
[img]
[color=red][size=medium](2)輸入埠特性**:當雙向埠dinout作為輸入口時,需要對它進行初始化賦值並關閉三態門。而如果把它跟一般的輸入口一樣直接進行初始化賦值,則會出錯,這是因為在定義它的時候是wire型的資料變數,而不是reg型資料變數。因此,這裡需要用到force命令,以強制給dinout賦值。[/size][/color]
`timescale 1ns/1ps
module tb_inout_in;
reg [7:0] din;
reg z;
reg clk;
wire [7:0] dout;
wire [7:0] dinout;
integer i;
inout uut(
.din(din),
.z(z),
.clk(clk),
.dout(dout),
.dinout(dinout)
);always #5 clk = ~clk;
initial begin
z = 1;
clk = 0;
force dinout = 20;
#100;
for(i=0; i<10; i=i+1)
#10 force dinout = dinout - 1;
endendmodule
不知道為何生不成**圖,哥就是個杯具。。。
今晚p大又要搞鏡湖之夜,哥看著喧鬧的人群,卻突然覺得好孤單啊~~
雙向認證例項
coding utf 8 created on 2016年1月5日 author duqiong 企業1,伺服器,假設,銀行 import socket,ssl,pprint importtime cacrtf ca ca.crt cacrtf ca cert.pem 客戶端證書 服務端用來驗證,客...
C Wpf雙向繫結例項
wpf中雙向繫結處理需要兩處 例項1 1.前台xaml中屬性binding 時model指定 twoway grid ellipse x name ellipse fill fff4f4f5 horizontalalignment left height margin 50,55,0,0 strok...
C Wpf雙向繫結例項
wpf中雙向繫結處理需要兩處 例項1 1.前台xaml中屬性binding 時model指定 twoway 2.後台繫結的資料上線文實現inotifypropertychanged 向客戶端發出某一屬性值已更改的通知。介面 thread6.xaml 的互動邏輯 public partial clas...