做芯片第一應該關注的是芯片的PPA(Performance, Power, Area),本篇淺顯的部分討論,第二個 P,Power功耗,在RTL設計中如何做到低功耗設計,對于移動設備續航的十分重要,不要讓你的芯片徒增功耗。
數據通路寄存器打拍
數據寄存器打拍帶上vld,不加復位邏輯,這樣會省去寄存器復位電路的布線面積,而且工具還會給寄存器自動插時鐘門控,還達到了降低功耗的效果。至于寄存器不復位,一些剛學習的朋友可能會感覺有些刷新認知,寄存器怎么能不復位,不復位不就是x態了,系統不就紊亂了。是的,寄存器不復位是會產生x態,不過這里說的是數據通路,控制通路的所有信號都是必須帶復位邏輯。數據通路因為這里是帶著vld進行打拍,只需要保證在你使用的時候,它不是x態就行了。控制通路的信號控制系統的運行,出現x態,必然掛死。而數據通路只要保證在vld的有效,也就是我踩這個數據的時候它是正確的就行了,不管它是x態還是其他無效的數據。當然如果數據有作為判斷邏輯用于控制,那這個數據一定要進行復位。代碼示例,時序邏輯可以省略else,寄存器默認保持,組合邏輯必須寫else。vld是一個脈沖將這個數據踹一腳直接踹進這個寄存器存儲,在下一腳來臨之前,這個寄存器都將保持這個數據。
always @(posedge clk)begin if(data_vld) dout[63:0] 《= din;end
手動插入時鐘門控
手動插入時鐘門控,根據控制場景的不同自動關掉部分模塊的時鐘,留有軟件的控制通道,由軟件關閉??梢杂行У臏p少動態功耗。舉例,比如一塊運算電路配置全開的時候需要四個相同的計算模塊同時工作,最少的情況只需要一個模塊工作,這時根據配置的不同可以將其他三個模塊的時鐘關掉,減少動態功耗。
整個Top模塊掉電
整個二級Top模塊掉電休眠,掉電后將所有需要保存的數據寫到memory中,等下一次模塊喚醒上電啟動時再重新寫回到硬件中。ASIC中的RAM可以自己生成是否需要掉電保存數據的功能,不需要的專門存儲的RAM也一起掉電。需要使用和保存的數據寄存器較少,可以從模塊伸出接口到頂層,讓軟件讀走,等下一次模塊喚醒上電啟動時再通過軟件配置寄存器配置回模塊。這就是低功耗模式。
靜態功耗和動態功耗
靜態功耗只要電路供電就有,除非掉電休眠,否則無法避免,動態功耗只要存在高低電平切換就有。在rtl設計時,良好的代碼風格也可以降低動態功耗,乘法器、加法器等運算單元,通過減少組合邏輯的翻轉,從而達到降低動態功耗的效果。輸入到輸出,組合邏輯的a、b端值不變,沒有電平翻轉,所以不會有動態功耗,只存在靜態功耗。在設計中考慮組合邏輯無效翻轉問題,某段時間這部分數據無效,通過使能信號選擇這部分邏輯保持,得到避免動態功耗的效果。
責任編輯:haq
-
芯片
+關注
關注
454文章
50430瀏覽量
421869 -
Verilog
+關注
關注
28文章
1345瀏覽量
109988 -
低功耗
+關注
關注
10文章
2362瀏覽量
103601
原文標題:Verilog如何實現低功耗設計?
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論