Menu
CoddyTech

Ôn tập về điều khiển thời gian

Thuộc phần Kiến thức nền tảng trong hành trình Verilog của Coddy. Bài học 72 trên 90.

challenge icon

Thử thách

Thử thách này kiểm tra mức độ hiểu của bạn về độ trễ, độ trễ cổng, độ trễ phép gán, thang thời gian và cách tạo xung clock.

Cần làm:

  1. Thêm chỉ thị timescale với giá trị 1ns / 1ps
  2. Tạo xung clock chuyển trạng thái sau mỗi 5 đơn vị thời gian
  3. Thêm cổng AND với độ trễ cổng là 3 đơn vị thời gian
  4. Dùng độ trễ phép gán để gán a cho b sau 2 đơn vị thời gian (đọc a ngay lập tức)

Tự làm thử

// TODO: Thêm chỉ thị timescale (1ns / 1ps)


module timing_challenge;
  reg clk;
  reg a, b;
  wire out;
  
  initial begin
    clk = 0;
  end
  
  // TODO: Tạo xung nhịp đảo trạng thái sau mỗi 5 đơn vị thời gian
  
  
  // TODO: Thêm cổng AND có độ trễ 3 đơn vị thời gian (đầu vào a, b, đầu ra out)
  
  
  initial begin
    $monitor("Time %0t: clk=%b, a=%b, b=%b, out=%b", $time, clk, a, b, out);
    
    a = 1;
    
    // TODO: Dùng độ trễ gán để gán a cho b sau 2 đơn vị thời gian
    // Đọc a ngay bây giờ, gán cho b sau 2 đơn vị thời gian
    
    
    #20;
    $finish;
  end
endmodule

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Verilog online