fpga报错:line 36 Reference to vector reg ‘random_value‘ is not a legal net lvalue

  • 错误代码
module lfsr(
    input clk,
    input reset,
    output reg [7:0] random_value
);
    reg [7:0] lfsr_reg;

    always @(posedge clk or posedge reset) begin
        if (reset) begin
            lfsr_reg <= 8'h1; // LFSR初始化
        end else begin
            lfsr_reg <= {lfsr_reg[6:0], lfsr_reg[7] ^ lfsr_reg[5]}; // 生成随机数
        end
    end

    assign random_value = lfsr_reg;
endmodule
  • random_value 被声明为 reg 类型,而 assign 语句只能用于 wire 类型。需要在 always 块中更新 random_value 的值,而不是使用 assign 语句。
ERROR:HDLCompilers:246 - "lfsrtest.v" line 36 Reference to vector reg 'random_value' is not a legal net lvalue
ERROR:HDLCompilers:53 - "lfsrtest.v" line 36 Illegal left hand side of continuous assign
  • 修改:
module lfsr(
    input clk,                 // 时钟输入信号
    input reset,               // 复位输入信号
    output reg [7:0] random_value // 输出8位随机值
);
    reg [7:0] lfsr_reg;

    always @(posedge clk or posedge reset) begin
        if (reset) begin
            lfsr_reg <= 8'h1; // LFSR初始化
        end else begin
            lfsr_reg <= {lfsr_reg[6:0], lfsr_reg[7] ^ lfsr_reg[5]}; // 生成随机数
        end
    end

    always @(posedge clk or posedge reset) begin
        if (reset) begin
            random_value <= 8'h1; // 重置时,random_value初始化
        end else begin
            random_value <= lfsr_reg; // 每个时钟周期更新random_value
        end
    end
endmodule
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值