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
D86C0986
ReplyDeleteMaraş
Tekirdağ
Sinop
Giresun
Manisa
Kütahya
Uşak
Çanakkale
Çankırı
AA9DE302
ReplyDeleteKırıkkale
Siirt
Uşak
Şırnak
Manisa
Muş
Elazığ
Artvin
Sinop