求助,一段Verilog代码,看看哪里不对.
module rx_flame(input clk,
input rdsig, //串口接收数据有效信号
input rxdata, //串口接收数据
output ledctr
);
reg sync_state;
reg ledctr;
//--------------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: ledctr <= 4'b1111;
SYNC_HEAD: ledctr <= 4'b1110;
LAOD_DATA_0: ledctr <=4'b1101;
default: ;
endcase
always@(posedge clk)
case(sync_state)
IDLE:if(rxdata == 8'h55)
sync_state <= SYNC_HEAD;
SYNC_HEAD: ;
default:;
endcase
endmodule
///////////////////////
串口rxdata收到 0x55的时候sync_state <= SYNC_HEAD;可是我串口什么数据都没发,执行sync_state <= SYNC_HEAD了
1. 状态机赋初值 sync_state = 0
2. rxdata 和 clk是否是随路时钟,不是的话要打拍处理.
页:
[1]