是的,大致想法是这样,但是领导要求子模块要用mrst。可以理解成子模块有一个系统复位信号mrst,同时还要有一个开始信号restart_evt(模块初始化,从初始状态重新运行),我有点不明白这样相当于有两个复位信号的模块,代码层面该如何实现。
想法1:
always @(posedge mclk or posedge mrst)
begin
if((mrst||restart_evt))
begin
xxx<=1'b0;
end
else
begin
...;
end
end
想法2:
always @(posedge mclk or posedge mrst)
begin
if(mrst)
begin
xxx<=1'b0;
end
else
begin
if(restart_evt)
begin
xxx<=1'b0;
end
else
begin
...;
end
end
end
想法3:
在状态机所有状态里加上
if(restart_evt)
begin
xxx<=1'b0;
end
else
begin
...;
end