本文將探討向 FPGA 設(shè)計(jì)添加復(fù)位輸入的一些后果。
本文將回顧使用重置輸入對(duì)給定功能進(jìn)行編碼的一些基本注意事項(xiàng)。設(shè)計(jì)者可能會(huì)忽視使用復(fù)位輸入的后果,但不正確的復(fù)位策略很容易造成嚴(yán)重處罰。復(fù)位功能會(huì)對(duì) FPGA 設(shè)計(jì)的速度、面積和功耗產(chǎn)生不利影響。
在繼續(xù)討論之前,有必要強(qiáng)調(diào)一個(gè)基本原則:FPGA 是可編程器件,但這并不意味著我們可以對(duì)FPGA 中的每個(gè)功能進(jìn)行編程。這一基本原理將在本文的其余部分進(jìn)一步闡明。
添加重置輸入之前請(qǐng)仔細(xì)閱讀詳細(xì)信息
圖 1 顯示了 Xilinx 7 系列 FPGA 中提供的 D 型觸發(fā)器 (DFF)。
圖 1. Xilinx 7 系列 FPGA 的 FDRE D 型觸發(fā)器。圖片由Xilinx提供。
這種特殊的 DFF 具有同步復(fù)位 (R) 和時(shí)鐘使能 (CE) 輸入,在 Xilinx 庫(kù)指南中稱為 FDRE (觸發(fā)器, D 型,同步復(fù)位,帶時(shí)鐘使能)。該元件的邏輯表如圖2所示。
圖 2. Xilinx 7 系列 FPGA FDRE D 型觸發(fā)器的邏輯表。圖片由Xilinx提供。
其中,R、CE、D 和 C 是 DFF 的輸入,分別代表復(fù)位、時(shí)鐘使能、數(shù)據(jù)輸入和時(shí)鐘。X 表示“無(wú)關(guān)”,↑ 表示時(shí)鐘上升沿。復(fù)位是同步的,因?yàn)樗荒茉跁r(shí)鐘的上升沿復(fù)位輸出。
此 DFF 是一個(gè)設(shè)計(jì)元素,可用作更大設(shè)計(jì)的構(gòu)建塊。我們可以用它來(lái)注冊(cè)所需的信號(hào)。而且,我們可以根據(jù)需要自由使用 FDRE 的復(fù)位和時(shí)鐘使能輸入。
我們可以選擇是否要使用構(gòu)建塊的可用功能。但是,我們無(wú)法將不受支持的功能添加到給定的構(gòu)建塊中。作為示例,請(qǐng)考慮上面討論的 FDRE 元素。該設(shè)計(jì)元素僅支持同步復(fù)位。如果我們同時(shí)需要異步和同步復(fù)位,我們將無(wú)法使用 FDRE 觸發(fā)器。在這種情況下,綜合工具將不得不使用其他資源,或者甚至可能求助于使用可用構(gòu)建塊的組合來(lái)實(shí)現(xiàn)所需的設(shè)計(jì)。正如您所看到的,F(xiàn)PGA 的低級(jí)功能是固定的,但一旦配置了這些設(shè)計(jì)元素,我們就可以按照我們想要的方式將它們連接在一起并構(gòu)建更大的設(shè)計(jì)。
作為 FPGA 粒度如何影響實(shí)現(xiàn)的更微妙示例,請(qǐng)注意,根據(jù)上述邏輯表,F(xiàn)DRE 的復(fù)位 (R) 輸入相對(duì)于時(shí)鐘使能 (CE) 輸入具有更高的優(yōu)先級(jí)(注意表的行表明當(dāng)R為1時(shí),CE不相關(guān))?,F(xiàn)在,假設(shè)我們的 HDL 代碼使用具有復(fù)位和時(shí)鐘使能輸入的 DFF。并且,HDL 描述給予 CE 輸入比 R 輸入更高的優(yōu)先級(jí)。同樣,在這種情況下,綜合工具將必須使用 FDRE 以外的資源,或者必須使用可用構(gòu)建塊的組合來(lái)實(shí)現(xiàn)所需的功能。有關(guān)此示例的更多詳細(xì)信息,請(qǐng)參閱Xilinx 白皮書。
上述討論表明,為了實(shí)現(xiàn)高效的設(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)更緊湊、更快。這些高效移位寄存器稱為 SRL,不支持復(fù)位輸入。這就是為什么,如果您的移位寄存器并不真正需要復(fù)位,您應(yīng)該避免它,以便綜合工具可以推斷出移位寄存器的基于 SRL 的高效實(shí)現(xiàn)。如果您的代碼描述了具有復(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 的情況類似,我們無(wú)法使用顯式重置來(lái)重置 Block RAM 的內(nèi)容。這就是為什么當(dāng)將設(shè)計(jì)映射到 Block RAM 時(shí),我們不應(yīng)該使用復(fù)位。您可以在這里找到更多詳細(xì)信息。
乘數(shù)
與不支持復(fù)位的 SRL 或 Block RAM 不同,某些模塊(例如乘法器)對(duì)復(fù)位類型有限制。這些模塊僅支持同步復(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è)置/復(fù)位輸入來(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)化的特殊情況。圖片由 FPGA 設(shè)計(jì)提供。
在圖3中,當(dāng)“信號(hào)A”為邏輯高電平時(shí),無(wú)論組合電路“Comb Logic”的輸出是什么,DFF輸出都會(huì)在時(shí)鐘邊沿變高。這就是為什么,如圖 4 所示,綜合軟件可以消除或門并將“信號(hào) A”應(yīng)用于 DFF 的同步設(shè)置輸入。現(xiàn)在,當(dāng)“信號(hào) A”為邏輯高電平時(shí),DFF 將在時(shí)鐘沿設(shè)置為高電平。否則,輸出將由組合電路“Comb Logic”決定。新設(shè)計(jì)提供了所需的功能,但現(xiàn)在取消了“或”門,并且設(shè)計(jì)的速度和面積都得到了提高。
圖4. 圖 3 中電路的優(yōu)化形式。圖片由Advanced FPGA Design提供。
有趣的是,有時(shí),綜合工具可能會(huì)決定執(zhí)行與上述優(yōu)化相反的操作,并實(shí)現(xiàn)圖 4 的原理圖,如圖 3 所示!這是因?yàn)椋?7 系列中,片中的所有 DFF 共享相同的 CK、SR(設(shè)置/重置)和 CE 信號(hào)。這意味著 SR 輸入連接到“信號(hào) A”的 DFF 不能與 SR 輸入連接到“信號(hào) A”以外的信號(hào)的 DFF 位于同一片中。如果控制信號(hào)(即CK、SR和CE)不相同,則DFF必須放置在不同的片中。這可能導(dǎo)致使用許多低扇出復(fù)位信號(hào)的設(shè)計(jì)中切片利用率低下。事實(shí)上,每個(gè)低扇出復(fù)位信號(hào)將使用切片的幾個(gè)DFF,并且該切片的剩余DFF將被浪費(fèi)。在這種情況下,綜合工具可以實(shí)現(xiàn)圖 4 的原理圖,如圖 3 所示。此過(guò)程將導(dǎo)致 DFF 不使用其復(fù)位輸入。因此,這些 DFF 可以共享相同的控制信號(hào),并且可以放置在同一片中。因此,設(shè)備利用率將會(huì)提高。
在圖 3 和圖 4 中,我們看到后跟 DFF 的 OR 門可以替換為使用其設(shè)置輸入的 DFF。同樣,我們可以將 DFF 后面的 AND 門替換為使用其復(fù)位輸入的 DFF(參見(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)換,我們獲得了具有相同控制信號(hào)集的三個(gè) DFF。因此,我們可以將三個(gè) DFF 放在同一個(gè)切片中。請(qǐng)注意,上述轉(zhuǎn)換對(duì)于異步置位/復(fù)位信號(hào)無(wú)效。這就是為什么我們通常建議使用同步設(shè)置/重置信號(hào)而不是異步信號(hào)。
評(píng)論
查看更多