functional 에서는 상관이 없지만
timing 시뮬레이션을 돌리거나 보드에서 emulation 을 할때는
레지스터의 reset 신호를 줄때 주의해야 한다.
글로벌 reset ( hardware reset) 의 경우는 negedge 를 써서 async 로 reset 을 줘도 무방하지만
특정 state에서 나오는 reset control 신호의 경우는
clock sync 에 맞도록 입력을 해줘야 한다.
async 로 주게 되면 특정 경우에 reset 이 되버리는 결과를 초래한다.
위 2가지경우는 확실히 다르게 동작하는것을 알 수 있다.
별생각없이 아래방식으로 코딩을 했는데..결국 문제가 발생해서 열심히 노가다로 위 방식으로 바꿨다 -_-;
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
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
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가지경우는 확실히 다르게 동작하는것을 알 수 있다.
별생각없이 아래방식으로 코딩을 했는데..결국 문제가 발생해서 열심히 노가다로 위 방식으로 바꿨다 -_-;
'설계' 카테고리의 다른 글
| Astro 하기 전에 유의할 사항 (0) | 2008/06/03 |
|---|---|
| MPW pre-sim 완료. (0) | 2008/06/01 |
| 레지스터 reset 신호 줄때 주의점 (0) | 2008/06/01 |
| DC 합성중 하이닉스 라이브러리에서 사용못하는 셀 발견 (0) | 2008/05/29 |
| 8.1i Virtex-4 PAR - "ERROR:Place:645 - A clock IOB clock component is not placed at an optimal clock" (2) | 2008/05/29 |
| ISE 의 XST 와 Synplify 성능. (0) | 2008/05/29 |


