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