我正在使用Maxeler,MaxIDE。 我想在下一个周期使用输入流作为输出流。我希望在if条件下做出决定。但if条件不允许我比较两个DFEVar(s)。我想知道它有可能吗?
类型不匹配:无法从DFEVar
转换为boolean
答案 0 :(得分:2)
您无法使用常规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);
- 条件循环:如果我们不知道需要多长时间迭代一个循环,我们需要知道 稍微讨论一下循环的行为,通常是循环迭代次数的值。一旦我们 知道我们可以期望的值的分布,数据流实现管道最优 迭代次数并将每个迭代块视为SLiC接口的操作, 由CPU(或其他一些内核)控制。
醇>ternary-if运算符(
?:
)在两个输入流之间进行选择。要在多个之间进行选择 W两个流,control.mux方法比嵌套的ternary-if语句更容易使用和读取。