verilog HDL中Moore 有限状态机 的初始状态。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog HDL中Moore 有限状态机 的初始状态。相关的知识,希望对你有一定的参考价值。
module MooreFSM (A ,ClkM, Z);
input A, ClkM;
output Z;
reg Z;
parameter s0=0, s1=1, s2=2, s3=3;
reg [0:1] MooreState;
always @ (posedge ClkM)
case (MooreState) 、、这里最初的Moorestate 是怎么确定的?
s0:
begin
Z<=1;
MooreState<=(!A) ? s0:s2;
end
s1:
begin
Z<=0;
MooreState<=(!A) ? s0:s2;
end
s2:
begin
Z<=0;
MooreState<=(!A) ? s2:s3;
end
s3:
begin
Z<=1;
MooreState<=(!A) ? s1:s3;
end
endcase
endmodule
新手,哪位帮忙解答下。
谢谢大家的回答,但我现在纠结,如果不加复位信号,仿真为什么能跑呢?是仿真工具自己选择的初始状态?
对于本题添加一个异步复位即可,参考如下
always@(posedge clk or negedge rst_n)
if (!rst_n)
begin
Moorestate<=s0 ;//这个根据题目来做相应改动
z<=1;
end本回答被提问者采纳 参考技术B 实际用的话基本都有复位信号,不然程序容易乱掉,没复位仿真是没问题的追问
请问,如果没有复位信号,仿真起始是如何确定的呢?
参考技术C module MooreFSM (A ,ClkM, Z);input A, ClkM;
output reg Z;
parameter s0=0, s1=1, s2=2, s3=3;
reg [0:1] MooreState;
initial//这里最初的Moorestate 是怎么确定的?
begin
MooreState <= 0;
end
always @ (posedge ClkM)
case (MooreState)
s0: begin
Z<=1;
MooreState<=(!A) ? s0:s2;
end
s1: begin
Z<=0;
MooreState<=(!A) ? s0:s2;
end
s2: begin
Z<=0;
MooreState<=(!A) ? s2:s3;
end
s3: begin
Z<=1;
MooreState<=(!A) ? s1:s3;
end
endcase
endmodule追问
也就是说,状态机最好还是要用复位给个初始状态是吧,我看了2本书上的例子都没有写复位,这样话,是不是仿真时默认从0状态初始?
追答仿真貌似用initial初始化一下就OK了 应该是X而不是0
另外就是你说的reset一般都是有的.可能书上为了讲状态机这里就没加 否则又给读者增加麻烦
以上是关于verilog HDL中Moore 有限状态机 的初始状态。的主要内容,如果未能解决你的问题,请参考以下文章