如果我希望语句并行执行,并在所有其他语句完成时执行另一条语句,例如:
task read;
begin
if (de_if==NOP) begin
dp_op <= 3'b000;
dp_phase = EXEC;
end
else begin
if (de_if==EXEC_THEN) begin
dp_const <= de_src3[0];
dp_src <= de_src3;
dp_op <= {NOP,de_ctrl3};
dp_dest <= de_dest1;
end
else if (get_value(de_ctrl1,de_src1)==dp_mem[de_src2]) begin
dp_const <= de_src3[0];
dp_src <= de_src3;
dp_op <= {NOP,de_ctrl3};
dp_dest <= de_dest1;
end
else begin
dp_const <= de_src4[0];
dp_src <= de_src4;
dp_op <= {NOP,de_ctrl4};
dp_dest <= de_dest2;
end
#1 dp_phase=READ;
end
end
endtask在这段代码中,我希望语句dp_phase = READ只在所有其他赋值完成后执行,我该怎么做呢?
正如你所看到的,我所做的是在分配之前等待一个时钟,但我不知道这是否是它是如何完成的……
发布于 2014-05-08 05:05:23
您需要一个状态机。这是让事情按特定顺序发生的规范方法。请记住,使用硬件描述语言与常规编程不同,language...you只是描述您希望硬件具有的那种行为。
要创建状态机,您需要一个状态寄存器,一个或多个触发器,用于跟踪您在所需的事件序列中所处的位置。触发器应该在时钟上升沿更新,但逻辑的其余部分可以是纯组合的。
https://stackoverflow.com/questions/23527289
复制相似问题