Virex 시리즈에선 Timing Meet을 위해 IO단에 ODDR 과 IDDR 을 주로 사용해 왔다.
Kintex UltraScale 에서도 Virtex 의 ODDR과 IDDR같은 비슷한 것을 제공하긴 하는데
실은 OSERDES와 ISERDES 의 privitive를 약간 변형해서 사용자가 이전 primitive와 친숙 하도록 지원해준 것이다.
자세히 보면 이름이 다르다.
ODDRE1 (Out Double Data Rate)
IDDRE1 (Input Double Data Rate)
그런데 이름이 비슷하다고 Virtex 처럼 사용해도 될 것 같지만 이건 기능적으로 그렇단 이야기 이고,
사용 주파수가 200Mhz (400Mbps) 이상 이라면 얘기가 달라진다.
※ UltraScale 에서지원하는 ODDR Fmax 는 330~370Mhz 정도이니 참고.(그런데 이거 비추 이유는 나중에..)
UltraScale에선 Global Clock 을 Virtex 처럼 사용하려면 자기 Bank(사용하려는 IO Bank) 의 mmcm에
한번 넣었다 빼야 되는데, 이과정에서 FPGA model에 따라 다르겠지만 Clock 의 Trip Delay 가 약 7~8ns 에 육박한다.
그럼 단순히 iodelay를 적용하면 될거라 생각 하지만, 거지같게도 UltraScale에 IODELAY max range는 1.25ns 밖에 안된다. 1.25ns 를 넘어가려면 디지털 적인 단수를 밀어야 된다.
한마디로 Calibration을 해서 써라는 이야기 인데 ISERDES/OSERDES를 사용해야 된다는 얘기다.
SERDES를 연결할때도 위의 그림처럼 Clock 구성을 하지 않으면 Timing meet도 어려움을 겪게 된다.
그림에서 MMCM의 위치와 BUFG, BUFGCE_DIV를 주의깊게 봐야 한다.
'Xilinx FPGA' 카테고리의 다른 글
PCIe IP 생성 (0) | 2020.12.07 |
---|---|
VIVADO 에서 Digilent Cable을 2개 이상 연결시 FPGA down load (0) | 2020.09.23 |
VIVADO XDC Timing Clock Async. 지정 (0) | 2020.09.18 |
VIVADO Tool Input Timing constraint (0) | 2020.09.18 |
Kintex UltraScale IODELAY (0) | 2020.09.08 |