?

Log in

No account? Create an account
Третий вариант первого зачета для вводного курса по Verilog и FPGA - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Третий вариант первого зачета для вводного курса по Verilog и FPGA [Apr. 4th, 2015|08:45 am]
Yuri Panchul
Третий вариант из первого зачета с простыми вопросами, который я составил для вводного курса по Verilog и FPGA, который я помогаю преподавать в одном из местных университетов Тимуру Палташеву из AMD. Как вы можете увидеть, это все те же вопросы из моего же зачета для курса по SoC, но без ассемблера и общих вопросов об индустрии.

Я вообще собираюсь скинуть в ЖЖ все 5 вариантов + 40 индивидуальных заданий. Критика приветствуется. Также просьба пройти зачет в голосовалке и сказать мне, сколько это заняло.




1.3 Which waveform is the result of the simulation below?

module design (input a, input b, output o);

    assign o = a & b;

endmodule

module tb;

    logic a, b, o;

    design design_inst (a, b, o);

    initial
    begin
        $dumpvars;
        $monitor ("%t a %b b %b o %b", $time, a, b, o);

        #10;
        a = 0; b = 0; #10;
        a = 1; b = 0; #10;
        a = 0; b = 1; #10;
        a = 1; b = 1; #10;
    end

endmodule

a)



b)



c)



d)



e)



2.3 Which waveform is the simulation result of Verilog code below?

module dut
(
    input              clk,
    input        [7:0] d,
    output logic [7:0] q
);
    always @*
        q = d;

endmodule

module testbench;

    logic clk;
    logic [7:0] d, q;

    dut dut (clk, d, q);

    initial
    begin
       clk = 0;

       forever
           #10 clk = ! clk;
    end

    initial
    begin
        $dumpvars ();

        for (int i = 0; i < 10; i++)
        begin
            @(posedge clk);
            #15;
            d = i;
        end

        $finish;
    end

endmodule

a)



b)



c)



3.3 What schematics correspond to Verilog code below?

module dut
(
    input              clk,
    input        [7:0] d,
    output logic [7:0] q
);
    logic [7:0] r;

    always @(posedge clk)
    begin
        r <= d;
        q <= r;
    end

endmodule



4.3 What Finite State Machine (FSM) state diagram correspond to Verilog code below?

module dut
(
    input  clk,
    input  resetn,
    input  a,
    output b
);
    logic [1:0] state;

    always @(posedge clk)
        if (! resetn)
            state <= 0;
        else
            case (state)
            0: if (  a) state <= 1;
            1: if (! a) state <= 2;
            2: if (  a) state <= 3;
            3: if (! a) state <= 0;
            endcase

    assign b = (state == 2);

endmodule



5.3 What kind of delay is illustrated on the picture below (marked by "?")?

a) Propagation delay: tpd = max delay from input to output

b) Contamination delay: tcd = min delay from input to output

c) Skew: difference between two clock edges. The clock doesn't arrive at all registers at same time



6.3 What kind of timing constraint is illustrated on the picture below (marked by "?")?

a) Setup time: tsetup = time before clock edge data must be stable (i.e. not changing)

b) Hold time: thold = time after clock edge data must be stable

c) Aperture time: ta = time around clock edge data must be stable (ta = tsetup +  thold)

d) Tc = minimum and maximum delays between registers



7.3 Which rule for signal assignment is violated in the following code?

a) Synchronous sequential logic: use always @(posedge clk) or always_ff @(posedge clk)
and nonblocking assignments (<=)    

        always_ff @ (posedge clk)
		   q <= d; // nonblocking

b) Simple combinational logic: use continuous assignments (assign.)

             assign y = a & b; 

c) More complicated combinational logic: use always @* or always_comb and blocking assignments (=)

d) Assign a signal in only one always statement or continuous assignment statement

e) This code does not violate any rules for signal assignment

module isqrt
(
    input             clock,
    input             reset_n,
    input             run,
    input      [31:0] x,
    output reg        ready,
    output reg [15:0] y
);

    reg [31:0] m,  r_m;
    reg [31:0] tx, r_tx;
    reg [31:0] ty, r_ty;
    reg [31:0] b,  r_b;

    reg new_ready;

    always @*
    begin
        if (run)
        begin
            m  = 31'h4000_0000;
            tx = x;
            ty = 0;
        end
        else
        begin
            m  = r_m;
            tx = r_tx;
            ty = r_ty;
        end
    
        b  = ty |  m;
        ty = ty >> 1;
            
        if (tx >= b)
        begin
            tx = tx - b;
            ty = ty | m;
        end

        new_ready = m [0];
            
        m = m >> 2;
    end

    always @(posedge clock or negedge reset_n)
    begin
        if (! reset_n)
        begin
            ready <= 0;
            y     <= 0;
        end
        else if (new_ready)
        begin
            ready <= 1;
            y     <= ty [15:0];
        end
        else
        begin
            ready <= 0;

            r_m   <= m;
            r_tx  <= tx;
            r_ty  <= ty;
            r_b   <= b;

        end
    end

