PayPal的个人空间 https://blog.eetop.cn/asic [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Verilog三段式状态机的学习

热度 18已有 2191 次阅读| 2021-10-6 22:44 |个人分类:菜鸟の新知识|系统分类:芯片设计

状态机主要由状态转移状态转移条件输出三部分组成,确定了这三部分基本上一个状态机就确定了。

以前学习的状态机都是两段式,但是比较复杂的状态机还是应该将三部分分开来实现,这样每部分的功能比较独立,验证和差错的时候比较容易;以后需要修改也非常方便。

 

状态转移部分比较固定,使用时序逻辑控制,一般为以下结构:

always @(posedge clk) begin

// 视情况需要复位的话补上复位

current_state <= next_state;

end

 

状态转移条件部分根据现态和输入(有些情况),用组合逻辑实现,一般为以下结构:

always @(*) begin // 组合逻辑建议使用@(*)

// 视情况需要复位补上复位

case (current_state)

s0: begin

// 视情况是否与输入有关

next_state = s1;

end

s1: begin

// 视情况是否与输入有关

next_state = s2;

end

default: begin

next_state = s0;

end

endcase

end

 

输出部分使用时序逻辑控制,一般以下结构:(此处的输出指现态、还没有跳到next_state时的输出)

always @(posedge clk) begin

// 视情况需要复位的话补上复位

case (current_state/next_state)

 // 注意这里的敏感列表可选current_state和next_state,区别仅仅是输出信号是否晚一个时钟周期

s0: begin

 

end

s1: begin

 

end

s2: begin

 

end

default: begin

 

end

endcase

end

// 常见的输出还可以用组合逻辑输出

4

点赞

刚表态过的朋友 (4 人)

发表评论 评论 (3 个评论)

回复 落雪听禅 2023-4-13 08:27
xxfx谢谢分享
回复 学名无他 2023-4-20 20:26
谢谢分享
回复 kkrish 2023-5-11 09:01
谢谢分享

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 4

    粉丝
  • 2

    好友
  • 13

    获赞
  • 6

    评论
  • 846

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-26 07:18 , Processed in 0.015913 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部