检查条件后如何返回值?

时间:2018-09-08 02:20:54

标签: if-statement return verilog

以下代码必须检查“ e”值,以使gcd(h,e)= 1。哪里1

module great(p,q,e,d);
input p,q;
output e,d;
reg e,d;
h=((p-1)*(q-1));
always 
begin
for(e=2;e<h;e=e+1)
begin
g1=gcd(h,e);
if(g1==1)
return e;

1 个答案:

答案 0 :(得分:0)

如果通过“返回值”表示吐出一个可以在另一个模块中使用的值,则可以将该模块的输出用作“返回”值。但是,即使忽略return e,我也不认为如果尝试运行它,代码就不会工作,因为它太像编程语言了。有几项主要错误:

  1. 您已经声明了output e,d,所以不能声明两个具有相同名称的reg。您可能需要output reg e,d

  2. 您没有为hg1声明类型。

  3. 您有一个for的{​​{1}}循环,但是e永远不能是e0之外的其他任何东西,因为您没有为它,因此默认情况下只有1位长。即使它足够大,您可以将其递增到1以上,但默认情况下它是一种1类型,并且您不能直接将这些类型的递增到wire
  4. 我假设wire是您在其他地方制作的某个模块,但这不是将模块互连在一起的方法。您不能像它是一个函数那样调用它。您必须使用gcdwire将两个模块的输入和输出连接在一起,就像在插入组件一样。

无论如何,这些才是我最喜欢的东西。我认为您正在将Verilog编码为Python,这就是造成这些误解的原因。 Verilog非常非常不同。