打印
[verilog]

三段式状态机的第一段和第三段可以是不同的时钟域吗?

[复制链接]
1110|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
502593045|  楼主 | 2014-8-4 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
三段式状态机示列如下:

//第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器
always @ (posedge clk or negedge rst_n)    //异步复位
if(!rst_n)
   current_state <= IDLE;
else
   current_state <= next_state;   //注意,使用的是非阻塞赋值

//第二个进程,组合逻辑always模块,描述状态转移条件判断
always @ (current_state)        //电平触发
  begin
    next_state = x;  //要初始化,使得系统复位后能进入正确的状态
    case(current_state)
    S1: if(...)
       next_state = S2;           //阻塞赋值
    ...
    endcase
end

//第三个进程,同步时序always模块,格式化描述次态寄存器输出
always @ (posedge clk or negedge rst_n)
...//初始化
case(next_state)
S1:
   out1 <= 1'b1;                //注意是非阻塞逻辑
S2:
   out2 <= 1'b1;
default:...      //default的作用是免除综合工具综合出锁存器
endcase
end


请问第一段和第三段可以用不同时钟域吗?谢谢

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

54

帖子

2

粉丝