xilinx FPGA IOB約束使用以及注意事項(xiàng)
一、什么是IOB約束
在xilinx FPGA中,IOB是位于IO附近的寄存器,是FPGA上距離IO最近的寄存器,同時(shí)位置固定。當(dāng)你輸入或者輸出采用了IOB約束,那么就可以保證從IO到達(dá)寄存器或者從寄存器到達(dá)IO之間的走線延遲最短,同時(shí)由于IO的位置是固定的,即存在于IO附近,所以每一次編譯都不會(huì)造成輸入或者輸出的時(shí)序發(fā)生改變。
二、為什么要使用IOB約束
考慮一個(gè)場(chǎng)景,當(dāng)你用FPGA寫了一個(gè)spi模塊,將時(shí)鐘、片選和數(shù)據(jù)線綁定到FPGA的IO管腳,如果沒有加IOB約束的話,綜合工具在布局布線的時(shí)候直接將FPGA內(nèi)部寄存器輸出連到IO上,但是這樣存在一定的問題,每次修改邏輯重新編譯的時(shí)候,輸出寄存器的位置有可能發(fā)生改變,那么從寄存器輸出到IO之間的布線長度就會(huì)發(fā)生變化,造成寄存器輸出到達(dá)IO之間的走線延遲發(fā)生改變,每一次編譯都會(huì)使得spi的輸出時(shí)序不確定。
為了解決這個(gè)問題,需要加入IOB約束,將模塊輸出端口的最后一級(jí)寄存器放在IOB上,這樣最后一級(jí)輸出的寄存器位置就固定下來了,每次編譯都不會(huì)造成輸出時(shí)序發(fā)生改變。
IOB約束使用方法如下:
1、在約束文件中加入下面約束:
set_property IOB true [get_ports {port_name}]
set_property IOB true [get_cells {cell_name}]
2、直接在代碼中加約束,在寄存器前加入下面約束,需要注意的是,對(duì)于輸入IOB約束,這里的寄存器是第一級(jí)寄存器,對(duì)于輸出IOB約束,這里的寄存器是最后一級(jí)寄存器,且寄存器輸出不能再作為組合邏輯輸入。
(* IOB = "true" *) reg O_data;
三、IOB約束使用注意事項(xiàng)
對(duì)于輸出IOB約束,在使用的時(shí)候有一些限制:
1、約束的端口必需是寄存器輸出,這點(diǎn)比較好理解,因?yàn)镮OB約束本質(zhì)上是約束最后一級(jí)寄存器的位置,將最后一級(jí)寄存器的位置放在IOB上,而不是增加一級(jí)寄存器。所以你必須要是寄存器輸出,才能進(jìn)行IOB約束,這是前提。
2、最后一級(jí)寄存器的輸出不能再作為輸入反饋到內(nèi)部邏輯中,必需是開路的。舉個(gè)例子,比如如下代碼:
always @ (posedge clk)
begin
if(cnt == 2'b1 || cnt == 2'b3)
spi_clk <= ~spi_clk;
else
spi_clk <= spi_clk;
end
上面描述了一個(gè)分頻器,當(dāng)計(jì)數(shù)器cnt為1和3的時(shí)候spi_clk翻轉(zhuǎn),那這個(gè)時(shí)候spi_clk就是一個(gè)輸出又作為輸入反饋到內(nèi)部的寄存器,得到的綜合結(jié)果如下圖:
由于需要將寄存器的輸出作為輸入其他邏輯的輸入,這種情況下是無法將spi_clk寄存器放到IOB上的,因?yàn)镮OB的輸出直接對(duì)接IO,無法再作為輸入反饋到內(nèi)部邏輯。
所以可以將spi_clk輸出再加一級(jí)寄存器,將加入的寄存器放到IOB上,相應(yīng)的需要對(duì)時(shí)序做出一定的調(diào)整,和sip_clk有時(shí)序關(guān)系的都需要打一拍以保持同步。
-
FPGA
+關(guān)注
關(guān)注
1644文章
21989瀏覽量
615239 -
Xilinx
+關(guān)注
關(guān)注
73文章
2184瀏覽量
124574
原文標(biāo)題:xilinx FPGA IOB約束使用以及注意事項(xiàng)
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA的高速接口應(yīng)用注意事項(xiàng)
FPGA學(xué)習(xí)及設(shè)計(jì)中需要注意事項(xiàng)有哪些?
FPGA仿真程序的設(shè)計(jì)方法,有什么注意事項(xiàng)?
FPGA在邏輯設(shè)計(jì)中有哪些注意事項(xiàng)?
FPGA設(shè)計(jì)的注意事項(xiàng)
python字典類型的使用和注意事項(xiàng)

xilinx FPGA的IOB使用教程說明

FPGA管腳調(diào)整的注意事項(xiàng)
FPGA的有源電容器放電電路注意事項(xiàng)

Xilinx FPGA的約束設(shè)置基礎(chǔ)

先進(jìn)FPGA的電源設(shè)計(jì)注意事項(xiàng)(電源設(shè)計(jì)器121)

評(píng)論