endmodule

8.3 Suppose you are using the following module
to generate low-frequency clock using 80 MHz clock.
What will be the resulting frequencies
of clock_for_debouncing and clock_for_display?

a) 47.6 Hz and 763 Hz
b) 95.3 Hz and 1.53 KHz
c) 76.2 Hz and 1.22 KHz
d) 7.63 Hz and 122 Hz
e) 23.8 Hz and 381 Hz

module clock_divider
(
    input  clock,
    input  reset,
    output clock_for_debouncing,
    output clock_for_display
);

    reg [19:0] counter;

    always @(posedge clock)
    begin
        if (reset)
            counter <= 0;
        else
            counter <= counter + 1;
    end

    assign clock_for_debouncing = counter [19];
    assign clock_for_display    = counter [15];

endmodule

9.3 What is the function of the resistor in this particular circuit?

a) To protect LED from excessive current
b) Pullup - to provide the default value 1 for the input
c) Pulldown - to provide the default value 0 for the input
d) All the above
e) This resistor does not have any function in this circuit



Test written by Yuri Panchul
Sources of pictures:

Slides from Steve Harris and Sarah Harris that accompany textbook
Digital Design and Computer Architecture, Second Edition by David Harris and Sarah Harris, 2012
http://tinkerlog.com/2009/04/05/driving-an-led-with-or-without-a-resistor/
http://learn.sparkfun.com/tutorials/pull-up-resistors
http://ieeetamu.org/mcc/wsref/



Впервые выложил на http://www.silicon-russia.com/2015/03/19/intro-rtl-design-for-fpga-using-verilog-midterm-exam-1-variant-3

Ссылка на версию для печати - http://silicon-russia.com/exams_and_quizes/2015_02_28_midterm/2015_02_28_midterm_3.html

Poll #2006622 Третий вариант первого зачета для вводного курса по Verilog и FPGA

1.3 Which waveform is the result of the simulation below?

a)
3(100.0%)
b)
0(0.0%)
c)
0(0.0%)
d)
0(0.0%)
e)
0(0.0%)

2.3 Which waveform is the simulation result of Verilog code below?

a)
2(66.7%)
b)
1(33.3%)
c)
0(0.0%)

3.3 What schematics correspond to Verilog code below?

a)
2(66.7%)
b)
1(33.3%)
c)
0(0.0%)

4.3 What Finite State Machine (FSM) state diagram correspond to Verilog code below?

a)
0(0.0%)
b)
2(66.7%)
c)
0(0.0%)
d)
1(33.3%)
e)
0(0.0%)

5.3 What kind of delay is illustrated on the picture below?

a) Propagation delay: tpd = max delay from input to output
1(33.3%)
b) Contamination delay: tcd = min delay from input to output
2(66.7%)
c) Skew: difference between two clock edges. The clock doesn’t arrive at all registers at same time.
0(0.0%)

6.3 What kind of timing constraint is illustrated on the picture below?

a) Setup time: tsetup = time before clock edge data must be stable (i.e. not changing)
0(0.0%)
b) Hold time: thold = time after clock edge data must be stable
2(66.7%)
c) Aperture time: ta = time around clock edge data must be stable (ta = tsetup + thold)
1(33.3%)
d) Tc = minimum and maximum delays between registers
0(0.0%)

7.3 Which rule for signal assignment is violated in the following code?

a) Synchronous sequential logic: use always @(posedge clk) or always_ff @(posedge clk) and nonblocking assignments
1(33.3%)
b) Simple combinational logic: use continuous assignments (assign...)
1(33.3%)
c) More complicated combinational logic: use always @* or always_comb and blocking assignments
1(33.3%)
d) Assign a signal in only one always statement or continuous assignment statement
0(0.0%)
e) This code does not violate any rules for signal assignment
0(0.0%)

8.3 What will be the resulting frequencies of clock_for_debouncing and clock_for_display?

a) 47.6 Hz and 763 Hz
1(33.3%)
b) 95.3 Hz and 1.53 KHz
0(0.0%)
c) 76.2 Hz and 1.22 KHz
2(66.7%)
d) 7.63 Hz and 122 Hz
0(0.0%)
e) 23.8 Hz and 381 Hz
0(0.0%)

9.3 What is the function of the resistor in this particular circuit?

a) To protect LED from excessive current
0(0.0%)
b) Pullup - to provide the default value 1 for the input
2(66.7%)
c) Pulldown - to provide the default value 0 for the input
0(0.0%)
d) All the above
1(33.3%)
e) This resistor does not have any function in this circuit
0(0.0%)



Было бы круто если бы кто-нибудь показал мне, как делать такие зачеты интерактивными, причем показал бы не ссылкой на сайт интерактивных экзаменов, а используя в качестве примера этот зачет. Я специально попросил не кидать мне ссылки, а показать на моем примере, потому что я уже опробовал несколько таких ссылок и во всех оказались проблемы либо с картинками в качестве ответов, либо с форматированием фрагментов кода.
LinkReply

Comments:
[User Picture]From: natoha
2015-04-04 05:07 pm (UTC)
кат!
(Reply) (Thread)
[User Picture]From: panchul
2015-04-04 05:34 pm (UTC)
за какое время вы прошли мой зачет?
(Reply) (Parent) (Thread)
[User Picture]From: sergegers1
2015-04-04 05:57 pm (UTC)
Не слишком ли сложно для Радуловой?
(Reply) (Thread)
[User Picture]From: panchul
2015-04-04 06:02 pm (UTC)
Как radulova узнала, что я готовлю новую российскую бизнес-визу, так резко начала фотографироваться в целях привлечения к себе внимания в предвкушении моей поездки в Москву в каком-то будущем:



Небось уже и новый рецепт борща под меня подстраивает, оптимизирует.
(Reply) (Parent) (Thread)
[User Picture]From: sergegers1
2015-04-04 07:03 pm (UTC)
Ого, она похудела, что-ли? Готовит себя к изматывающим любовным утехам.
(Reply) (Parent) (Thread)
[User Picture]From: con_vertor
2015-04-04 07:12 pm (UTC)
вопросы есть, спасибо, познавательно - а сам курс где-то есть в текстовом виде?
а то как же ответы списывать?
(Reply) (Thread)
[User Picture]From: panchul
2015-04-05 03:59 pm (UTC)
Через неделю-другую книжка Harris & Harris будет выложена на русском, можно ее использовать
(Reply) (Parent) (Thread)
[User Picture]From: urri_urri
2015-04-05 03:03 pm (UTC)
10 мин.
(Reply) (Thread)
[User Picture]From: panchul
2015-04-05 04:06 pm (UTC)
Хорошо. Один ответ неправильный, еще один - скорее неправильный (там может быть двусмысленность). Т.е. 7.5 из 9.
(Reply) (Parent) (Thread)
[User Picture]From: urri_urri
2015-04-06 07:57 am (UTC)
Да, опять.
Tsetup и Thold перепутал.
В 7 вопросе назначение сигнала b под always @* формально нарушает правило b, хотя в этом и нет ничего страшного. Кроме того под
always @(posedge clock or negedge reset_n)
сигналы
r_m
r_tx
r_ty
r_b
не участвуют в асинхронном сбросе, что может привести к синтезу лишней логики и, если сигнал reset_n исключен из временного анализа, как асинхронный, то к ошибкам.
Но такого рода ошибок в списке нет.
Что-то упустил?
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2015-04-06 06:19 pm (UTC)
Да, вы правы, все r_* стоит включить в ресет. Спасибо за замечание.
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2015-04-06 11:06 pm (UTC)
Хтя с другой стороны, r_m, r_tx, r_ty, r_b - это не control signals, а datapath signals, им делать reset необязательно, по крайней мере у нас в компании делают не всегда. Таким образом можно съэкономить area.
(Reply) (Parent) (Thread)
[User Picture]From: urri_urri
2015-04-07 07:21 am (UTC)
В этом случае их надо вынести в другой always@(posedge clock) без асинхронного сброса. Иначе может получится не экономия area, а странная комбинаторная логика на входе регистра. Зависит от синтезатора.

Edited at 2015-04-07 08:40 am (UTC)
(Reply) (Parent) (Thread)
(Deleted comment)
From: ganivani
2015-06-06 08:30 am (UTC)

Correct answers

Hey Yuri
Can you post the correct answers

Edited at 2015-06-06 08:36 am (UTC)
(Reply) (Parent) (Thread)