Verilog-在始终posedge上重新使用寄存器值

Verilog-在始终posedge上重新使用寄存器值,verilog,Verilog,考虑以下代码: Module Test (B, A, CLK) Input A, CLK; Output B; Reg RA; Always @(Posedge CLK) Begin RA=A; B=RA; End EndModule 将输入移动到寄存器,然后再移动到每个正边缘的输出,这样是否可以正常工作?它可以用电路来创建吗?这取决于你想做什么 如果您只需要一个触发器,最简单的方法是声明reg B然后您可以编写always@(posedge-CLK)B来回答您的问题,是的,您

考虑以下代码:

Module Test  (B, A, CLK)

Input A, CLK;
Output B;

Reg RA;

Always @(Posedge CLK)

Begin

RA=A;
B=RA;

End
EndModule

将输入移动到寄存器,然后再移动到每个正边缘的输出,这样是否可以正常工作?它可以用电路来创建吗?

这取决于你想做什么


  • 如果您只需要一个触发器,最简单的方法是声明
    reg B然后您可以编写
    always@(posedge-CLK)B来回答您的问题,是的,您所写的(概念上)将起作用。在语法方面,这里有一些东西可以编译并按照您的想法执行。注意,我已经声明了输出
    B
    a寄存器,并对寄存器使用了非阻塞赋值

    module Test (
        input  wire CLK,
        input  wire A,
        output reg  B
    );
    
        reg RA;
    
        always @(posedge CLK) begin
            RA <= A;
            B  <= RA;
        end
    
    endmodule
    
    模块测试(
    输入线时钟,
    输入线A,
    输出寄存器B
    );
    reg-RA;
    始终@(posedge CLK)开始
    
    很难说。在任何情况下,由于大写关键字不正确,您当前的代码都不会编译。因此,在提出问题之前,请投入一点精力格式化您的代码,并提供一个您想要实现的示例,这样就不需要猜测您真正想要做什么。此外,如果您打算模拟或合成触发器,您应该使用非blobking赋值运算符