hspydf 发表于 2020-11-4 16:49:20

求助,看看这段Verilog有什么问题,

module rx_flame(
        input                   clk,               
        input                   rdsig,                //串口接收数据有效信号
        input            rxdata,               //串口接收数据
        output         ledctr                   //LED控制
       
    );
reg sync_state = 4'h0;
reg rxcounter = 8'h0;//接收字符串计数
reg ledctr = 4'hf;
reg rxstore;                        //存储接受字符



//--------------internal signal declarration----------
parameter         IDLE=4'h0,
                  SYNC_HEAD=4'h1,
                  LAOD_DATA_0=4'h2,
                  LAOD_DATA_1=4'h3,
                  SYNC_END=4'h4;
                                  
                                  
always@(posedge clk)
        case (sync_state)
                IDLE:
                        begin
                                ledctr <= 4'b1111;
                                rxcounter <= 4'h0;
                        end
                SYNC_HEAD:        
                        begin
                          if(rxstore == 8'hb1)                  //加上这一行就报错.
                                ledctr <= 4'b1110;
                        end
                LAOD_DATA_0:
                        begin
                                ;
                        end
                SYNC_END:
                        begin
                                ledctr <= 4'h0;
                        end
                default: ;
        endcase


always@(posedge clk)
        if(rdsig)
                case(sync_state)
                        IDLE:if(rxdata == 8'hee )
                                        sync_state <= SYNC_HEAD;
                        SYNC_HEAD:
                                        if(rxdata == 8'hff )
                                        sync_state <= SYNC_END;
                                        else
                                                begin
                                                        if(rxcounter == 0)
                                                                begin
                                                                rxstore <=rxdata;
                                                                rxcounter <= rxcounter+ 1'b1;
                                                                end
                                                        else if(rxcounter == 1)
                                                                begin
                                                                rxstore <=rxdata;
                                                                rxcounter <= rxcounter+ 1'b1;
                                                                end
                                                        else ;
                                                end
                                SYNC_END: ;
                        default:;
                endcase
        else ;
endmodule



加上这一行就报错,该怎么改?
报错信息是这个
Line 44: Signal rxcounter in unit rx_flame is connected to following multiple drivers:

cloudboy 发表于 2020-11-4 19:33:53

rxcounter一个信号只能在一个always语句块里面被驱动,你这个两个always语句块都有rxcounter被赋值的情况

hspydf 发表于 2020-11-4 21:46:39

cloudboy 发表于 2020-11-4 19:33
rxcounter一个信号只能在一个always语句块里面被驱动,你这个两个always语句块都有rxcounter被赋值的情况 ...

谢谢, 仔细一看,果然是你讲的.
页: [1]
查看完整版本: 求助,看看这段Verilog有什么问题,