[英]Verilog:Procedural Continuous Assignment to register is not supported
input [31:0] write_data;
input [4:0] write_reg;
reg [31:0] registers [31:0];
always @(*)
assign registers[write_reg] = write_data;
我有一個32位輸入write_data,我想分配一個我從write reg。得到的索引。錯誤說你不能做我認為總是由always @(*)引起的連續分配,但是如果我刪除了
它說分配左側的對象“寄存器”必須具有網絡類型,這是另一個錯誤。
assign
的總塊里面的procedural assignment
。 它是不可合成的,不應使用。 它用於非常特殊的建模案例。
continuous assignment
,或assign
外 always塊是有連接nets
和各地使用的地方。 這樣的分配必須是網絡類型,即wire 。 它不能是reg。
另一方面, 始終塊中的所有lh 都必須為“ reg”類型。
在這種情況下,您要做的就是刪除關鍵字assign :
input [31:0] write_data;
input [4:0] write_reg;
reg [31:0] registers [31:0];
always @(*)
registers[write_reg] = write_data;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.