資料報文格式分為資料報文和控制包文格式
end輔助head 中間變數
//head_cnt
//head_cnt
reg [3:0] head_cnt;
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
head_cnt<=0;
endelse if(state_c==head)begin
if (head_flag==0)begin//檢測55
if (din==8'h55) begin
head_cnt<=head_cnt+1;
endelse begin
head_cnt<=0;
endend
else if(head_flag==1)begin
if (din==8'hd5)begin
if (head_cnt==9)begin
head_cnt<=0;
endelse begin
head_cnt<=head_cnt+1;
endend
else if(din==8'h55)begin
head_cnt<=1;
endelse begin
head_cnt<=0;
endend
else begin
head_cnt<=0;
endend
else begin
head_cnt<=0;
endend
head_flag
head_flag=0,等待55
head_flag=1,等待d5
//head_flag
reg head_flag;
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
head_flag<=0;
endelse if (state_c==haed)begin
if(din==8'h55)begin
head_flag<=1;
endelse begin
head_flag<=0;
endend
else begin
head_flag<=0;
endend
輔助len,中間變數
len_cnt
//len_cnt
reg len_cnt;
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
len_cnt<=0;
endelse if(state_c==len)begin
len_cnt<=len_cnt+1;
endelse begin
len_cnt<=0;
endend
輔助data 中間變數
data_cnt
//data_cnt
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
data_cnt<=0;
endelse if(state_c==type&&din==0 )begin
data_cnt<=64-1;
endelse if(state_c==len)begin
if(len_cnt==0)begin
data_cnt<=;
endelse begin
data_cnt<=-1;
endend
else if(data_cnt!=0)begin
data_cnt<=data_cnt-1;
endend
輔助fcs 中間變數
fcs_cnt
//fcs_cnt
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
fcs_cnt<=0;
endelse if(state_c==fcs)begin
if(fcs_cnt==3)begin
fcs_cnt<=0;
endelse begin
fcs_cnt<=fcs_cnt+1;
endend
else begin
fcs_cnt<=0;
enden
//dout
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
dout<=0;
endelse begin
dout<=din;
endend//dout_vld
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
dout_vld<=0;
endelse if (state_c!=head)begin
dout_vld<=1;
endelse begin
dout_vld<=0;
endend//dout_sop
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
dout_sop<=0;
endelse if(state_c==type) begin
dout_sop<=1;
endelse begin
dout_sop<=0;
endend//dout_eop
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
dout_eop<=0;
endelse if(state_c==fcs&&fcs_cnt==3) begin
dout_eop<=1;
endelse begin
dout_eop<=0;
endend
kanzi狀態機實現
1.在library中選中state managers建立create state manager。2.在library中選中property types建立create property type,name state category custom datatype interger。3.修改s...
qt狀態機的實現
建立狀態,設定狀態中的屬性,設定初始狀態,設定狀態裝換條件 動畫,啟動狀態機 int nmargin 9 int ninitwidth m pselmoldform width int ninitheight m pselmoldform height int nconfepyformw m pco...
實現有狀態物件或狀態機
想實現乙個狀態機或可以在許多不同狀態下執行的物件,但又不想在 中新增很多條件。一般通過新增不同狀態符號來執行不同狀態下的 如下 class connection def init self self.state closed def read self if self.state open rais...