verilog3中的错误语句

verilog3中的错误语句,verilog,system-verilog,Verilog,System Verilog,代码不起作用。我收到“格式错误的语句”错误。你们能帮帮我吗? 它出现在环c1模块实例化中。 提前谢谢 module log2(N,clk); `include "parameters.vh" input [7:0] N; reg [7:0] aux ; reg [7:0] last_log; reg [7:0] div_last; output reg [7:0] y; // assign aux = N; input clk; parameter high = 1; always @

代码不起作用。我收到“格式错误的语句”错误。你们能帮帮我吗? 它出现在环c1模块实例化中。 提前谢谢

module log2(N,clk);

`include "parameters.vh"

input [7:0] N;
reg [7:0] aux ;
reg [7:0] last_log;
reg [7:0] div_last;
output reg [7:0] y;
// assign aux = N;
input clk;

parameter high = 1;

always @ (posedge clk) 
begin 
    ring_c1 ri1 ( aux[0], div_last);
    aux = aux >> 1;

    if (aux < 1 )  
        begin   
            ring_c1 r1v ( high, div_last);
            log_Finale (last_log, div_last);

            y = y + last_log;

       end      
    else
        y = y+1;
    end 
endmodule 
模块log2(N,时钟);
`包括“parameters.vh”
输入[7:0]N;
reg[7:0]aux;
reg[7:0]最后一次记录;
注册[7:0]分区最后;
输出寄存器[7:0]y;
//分配aux=N;
输入时钟;
参数高=1;
始终@(posedge clk)
开始
环c1 ri1(辅助[0],最后一个分区);
aux=aux>>1;
如果(辅助值<1)
开始
环c1 r1v(高,分区最后);
最后一集(最后一集,最后一集);
y=y+最后一次记录;
结束
其他的
y=y+1;
结束
端模

不能在always语句中引用组件


您必须将它们放在always之外,然后使用它们。

要扩展@Oldfart的注释:您正在尝试编写RTL(寄存器传输语言),就好像它是一种编程语言,除了模块实例化,而不是函数调用——事实并非如此。您正在使用代码来描述真实的硬件、门、触发器、内存库等。如果您无法想象代码将生成的硬件,那么您就错了。您不能让硬件根据设计中的信号实时出现和消失。但是,您可以实例化模块,并使用多路复用器逻辑来设计希望使用的模块输出