Как определить синхронные сбросы (в verilog) - PullRequest
0 голосов
/ 24 октября 2019

Я новичок в EDA, и у меня есть следующий код verilog, и мне нужно четко определить синхронный сброс.

module test(clk,d,rst,a);
  input clk,d,rst;
  output reg a;

  always @(posedge clk)
  begin
    if(rst)
      a <= 1'b0;
    else
      a <= 1'b1; // assigned to a constant
  end
endmodule

является "первым" сбросом (синхронным)?

1 Ответ

2 голосов
/ 25 октября 2019

Ниже приведен код с синхронной и асинхронной перезагрузкой.

//Synchronous Reset
module test(clk,d,rst,a);
  input clk,d,rst;
  output reg a;

  always @(posedge clk) //This clock makes the reset synchronized to a clock signal.
  begin
    if(rst)
      a <= 1'b0;
    else
      a <= 1'b1; // assigned to a constant
  end
endmodule

//Asynchronous
module test(clk,d,rst,a);
  input clk,d,rst;
  output reg a;

  always @* //No clock to synchronize with. 
  begin     //Reset signal will drive anytime a input value changes
    if(rst)
      a <= 1'b0;
    else
      a <= 1'b1; // assigned to a constant
  end
endmodule
...