本文將探討在FPGA設(shè)計(jì)中添加復(fù)位輸入的一些后果。
本文將回顧使用復(fù)位輸入對給定功能進(jìn)行編碼的一些基本注意事項(xiàng)。設(shè)計(jì)人員可能會忽略使用復(fù)位輸入的后果,但不正確的復(fù)位策略很容易造成重罰。復(fù)位功能會對 FPGA 設(shè)計(jì)的速度、面積和功耗產(chǎn)生不利影響。
在繼續(xù)我們的討論之前,有必要強(qiáng)調(diào)一個基本原則:FPGA 是可編程設(shè)備,但這并不意味著我們可以對FPGA 中的每個功能進(jìn)行編程。這一基本原則將在本文的其余部分進(jìn)一步闡明。
在添加復(fù)位輸入之前仔細(xì)閱讀詳細(xì)信息
圖 1 顯示了Xilinx7 系列 FPGA 中可用的 D 型觸發(fā)器(DFF)。
圖 1. Xilinx 7 系列 FPGA 的 FDRE D 型觸發(fā)器。圖片由賽靈思提供。
這種具有同步復(fù)位 (R) 和時鐘啟用 (CE) 輸入的特定 DFF在 Xilinx 庫指南中稱為 FDRE ( F觸發(fā)器,D型,同步復(fù)位,時鐘啟用)。該元素的邏輯表如圖 2 所示。
圖 2. Xilinx 7 系列 FPGA 的 FDRE D 型觸發(fā)器的邏輯表。圖片由賽靈思提供。
其中,R、CE、D、C為DFF的輸入端,分別代表復(fù)位、時鐘使能、數(shù)據(jù)輸入和時鐘。X代表“don't-care”,↑代表時鐘上升沿。復(fù)位是同步的,因?yàn)樗荒茉跁r鐘的上升沿復(fù)位輸出。
這個 DFF 是一個設(shè)計(jì)元素,可以用作更大設(shè)計(jì)的構(gòu)建塊。我們可以用它來注冊一個想要的信號。而且,我們可以根據(jù)需要自由使用 FDRE 的復(fù)位和時鐘使能輸入。
我們可以選擇是否要使用構(gòu)建塊的可用功能。但是,我們不能向給定的構(gòu)建塊添加不受支持的功能。例如,考慮上面討論的 FDRE 元素。此設(shè)計(jì)元素僅支持同步復(fù)位。如果我們同時需要異步和同步復(fù)位,我們將無法使用 FDRE 觸發(fā)器。在這種情況下,綜合工具將不得不使用其他資源,或者它甚至可能求助于使用可用構(gòu)建塊的組合來實(shí)現(xiàn)所需的設(shè)計(jì)。如您所見,F(xiàn)PGA 的低級特性是固定的,但是一旦配置了這些設(shè)計(jì)元素,我們就可以按照我們想要的方式將它們連接在一起并構(gòu)建更大的設(shè)計(jì)。
作為 FPGA 粒度如何影響實(shí)現(xiàn)的一個更微妙的例子,請注意,根據(jù)上面的邏輯表,F(xiàn)DRE 的復(fù)位 (R) 輸入相對于時鐘使能 (CE) 輸入具有更高的優(yōu)先級(注意表的行表示當(dāng) R 為 1 時,CE 無關(guān))?,F(xiàn)在,假設(shè)我們的 HDL 代碼使用具有復(fù)位和時鐘使能輸入的 DFF。而且,HDL 描述賦予 CE 輸入更高的優(yōu)先級,而不是 R 輸入。同樣在這種情況下,綜合工具將不得不使用 FDRE 以外的資源,或者它必須使用可用構(gòu)建塊的組合來實(shí)現(xiàn)所需的功能。有關(guān)此示例的更多詳細(xì)信息,請參閱Xilinx 白皮書。
上面的討論表明,要獲得高效的設(shè)計(jì),我們必須仔細(xì)研究 FPGA 設(shè)計(jì)元素的細(xì)節(jié),就像我們在使用分立元件之前研究其數(shù)據(jù)表一樣。在本文的其余部分,您將看到此原則的一些其他示例。
移位寄存器查找表 (SRL16)
Xilinx 綜合工具可以實(shí)現(xiàn)基于 LUT 的移位寄存器,比簡單地級聯(lián)一些 DFF 得到的結(jié)構(gòu)更緊湊、更快。這些稱為 SRL 的高效移位寄存器不支持復(fù)位輸入。這就是為什么,如果您的移位寄存器真的不需要復(fù)位,您應(yīng)該避免它,以便允許綜合工具為移位寄存器推斷一個有效的基于 SRL 的實(shí)現(xiàn)。如果您的代碼描述了一個具有復(fù)位功能的移位寄存器,XST將使用 DFF 實(shí)現(xiàn)設(shè)計(jì),或者它將使用一些圍繞 SRL 的額外邏輯來實(shí)現(xiàn)復(fù)位功能。SRL 可以從簡單的串聯(lián)運(yùn)算符中推斷出來(請參閱XST 用戶指南第 154 頁)。
塊 RAM
與 SRL 的情況類似,我們無法使用顯式重置來重置塊 RAM 的內(nèi)容。這就是為什么在將設(shè)計(jì)映射到塊 RAM 時,我們不應(yīng)該使用復(fù)位。您可以在此處找到更多詳細(xì)信息。
乘數(shù)
與不支持復(fù)位的 SRL 或塊 RAM 不同,某些模塊(例如乘法器)對復(fù)位類型有限制。這些模塊僅支持同步復(fù)位。對于給定的乘法器,用同步策略替換異步復(fù)位可以將操作頻率提高兩倍或更多。
總而言之,不正確的復(fù)位策略會阻止綜合工具有效利用 FPGA 中可用的優(yōu)化模塊。這會對設(shè)計(jì)的面積、功率和速度產(chǎn)生不利影響?,F(xiàn)在,讓我們看一些示例,其中綜合軟件使用 DFF 的復(fù)位端口來執(zhí)行一些優(yōu)化。
使用設(shè)置/重置輸入來優(yōu)化實(shí)施
通常建議盡可能避免使用設(shè)置和重置輸入。這有助于綜合工具應(yīng)用優(yōu)化,其中檢查 DFF 的設(shè)置/重置輸入以簡化實(shí)現(xiàn)。為了進(jìn)一步闡明,假設(shè)我們要實(shí)現(xiàn)圖 3 中所示的原理圖。
圖 3.可以通過綜合軟件優(yōu)化的特定情況。圖片由Advanced FPGA Design提供。
在圖 3 中,當(dāng)“信號 A”為邏輯高電平時,無論組合電路“梳狀邏輯”的輸出是什么,DFF 輸出都將在時鐘邊沿變?yōu)楦唠娖健_@就是為什么如圖 4 所示,綜合軟件可以消除或門并將“信號 A”應(yīng)用于 DFF 的同步設(shè)置輸入?,F(xiàn)在,當(dāng)“信號 A”為邏輯高電平時,DFF 將在時鐘邊沿設(shè)置為高電平。否則,輸出將由組合電路“Comb Logic”決定。新設(shè)計(jì)提供了所需的功能,但現(xiàn)在取消了或門,設(shè)計(jì)的速度和面積都得到了改善。
圖 4。圖 3 中電路的優(yōu)化形式。圖片由Advanced FPGA Design提供。
有趣的是,有時,綜合工具可能決定對上述優(yōu)化進(jìn)行反向操作,并實(shí)現(xiàn)圖 4 的原理圖,如圖 3 所示!這是因?yàn)樵?7 系列中,slice 中的所有 DFF 共享相同的 CK、SR(置位/復(fù)位)和 CE 信號。這意味著其 SR 輸入連接到“信號 A”的 DFF 不能位于具有其 SR 輸入連接到除“信號 A”以外的信號的 DFF 的同一切片中。如果控制信號,即 CK、SR 和 CE 不相同,則 DFF 必須放置在不同的片中。在使用許多低扇出復(fù)位信號的設(shè)計(jì)中,這會導(dǎo)致切片利用率低下。事實(shí)上,每個低扇出復(fù)位信號都會使用一個 slice 的幾個 DFF,而該 slice 的剩余 DFF 將被浪費(fèi)。在這種情況下,綜合工具可以實(shí)現(xiàn)圖 4 的原理圖,如圖 3 所示。此過程將導(dǎo)致 DFF 不使用其復(fù)位輸入。因此,這些 DFF 可以共享相同的控制信號,并且可以放置在同一片中。因此,設(shè)備利用率將得到提高。
在圖 3 和圖 4 中,我們看到后跟 DFF 的或門可以替換為使用其設(shè)置輸入的 DFF。同樣,我們可以用使用其復(fù)位輸入的 DFF 替換后跟 DFF 的與門(參見下面的圖 5)。
圖 5.圖片由Xilinx提供。
在圖 5 中,SRVAL 屬性指定斷言 SR 輸入后 DFF 的輸出值。因此,對于左側(cè)中間的 DFF,SR 輸入被指定為設(shè)置端口。但是,對于左側(cè)下方的DFF,SR輸入實(shí)際上是復(fù)位輸入。上層 DFF 不使用復(fù)位輸入。
左邊的三個DFF不能放在同一個slice中,因?yàn)樗鼈兊目刂菩盘柌煌?。然而,通過上面討論的轉(zhuǎn)換,我們獲得了三個具有相同控制信號集的 DFF。因此,我們可以將三個 DFF 放在同一個切片中。請注意,上述轉(zhuǎn)換對異步置位/復(fù)位信號無效。這就是為什么我們通常建議使用同步設(shè)置/重置信號而不是異步信號。
歡迎加入至芯科技FPGA微信學(xué)習(xí)交流群,這里有一群優(yōu)秀的FPGA工程師、學(xué)生、老師、這里FPGA技術(shù)交流學(xué)習(xí)氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
點(diǎn)個在看你最好看
原文標(biāo)題:為FPGA設(shè)計(jì)添加復(fù)位功能的注意事項(xiàng)
文章出處:【微信公眾號:FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
FPGA
+關(guān)注
關(guān)注
1620文章
21510瀏覽量
598916
原文標(biāo)題:為FPGA設(shè)計(jì)添加復(fù)位功能的注意事項(xiàng)
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論