Verilog Mealy FSM带1个模块

时间:2013-02-04 19:06:53

标签: verilog fsm

我必须为1 mealy 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
      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

PS。我只对这种技术感兴趣,如果它错了请尝试告诉我什么是错的,以便解决它

1 个答案:

答案 0 :(得分:0)

来自Wikipedia

  

在计算理论中,Mealy机器是一种有限状态   输出值由其当前状态确定的机器   和目前的投入。

假设输入in在代码中被标记为x,那么模块是否符合定义?

你有一些州q。和一些输出y。您的输入in or x直接影响输出。所以这符合Mealy机器的定义。

NB:逻辑难以理解,状态的功能和流程很难看到,有更好的方法来编写FSM,其中大多数是在单个模块中完成的。