if statement

This is equivalent to using a continuous assignment with a conditional operator:

assign out = (condition) ? x : y;
However, the procedural if statement provides a new way to make mistakes. The circuit is combinational only if out is always assigned a value.

Always if - HDLBits (01xz.net)

 1 // synthesis verilog_input_version verilog_2001
 2 module top_module(
 3     input a,
 4     input b,
 5     input sel_b1,
 6     input sel_b2,
 7     output wire out_assign,
 8     output reg out_always   ); 
 9     always @(*)begin
10         if(sel_b1&&sel_b2) begin
11             out_always<=b;
12         end
13         else begin
14             out_always<=a;
15         end
16     end   //很奇怪,康华光书上并没有写end,是因为书上的例子只有always这一个模块吧
17     
18     assign out_assign=(sel_b1&&sel_b2)?b:a;
19 
20 endmodule

 再写:

不知道为什么当时很喜欢在组合里面用非阻塞……写的有点丑

posted @ 2023-04-19 23:46  江左子固  阅读(12)  评论(0)    收藏  举报