使用verilog的quartus RTL查看器中的奇怪组件

使用verilog的quartus RTL查看器中的奇怪组件,verilog,digital-logic,register-transfer-level,Verilog,Digital Logic,Register Transfer Level,我正在学习verilog,当我不知道一个电路如何工作时,只要查看verilog代码,我就会去RTL查看器查看数字逻辑。但是在这段代码中出现了一个奇怪的组件,我不知道这个组件是什么。是触发器、多路复用器还是逻辑端口? 下面是代码和图像,在图像中,组件是红色三角形 守则: module testesoma(clock,reset,in, out,aux); input wire reset, clock, in ; output reg [3:0] out,aux; always @(pos

我正在学习verilog,当我不知道一个电路如何工作时,只要查看verilog代码,我就会去RTL查看器查看数字逻辑。但是在这段代码中出现了一个奇怪的组件,我不知道这个组件是什么。是触发器、多路复用器还是逻辑端口? 下面是代码和图像,在图像中,组件是红色三角形

守则:

module testesoma(clock,reset,in, out,aux);

input wire reset, clock, in ;
output reg [3:0] out,aux;


 always @(posedge clock or posedge reset)
begin
    if(reset)
        begin
            out = 0;
        end
    else    
        out = aux;
        aux = aux + 1;
end
endmodule

该符号只是一个缓冲区,用于驱动与输入相等的输出。至于它为什么会出现在数字逻辑原理图中,我不确定

缓冲器对电路的数字功能没有任何影响,当网络电容太大,驱动单元无法有效驱动时,它们由合成器插入。你几乎可以忽略它


另外,我对这个示意图有点怀疑,它似乎与您的RTL不匹配。rtl在每个posedge时钟上递增aux,但这显示了通过加法器的组合反馈回路,这似乎根本不起作用

多么好的示意图:+1,感谢您不辞辛劳地生成它。您的代码有多个问题,这是一个很好的例子,说明了使用阻塞分配、反馈、不使用合成模板等的危险。夸特斯确实搞砸了,但考虑到他的投入,这并不奇怪。问题:


  • 不要在这里使用阻塞分配-使用
    好答案,但必须在第2点添加注意事项。
    begin
    end
    相当于
    C
    中的大括号,最重要的是,在一行程序中省略这些大括号更有可能导致意外错误。OP中的一个错误就是这样一个例子-未能
    begin/end
    else
    子句。谢谢,现在我看到了“else”后面的“begin”和“end”错误,经过更正,电路变成了一个可理解的电路。我将需要组合逻辑的“=”,例如:
    code
    a=b+c;d=a+e;f=d+a
    code
    您建议我如何分离sequential的组合逻辑?谢谢,现在我知道quartus上的这个组件是什么了
        always @(posedge clock or posedge reset)
           if(reset)
              out <= 0;
            else    
              out <= aux;
    
       always @(posedge clock or posedge reset)
           if(reset)
              aux <= 0;
            else    
              aux <= aux + 1'b1;