雙向埠應用例項

2021-08-25 15:00:28 字數 2467 閱讀 3761

[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...