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

时间:2016-03-10 17:17:04

标签: 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, 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

是否可以在“始终”之前定义A?我不知道必须修复的数量的常见做法是什么,不是输入,也不是输出。我不想在合成期间放置不必要的端口。 非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

您可以将其定义为Local参数。这将仅限于此模块的范围。

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;