带1个模块的Verilog Mealy FSM
我必须为1米fsm编写一个verilog程序。写它有很多技巧。我将向您展示1,我想知道它是否有效无需提及其他技术,只需说明它是否有效以及原因!这是:带1个模块的Verilog Mealy FSM,verilog,fsm,Verilog,Fsm,我必须为1米fsm编写一个verilog程序。写它有很多技巧。我将向您展示1,我想知道它是否有效无需提及其他技术,只需说明它是否有效以及原因!这是: module MealyFsm(out,in,clk,rst); output out; input in,clk,rst; reg [1:0] q; always @(posedge clk or negedge rst) begin if (~rst) q<=2'b00; else
module MealyFsm(out,in,clk,rst);
output out;
input in,clk,rst;
reg [1:0] q;
always @(posedge clk or negedge rst) begin
if (~rst)
q<=2'b00;
else
begin
q[0]<=~q[0] & q[1] & x | ~q[0] & x | q[1] & x;
q[1]<= q[1] & ~q[0] & ~x | ~q[1] & q[0] | q[0] & ~x;
end
end
assign y = ~x & q[0] & ~q[1];
endmodule
另外,我只对这项技术感兴趣,如果它错了,请试着告诉我什么地方错了,以便从
在计算理论中,Mealy机器是一个有限状态
输出值由其当前状态决定的机器
和电流输入
假设输入在代码中被输入为x,那么模块是否符合定义
你有一些状态q。和一些输出y。您在或x中的输入直接影响输出。所以这符合粉状机器的定义
注:逻辑很难理解,状态的功能和流程也很难理解,有更好的方法来编写FSM,其中大部分是在单个模块中完成的。请使用模拟器来调试您的程序。我在FSM的理论视图中使用verilog。。我不需要答案来作弊、锻炼或诸如此类的事情。。我可以使用其他技术轻松地重写它。我只是好奇这一点,我找不到有关verilog教程,数字设计书或互联网的例子。如果你能问我的问题。。PS我在网吧工作,我不能下载编译器和模拟器。在这个例子中,你关于“in”的说法是对的,我只是写得很快,没有注意到我把它命名为“in:p”。关于这个问题,我只是好奇这种技术是否也正确,因为当你有每个D-flip-flip的下一个状态的方程时,写起来太容易了。否则,我将不得不为d触发器定义编写+1模块,或者为状态定义一些参数变量,并在always块中使用它们根据输入等技术在状态之间进行更改。无论如何,据我所知,这也是正确的,但不是最好的方法,因为很难理解和找到连接在stats和之间,这使得创建状态转换图变得更加困难。谢谢你的回答