首頁 > 新能源汽車

向 FPGA 設計添加復位功能的注意事項

來源:新能源汽車網(wǎng)
時間:2023-07-05 16:02:50
熱度:

向 FPGA 設計添加復位功能的注意事項本文將探討向 FPGA 設計添加復位輸入的一些后果。本文將回顧使用重置輸入對給定功能進行編碼的一些基本注意事項。設計者可能會忽視使用復位輸入

本文將探討向 FPGA 設計添加復位輸入的一些后果。

本文將回顧使用重置輸入對給定功能進行編碼的一些基本注意事項。設計者可能會忽視使用復位輸入的后果,但不正確的復位策略很容易造成嚴重處罰。復位功能會對 FPGA 設計的速度、面積和功耗產生不利影響。

在繼續(xù)討論之前,有必要強調一個基本原則:FPGA 是可編程器件,但這并不意味著我們可以對FPGA 中的每個功能進行編程。這一基本原理將在本文的其余部分進一步闡明。

添加重置輸入之前請仔細閱讀詳細信息

圖 1 顯示了 Xilinx 7 系列 FPGA 中提供的 D 型觸發(fā)器 (DFF)。

 

圖 1. Xilinx 7 系列 FPGA 的 FDRE D 型觸發(fā)器。圖片由Xilinx提供。

 

這種特殊的 DFF 具有同步復位 (R) 和時鐘使能 (CE) 輸入,在 Xilinx 庫指南中稱為 FDRE (觸發(fā)器, D 型,同步復位,帶時鐘使能)。該元件的邏輯表如圖2所示。

 

圖 2. Xilinx 7 系列 FPGA FDRE D 型觸發(fā)器的邏輯表。圖片由Xilinx提供。

其中,R、CE、D 和 C 是 DFF 的輸入,分別代表復位、時鐘使能、數(shù)據(jù)輸入和時鐘。X 表示“無關”,↑ 表示時鐘上升沿。復位是同步的,因為它只能在時鐘的上升沿復位輸出。

此 DFF 是一個設計元素,可用作更大設計的構建塊。我們可以用它來注冊所需的信號。而且,我們可以根據(jù)需要自由使用 FDRE 的復位和時鐘使能輸入。

我們可以選擇是否要使用構建塊的可用功能。但是,我們無法將不受支持的功能添加到給定的構建塊中。作為示例,請考慮上面討論的 FDRE 元素。該設計元素僅支持同步復位。如果我們同時需要異步和同步復位,我們將無法使用 FDRE 觸發(fā)器。在這種情況下,綜合工具將不得不使用其他資源,或者甚至可能求助于使用可用構建塊的組合來實現(xiàn)所需的設計。正如您所看到的,F(xiàn)PGA 的低級功能是固定的,但一旦配置了這些設計元素,我們就可以按照我們想要的方式將它們連接在一起并構建更大的設計。

作為 FPGA 粒度如何影響實現(xiàn)的更微妙示例,請注意,根據(jù)上述邏輯表,F(xiàn)DRE 的復位 (R) 輸入相對于時鐘使能 (CE) 輸入具有更高的優(yōu)先級(注意表的行表明當R為1時,CE不相關)。現(xiàn)在,假設我們的 HDL 代碼使用具有復位和時鐘使能輸入的 DFF。并且,HDL 描述給予 CE 輸入比 R 輸入更高的優(yōu)先級。同樣,在這種情況下,綜合工具將必須使用 FDRE 以外的資源,或者必須使用可用構建塊的組合來實現(xiàn)所需的功能。有關此示例的更多詳細信息,請參閱Xilinx 白皮書。

上述討論表明,為了實現(xiàn)高效的設計,我們必須仔細研究 FPGA 設計元素的細節(jié),就像我們在使用分立元件之前研究其數(shù)據(jù)表一樣。在本文的其余部分中,您將看到該原則的一些其他示例。

移位寄存器查找表 (SRL16)

Xilinx 綜合工具可以實現(xiàn)基于 LUT 的移位寄存器,其比簡單級聯(lián)一些 DFF 獲得的結構更緊湊、更快。這些高效移位寄存器稱為 SRL,不支持復位輸入。這就是為什么,如果您的移位寄存器并不真正需要復位,您應該避免它,以便綜合工具可以推斷出移位寄存器的基于 SRL 的高效實現(xiàn)。如果您的代碼描述了具有復位功能的移位寄存器,XST 將使用 DFF 實現(xiàn)設計,或者將使用SRL 周圍的一些附加邏輯來實現(xiàn)復位功能。SRL 可以從簡單的串聯(lián)運算符中推斷出來(請參閱XST 用戶指南的第 154 頁)。

