【FPGA】全局復位是否有必要?

在FPGA設計中,用戶邏輯功能最終在芯片的實體資源上實現,因此邏輯寫法不一樣最終影響兩點:異步

1) 路徑延遲; 2) 資源佔用;優化

下面的例子對比很是明顯,異步reset與同步reset。設計

(一) 同步復位blog

在always block中的全部輸入信號都是同步的,A-E & RESET。由於優先級R>S>D,因此根據實際邏輯代碼級層,充分利用了Reset、Set、Data同步輸入引腳。ip

充分利用了資源管腳,同時只有LUT-FF兩級延遲。資源

(二)異步復位同步

敏感列表中的RST是異步輸入信號,使用的是Asynchronous Flip-Flop FDCE,RST鏈接到Clear異步腳。變量

那A-E五個同步信號就只能佔用2xLUT4來實現,致使多一個LUT佔用,同時延遲路徑也多一級。im

在實際設計中,通常因爲clk時鐘都很高,建議都用同步復位,還能夠避免異步競爭冒險。db

(三)沒有復位

芯片中像 reg & sram 這樣具備storage能力的觸發器都具備初始值,徹底能夠不用Reset信號。

reg [7:0] data = 8'b11111111;// reg變量或者fsm狀態機初始化定義,bram上電覆位後全是00

若是代碼中沒有Reset,那麼R腳徹底能夠接一個取非後的與邏輯輸入信號。

 

優秀的代碼結構徹底能夠帶來量級的優化結果。

 以上分析是針對Xilinx結構分析的,暫未分析Altera家,但兩家都是基於sram型的FPGA,理應一致。

相關文章
相關標籤/搜索