2016년 1월 17일 일요일

[Xilinx] Reset Design 구현 시 꼭 고려하여야 할 ASYNC_REG

Reset Design 구현 시 꼭 고려하여야 할 ASYNC_REG에 대하여 알아보겠습니다.

Xilinx FPGA를 사용함에 있어 Reset Active High를 recommend한다.
하지만, PLL과 MMCM의 LOCK signal은 Low에서 clock output의 정상적인 동작이 되는 시점에 High가 된다. 이를 User Logic의 reset과 연동할 때, Low에서 High로 바뀌는 Lock signal을 High에서 Low가 되는 signal로 변경하여야 Reset Active High의 구조가 된다.
이 때, 아래의 code를 이용하여 사용하면 된다.


attribute ASYNC_REG : string;
signal sync_regs : std_logic_vector(2 downto 0);
attribute ASYNC_REG of sync_regs: signal is "TRUE";

process(clk)
begin
if rising_edge(clk) then
sync_regs <= sync_regs [1:0] & (not locked_pll);
end if;
end process;

reset <= sync_regs(2);


여기서 ASYNC_REG를 사용하지 않으면 위 Logic은 LUT의 shift-register로 구현된다.


지금까지 Reset Design 구현 시 꼭 고려하여야 할 ASYNC_REG에 대하여 알아보았습니다.

댓글 없음:

댓글 쓰기