塊 RAM

與 SRL 的情況類似,我們無法使用顯式重置來重置 Block RAM 的內容。這就是為什么當將設計映射到 Block RAM 時,我們不應該使用復位。您可以在這里找到更多詳細信息。

乘數(shù)

與不支持復位的 SRL 或 Block RAM 不同,某些模塊(例如乘法器)對復位類型有限制。這些模塊僅支持同步復位。對于給定的乘法器,用同步策略替換異步復位可以將操作頻率提高兩倍或更多。

總而言之,不正確的復位策略會阻止綜合工具有效利用 FPGA 中可用的優(yōu)化模塊。這會對設計的面積、功耗和速度產生不利影響。現(xiàn)在,讓我們看一些示例,其中綜合軟件使用 DFF 的復位端口來執(zhí)行一些優(yōu)化。

使用設置/復位輸入來優(yōu)化實施

通常建議盡可能避免使用設置和重置輸入。這有助于綜合工具應用優(yōu)化,檢查 DFF 的設置/重置輸入以簡化實現(xiàn)。為了進一步闡明,假設我們要實現(xiàn)圖 3 所示的原理圖。

 

圖 3.可以通過綜合軟件優(yōu)化的特殊情況。圖片由 FPGA 設計提供。

 

在圖3中,當“信號A”為邏輯高電平時,無論組合電路“Comb Logic”的輸出是什么,DFF輸出都會在時鐘邊沿變高。這就是為什么,如圖 4 所示,綜合軟件可以消除或門并將“信號 A”應用于 DFF 的同步設置輸入。現(xiàn)在,當“信號 A”為邏輯高電平時,DFF 將在時鐘沿設置為高電平。否則,輸出將由組合電路“Comb Logic”決定。新設計提供了所需的功能,但現(xiàn)在取消了“或”門,并且設計的速度和面積都得到了提高。

 

圖4. 圖 3 中電路的優(yōu)化形式。圖片由Advanced FPGA Design提供。

有趣的是,有時,綜合工具可能會決定執(zhí)行與上述優(yōu)化相反的操作,并實現(xiàn)圖 4 的原理圖,如圖 3 所示!這是因為,在 7 系列中,片中的所有 DFF 共享相同的 CK、SR(設置/重置)和 CE 信號。這意味著 SR 輸入連接到“信號 A”的 DFF 不能與 SR 輸入連接到“信號 A”以外的信號的 DFF 位于同一片中。如果控制信號(即CK、SR和CE)不相同,則DFF必須放置在不同的片中。這可能導致使用許多低扇出復位信號的設計中切片利用率低下。事實上,每個低扇出復位信號將使用切片的幾個DFF,并且該切片的剩余DFF將被浪費。在這種情況下,綜合工具可以實現(xiàn)圖 4 的原理圖,如圖 3 所示。此過程將導致 DFF 不使用其復位輸入。因此,這些 DFF 可以共享相同的控制信號,并且可以放置在同一片中。因此,設備利用率將會提高。

在圖 3 和圖 4 中,我們看到后跟 DFF 的 OR 門可以替換為使用其設置輸入的 DFF。同樣,我們可以將 DFF 后面的 AND 門替換為使用其復位輸入的 DFF(參見下圖 5)。

 

圖 5.圖片由Xilinx提供。

 

在圖 5 中,SRVAL 屬性指定斷言 SR 輸入后 DFF 的輸出值。因此,對于左側中間的DFF,SR輸入被指定為設置端口。然而,對于左側下方的 DFF,SR 輸入實際上是復位輸入。上部 DFF 不使用復位輸入。

左邊的三個DFF不能放在同一個slice中,因為它們有不同的控制信號。然而,通過上面討論的轉換,我們獲得了具有相同控制信號集的三個 DFF。因此,我們可以將三個 DFF 放在同一個切片中。請注意,上述轉換對于異步置位/復位信號無效。這就是為什么我們通常建議使用同步設置/重置信號而不是異步信號。