流水線pipeline

流水線pipeline


所謂流水線(pipeline)設計,通常來說是流水生產線。

同樣,組合邏輯路徑可以看作是一條生產線,路徑上的每個邏輯單元都可以看作是一個階段,都會產生時延。

如果不採用流水設計,前後級組合邏輯依次工作,那麼這條路徑的模型就是

原始的生產線。如果採用流水設計,那麼前後級組合邏輯可以同時工作,就像新的生產線一樣。

在FPGA設計中,通常在適當組合邏輯中插入寄存器,以提高速度。這裡對於插入寄存器提高速度,我們暫不分析。

流水線pipeline

流水線模型

今天我們分析一下在實現CORDIC算法中,流水線操作和控制器操作的比較。

在實現CORDIC算法時,有兩種方法。第一是使用流水線操作,不僅能夠提高系統速度,而且能夠加快輸出的速度。

16次迭代流水線仿真輸出如下圖:

流水線pipeline

從上圖可以看到,使用流水線方式,處理第一次輸出需要等待16個時鐘週期外,後面的輸出將以流水的方式根據輸入的有效而不斷輸出。這種流水線方式適用於要求連續輸出的場景。

流水線pipeline

上圖是在C4的FPGA上綜合後的資源使用情況,可以看到,資源使用量非常大,其中大量的資源都浪費在加法器以及寄存器的使用上。乘法器資源也用了20%。

流水線pipeline

第二種方式是使用控制器的模式實現CORDIC算法。

流水線pipeline

上圖是使用控制器的方式實現CORDIC算法,可以看到每個輸出都需要等待16個時鐘週期,時效性比流水線方式低很多,適用於不需要實時輸出的場景。

流水線pipeline

上圖為在C4的FPGA上綜合後資源的使用情況。,可以看到,比起流水線操作,控制器方式資源使用大大減少。

上面簡單分析了兩種方式實現CORDIC算法。我們不能夠說誰優誰劣,只能是在不同的場景使用不同的方法達到最後的設計功能。


流水線pipeline

原文地址:卿萃科技FPGA極客空間 微信公眾號


分享到:


相關文章: