0

我有一个使用递归的代码,

module mult(a,b,c)
  generate
    always @(*) begin
     /* a few calculations */
     if(x < 10)
       flag = 1;
     else
       flag = 0; 
    end
     if( flag == 1)
        mult(x,y,z);
     else
        z = x*y;
  endgenerate
endmodule

但是,此代码返回一个错误,指出标志不是常量。我知道人们不能通过使用寄存器、电线或整数在 always 块之外使用 if-else。但是,还有其他方法可以实现代码吗?

递归似乎只在 generate 块中起作用,但在 always 块之外。

4

1 回答 1

1

生成块中的条件需要在细化时保持不变。通常,它们要么定义模块,要么定义模块参数。

你在你的例子中根本没有声明'x'......事实上有许多错误会阻止它编译。够了,很难弄清楚我们的意图。你能提供一些细节吗?

于 2012-12-12T02:22:51.387 回答