如果我不知道大小,我如何取消系統verilog中的寄存器? 例如,如果我有:如何取消系統verilog中的寄存器
reg [DATA_WIDTH-1:0] data_stack;
與給予模塊的一些參數DATA_WIDTH
。是否可以給寄存器data_stack
分配一個零?
請注意,初始化一個類似的reg
爲零就足夠了,因爲我可以簡單地執行按位和兩者之間的操作並取消data_stack
。
此外,任何推薦的網站,我可以學習這些東西?谷歌搜索只讓我有點貧血的網站。
如果我不知道大小,我如何取消系統verilog中的寄存器? 例如,如果我有:如何取消系統verilog中的寄存器
reg [DATA_WIDTH-1:0] data_stack;
與給予模塊的一些參數DATA_WIDTH
。是否可以給寄存器data_stack
分配一個零?
請注意,初始化一個類似的reg
爲零就足夠了,因爲我可以簡單地執行按位和兩者之間的操作並取消data_stack
。
此外,任何推薦的網站,我可以學習這些東西?谷歌搜索只讓我有點貧血的網站。
如果我理解你的問題,你想知道如何產生一個與data_stack
相同的寬度的零值?
在這種情況下,使用複製操作符:
data_stack = {DATA_WIDTH{1'b0}};
這產生DATA_WIDTH
數量的零。
IEEE Std 1800-2009是黃金參考。以下將所有位設置爲0:
data_stack = '0;
請參閱「整數文字常量」一節。
一種未施膠單比特值可以由 單位值與一個撇號(')前述被指定,但沒有鹼 說明符。未分級值的所有位應設置爲指定位的值 。在自我確定的情況下,未分級的單比特值應具有1比特的寬度,並且該值將被視爲無符號的 。
我認爲如果您搜索初始化寄存器而不是無效,您的搜索會產生更好的結果。
如果這是一個測試平臺變量然後只是:
initial begin
data_stack = {DATA_WIDTH{1'b0}};
end
如果是在一個觸發器中使用,你需要重新設置:
always @(posedge clk or negedge reset_n) begin
if (~reset_n) begin
data_stack <= {DATA_WIDTH{1'b0}};
end
else begin
//<=nextvalue;
end
end
是否有可能包括一個片段那運營商究竟是什麼?我從來沒有見過它,我很好奇它的意思,但AFAIK這不是一個公開可查看的文件。 – Tim 2013-03-14 19:06:04
1800-2012 Std現在免費,但我懷疑任何工具都支持它。 – toolic 2013-03-14 19:07:08
舊的verilog實現有一個問題,這隻能工作到32位。用這種方式分配的33位寄存器在MSB中有x。 – Morgan 2013-03-14 19:11:29