Wednesday, 6 July 2016

Blocking (immediate) and Non-Blocking (deferred) Assignments in Verilog

Blocking assignments
  • Blocking assignments (=) are done sequentially in the order the statements are written.
  • A second assignment is not started until the preceding one is complete. i.e, it blocks all the further execution before it itself gets executed
    module Blocking(
       input a, // Assume a=1 initialized at time '0'
       input b, // Assume b=0 initialized at time '0'
       output reg c,
       output reg d
    );
     
    initial
    begin
        #50 c = a|b; // waits for 50 time units, and execute c = a|b=1
        d = c; // Time continues from last line, d=1=c at t=50
        c = #50 a&b; // Time continues from last line, a&b = 0 at t = 50, c = 0 = a&b at t=100
       #20 d = c; // Time continues from last line, waits for 20 time units. c = 0 at t = 120, d = 0 = c at t = 120
    end
     
    endmodule
     
     
    Non-Blocking assignments
    • Nonblocking assignments (<=), which follow each other in the code, are started in parallel.
    • The right hand side of nonblocking assignments is evaluated starting from the completion of the last blocking assignment or if none, the start of the procedure.
    • The transfer to the left hand side is made according to the delays. An intra- assignment delay in a non-blocking statement will not delay the start of any subsequent statement blocking or non-blocking. However normal delays are cumulative and will delay the output.
    • Non-blocking schedules the value to be assigned to the variables but the assignment does not take place immediately. First the rest of the block is executed and the assignment is last operation that happens for that instant of time.
     
     
     module Non_Blocking(
       input a, // Assume a=1 initialized at time '0'
       input b, // Assume b=0 initialized at time '0'
       output reg c,
       output reg d
    );
     
    initial
    begin
        c <= 0;
        #50 c <= a|b; // a|b executes at t=0 then wait for 50 units, and execute c=1
        d <= c; // The RHS value ‘c’ is ‘0’ at time t=0. Assignment time     continues from last line, d=0 at t=50
        c <= #50 a&b; // a&b=0 execute at t=0. For assignment time continues from last line, c=0 = a&b at t=100
    end
     
    endmodule

     
Q-1. What is meant by noise figure? What does it signify?
A : Noise Figure or NF is defined as the ratio of output noise power to the thermal noise in the input terminal at the standard noise temperature (290 K) or simply the ratio of input SNR to output SNR. It is a measure of degradation of Signal to Noise Ratio (SNR) which is caused by the components in RF (Radio Frequency) signal chain.
Q-2. What is Standing Wave Ratio (SWR)? SWR = 1 signifies?
A : SWR is used for impedance matching of load to the characteristic impedance of a transmission line carrying RF signals. SWR=1 signifies that the load impedance is equal to the characteristic impedance of the line.
Q-3. What is Voltage Standing Wave Ratio (VSWR) and Power Standing Wave Ratio (PSWR)?
A : SWR is generally used in terms of the maximum and minimum level of AC voltages in a transmission line thus called VSWR. PSWR is the square of VSWR as power is related to the square of voltage.
Q-4. Name a component that is generally used to sample a portion of energy transmitted in a line.
A : Directional Coupler.
Q-5. What is the change in transmitted power when modulation index in AM is changed from 0 to 1?
A : The transmitted power is decreased by 50%.
Q-6. When is FM equal to AM?
A : FM (Frequency Modulation) is equivalent to AM (Amplitude Modulation) when the FM index is very less than 1.