管腳是fpga重要的資源之一,fpga的管腳分別包括,電源管腳,普通i/o,配置管腳,時鐘專用輸入管腳gclk
等。(1)電源管腳:
通常來說:fpga
內部的電壓包括核心電壓和i/o電壓。
1.核心電壓:即fpga內部邏輯的供電。通常會較i/o電壓較低,隨著fpga的工藝的進度,fpga的核心電壓逐漸下降,這也是降低功耗的大勢所趨。
2.i/o電壓 (bank的參考電壓)。每個bank都會有獨立的i/o電壓輸入。也就是每個bank的參考電壓設定後,本bank上所有i/o的電平都與參考電平等同。
是否可以通過約束來設定io管腳的輸出電平那,答案是否定的,如下例所示
set_instance_assignment -name io_standard 3.0-v lvcmos -to pina
set_instance_assignment -name io_standard 3.3-v lvcmos -to pinb
不論設定為多大的電平,io的輸出與bank的參考電壓保持一致,也就是說,pina和pinb的電平與其bank的電平保持一致,而不是所約束的那樣一定會是3v或3.3v的電平。那是否意味著這種約束沒有作用?
如果約束同一bank上的管腳為不同電平,如pina和pinb在同一bank,但是電平不同,則eda工具會報錯。可以起到錯誤檢查的作用。(同一bank上電平要一致,但是型別可以是多種,例如cmos,ttl等)。
對於複雜的fpga內部,一般來說pll也會都單獨的供電,並且其內部包括數字電源和模擬電源。
serdes一般也需要獨立供電。一般支援高速serdes的fpga器件都都有獨立的供電管腳,一般也都有獨立的時鐘管腳(一般為差分時鐘)。
(2) 配置管腳:
fpga的配置管腳每個fpga都需要,為了支援多種配置方式,例如jtag,從串、從並、主串、主並等。值得注意的是,對於其配置管腳的控制訊號來說,是專用管腳,不能用做普通i/o,而其資料訊號,可以用作普通i/o。在管腳資源較為緊張時,可以復用配置訊號的資料訊號作為普通i/o來用。
(3) 普通i/o:
fpga的i/o是fpga管腳上較為豐富的資源。也是做管腳約束時最常用的資源。對於例化ip來說(例如serdes和ddr2/3等),需要使用eda工具給出了i/o約束。如果修改則需要預先編譯進行評估。一般來說,ddr的介面訊號最好能在乙個bank上約束,如果不能則其控制訊號要約束到同一bank上,否則導致eda工具布局佈線報錯。
對於fpga的普通i/o,可以設定包括管腳電平型別(lvttl,lvcoms,sstl,hstl等等),還包括端接大小,驅動電流,擺率等引數。
對於fpga引腳來說,通過阻抗匹配的設定(altera的oct,xilinx的dci的設定)。可以有效的減少板上電阻的數目,降低bom成本。端接的設定可以阻止阻抗不連續導致訊號反射,保證訊號完整性。
對於普通訊號來說,一般不需要每個都設定阻抗匹配,,只有板級佈線長度的電訊號傳輸時間超過高速訊號的時鐘週期的0.1倍時,才需要設定端接。簡單來說也就是只有高速訊號,且訊號輸出和輸入距離較遠時,才需要使用端接,一般是fpga連線外部ddr等高速器件時。對於使用外部校準的rup和rdn電阻來說,其rup和rdn電阻是整個電路可靠性的關鍵點。例如:在以一批fpga板卡中,測試發現只有某一塊介面不通,fpga工程師除錯時發現,只要把介面i/o設定為cmos電平,而不使用dci的端接,則所有板卡全部能夠通訊正常,後來發現該板卡rup上拉電阻失效,從而導致介面電路沒有上拉而介面出錯。也就是說,i/o的電平設定,以滿足設計需要為主,而不用錦上添花。增加的額外電路就會導致額外的失效點。
(4)時鐘管腳
fpga內部的時鐘,都需要通過專用時鐘管腳連線內部pll或者dcm等專用時鐘處理單元,從而接入內部高速時鐘網路。在早期的fpga中內部時鐘資源有限,專用處理單元也有限,需要嚴格的規劃pll等時鐘處理單元和全域性時鐘資源,隨著fpga技術的發展,這個功能逐漸弱化,但是早期規劃也是必須的。
值得注意的是,對於一些外部同步訊號的輸入,其時鐘沒有連線到專用時鐘管腳上,只用於取樣當前的同步訊號,因此不用接入全域性時鐘網路,設計上也是允許的,需要約束其管腳不使用全域性時鐘資源。否者,eda工具會報錯,提示其作為時鐘輸入,而沒有接在專用時鐘管腳上。
正如本文開始所說,管腳是fpga的重要資源,fpga工程師熟悉管腳特性和電路設計的基礎知識,對於fpga系統設計和板級電路的除錯都是有益的。
ps:問題回覆
quartus能否設定i/o訊號的上拉和下拉電阻的大小?
1)對於設定的輸出訊號來說,其是有電平格式的如 set_instance_assignment -name io_standard lvcoms -to pin 這種情況下,其電平格式就是lvcoms。沒有上拉或者下拉的設定(也就是說coms電平不包括上下拉電阻的設定)。但是可以設定其輸出電流,如 set_instance_assignment -name current_strength_new 12ma -to pin 板級電路上訊號不到位,很多情況下,是驅動能力的問題。 也可以設定其輸出端接電阻的大小(不是上下拉)。 set_instance_assignment -name output_termination "series 50 ohm with calibration" -to pin 以及其他屬性等等 (2)對於未約束的訊號時可以設定其上下拉狀態的。 如: set_global_assignment -name reserve_all_unused_pins "as input tri-stated with weak pull-up" 其他幾種狀態分別是 as inputs that are tristated, as outputs that drive ground, as outputs that drive an unspecified signal, asinput tri-stated with bus-hold
FPGA研發之道 14 寫在coding之前的鐵律
寫在coding之前的那些鐵律 1 注釋 好的 首先必須要有注釋,注釋至少包括檔案注釋,埠注釋,功能語句注釋。檔案注釋 檔案注釋就是乙個說明文 這通常在檔案的頭部注釋,用於描述 為那個工程中,由誰寫的,日期是多少,功能描述,有哪些子功能,及版本修改的標示。這樣不論是誰,一目了然。即使不寫文件,也能知...
FPGA之特殊管腳
1.i o,asdo 在as 模式下是專用輸出腳,在ps 和jtag 模式下可以當i o 腳來用。在as 模式下,這個腳是cii 向序列配置晶元傳送控制訊號的腳。也是用來從配置晶元中讀配置資料的腳。在as 模式下,asdo 有乙個內部的上拉電阻,一直有效,配置完成後,該腳就變成三態輸入腳。asdo ...
FPGA硬體管腳設定介紹
1 1.i o,asdo 在as 模式下是專用輸出腳,在ps 和jtag 模式下可以當i o 腳來用。在as 模式下,這個腳是cii 向序列配置晶元傳送控制訊號的腳。也是用來從配置晶元中讀配置資料的腳。在as 模式下,asdo 有乙個內部的上拉電阻,一直有效,配置完成後,該腳就變成三態輸入腳。asd...