原创 FSM状态的描述.(Verilog).(FSM)

2010-3-20 23:55 1081 2 2 分类: FPGA/CPLD

一. 方法
1. 直接使用整数码描述




...

reg [1:0] moore_state;

always @ (moore_state)
begin
  case (moore_state)
    0: ...;
    1: ...;
    2: ...;
    ...
  endcase
end


...








2. 利用parameter声明




...

input     a;
reg [1:0] mealy_state;

parameter S0 = 0;
parameter S1 = 1;
parameter S2 = 2;
...


always @ (mealy_state or a)
begin
  case (mealy_state)
    S0: ...;
    S1: ...;
    ...
  endcase
end

...





3. 使用`define定义



...


`define S0 2'b00;
`define S1 2'b01;
...

module MealyFSM(clk, rst_n, a, y);


...





二. 注意

1. 直接采用整数码描述状态, 可读性差, 不利于修改维护;

2. 使用parameter声明状态, 可读性好, 利于修改维护;

3. 使用`define定义状态, 虽然能实现同样的功能, 当所定义的是全局变量, 作用域从`define开始, 直至所有代码结束, 这样可能为设计带来麻烦和错误;
parameter的作用域则在模块内部, 因此不同的模块可以安全地使用同名的状态名.

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /3 下一条