a = b==1?1:
b==2?2:
b==3?3:
0
类似写法用case实现。
从代码上感觉前者是按顺序一级一级下来判断的,但是综合结果二者其实应该是一致的?是这样吗?
verilog中?:的写法和case写法,综合结果一样吗
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
老皮芽子 2023-06-02 17:37关注综合后是不一样的
用下面 4 种方式写的代码,综合后的结果如下module xxx1 ( output [7:0] a, input [7:0] b ); assign a = b == 1 ? 1: b == 2 ? 2: b == 3 ? 4:0; endmodule module xxx2 ( output [7:0] a, input [7:0] b ); reg [7:0] a; always@(*) begin case(b) 1: a <= b; 2: a <= b; 3: a <= b; default:a <= 0; endcase end endmodule module xxx3 ( output [7:0] a, input [7:0] b ); reg [7:0] a; always@(*) begin if(a<4) a <= b; else a <= 0; end endmodule module xxx4 ( output [7:0] a, input [7:0] b ); assign a = b < 4 ? b:0; endmodule


本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报