Verilog中遇到的一些问题

在Verilog中用always来编写程序

always @(posedge clk,negedge rst_n)begin
    if( rst_n==0 )
        begin
            state <= s01;
            led <= 1'b1;
        end
    else
        if (flag2 == 1'b1)
            begin
            state <= s00;
            led <= 1'b0;
            end
        else
            if (flag3 == 1'b1)
                begin
                state <= s01;
                led <= 1'b1;
                end
    //assign led = (flag3 == 1'b1)?1'b0:1'b1;
    //assign led = (flag2 == 1'b1)?1'b1:1'b0;    
    //assign led = (rst_n == 0)?1'b1:1'b0;
    end
endmodule

仿真如中输出的led为00和01,如果想要显示为0或者1,就要用assign来输出led,但是在这段里面assign无论如何都插入不进去,就是那三行注释部分,只是不知道放哪所以放在那,想问一下有没有办法把那三行放进去或者是说还有别的方法可以输出只显示0和1

  1. always 中是不能插入 assign 语句
  2. led 在 always 中赋值后,就不能在其他的 always 或 assign中赋值
  3. 你可以定义一个中间值,再用 assign 赋值
module mx(
    input a,clk,
    output led);
reg led_r;
always@(posedge clk)
begin
led_r <=a;
end
assign led=led_r;
endmodule