在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,理應一致。