关于verilog中,同时赋值报错问题

2024-12-22 13:12:48
推荐回答(1个)
回答1:

always@(posedge clk or negedge rst_n)
if(!rst_n) key_rst <= 3'b111;
*************else key_rst <= {sw3_n,sw2_n,sw1_n};

reg[2:0] key_rst_r; //每个时钟的上升沿把key_rst锁存到key_rst_r中
always@(posedge clk or negedge rst_n)
if(!rst_n) key_rst<=3'b111;
else key_rst_r <= key_rst;

这里有问题,同一个变量不能在两个always中进行赋值
你这里应该是写错了
always@(posedge clk or negedge rst_n)
if(!rst_n) key_rst<=3'b111;
else key_rst_r <= key_rst;
应该是
always@(posedge clk or negedge rst_n)
if(!rst_n) key_rst_r <=1'b1 或者1’b0;
else key_rst_r <= key_rst;