2
我正在使用Maxeler,MaxIDE。 我想在下一個週期中使用我的輸入流作爲輸出流。我希望在一個條件下做出決定。但如果條件不允許我比較兩個DFEVar(s)。我想知道這有可能嗎?是否有可能比較內核端的兩個DFEVar值
類型不匹配:不能從DFEVar
轉換爲boolean
我正在使用Maxeler,MaxIDE。 我想在下一個週期中使用我的輸入流作爲輸出流。我希望在一個條件下做出決定。但如果條件不允許我比較兩個DFEVar(s)。我想知道這有可能嗎?是否有可能比較內核端的兩個DFEVar值
類型不匹配:不能從DFEVar
轉換爲boolean
您不能使用常規if
語句來比較兩個DFE 瓦爾。
您應該改用三元運算符。有關更多詳細信息,請參閱第2點。
您可以在Maxeler教程中找到詳細的說明。
從:MaxCompiler:數據流編程教程在數據流計算
條件語句
存在影響數據流運算控制條件句的方法主要有三種:
- 全球條件語句:這些通常是大規模的操作模式,取決於輸入pa- rameters與相對較少的選項。如果我們需要根據輸入參數選擇不同的計算 ,並且這些條件會影響設計的數據流部分,我們 只需爲每種情況創建多個.max文件。某些應用程序可能需要進行一定的轉換才能將其轉換爲支持多個.max文件的最佳結構。
if (mode==1) p1(x); else p2(x);
其中p1和p2是使用不同.max文件的程序。- 本地條件:條件取決於計算的本地狀態。
if (a > b) x=x+1; else x=x − 1;
這些可以轉化成數據流計算爲x = (a > b) ? (x+1) : (x − 1);
- 條件循環:如果我們不知道我們需要多長時間重複加上一個循環,我們需要知道 一點有關環路的行爲和典型值用於循環迭代的次數。一旦我們知道了我們可以預期的值的分佈,數據流實現將流水線化爲最佳的迭代次數,並將每個迭代塊視爲由CPU(或其他內核)控制的SLiC接口的動作。
三元-i運算符(
?:
)在兩個輸入流之間進行選擇。要選擇多於 的兩個流,control.mux方法比嵌套的三元-if語句更易於使用和讀取。