FPGA中的“門”



邏輯門

在ASIC的世界里,衡量器件容量的常用標准是等效門。這是因為不同的廠商在單元庫里提供了不同的功能模塊,而每個功能模塊的實現都要求不同數量的晶體管。這樣在兩個器件之間比較容量和復雜度就很困難。

解決的辦法是給 每個功能賦予一個等效門數值,就比如“A功能模塊等價於5個等效門,B功能模塊等價於3個等效門···”。下一步就是統計每個功能模塊,把他們轉換成相應的等效門值,把這些值相加,然后就可以自豪的公布:“我的ASIC包括一千萬的等效門,這要比你的ASIC大多了!”

但是,事情沒那么簡單,不同的廠商對等效門實際結構的定義是不同的。通常情況下,一個2輸入的NAND功能 表示一個等效門。也有一些廠商定義一個等效門等價於特定數目的晶體管。還有的廠商定義一個ECL等效門為“實現一個單比特全加器所要求最小邏輯的1/11”(這到底是誰想出來的?)。通常,最好的辦法是,在投資之前先確定大家在談論同樣的事。

回到 FPGA來 ,FPGA廠商遇到一個問題,他們試圖建立一個基礎用於比較他們的器件和ASIC。例如,如果某人有一個現成的包含500000個等效門的ASIC設計,他想把這個設計變為用FPGA實現,他應該怎么樣描述這個設計需要的FPGA呢?事實上每個4輸入LUT都可以表示從1到20多個2輸入基本邏輯門所能表示的任何功能,所以這樣的比較相當微秒。

系統門

為了解決這個問題,FPGA廠商在20世紀90年代早期開始討論系統門。有人說這是個代價高昂的想法,在ASIC設計中才會涉及這種專門術語。而另外一些人則說這純粹是一個市場策略,沒有任何人帶來好處。

遺憾的是,似乎沒有清晰的定義來解釋什么是系統門。在FPGA實質上只包含LUT或寄存器形式的通用可編程邏輯資源時,這很令人尷尬。在那時甚至很難界定一個包含x個等效門的專門ASIC設計是否能夠用一個包含y個系統門的FPGA來代替。這是因為有的ASIC設計者可能在組合邏輯方面具有優勢,而另外一些則可能更偏重使用寄存器。這兩種情況得到的結果可能不是一個在FPGA上的最優映射。

當FPGA開始包含嵌入式 RAM塊時,問題變得尤為嚴重,因為有些功能使用RAM實現要比通用邏輯實現效率高。而且,事實上LUT可以當做分布式RAM來使用,例如有的廠商系統門計算值現在包括一個定語,“假設20%~30%的LUT是作為RAM來使用的”。當然,在開始認為FPGA包含嵌入式處理器核和類似功能時,這個問題更加嚴重了。於是,有的廠商現在說:“系統門數值沒有計入這些元件”。

到底有沒有簡單的規則來把系統門轉換成等效門呢?其實有很多。有的人認為如果你感覺樂觀,你應當把系統門數值除以3(比如300萬FPGA系統門應該等於100萬ASIC等效門)。或者如果你感到更多的是悲觀的那一面,你可以把系統門除以5(這樣300萬系統門將會等於60萬等效門)。

然而也有人認為,只有在你假定系統門數值包括了所有能使用通用可編程邏輯和塊RAM實現的功能時,以上規律才是正確的。這些人會接着說,如果你把RAM從等式中去掉,你就必須把系統門數值除以10(這時,300萬系統門就只能等於30萬等效門),但是這時你仍然可以使用塊RAM。

最后,這個問題陷入這樣一個泥潭,以至於連FPGA廠商都不願意再談論系統門。對於新出現在人們視野中的FPGA,人們很愜意的想象着等效門,而且方便用LUT、SLICE等考慮設計,然而,大量的FPGA設計者更習慣與用FPGA的名詞。由於這個原因,有的人仍然保留了傳統的習慣,我更願意看到的是,我更願意看到的是,使用以下簡單的數目來規定和比較FPGA:

邏輯單元、邏輯元素或其他;

嵌入式塊RAM數目;

嵌入式乘法器的數目;

嵌入式加法器的數目;

嵌入式MAC的數目;

其他。

為什么會這么困難?對一個真實世界里的ASIC設計實例進行全面的描述,給出它們的等效門,包括它們的寄存器/鎖存器、原語門和其他更復雜的功能等細節,是很有用處的。這些設計實例在FPGA中實現所要求LUT和寄存器/鎖存器的數量,還有嵌入式RAM和其他內嵌功能的數目就與此有關。

盡管現在還不理想,因為在FPGA和ASIC中人們的設計畢竟是不一樣的,但是總會有一個開始。


  版權所有權歸卿萃科技 杭州FPGA事業部,轉載請注明出處  

  作者:杭州卿萃科技ALIFPGA 

  原文地址:杭州卿萃科技FPGA極客空間 微信公眾號


    

   掃描二維碼關注杭州卿萃科技FPGA極客空間 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM