第一步,畫出原理圖
第二步,將畫出的原理圖利用硬體語言實現
module fsm_cola_ctrl(
input wire sclk,
input wire rst_n,
input wire [1:0]pi_money,
output reg po_cola,
output reg po_money
);reg [4:0] state;
parameter idle =5'b00001;
parameter half =5'b00010;
parameter one =5'b00100;
parameter one_half =5'b00001;
parameter two =5'b10000;
always@(posedge sclk or negedge rst_n)
if(!rst_n)
state<=idle;
else case(state)
idle: if(pi_money==2'b01)
state<=half;
else if(pi_money==2'b10)
state<=one;
else state<=idle;
half: if(pi_money==2'b01)
state<=one;
else if(pi_money==2'b10)
state<=one_half;
else state<=idle;
one: if(pi_money==2'b01)
state<=one_half;
else if(pi_money==2'b10)
state<=two;
else state<=idle;
one_half: if(pi_money==2'b01)
state<=two;
else if(pi_money==2'b10)
state<=idle; //不找零 出可樂
else state<=one_half;
two: if(pi_money==2'b01)
state<=idle; //不找零 出可樂
else if(pi_money==2'b10)
state<=idle; //找零 出可樂
else state<=two;
default:state<=idle;
endcase
always@(posedge sclk or negedge rst_n)
if(!rst_n)
po_cola<=1'b0;
else if(state==one_half&&pi_money==2'b10)
po_cola<=1'b1;
else if(state==two&&pi_money==2'b01)
po_cola<=1'b1;
else if(state==two&&pi_money==2'b10)
po_cola<=1'b1;
else
po_cola<=1'b0; /*當時我將找零跟出可樂寫到同乙個模組當中,導致編譯通過測試顯示高阻 態*/
always@(posedge sclk or negedge rst_n)
if(!rst_n)
po_money<=1'b0;
else if(state==two&&pi_money==2'b10)
po_money<=1'b1;
else po_money<=1'b0;
endmodule
第三步,寫測試模組
`timescale 1ns/1ns
module tb_fsm_cola();
reg sclk;
reg rst_n;
reg [1:0]pi_money;
wire po_cola;
wire po_money;
initial
begin
sclk=0;
rst_n=0;
pi_money=0;
#20rst_n=1;
endalways # 10 sclk=~sclk;
always # 50 pi_money=%3;
fsm_cola_ctrl fsm_cola_ctrl_inst(
.sclk (sclk ),
.rst_n (rst_n ),
.pi_money (pi_money ),
.po_cola (po_cola ),
. po_money ( po_money )
);endmodule
第四步,將**影象p出來
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...