在verilog中定义一个常量(用于合成)

在verilog中定义一个常量(用于合成),verilog,Verilog,我正在写一些用于合成的Verilog代码。 我的块有一个reg类型a,它必须始终具有相同的值。 为了避免语法错误,我编写了以下内容: module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst); output [11:0] OUT, OUTN; input [11:0] in, OUTlevelL; input mode_1, mode_0, rst; reg [11:0] OUT,

我正在写一些用于合成的Verilog代码。 我的块有一个reg类型a,它必须始终具有相同的值。 为了避免语法错误,我编写了以下内容:

module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
    output [11:0] OUT, OUTN;
    input [11:0] in, OUTlevelL;
    input  mode_1, mode_0, rst;  
    reg [11:0] OUT, OUTN;

    reg [11:0] A;   
    integer B; 


    always @(ck or rst) 
    if(~rst)
        begin
            A =512;   
            B =in[10:0];

            case  ({mode_1, mode_0})  
            2'b00:  begin     
                    OUT=A-B;   
                    OUTN=~OUT;
                end

            default:   begin  
                OUT=OUTlevelL;
                OUTN=~OUT;
                end
            endcase
        end
    else
        begin  
            A =512;
            B =0;     
            OUT =0;
            OUTN=1;
        end 
endmodule
是否可以在“始终”之前定义一个?我不知道对于必须固定且不是输入或输出的数量,通常的做法是什么。我不希望在合成过程中放置不必要的端口。
非常感谢你的帮助

您可以将其定义为本地参数。这将仅将其范围限制在本模块内

module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
        output [11:0] OUT, OUTN;
        input [11:0] in, OUTlevelL;
        input  mode_1, mode_0, rst;  
        reg [11:0] OUT, OUTN;

        localparam [11:0] A=512; 

您可以将其定义为本地参数。这将仅将其范围限制在本模块内

module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
        output [11:0] OUT, OUTN;
        input [11:0] in, OUTlevelL;
        input  mode_1, mode_0, rst;  
        reg [11:0] OUT, OUTN;

        localparam [11:0] A=512; 

ck
未声明,按照您编写always块的方式,您的代码将被视为没有触发器的纯组合逻辑。非常确定
always@(ck或rst)
应该是
always@(posedge ck或posedge rst)
。谢谢!我避免使用posedge,因为我需要两条边
ck
没有声明,并且按照您编写always块的方式,您的代码将被视为没有触发器的纯组合逻辑。非常确定
always@(ck或rst)
应该是
always@(posedge ck或posedge rst)
。谢谢!我在避开posedge,因为我需要两条边谢谢!但是如何合成localparam呢?我的目标是有一个固定(不可编程)输入的寄存器。SLOCALPARAM将是一个硬编码值。不能改变的东西,使用接地和电压将值驱动为0和1的组合。您不需要固定值的寄存器。谢谢!但是如何合成localparam呢?我的目标是有一个固定(不可编程)输入的寄存器。SLOCALPARAM将是一个硬编码值。不能改变的东西,使用接地和电压将值驱动为0和1的组合。固定值不需要寄存器。