2016-05-07 43 views
2

我正在使用Maxeler,MaxIDE。 我想在下一個週期中使用我的輸入流作爲輸出流。我希望在一個條件下做出決定。但如果條件不允許我比較兩個DFEVar(s)。我想知道這有可能嗎?是否有可能比較內核端的兩個DFEVar值

類型不匹配:不能從DFEVar轉換爲boolean

回答

1

您不能使用常規if語句來比較兩個DFE 瓦爾。
您應該改用三元運算符。有關更多詳細信息,請參閱第2點。

您可以在Maxeler教程中找到詳細的說明。

從:MaxCompiler:數據流編程教程在數據流計算

條件語句

存在影響數據流運算控制條件句的方法主要有三種:

  1. 全球條件語句:這些通常是大規模的操作模式,取決於輸入pa- rameters與相對較少的選項。如果我們需要根據輸入參數選擇不同的計算 ,並且這些條件會影響設計的數據流部分,我們 只需爲每種情況創建多個.max文件。某些應用程序可能需要進行一定的轉換才能將其轉換爲支持多個.max文件的最佳結構。 if (mode==1) p1(x); else p2(x); 其中p1和p2是使用不同.max文件的程序。
  2. 本地條件:條件取決於計算的本地狀態。 if (a > b) x=x+1; else x=x − 1; 這些可以轉化成數據流計算爲 x = (a > b) ? (x+1) : (x − 1);
  3. 條件循環:如果我們不知道我們需要多長時間重複加上一個循環,我們需要知道 一點有關環路的行爲和典型值用於循環迭代的次數。一旦我們知道了我們可以預期的值的分佈,數據流實現將流水線化爲最佳的迭代次數,並將每個迭代塊視爲由CPU(或其他內核)控制的SLiC接口的動作。

三元-i運算符(?:)在兩個輸入流之間進行選擇。要選擇多於 的兩個流,control.mux方法比嵌套的三元-if語句更易於使用和讀取。