在ASIC中用到鎖存器的地方很多,Time Borrowing是使用鎖存器的典型應用之一,在深度流水線的設計中可以極大地提高處理性能。另外鎖存器和寄存器相比能夠顯著的減小面積:寄存器占用的硅片面積是鎖存器的兩倍,在ASIC設計中一個典型的主從寄存器是由兩個鎖存器級聯來實現的。
圖1說明了如何使用鎖存器的Time Borrowing技術來替代關鍵路徑中的寄存器。通過重新分配相鄰鎖存器之間的組合邏輯延遲,從而延長最長路徑的時鐘周期。
對于Xilinx的 FPGA芯片來說,不管是鎖存器還是寄存器,都是用相同的硬件資源實現的。這些硬件資源共享相同的數據輸入/輸出、復位和使能信號,可以配置成邊沿觸發的寄存器或者電平使能的鎖存器。因此在 FPGA芯片中,無論是鎖存器還是寄存器都使用相同的硬件資源,使用鎖存器并不會帶來任何的優勢。
寄存器和鎖存器關于數據的存儲方面存在著根本的差異。鎖存器屬于電平敏感電路,當門使能信號有效時,輸入數據將直接輸出;而門使能信號無效時,數據保持到鎖存器中。寄存器屬于邊沿敏感電路,數據只有在時鐘的上升沿或者下降沿才會被保存到寄存器中。
雖然鎖存器和寄存器使用相同的FPGA硬件資源,但還是要盡量避免使用前者。首先,當鎖存器處于導通狀態時,輸入信號的毛刺會直接傳遞到后面的邏輯中;另外,對于靜態時序分析工具來說、分析寄存器遠遠比鎖存器簡單得多。因為對于寄存器而言,只考慮到時鐘的上升或者下降沿:對于鎖存器而言,不僅需要考慮其上升沿和下降沿,而且還要考慮上、下沿之間的持續時間。對于具有周期性抖動的信號而言,鎖存器常常會造成問題。而對于邊沿敏感的寄存器,由于只需要關心時鐘邊沿的達到時間,因此即便是門使能的信號具有周期抖動,也不會造成任何的問題。ASIC設計中鎖存器的Time Borrowing電路,對于FPGA結構來講更是難以回避的挑戰。由于某級流水線的延遲和前面所有流水線的延遲相關,這種流水線的高度相關性將使得靜態時序分析更加難以處理,并且其困難程度和流水線的級數也不存在任何的線性關系。
正是因為上述原因,基于鎖存器的設計需要更加仔細和周密的時序約束。對于基于鎖存器流水線的邏輯綜合和物理實現,更是要從整個芯片的角度去做分析,才能夠正確地約束不同的時序關系。
因此在將ASIC 設計移植到FPGA時,最好就是將電平使能的鎖存器轉換為邊沿觸發的寄存器。這需要工程師投人許多的時間去分析和修改,因為不是所有描述鎖存器的代碼風格都能夠通過同樣的方式進行轉換。
大多數商用綜合工具都支持鎖存器的設計,代碼中的if語句如果缺少相應的case語句,將自動生成鎖存器。
當Xilinx的綜合工具XST 遇到鎖存器之后,會產生以下類似的報告。
通過修改成綜合工具所支持的代碼風格,可以將鎖存器轉換成寄存器。下面通過一個簡單的例子展示了其中的一種代碼風格,可以將門使能信號轉換成時鐘信號。
當然也有其他一些代碼風格,比如時鐘可以使用上升沿或者下降沿(Xilinx的FPGA不支持雙時鐘沿)、同步或者異步的復位置位等。
原文標題:FPGA知識匯集-鎖存器的移植
文章出處:【微信公眾號:FPGA技術聯盟】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
FPGA
+關注
關注
1630文章
21796瀏覽量
606009 -
寄存器
+關注
關注
31文章
5363瀏覽量
121162 -
鎖存器
+關注
關注
8文章
908瀏覽量
41644
原文標題:FPGA知識匯集-鎖存器的移植
文章出處:【微信號:gh_873435264fd4,微信公眾號:FPGA技術聯盟】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論