Menu
Coddy logo textTech

Итоги — управление таймингом

Часть раздела Основы путешествия по Verilog на Coddy — урок 72 из 90.

challenge icon

Задание

Это задание проверяет ваше понимание задержек, задержек вентилей, задержек присваивания, директивы timescale и генерации тактового сигнала.

Что нужно сделать:

  1. Добавьте директиву timescale со значением 1ns / 1ps
  2. Сгенерируйте тактовый сигнал (clock), который переключается (toggles) каждые 5 единиц времени (time units)
  3. Добавьте вентиль AND (gate) с задержкой вентиля в 3 единицы времени
  4. Используйте задержку присваивания (assignment delay), чтобы присвоить (assign) значение a переменной b через (after) 2 единицы времени (считайте (Read) a немедленно)

Попробуйте сами

// TODO: Добавить директиву timescale (1ns / 1ps)


module timing_challenge;
  reg clk;
  reg a, b;
  wire out;
  
  initial begin
    clk = 0;
  end
  
  // TODO: Сгенерировать clock, который переключается каждые 5 единиц времени
  
  
  // TODO: Добавить вентиль AND с задержкой 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: Использовать задержку присваивания, чтобы присвоить a в b через 2 единицы времени
    // Прочитать a сейчас, присвоить b через 2 единицы времени
    
    
    #20;
    $finish;
  end
endmodule

Все уроки раздела Основы