概述
采用三段式状态机,将组合逻辑与时序逻辑分开
第一部分描述状态转移
第二部分描述状态转移条件
第三部分描述输出
module fsm (
input clk,
input rst_n,
input x,
output z
);
reg [1:0] current_state;
reg [1:0] nstate;
always @ (posedge clk or negedge rst_n)
if(!rst_n)
current_state<=S0;
else
current_state<=nstate;
parameter S0=4'b0001;
parameter S1=4'b0010;
parameter S2=4'b0100;
parameter S3=4'b1000;
always @(x or current_state) begin
case (current_state)
S0:begin
if(x==1)
nstate<=S1;
else
nstate<=S0;
end
S1:begin
if(x==0)
nstate<=S2;
else
nstate<=S1;
end
S2:begin
if(x==1)
nstate<=S3;
else
nstate<=S0;
end
S3:begin
if(x==1)
nstate<=S1;
else
nstate<=S2;
end
default:begin
nstate<= S0;
end
endcase
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
z<=1'b0;
end
else begin
if(nstate==S3)
z<=1'b1;
else
z<=1'b0;
end
endmodule
最后
以上就是从容期待为你收集整理的FPGA日常1:101序列检测器的全部内容,希望文章能够帮你解决FPGA日常1:101序列检测器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复