簡體   English   中英

Verilog:不支持程序連續分配注冊

[英]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 @(*)引起的連續分配,但是如果我刪除了

它說分配左側的對象“寄存器”必須具有網絡類型,這是另一個錯誤。

您需要同步分配給寄存器。 由於合成器對其進行解析並路由到物理寄存器(即觸發器)

always @(posedge clk) 
    my_reg = my_data;

d觸發器

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.

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