全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

FPGA学习系列:9.简单状态机设计

时间:2018-06-01 16:59

人气:

作者:admin

标签:

导读:设计背景: 状态机是描述各种复杂时序的时序行为,是使用 HDL进行数学逻辑设计中非常重要的方法之一,状态机分为摩尔机和米粒机,当输出只和状态有关系的话称为摩尔机,当输出不...

设计背景:

状态机是描述各种复杂时序的时序行为,是使用HDL进行数学逻辑设计中非常重要的方法之一,状态机分为摩尔机和米粒机,当输出只和状态有关系的话称为摩尔机,当输出不仅和状态有关系也和输入信号有关系的时候称为米粒机,米粒机和摩尔机的电路原型我就不在这里给大家介绍了。

状态机是由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设计的状态进行状态的转移,是协调相关信号的动作,完成特定操作的控制中心。比如我们生活中遇到的问题,健康---感冒---健康,这个就是一个状态的转移图,从健康状态到感冒状态在到健康状态。

设计原理:

我认为对于我们初学者来说我们只要只要状态机就是当这个状态也就是当这个时钟来的时候发生这件事情,当下各时钟来的时候发生另一件事,也就是说发生这件事后,跳转下一个时钟发生另一件事情,两个事情发生没有关系。我们理解初学者理解这个就行了,不用理解高深的二段式,三段式。

我们会在下面的设计中用到简单的状态机让大家明白简单的状态机。

我们的设计也是一个流水灯,我们的设计是在复位的时候让4个等全熄灭,第一个上升沿点亮一个,第二个点亮下一个,依次类推。

我们的写法可以这样想,当第一个状态也就是一个上升沿点亮第一个灯,然后跳转下一个状态点亮第二个灯,第三个点亮下一个。。。。

设计架构图:

image.png 

设计代码:

设计模块

0moduleled_run (clk,rst_n,led);

1

2 inputclk,rst_n; //定义输入输出

3

4 outputreg[3:0]led;

5

6 reg[10:0]count; //定义一个时间寄存器

7 regclk_1hz; //定义一个时钟

8 reg[1:0]state;//定义状态

9

10 always@(posedgeclk)

11 if(!rst_n)

12 begin

13 clk_1hz <=1;

14 count <=0;

15 end

16 elseif(count <(5/1/2-1))//计数来产生一个时钟

17 count <=count +1'd1;

18 else

19 begin

20 count <=26'd0;

21 clk_1hz <=~clk_1hz;

22 end

23

24 always@(posedgeclk_1hz)

25 if(!rst_n)

26 led <=4'b1111; //复位熄灭4个灯

27 else

28 case(state)

29 0 : begin //第一个状态点亮第一个灯,然后跳转下 一个状态

30 state <=1;

31 led <=4'b1110;

32 end

33

34 1 : begin //2个状态点亮第2个灯,然后跳转下 一个状态

35 state <=2;

36 led <=4'b1101;

37 end

38

39 2 : begin //3个状态点亮第3个灯,然后跳转下 一个状态

40 state <=3;

41 led <=4'b1011;

42 end

43 3 : begin //4个状态点亮第4个灯,然后跳转0状态

44 state <=0;

45 led <=4'b0111;

46 end

47

48 default:state <=0;//否则跳转0状态

49 endcase

50

51endmodule

测试模块

0`timescale1ns/1ps//例化时标

1

2moduletb();

3

4 regclk,rst_n;

5 wire[3:0]led;

6

7 initialbegin

8

9 clk =1;

10 rst_n =0;

11

12 #200.1rst_n =1;

13

14

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信