首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试错误“不允许向非寄存器k分配过程”。

调试错误“不允许向非寄存器k分配过程”。
EN

Stack Overflow用户
提问于 2016-04-17 04:47:22
回答 1查看 5.6K关注 0票数 1

我的Verilog代码看起来是这样的。该模块实现具有地址寄存器的查找表ROM,该地址寄存器在时钟脉冲上递增。对此输出进行解码以给出32位数。我不明白为什么k需要登记。实际上,我不希望在地址寄存器更改后k有一个时钟延迟。如何指定addr的解码?

(请注意,这似乎与同名的其他问题无关,因为我已经检查过了--我不想在输出上注册。我只想异步解码计数寄存器的输出。也许我对<=操作符感到困惑,我认为它总是会生成一个时钟寄存器,但也许我应该始终使用<=。)

代码语言:javascript
复制
module k_rom (input clk, input reset, output [31:0] k);
// Constants defined by the SHA-2 standard.
reg [5:0] addr;

always @ (addr)
    begin
        case(addr)
            6'h00: k = 32'h428a2f98;
            6'h01: k = 32'h71374491;
            6'h02: k = 32'hb5c0fbcf;
            6'h03: k = 32'he9b5dba5;
            6'h04: k = 32'h3956c25b;
            6'h05: k = 32'h59f111f1;
            6'h06: k = 32'h923f82a4;
            6'h07: k = 32'hab1c5ed5;
            6'h08: k = 32'hd807aa98;
            6'h09: k = 32'h12835b01;
            6'h0a: k = 32'h243185be;                                        
// other constants not shown for brevity
            6'h3c: k = 32'h90befffa; 
            6'h3d: k = 32'ha4506ceb; 
            6'h3e: k = 32'hbef9a3f7; 
            6'h3f: k = 32'hc67178f2;
        endcase
    end

always @ (posedge clk)
    begin
        if(reset)
            addr <= 6'b0;
        else
            addr <= addr + 6'b1;
    end

endmodule
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-17 05:24:29

LHS过程块中的赋值必须是reg类型。过程赋值语句将值赋值给regintegerrealtime变量,而不能将值赋值给wire。请注意,reg可以根据某些触发事件保存或存储某些值,而wire不能存储任何值。

在这里,k持有的一些值,直到addr信号发生变化。从今以后,它需要reg类型。

默认情况下,output信号是wire类型的。声明koutput reg [31:0] k

代码语言:javascript
复制
module k_rom (input clk, input reset, output reg [31:0] k);

在上面的代码中,阻塞分配(=)和非阻塞分配(<=)的使用似乎是正确的。

将阻塞分配(=)用于组合逻辑( always @(addr)块)。将非阻塞分配(<=)用于顺序逻辑( always @(posedge clk)块)。

但是,您可能更喜欢使用always @(*) (或always_comb表示SystemVerilog)而不是always @(addr)作为自动敏感列表。

参考this PDF以了解regwire之间的区别。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36672788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档