我是靠谱客的博主 从容期待,这篇文章主要介绍FPGA日常1:101序列检测器,现在分享给大家,希望可以做个参考。

采用三段式状态机,将组合逻辑与时序逻辑分开

第一部分描述状态转移

第二部分描述状态转移条件

第三部分描述输出

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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部