다음의 Library를 code에 넣어 사용하면 됩니다.
u1 : oddre1
generic map (
is_c_inverted => '0', -- optional inversion for c
is_d1_inverted => '0', -- optional inversion for d1
is_d2_inverted => '0', -- optional inversion for d2
srval => '0' -- initializes the oddre1 flip-flops to the specified value ('0', '1')
)
port map (
q => do, -- 1-bit output: data output to iob
c => mmcm_clkout, -- 1-bit input: high-speed clock input
d1 => '1', -- 1-bit input: parallel data input 1
d2 => '0', -- 1-bit input: parallel data input 2
sr => '0' -- 1-bit input: active high async reset
);
아래는 RTL Schematic View로 살펴본 부분입니다. Old Device의 경우 ODDR을 사용하면 RTL View에서도 ODDR로 보여지는 것과 달리 UltraScale Device는 ODDR이 아닌 OSERDES를 사용한 것으로 보여집니다.
![]() |
클릭하시면 큰 그림으로 볼 수 있습니다. |
UltraScale Device를 사용할 경우, ODDR library에 대하여 보다 자세한 내용은 아래의 링크를 참고하세요.
UltraScale Architecture Libraries Guide UG974 (v2015.4) November 18, 2015 Page 308
UltraScale Architecture SelectIO Resources UG571 (v1.5) November 24, 2015 Page 152
아래의 링크를 클릭하면, 위 Design을 Vivado 2015.4로 구현한 Example Project file을 download 받을 수 있습니다.
example_clock_out
지금까지 ODDR library를 이용한 clock output 구현 방법을 알아보았습니다.
댓글 없음:
댓글 쓰기