文章来源:FPGA入门到精通
互斥条件分支优先使用 case 语句
尽管当用互斥条件指定if-elsif-else语句和case语句等效,两者都会被综合为多路选择器(MUX),不再具有优先级,但仍建议优先使用case语句。
1、可读性与维护性
case语句的分支结构更直观,能够清晰地展示所有互斥的条件分支,结构清晰,易于阅读和理解。
2、综合优化优势
综合工具对case语句的优化通常更高效,能够直接生成结构更优的 MUX 电路,所有分支路径的延迟一致,避免了if-elseif-else可能带来的级联逻辑门导致的关键路径延长问题,同时在低功耗设计中,case语句的并行结构也能减少动态功耗。
3、代码简洁性
在多分支场景下,case语句的代码量更少,结构更清晰,例如:
// 使用case语句
always @(*) begin
case (sel)
3'b000: out = a;
3'b001: out = b;
3'b010: out = c;
3'b011: out = d;
3'b100: out = e;
default: out = 1'b0;
endcase
end
// 等效的if-elsif-else语句
always @(*) begin
if (sel == 3'b000)
out = a;
else if (sel == 3'b001)
out = b;
else if (sel == 3'b010)
out = c;
else if (sel == 3'b011)
out = d;
else if (sel == 3'b100)
out = e;
else
out = 1'b0;
end