簡體   English   中英

如何在systemverilog中將輸入信號更改為參數?

[英]How to change input signal to parameter in systemverilog?

我有一個輸入邏輯序列,我想將其轉換為參數,以便將其添加到程序的其他位置。

例如,

module myModule(input logic[7:0] SW, output logic[7:0] LEDR);

     parameter shift = SW;
     assign LEDR = SW[shift + 1: shift];

endmodule

我知道語法不正確,我只是想了解主要思想。

根據定義,參數是編譯時間常數。 這意味着您不能基於可以隨時間變化的表達式來更改它們的值。

您可以做的是更改建模方式,因此不需要參數。 例如,您可以將代碼編寫為

module myModule(input logic[7:0] SW, output logic[7:0] LEDR);
     assign LEDR = SW[SW +: 2];
endmodule

您不能將變量轉換為參數。 詳細說明后,該參數的值將被鎖定。 變量在仿真之前將沒有值。

部分選擇(有時稱為范圍切片)應該可以滿足您的需求。 有關更多信息,請參見使用+:索引向量和數組

擁有SW Slice本身確實有意義,因為結果值始終為0。這是更好的示例:

module myModule(input [8:0] IN, input [2:0] SW, output [1:0] LEDR);
     assign LEDR = IN[SW +: 2];
endmodule

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM