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

2008-8-24 16:49 4070 6 7 分类: 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的作用域则在模块内部, 因此不同的模块可以安全地使用同名的状态名.

文章评论1条评论)

登录后参与讨论

用户461316 2008-8-25 14:05

任何一种语言都有他的编程规则!!!
相关推荐阅读
用户1373959 2009-11-17 22:44
本博客地址迁移.(公告)
迁移至:http://yuphone.cnblogs.com/...
用户1373959 2009-10-16 13:10
七段数码管动态显示IP的研究及设计.(Nios II)(SOPC Builder)
这两个礼拜整理的,欢迎大家抓虫。...
用户1373959 2009-10-16 13:00
sizeof()和strlen()的区别.(C)
#include <stdio.h>int main(void){  char msg[] = "Hello Nios!";    printf("sizeof(msg) = %ld", ...
用户1373959 2009-10-16 12:56
HAL的不同方式访问字符器件的空间开销简单比较.(Nios II)
Unix类型 #include "system.h"#include "fcntl.h"#include "unistd.h"int main(void){  int fd; // file desc...
用户1373959 2009-10-16 12:49
几个的Ubuntu 9.04好源.(Ubuntu)
新加坡国立大学理学院 - 全国通用deb http://ftp.science.nus.edu.sg/ubuntu/ jaunty main restricted universe multivers...
用户1373959 2009-05-05 10:43
NI Multisim 基础电路范例.(Multisim)
NI官网提供的NI Multisim Fundamental Circuits, 内容涵盖RLC电路, 二极管, 晶体管, 放大器, 运放, 滤波器和混合电路. 这些内容不仅可作为初学者的学习范例, ...
我要评论
1
6
关闭 站长推荐上一条 /2 下一条