'레지스터'에 해당되는 글 1건

  1. 2008/06/01 레지스터 reset 신호 줄때 주의점
STUDY/전공2008/06/01 17:07
functional 에서는 상관이 없지만

timing 시뮬레이션을 돌리거나 보드에서 emulation 을 할때는

레지스터의 reset 신호를 줄때 주의해야 한다.

글로벌 reset ( hardware reset) 의 경우는 negedge 를 써서 async 로 reset 을 줘도 무방하지만

특정 state에서 나오는 reset control 신호의 경우는

clock sync 에 맞도록 입력을 해줘야 한다.

async 로 주게 되면 특정 경우에 reset 이 되버리는 결과를 초래한다.

Ex) Sync reset

always @(posedge clk or negedge rst_n) begin
  if(!rst_n) a <= 0;
  else if (init_reg) a <= 0;
  else if (reg_we ) a <= b;
end


Ex) Async reset

assign tmp_rst_n = ~init_reg & rst_n;
always @(posedge clk or negedge tmp_rst_n) begin
  if(!rst_n) a <= 0;
  else if (reg_we ) a <= b;
end

위 2가지경우는 확실히 다르게 동작하는것을 알 수 있다.

별생각없이 아래방식으로 코딩을 했는데..결국 문제가 발생해서 열심히 노가다로 위 방식으로 바꿨다 -_-;
Posted by 영고니짱