Menu
CoddyTech

回顾:时序控制

本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 72 课,共 90 课。

challenge icon

挑战

这个挑战会测试你对延迟、门延迟、赋值延迟、时间刻度和时钟生成的理解。

你需要做什么:

  1. 添加一个 timescale 指令,值为 1ns / 1ps
  2. 生成一个每隔 5 个时间单位切换一次的时钟
  3. 添加一个门延迟为 3 个时间单位的 AND 门
  4. 使用赋值延迟,在 2 个时间单位后将 a 赋给 b(立即读取 a)

亲手试试

// TODO: 添加时间刻度指令(1ns / 1ps)


module timing_challenge;
  reg clk;
  reg a, b;
  wire out;
  
  initial begin
    clk = 0;
  end
  
  // TODO: 生成每隔 5 个时间单位翻转一次的时钟信号
  
  
  // TODO: 添加延迟 3 个时间单位的与门(输入为 a、b,输出为 out)
  
  
  initial begin
    $monitor("Time %0t: clk=%b, a=%b, b=%b, out=%b", $time, clk, a, b, out);
    
    a = 1;
    
    // TODO: 使用赋值延迟,在 2 个时间单位后将 a 的值赋给 b
    // 现在读取 a,2 个时间单位后将其值赋给 b
    
    
    #20;
    $finish;
  end
endmodule

基础知识中的所有课

自己练习: Verilog 在线编译器