Q.1) Explain $display, $monitor and $strobe?
Answer) All these commands have the same syntax.$display :- The $display displays once the value of parameters, when it is executed.
$strobe :- The $strobe displays the parameter at the very end of the current simulation time.
$monitor :- The $monitor displays once every time one of it's parameters changes.
The format string is same as that of C/C++.
Format characters include :
Decimal :- %d
Hexadecimal :- %h
Binary :- %b
Character :- %c
String :- %s
Time :- %t
Hierarchy Level :- %m
Syntax :-
$display("format_string", val1, val2,....)
$strobe("format_string", val1, val2, ...)
$monitor("format_string", val1, val2,.....)
Q.2) What is the difference between:
y = (sel)? i1 : i2; and if(sel) y = i1;
else y = i2;
Answer) The ternary operator "?" , merges the answer.Example : sel = 2'bx1; i1 = 2'b00; i0 = 2'b10;
y = 2'bx0;
The "if" treats "X" or "Z" as false values, so the answer always be in false condition, i.e. i2.
Q.3) What is the difference between equality operator (==) and case equality operator(===)?
Answer) The equality operator (==) can give the output 0,1 or X.Case equality operator (===) only gives the output TRUE (1) or FALSE (0).
If I1 = 3'bx01 ; I2 = 3'b1x0;
I1 == I2 gives 'X';
I1 === I2 gives '0';
Q.4) Explain the difference between task and function.
Answer)
Q.5) Write a verilog code to swap contents of two registers with and without a temporary register.
Answer) With temporary register :
always@(posedge clock)
begin
temp = b;
b = a;
a = temp;
end
Without temporary register :
always @(posedge clock)
begin
a <= b;
b <= a;
end
No comments:
Post a Comment