“附近的语法错误”;生成";及;endgenerate";在verilog中

“附近的语法错误”;生成";及;endgenerate";在verilog中,verilog,Verilog,我是Verilog新手,我正在尝试使用Verilog实现单精度浮点加减。我遇到了一个我无法纠正的错误。有人能帮我吗 模块添加模块(Rs、Re、Rm、As、Ae、Am、Bs、Be、Bm) //端口声明 Rs,Re,Rm; As,Bs; 输入[7:0]声发射,Be; 输入[22:0]Am,Bm; reg[7:0]Re; 注册号[22:0]Rm; 注册会计师; //连线声明。 导线[23:-1]C; 分配C[-1]=0; 电汇[23:1]和; //变量声明。 基因型计数; 始终@(*) 开始 //加上

我是Verilog新手,我正在尝试使用Verilog实现单精度浮点加减。我遇到了一个我无法纠正的错误。有人能帮我吗

模块添加模块(Rs、Re、Rm、As、Ae、Am、Bs、Be、Bm)

//端口声明
Rs,Re,Rm;
As,Bs;
输入[7:0]声发射,Be;
输入[22:0]Am,Bm;
reg[7:0]Re;
注册号[22:0]Rm;
注册会计师;
//连线声明。
导线[23:-1]C;
分配C[-1]=0;
电汇[23:1]和;
//变量声明。
基因型计数;
始终@(*)
开始
//加上两个尾数。
如果((作为^Bs)==0)
开始
generate//getting error here“generate”附近的语法错误

对于(count=0;count在Verilog中,当您实例化一个模块时,这意味着您正在向电路板添加额外的硬件

必须在模拟开始前添加此硬件(即在编译时)。在这里,您可以在每个时钟脉冲时添加/删除硬件

一旦实例化,模块将执行/检查模拟的每个时间戳,直到结束

因此,要执行任何模块,只需实例化它,向它提供clk和其他必需的输入,然后在子模块本身中添加always块

硬件实例化后,应根据其内部逻辑在整个生命周期内执行

这里您在错误的位置实例化模块
生成
块的使用必须在
任何程序块之外进行

// generate outside any other blocks
   generate   
    for(count=0;count<24;count=count+1)
        begin
            add add_1(.c_out(C[count]),.sum(sum[count]),.in1(tempAm[count]),.in2(tempBm[count]),.c_in(C[count-1]));
        end
    endgenerate

always @(*)
begin
// Other stuff here.
end
//在任何其他块之外生成
生成

对于(count=0;count在Verilog中,当您实例化一个模块时,这意味着您正在向电路板添加额外的硬件

必须在模拟开始前添加此硬件(即在编译时)。在这里,您可以在每个时钟脉冲时添加/删除硬件

一旦实例化,模块将执行/检查模拟的每个时间戳,直到结束

因此,要执行任何模块,只需实例化它,向它提供clk和其他必需的输入,然后在子模块本身中添加always块

硬件实例化后,应根据其内部逻辑在整个生命周期内执行

这里您在错误的位置实例化模块
生成
块的使用必须在
任何程序块之外进行

// generate outside any other blocks
   generate   
    for(count=0;count<24;count=count+1)
        begin
            add add_1(.c_out(C[count]),.sum(sum[count]),.in1(tempAm[count]),.in2(tempBm[count]),.c_in(C[count-1]));
        end
    endgenerate

always @(*)
begin
// Other stuff here.
end
//在任何其他块之外生成
生成

对于(count=0;countInstances(即
subtract sub_1
)不进入
始终
初始
块状态(即
subtract sub_1
)不要进入
始终
初始
块我想根据if块中的条件是否满足来调用add模块或subtract模块。我尝试在两个任务中定义generate block,一个用于调用add模块,另一个用于调用上面的subtract模块always@(*)调用if-else块中的任务,但任务仍然不工作。@vishnupriya您不调用模块,而是实例化模块。您描述的硬件不编写软件。您必须使加法和减法始终存在,然后选择要使用的输出。模块在模拟开始时实例化一次。如Morgan po所示输入的模块表示物理硬件,而任务和函数用于计算重复代码。在您的情况下,可以有一种解决方法,将信号/导线作为输入添加到每个模块
add
subtract
。仅当控制导线的值变高时才执行操作。例如,导线变为高状态w当
为^Bs=1
时,执行加法运算。同时将同一根导线的逆变给
sub1
模块。也可以有其他逻辑。但在任何情况下,生成块都需要在程序块之外。Thanx很多。最终得到了。我在always块之外实例化了加法和减法模块,并使用了额外的输入clk用于控制子模块中操作的执行。我想根据if块中的条件是否满足来调用add module或subtract module。我尝试在两个任务中定义generate block,一个用于调用add module,另一个用于调用上面的subtract module,始终@(*)调用if-else块中的任务,但任务仍然不工作。@vishnupriya您不调用模块,而是实例化模块。您描述的硬件不编写软件。您必须使加法和减法始终存在,然后选择要使用的输出。模块在模拟开始时实例化一次。如Morgan po所示输入的模块表示物理硬件,而任务和函数用于计算重复代码。在您的情况下,可以有一种解决方法,将信号/导线作为输入添加到每个模块
add
subtract
。仅当控制导线的值变高时才执行操作。例如,导线变为高状态w当
为^Bs=1
时,执行加法运算。同时将同一根导线的逆变给
sub1
模块。也可以有其他逻辑。但在任何情况下,生成块都需要在程序块之外。Thanx很多。最终得到了。我在always块之外实例化了加法和减法模块,并使用了额外的输入用于控制子模块中操作执行的clk。