感悟:FPGA的序列及並行設計思路
前言
FPGA設計過程中, 會遇到大量的序列轉並行或者並行轉序列的問題;
這些問題主要體現在FPGA對於速度和麵積的均衡上;
一般而言, FPGA使用並行的設計可以提高處理的速度, 消耗更多的資源;
FPGA使用序列設計, 可以節約資源, 處理速度有所下降;
而在實際的使用過程中, 序列的設計往往貫穿於整個專案, 用於控制整個工程的執行邏輯;
並行的設計往往體現在區域性需要加速的部分;
內容
序列設計
序列設計的方法比較多, 常見的有狀態機/流水線/乒乓操作等, 其主要的作用是控制資料在不同階段的處理;
用狀態機可以將設計流程圖直接轉化為具體的程式碼, 實現對應的操作;
配合條件控制和狀態驅動, 狀態機可以將整個模組大部分的功能整合到一個整體,從而實現程式碼效率及可讀性的跨越;
流水線操作的流程是序列的,處理的資料卻是同步進行的; 通過控制每個模組的重新整理節奏, 實現資料的逐級獨立處理;
乒乓操作針對的主要是序列設計中資料從高速到低速或者從一個不穩定速度到穩定速度的操作, 基本思路是用類似的邏輯實現操作時序的緩衝;
並行設計
並行設計一般體現為一個模組的多次呼叫,構成一個重複模組的並行處理同一個資料的特性;
當然也可以是不同的模組處理同一個資料, 主要的特點在於一份資料被多個模組同時呼叫;
並行設計的前提是資料操作可以被分別執行且消耗的資源可以接受;
簡單的例子是求A的4次方,在資源充足的條件下, 可以由兩個乘法器並行執行後在將結果並行執行;
如果乘法器的效能足夠好的話, 也可以直接用四個乘法器在一個週期內完成計算;
更加複雜的並行則是使用引數化的模組, 通過修改少量的引數並行執行不同的任務, 從而實現資料的大幅提升;
並行設計是模組化設計提高效率的基本原理;
總結
早期FPGA設計訓練一般以序列設計為主, 但是在序列設計熟練後, 應該穿插並行設計, 以實現更高效能的設計;
歡迎在下方評論、轉發、分享。