所謂流水線(pipeline)設計,通常來說是流水生產線。
同樣,組合邏輯路徑可以看作是一條生產線,路徑上的每個邏輯單元都可以看作是一個階段,都會產生時延。
-
如果不采用流水設計,前后級組合邏輯依次工作,那么這條路徑的模型就是
原始的生產線。如果采用流水設計,那么前后級組合邏輯可以同時工作,就像新的生產線一樣。
在FPGA設計中,通常在適當組合邏輯中插入寄存器,以提高速度。這里對於插入寄存器提高速度,我們暫不分析。
流水線模型
今天我們分析一下在實現CORDIC算法中,流水線操作和控制器操作的比較。
在實現CORDIC算法時,有兩種方法。第一是使用流水線操作,不僅能夠提高系統速度,而且能夠加快輸出的速度。
16次迭代流水線仿真輸出如下圖:
從上圖可以看到,使用流水線方式,處理第一次輸出需要等待16個時鍾周期外,后面的輸出將以流水的方式根據輸入的有效而不斷輸出。這種流水線方式適用於要求連續輸出的場景。
上圖是在C4的FPGA上綜合后的資源使用情況,可以看到,資源使用量非常大,其中大量的資源都浪費在加法器以及寄存器的使用上。乘法器資源也用了20%。
第二種方式是使用控制器的模式實現CORDIC算法。
上圖是使用控制器的方式實現CORDIC算法,可以看到每個輸出都需要等待16個時鍾周期,時效性比流水線方式低很多,適用於不需要實時輸出的場景。
上圖為在C4的FPGA上綜合后資源的使用情況。,可以看到,比起流水線操作,控制器方式資源使用大大減少。
上面簡單分析了兩種方式實現CORDIC算法。我們不能夠說誰優誰劣,只能是在不同的場景使用不同的方法達到最后的設計功能。
版權所有權歸卿萃科技 杭州FPGA事業部,轉載請注明出處
作者:杭州卿萃科技ALIFPGA
原文地址:杭州卿萃科技FPGA極客空間 微信公眾號
掃描二維碼關注杭州卿萃科技FPGA極客空間