본문 바로가기

Xilinx FPGA

Kintex UltraScale 에서 SERDES 사용시 고려사항

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를 주의깊게 봐야 한다.