verilog / systemverilog-在两个Always块之间阻塞语句的行为是什么?

英里·谢尔曼

我想知道以下代码的行为。总有两个模块,一个是组合来计算next_state信号,另一个是顺序的,它将执行一些逻辑并确定是否关闭系统。它通过将shutdown_now信号设置为高电平然后调用来完成此操作state <= next_state

我的问题是,如果在线路shutdown_now之前以阻塞的方式设置信号(在时钟周期n内)的条件成立,那么state <= next_state时钟周期n + 1内的状态是否为SHUTDOWNRUNNING换句话说,shutdown_now = 1'b1由于state信号通过next_state确定而依赖于该状态,因此该线路是否在两个状态机上都处于阻塞状态

 enum {IDLE, RUNNING, SHUTDOWN} state, next_state;
 logic shutdown_now;

 // State machine (combinational)
 always_comb begin
    case (state)
       IDLE: next_state <= RUNNING;
       RUNNING: next_state <= shutdown_now ? SHUTDOWN : RUNNING;
       SHUTDOWN: next_state <= SHUTDOWN;
       default: next_state <= SHUTDOWN;
    endcase
 end

 // Sequential Behavior
 always_ff @ (posedge clk) begin
    // Some code here
    if (/*some condition*/) begin
       shutdown_now = 1'b0;
    end else begin
       shutdown_now = 1'b1;
    end
    state <= next_state;
 end
青色

Miles,实际上您只有一个状态机,这就是always_comb块中的代码。always_ff只是创建一个寄存器来保存您的状态。

现在编写代码的方式将按照以下顺序执行关闭:

  • 周期n:always_ff块中的逻辑将确定是否应该执行关闭操作,并计划shutdown_now信号在下一个时钟滴答中声明。
  • 周期n + 1:shutdown_now置为有效,状态机(当前为RUNNING)将next_state设置为SHUTDOWN。
  • 循环n + 2:现在您的状态机将处于SHUTDOWN状态。

不确定是否需要在always_ff块中包含关闭逻辑。如果将代码移至always_comb块,则可以将其余代码保持不变,并且状态机将在周期n + 1中移至SHUTDOWN状态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Verilog / SystemVerilog推断出case语句中的闩锁

来自分类Dev

Verilog / SystemVerilog推断出case语句中的闩锁

来自分类Dev

组合电路,Verilog或SystemVerilog中的互连模块

来自分类Dev

是否可以为Verilog模块的Modport创建SystemVerilog包装器?

来自分类Dev

是否可以为Verilog模块的Modport创建SystemVerilog包装器?

来自分类Dev

Verilog中的Always语句

来自分类Dev

在SystemVerilog中,(。*)是什么意思?

来自分类Dev

“ :: *”在SystemVerilog中是什么意思?

来自分类Dev

“ ref”在systemverilog中是什么意思?

来自分类Dev

系统Verilog时钟块

来自分类Dev

ANTLR Verilog @(*)匹配两个令牌

来自分类Dev

Verilog $ signed(),这是什么?

来自分类Dev

verilog中的>>>符号是什么?

来自分类Dev

写入时钟块之前的SystemVerilog计算

来自分类Dev

SystemVerilog程序块与传统测试台

来自分类Dev

在父级执行阻塞语句后执行Systemverilog生成的进程

来自分类Dev

SystemVerilog生成语句中的变量分配

来自分类Dev

systemverilog中的组合逻辑“ IF”和“ assign”语句

来自分类Dev

systemverilog中的over reg有什么优势?

来自分类Dev

Verilog分配语句结果检查

来自分类Dev

If语句Verilog中的多个条件

来自分类Dev

Verilog If 语句 - 信号不是常数

来自分类Dev

在verilog或系统verilog中在case语句中生成块

来自分类Dev

在Verilog或系统Verilog中在case语句中生成块

来自分类Dev

systemverilog中“新”和“虚拟”的目的是什么?

来自分类Dev

SystemVerilog界面中modport的优点和动机是什么?

来自分类Dev

Verilog中的Z代表什么?

来自分类Dev

#`DEL在Verilog中是什么意思?

来自分类Dev

#1在verilog中是什么意思?

Related 相关文章

热门标签

归档