關於FPGA內部的上下拉電阻


除了輸入輸出端口,FPGA中還有另一種端口叫做inout端口。如果需要進行全雙工通信,是需要兩條信道的,也就是說需要使用兩個FPGA管腳和外部器件連接。但是,有時候半雙工通信就能滿足我們的要求,理論上來說只需要一條信道就足夠了,而FPGA上實現這一功能的管腳就是inout端口。管腳相連時,input對應output,因此inout只能和inout連接(否則就不是inout了)。本文將概述FPGA的inout端口。

1. 三態門

    三態門,故名思議就是這個期間具有三種狀態。對於數字電路來說,三種狀態是高電平、低電平和高阻態。Xilinx的《XST User Guide》上給出了三態門的Verilog HDL(以及VHDL)的描述,具體如下:

clipboard

復制代碼
 1 // Tristate Description Using Concurrent Assignment
 2 
 3 // Combinatorial Always Block Can be Used too.
 4 
 5 module v_three_st_2 (T, I, O);
 6 
 7     input T, I;
 8 
 9     output O;
10 
11     assign O = (~T) ? I: 1’bZ;
12 
13 endmodule
復制代碼

   三態門意味着,輸出端口除了輸出高、低電平之外還可以有第三種狀態,這是inout端口實現的基礎。

2. 高阻和懸空

    三態門中有一個狀態是高阻。高阻,即可以認為是沒有輸出,作為輸出端口而言,對下級電路沒有任何影響。懸空是針對輸入端口來說的,也就是說沒有接輸入。這也就意味着,實際上高阻和懸空是一個狀態,在HDL語言里都表示為Z。

    也就是說,一個輸出端口在高阻態的時候,其狀態是由於其相連的其他電路決定的,可以將其看作是輸入。

3. INOUT

    從上一節內容中可以看出,當三態門的輸出處於高阻狀態的時候,取值由外部電路決定,也就是說,這一時刻是可以作為輸入。INOUT端口的描述和示意圖如下

復制代碼
 1 module inout_def(clk,data_inout)
 2 input clk;
 3 inout data_inout;
 4 reg data_out; 
 5 reg data_out_control; 
 6 //define data_out
 7 
 8 //define data_out_control
 9 
10 //assign data_inout 
11 assign data_inout=data_out_control?data_out:1'bz;  
12 
13 //assign data_in
14 wire data_in;
15 assign data_in=(!data_out_control)&data_inout;
16 
17 endmodule
復制代碼

image

4. PULLUP和PULLDOWN

    如果兩個INOUT都處於高阻態,那么接收到的信號到底是什么狀態呢?這實際上等效為兩個INPUT端口連接,也就等效為INPUT端口懸空。    

    這應該是取決於外圍的驅動,添加的上拉或者下拉電阻,一般而言,FPGA添加的是上拉電阻,也就意味着此時chipscope采集的數據是高電平.

    FPGA管腳內部可以配置弱上拉或下拉電阻來實現Z狀態下的控制。分別采用PULL UP和PULL DOWN約束實現,UCF、NCF語法如下

復制代碼
1      NET "pad_net_name" PULLUP;
2 
3     //Configures the I/O to use a Pullup constraint.
4 
5      DEFAULT PULLUP = TRUE;
6 
7     //Configures the Pullup constraint to be used globally.
復制代碼

    這一部分內容有待進一步驗證。

 

 

所謂上,就是指高電平;所謂下,是指低電平。上拉,就是通過一個電阻將信號接電源,一般用於時鍾信
號數據信號等。下拉,就是通過一個電阻將信號接地,一般用於保護信號。
    這是根據電路需要設計的,主要目的是為了防止干擾,增加電路的穩定性。

    假如沒有上拉,時鍾和數據信號容易出錯,畢竟,CPU的功率有限,帶很多BUS線的時候,提供高電平
信號有些吃力。而一旦這些信號被負載或者干擾拉下到某個電壓下,CPU無**確地接收信息和發出指令,只能不斷地復位重啟。
    假如沒有下拉,保護電路極易受到外界干擾,使CPU誤以為被保護對象出問題而采取保護動作,導致誤保護。

    上拉下拉,要根據電路要求來設置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM