tailieunhanh - ECE 551 Digital Design And Synthesis: Lecture 6

ECE 551 Digital Design And Synthesis: Lecture 6 has many contents: while, repeat, forever loops, Loops in Verilog, Tasks in testbenches, Include Compiler Directives, Parallel blocks (fork/join), Named blocks (disabling of blocks), File I/O, Functions & Tasks,. | ECE 551 Digital Design And Synthesis Fall ‘09 Handy Testbench Constructs: while, repeat, forever loops Parallel blocks (fork/join) Named blocks (disabling of blocks) File I/O Functions & Tasks Administrative Matters Readings Chapter 7 (last part, if you haven’t read already) Chapter 8 (tasks & functions) Loops in Verilog We already saw the for loop: reg [15:0] rf[0:15]; // memory structure for modeling register file reg [5:0] w_addr; // address to write to for (w_addr=0; w_addr while loops Executes until boolean condition is not true If boolean expression false from beginning it will never execute loop reg [15:0] flag; reg [4:0] index; initial begin index=0; found=1’b0; while ((index repeat Loop Good for a fixed number of iterations Repeat count can be a variable but It is only evaluated when the loops starts If it changes during loop execution it won’t change the number of iterations Used in conjunction with @(posedge clk) it forms a handy & succinct way to wait in testbenches for a fixed number of clocks initial begin inc_DAC = 1’b1; repeat(4095) @(posedge clk); // bring DAC right up to point of rollover inc_DAC = 1’b0; inc_smpl = 1’b1; repeat(7)@(posedge clk); // bring sample count up to 7 inc_smpl = 1’b0; end forever loops We got a glimpse of this already with clock generation in testbenches. Only a $stop, $finish or a specific disable can end a forever loop. initial begin clk = 0; forever #10 clk = ~ clk; end Clock generator is by far the most common use of a forever loop Sequential vs Parallel . | ECE 551 Digital Design And Synthesis Fall ‘09 Handy Testbench Constructs: while, repeat, forever loops Parallel blocks (fork/join) Named blocks (disabling of blocks) File I/O Functions & Tasks Administrative Matters Readings Chapter 7 (last part, if you haven’t read already) Chapter 8 (tasks & functions) Loops in Verilog We already saw the for loop: reg [15:0] rf[0:15]; // memory structure for modeling register file reg [5:0] w_addr; // address to write to for (w_addr=0; w_addr while loops Executes until boolean condition is not true If boolean expression false from beginning it will never execute loop reg [15:0] flag; reg [4:0] index; initial begin index=0; found=1’b0; while ((index<16) && (!found)) begin if (flag[index]) found = 1’b1; else index = index + 1; end if (!found) $display(“non-zero flag bit not found!”); .

crossorigin="anonymous">
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.