以下代码必须检查“ 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;
答案 0 :(得分:0)
如果通过“返回值”表示吐出一个可以在另一个模块中使用的值,则可以将该模块的输出用作“返回”值。但是,即使忽略return e
,我也不认为如果尝试运行它,代码就不会工作,因为它太像编程语言了。有几项主要错误:
您已经声明了output e,d
,所以不能声明两个具有相同名称的reg
。您可能需要output reg e,d
。
您没有为h
或g1
声明类型。
for
的{{1}}循环,但是e
永远不能是e
或0
之外的其他任何东西,因为您没有为它,因此默认情况下只有1位长。即使它足够大,您可以将其递增到1
以上,但默认情况下它是一种1
类型,并且您不能直接将这些类型的递增到wire
。wire
是您在其他地方制作的某个模块,但这不是将模块互连在一起的方法。您不能像它是一个函数那样调用它。您必须使用gcd
和wire
将两个模块的输入和输出连接在一起,就像在插入组件一样。无论如何,这些才是我最喜欢的东西。我认为您正在将Verilog编码为Python,这就是造成这些误解的原因。 Verilog非常非常不同。