If statement 检查条件后如何返回值?
以下代码必须检查“e”值,以便gcd(h,e)=1。其中1If statement 检查条件后如何返回值?,if-statement,return,verilog,If Statement,Return,Verilog,以下代码必须检查“e”值,以便gcd(h,e)=1。其中1 great模块(p,q,e,d); 输入p,q; 输出e,d; 注册e,d; h=((p-1)*(q-1)); 总是 开始 对于(e=2;e如果“返回值”是指吐出一个可在另一个模块中使用的值,则将使用此模块的输出作为“返回值”值。但是即使忽略返回e的,我认为如果您尝试运行它,代码也不会工作,因为它太像一种编程语言。有几个主要错误: 您已经声明了output e,d,因此不能声明两个同名的reg。您可能需要output reg e,d 您
great模块(p,q,e,d);
输入p,q;
输出e,d;
注册e,d;
h=((p-1)*(q-1));
总是
开始
对于(e=2;e如果“返回值”是指吐出一个可在另一个模块中使用的值,则将使用此模块的输出作为“返回值”值。但是即使忽略返回e的,我认为如果您尝试运行它,代码也不会工作,因为它太像一种编程语言。有几个主要错误:
您已经声明了output e,d
,因此不能声明两个同名的reg
。您可能需要output reg e,d
您没有为h
或g1
声明类型
你有一个for
fore
循环,但是e
不能是0
或1
以外的任何东西,因为你没有为它设置大小,所以默认情况下它只有1位长。即使它足够大,你可以将它增加到1
,默认情况下它是一个wire
类型,你也不能使用它将这些增量直接添加到导线上
我假设gcd
是您在其他地方制作的某个模块,但这不是将模块互连在一起的方式。您不能像调用函数一样调用它。您必须使用wire
和reg
将两个模块的输入和输出连接在一起,就像插入组件一样
无论如何,这些都是最让我印象深刻的。我认为你把你的Verilog当作Python来编写,这就是造成这些误解的原因。Verilog非常非常不同。欢迎来到stackoverflow。请花几分钟时间阅读。它将帮助你找到这个问题的答案。一般来说,试着让用户更容易理解在这种情况下,一些缩进将有助于读者理解您的要求,以及您尝试了什么,它做了什么,以及您希望它做什么。
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;