我需要在verilog中按顺序执行一组代码 问题是我试图使用for loop / generate for循环进行循环。在for循环中,我坚信循环展开会发生,并且每件事都是并行发生的。能否请您建议如何实现for循环的顺序执行,以便我可以应用相同的概念来执行重复过程?或者是否有其他技术可用于实施顺序程序?我正在使用UART传输多字节数据的过程。
答案 0 :(得分:0)
在硬件中实现顺序过程的常用技术是使用case语句构建状态机。
integer state, next_state;
parameter S0 = 0, S1 = 1, S2 = 2;
always @(posedge clock) state <= next_state;
always @(*)
case(state)
S0: begin
// ... code for sequence 0
next_state = S1;
end
S1: begin
// ... code for sequence 1
next_state = S2;
end
S2: begin
// ... code for sequence 2
next_state = S0;
end
endcase
但是对于数据传输,这是一种非常低效的硬件使用。将您的数据视为工厂装配线上的汽车。虽然汽车在制造过程中经历了一系列连续的阶段,但工厂的每个阶段都在不同的汽车上经历相同步骤的重复系列,每个阶段并行工作。这就是你应该如何将硬件描述为综合工具。刚刚开始出现一些工具,它们采用顺序描述并对其进行并行化,但这些工具目前还远未普及。