BitSlip에 대한 이해 (understanding BITSLIP)

댓글 0

[FPGA]

2019. 12. 31.

understanding BITSLIP (one more time)

UPDATED 02-dec-2010:  Replaced all references to DIVCLK with CLKDIV.  Both terms are used in UG382

 (Clocking Resources), but only CLKDIV is used in UG381 (SelectIO Resources) and DS162 (Datasheet). 

 All my other posts in this thread have been updated as well.


이것은 스파르탄 6 ISERDES2 BITSLIP 기능을 이해하기위한 것이며,

BITSLIP 기능에 대한 비공식적이며 승인되지 않은 설명입니다.

Diagrams:

my corrections (markups) to UG381 Figure 3-1:

 

My attempt at reverse-engineering the BITSLIP 'black box':


 

 

My markups and corrections to UG381 Figure 3-2 (not very useful, but it corrects some misinformation)

UPDATED 23-Nov  Changed lines 3,5,7, & 9 to make bit numbering and ordering consistent with Fig 3-1:




OK, now for the text (BITSLIP 101):

 

 먼저 비트 직렬 데이터 전송률에서 word framing  문제를 설명하겠습니다. 

핀당 최대 1Gb / sec의 입력 직렬 데이터 스트림을 Spartan 6에서 지원합니다.
이러한 데이터 속도를 지원하는 IO 로직에는 IOCLK라고하는 일치하는 고주파 클록이 필요합니다.
이 클록은 직렬 입력 신호에서 FPGA로 파생됩니다.
높은 데이터 전송률을 처리하기 위해 Spartan 6 IO 회로는 대량의 FPGA 로직 (즉, 패브릭)보다
훨씬 높은 주파수에서 작동하도록 설계되었습니다.
패브릭 클럭 주파수의 상한은 IOCLK 주파수 제한보다 훨씬 낮습니다.
병렬 데이터 워드에서 올바른 word framing 을 감지하는 데 사용되는 데이터 디코더는 (느린)
FPGA 패브릭 로직에 내장되어 있습니다.
패브릭 클럭 속도로 작동하는 데 제약을받는 word framing logic은 종종 IO 섹션에서
직렬 속도 로직을 직접 제어 할 수 없습니다.
word framing logic은 deserialiser 블록을 제어하는 데 도움이 필요합니다.

BITSLIP 기능에는 병렬 워드 클럭 속도로 실행되는 병렬 워드 로직에 의해 FPGA 패브릭에서
생성 된 제어 신호를 수신하는 로직이 포함됩니다.
BITSLIP 기능 내에서 느린 입력 제어 신호는 IOCLK (비트 레이트) 클럭에 동기화되며 
word framing
수행하는 데 사용됩니다. 

BITSLIP의 작동 방식을 보려면 먼저 ISERDES2 블록 다이어그램을보십시오 (그림 3-1).
레지스터 B는 serial-bit-rate shift register Register A에 의해 공급되는 단일 IOCLK delay register에
지나지 않습니다.
N 클럭 사이클마다 한 번 씩만 데이터를 전송합니다 (여기서 N은 ISERDES2 출력의 병렬 워드 비트 폭입니다).
이것은 레지스터 B의 출력을 비트 레이트가 아닌 워드 레이트로 느리게합니다.

레지스터 B가 워드 경계에서 정확하게 샘플링하면 레지스터 B의 출력이 올바르게 워드 프레임됩니다.
BITSLIP은 레지스터 B의 출력이 정확하게 워드 프레임 될 때까지 패브릭 (사용자 로직) 제어 하에서
레지스터 B의 업데이트를 지연 시키도록 설계되었습니다.



참조 : https://forums.xilinx.com/t5/Spartan-Family-FPGAs-Archived/understanding-BITSLIP-one-more-time/td-p/105327