具有低功耗意識的FPGA設計方法
工業(yè)、汽車(chē)電子、軍事, 甚至商業(yè)類(lèi)客戶(hù)都會(huì )對系統的溫度和運行模式的概況有規定。這些概況指引我們在設計時(shí)要注意哪些地方以及精力該如何分配。IGLOO器件的低功耗工藝和硅片設計由Actel來(lái)保證,用戶(hù)所要關(guān)注的是:關(guān)心器件的選型、掌握所使用的FPGA的架構、掌握PCB的板級布局(主要是電容及I/O的走線(xiàn))。
本文引用地址:http://dyxdggzs.com/article/151091.htm對于同一系列的器件來(lái)說(shuō),器件的die越小,器件的功耗也會(huì )越小。也就是說(shuō),在選用器件的時(shí)候,應該盡量選擇規模小的器件。選定器件后,可以在設計過(guò)程中,通過(guò)一些技巧盡可能的少占用資源,比如通過(guò)時(shí)分復用的方式少占用I/O,共享加法、乘法等算法邏輯,共享RAM等,同時(shí)也有必要了解所選用的FPGA的架構。
用戶(hù)需要在功耗和速度之間做平衡,在對速度性能要求不高的時(shí)候,盡量使用低的核電壓和低電壓的I/O接口標準。根據設計工作的實(shí)際狀況,在某些時(shí)候將當前不工作的資源關(guān)掉,比如通過(guò)控制SRAM的LP或BLK引腳,使其在不工作的時(shí)候可以被關(guān)斷,或者是通過(guò)Flash Freeze端口進(jìn)入Fresh Frezee模式以降低靜態(tài)功耗。在PLL不需要工作的時(shí)候,通過(guò)Power Down引腳將其關(guān)掉,不過(guò)需要注意的是,需要考慮重新開(kāi)啟以后,PLL的鎖定時(shí)間對系統是不是有影響。關(guān)掉沒(méi)有輸入總線(xiàn)的I/O Bank。
注意,不要濫用上拉/下拉電阻。在活動(dòng)模式下,如果總線(xiàn)被反向模式驅動(dòng)(如上拉的被“0”驅動(dòng),或下拉的被“1”驅動(dòng)),那么每個(gè)I/O上的電流會(huì )增加。要預防被驅動(dòng)的總線(xiàn)進(jìn)入3態(tài)狀態(tài)。除非FPGA的工作時(shí)間確實(shí)短,否則建議跟板子設計者溝通以確保對輸入進(jìn)行持續的驅動(dòng)。
要降低設計的動(dòng)態(tài)功耗,首先要了解影響動(dòng)態(tài)功耗的因素。動(dòng)態(tài)功耗通常和電壓、信號翻轉頻率、容性負載正相關(guān),設計所占用的邏輯資源越多、時(shí)鐘頻率越高、I/O和RAM越多,動(dòng)態(tài)功耗就越大。同時(shí)也需要分析設計的動(dòng)態(tài)功耗概況。
確定要降低的動(dòng)態(tài)功耗的目標,如果要降低的動(dòng)態(tài)功耗的目標是目前整個(gè)系統動(dòng)態(tài)功耗的20%,那么選用Actel的IGLOO器件或許就可以實(shí)現所要達到的目標。如果目標是80%,那么除了選用IGLOO器件外,還需要從系統和架構上去考慮。
針對不同的系統功耗的概況,梳理動(dòng)態(tài)功耗的重點(diǎn),見(jiàn)圖1。針對Case1中動(dòng)態(tài)功耗的示意圖,我們可以看出其功耗主要分布在邏輯、存儲和時(shí)鐘方面,這樣我們的精力就不能放在如何降低I/O的功耗上去,而針對Case3這種情況,如果要降低動(dòng)態(tài)功耗,就必須要解決I/O上的功耗問(wèn)題。
圖1 不同系統的動(dòng)態(tài)功耗在線(xiàn)座談精華
要減少RAM的功耗,除了對RAM的控制和時(shí)鐘信號進(jìn)行門(mén)控制以外,還需要知道RAM的讀和寫(xiě)分別對功耗的影響有多少。地址變化、讀寫(xiě)順序、RAM級聯(lián)方式對功耗的影響。
對RAM進(jìn)行讀操作涉及到:控制所存地址和控制鎖存、行的預譯碼電路、讀的列譯碼電路、行的最終譯碼電路、讀的列譯碼控制、傳感放大器、數據輸出選擇和鎖存電路、Sense enable logic、讀控制電路、Bit-line預充電電路等十個(gè)相關(guān)電路。而對RAM進(jìn)行寫(xiě)操作需要涉及到的電路有:地址和控制鎖存、行的預譯碼電路、寫(xiě)的列譯碼電路、行的最終解碼控制、寫(xiě)的列譯碼控制、寫(xiě)驅動(dòng)電路和Bit Line預充電電路。因此,相比較而言,讀操作會(huì )比寫(xiě)操作消耗更多的功耗。
RAM的讀寫(xiě)地址改變的方式,也會(huì )對功耗有不同的影響。連續操作地址之間的漢明距離越小,產(chǎn)生的功耗也越小。反之亦然。也就是說(shuō)當前操作的地址和上次操作的地址之間變化的位數越少,所產(chǎn)生的功耗也會(huì )越小。
讀寫(xiě)間隔操作和連續讀、連續寫(xiě)操作相比,要產(chǎn)生多一些的功耗。從圖2中分別對12塊RAM、16塊RAM和24塊RAM做的測試結果看,同樣的操作條件下,RAM塊數越多,連續操作地址之間的漢明距離越長(cháng),功耗就越大。同樣的塊數和連續操作之間的漢明距離,寫(xiě)-讀三次會(huì )比三次寫(xiě)三次讀消耗的功耗要大。
圖2 寫(xiě)讀操作順序vs.讀序列后跟寫(xiě)序列操作
通過(guò)前面所述,我們可以通過(guò)調整RAM的訪(fǎng)問(wèn)順序降低RAM的功耗??赡艿脑?huà),對RAM少進(jìn)行讀操作,盡可能一次多讀一些數據或者多寫(xiě)一些數據,少一些讀寫(xiě)操作之間的切換。如果在連續相同操作的地址之間,漢明距離能保持最小的話(huà)更好。也可以考慮在反向時(shí)鐘沿上對RAM進(jìn)行讀寫(xiě)操作,以降低RAM的峰值功耗。
不同的RAM級聯(lián)架構所產(chǎn)生的功耗也不同。如果想獲得一個(gè)4K×4的RAM,有許多不同的實(shí)現方式。從圖3中可以看出,根據這些不同的實(shí)現方式,對每塊RAM的讀寫(xiě)時(shí)鐘控制,進(jìn)行門(mén)控制所產(chǎn)生的功耗是最低的。
圖3 根時(shí)鐘vs.葉時(shí)鐘vs.門(mén)控允許
評論