Here is the simple code for comparing conditional operator and if statement.
Code:
module testing;reg foo;wire [3:0] c1,c2,c3;reg [3:0] a=1,b=3,cif1,cif2,cif3;assign c1 = foo ? a : b;
//equality
assign c2 = (foo==1) ? a : b;
//case equality
assign c3 = (foo===1) ? a : b;always@(foo or a or b) beginif (foo)cif1 = a;elsecif1 = b;
//equalityif (foo==1)cif2 = a;elsecif2 = b;//case equalityif (foo===1)cif3 = a;elsecif3 = b;endinitial begin$monitor("@%3t :: foo=%b, a=%x, b=%x, c1=%x, c2=%x, c3=%x, cif1=%x ,cif2=%x ,cif3=%x", $realtime,foo,a,b,c1,c2,c3,cif1,cif2,cif3); #10 foo=1;#5 a=a+1;#10 foo=0;#5 b=b+1;#10 foo=1;endendmodule
OUTPUT:
@ 0 :: foo=x, a=1, b=3, c1=X, c2=X, c3=3, cif1=3 ,cif2=3 ,cif3=3 @ 10 :: foo=1, a=1, b=3, c1=1, c2=1, c3=1, cif1=1 ,cif2=1 ,cif3=1 @ 15 :: foo=1, a=2, b=3, c1=2, c2=2, c3=2, cif1=2 ,cif2=2 ,cif3=2 @ 25 :: foo=0, a=2, b=3, c1=3, c2=3, c3=3, cif1=3 ,cif2=3 ,cif3=3 @ 30 :: foo=0, a=2, b=4, c1=4, c2=4, c3=4, cif1=4 ,cif2=4 ,cif3=4 @ 40 :: foo=1, a=2, b=4, c1=2, c2=2, c3=2, cif1=2 ,cif2=2 ,cif3=2
Based on the simulation, when the condition is X conditional operator outputs X whereas if statement outputs else part. Except this, moreover no difference in execution of these two.


7A4360A65A
ReplyDeleteBeğeni Satın Al
Düşmeyen Takipçi
Instagram Takipçi Kazan
AD85223A
ReplyDeleteÇanakkale Esçort
Tekirdağ Esçort
Afyon Esçort
Karaman Esçort
Kırıkkale Esçort
Kars Esçort
Elazığ Esçort
Adıyaman Esçort
Mardin Esçort