CoaXPress 표준 문서로 파헤쳐본 속도와 신뢰성의 비결
Vieworks
공장 자동화의 필수 요소 중 하나인 머신 비전은 디스플레이와 반도체 등 나날이 정교해지는 검사 대상에 발맞춰 더욱 빠르고 정확한 이미지를 제공해야만 한다. 이러한 요구에 따라 다양한 인터페이스가 개발되어 왔으며 그 중 최근에 개발된 CoaXPress(이하 CXP) 인터페이스가 빠르게 시장을 선점하고 있다.
기존에 Camera Link 등 여타 인터페이스를 취급하던 많은 사용자들은 이미 CXP 인터페이스로 교체를 서두르고 있는 상황이다. 그 이유는 바로 CXP 만이 가지고 있는 고속 전송과 높은 데이터 신뢰성 때문이다. 이러한 장점을 가질 수 있는 배경을 파악하기 위해선 CXP 표준 문서에 대한 심도 있는 이해가 필요하다.
CoaXPress Packet의 구성
CXP는 총 3개의 channel인 I/O, stream, control로 구성된다. I/O 채널에는 trigger와 trigger ACK(acknowledgement) 가 있으며, stream 채널에는 stream, control 채널에는 control command, control ACK(acknowledgement) 그리고 connection test가 있다.
Trigger packet은 특정한 동작을 발생시킴으로써 사용자가 원하는 시점에 맞춰 카메라에 image grab 신호를 전달한다. Stream packet은 카메라에서 PC로 이미지를 전송할 때 사용되며 control packet과 달리 한 방향 통신으로 ACK가 따로 없다. Control packet은 카메라의 설정을 변경할 때 이용하며 명령을 보내는 command와 그에 대한 대답인 ACK로 이루어져 있다.
Packet size는 control packet보다 stream packet이 더 크다. 카메라 제어를 위해 보내는 데이터 양 보다는 이미지를 보내는 데이터 양이 더 많아야 빠른 데이터 통신이 이루어지기 때문이다. 일반적으로 control packet은 1024 byte 용량을 가지며 stream packet은 8192 byte 용량을 가진다. 용량 설정은 카메라 및 frame grabber 설정에서 변경 가능하다. 마지막으로 connection test는 카메라 연결 시에 사용되는 채널이다.
고속 검사에 최적화된 인터페이스, CXP: Trigger Packet
다른 인터페이스는 따라하지 못하는 CXP 인터페이스만의 차별점은 빠른 전송 속도이다. 짧은 trigger latency를 강점으로 즉각적인 적용이 이루어져 고속 검사에 적합하다. 앞서 설명한 packet은 device(카메라)와 host(PC) 사이에서 전달된다. 카메라 제어를 원할 땐 PC에서 카메라로 control data를 보내고 이미지를 출력하고 싶을 땐 카메라에서 PC로 stream을 보낸다. 또한 trigger 제어가 필요한 경우엔 PC에서 카메라로 trigger 신호를 전송한다.
이때 중요한 점은 동시에 다수의 다른 packet을 전송하려고 시도하는 경우 가장 우선순위로 처리되는 packet은 ‘trigger’라는 점이다. 만약 카메라가 이미지 데이터를 PC로 전송하고 있는 상태에서 control data를 보내면 해당 한 장의 이미지 데이터는 모두 보낸 후에 control data가 보내진다. 그러나 만약 trigger를 보낸다면, 한 장의 이미지 데이터를 보내는 와중에 trigger가 적용된다. 이는 packet transmission priority를 따르며 CXP 표준에 근거한 내용이다.
다른 인터페이스 보다 짧은 Trigger Latency
CXP는 Camera Link, GigE 등 다른 인터페이스보다 훨씬 짧은 trigger latency를 갖고 있다. 아래 그림은 카메라 acquisition 제어가 필요한 경우 PC를 통해 trigger 신호를 전달받는 프로세스를 보여준다.
CXP의 trigger latency가 짧은 이유는 아래 두 가지 특징으로 요약할 수 있다.
1. 반응이 빠르다. Trigger가 들어오는 즉시 반응하여 카메라에게 전달한다.
2. 전송 속도가 빠르다. Trigger packet을 전송하는 속도가 빠르다.
빠른 반응 속도의 경우 표2에서 서술된 packet transmission priority에서 이유를 확인할 수 있다. 우선 순위가 가장 높기 때문에 어떠한 순간에도 즉각적으로 반영할 수 있다. 빠른 반응 속도의 배경은 아래 계산에서 찾을 수 있다.
Trigger packet 전송 시간(latency) = 7개 x 48 ns x 10 bit = 3.36 μs(@ 8 bit)
- Trigger timing packet 개수는 총 7개(녹색 박스)
- CXP의 up connection 속도는 20.83 ㎒ 이므로 1 packet을 보내는 데 걸리는 시간은 1/20.83 ㎒ = 48 ns
- 1 packet의 bit 수는 10 bit(8/10b encoding)
위의 수식을 통해 CXP의 trigger latency는 3.36 μs 라는 값임을 확인할 수 있다. Trigger latency가 100 μs 가량 되는 Camera Link, GigE와 비교하면 현저히 짧은 시간이다. 더구나 최근에 출시한 CoaXPress 2.0의 경우, up connection 속도가 CoaXPress 1.0 보다 2배 상승하여 41.6 ㎒에 달한다. 따라서 1 packet을 보내는 데 소요되는 시간은 24 ns가 되어 trigger packet latency가 1.68 ns라는 것을 알 수 있다.
이는 CXP 인터페이스가 real-time의 정확하고 높은 신뢰성을 요구하는 검사 application에 적합한 인터페이스임을 보여준다. 이처럼 CXP 인터페이스는 즉각적으로 반응하여 빠르게 전송하기 때문에 latency가 짧은 것이다. 그리고 이렇게 latency가 짧을수록 고속 검사 application에서는 여러 대의 카메라를 장비와 동기화 시키기에 적합하다.
고속 검사에서 중요시되는 데이터 신뢰성: Stream packet
CXP가 다른 인터페이스와 차별되는 또 다른 지점은 데이터 신뢰성에 있다. 중간에 소실되는 데이터가 없도록 패킷의 구성과 통신 방식 등을 우선적으로 고려하였다.
Stream packet의 구성
Stream data(이미지 데이터)를 전송하는 데 사용되는 stream packet은 크게 세 가지로 구성되어 있다. 아래 그림과 같이 SPH, stream data 그리고 SPT로 구성되어 있으며 packet의 기본 단위는 word이다.
SPH
Packet의 시작을 알리는 K코드와 한 stream내에서의 packet 번호를 나타내는 packet tag 등의 정보가 담겨 있다. 이중 중요한 정보는 packet tag이며, 중간에 누락되는 packet 번호가 존재하면 해당 packet 전송에 에러가 발생했음을 의미한다. Packet tag 번호 초기화는 CXP를 재연결하는 경우에만 발생하며 acquisition start, stop, 설정 제어 등으로는 초기화 되지 않는다.
Stream data
이미지 센서를 통해 획득한 이미지 데이터 정보는 카메라를 통해 PC로 전송된다. 이때의 이미지 데이터 정보가 stream data이다.
SPT
데이터의 오류 검출을 하는 CRC32 checksum과 packet의 끝을 알리는 K코드가 담겨 있다.
CXP 만의 Stream Integrity
위의 stream packet 구성을 토대로 CXP는 자신만의 통신 방식을 가지고 있다. 그리고 이러한 고유의 통신 방식은 높은 데이터 신뢰성의 기반이 된다. 가장 큰 장점은 한 번 보낸 packet data는 재전송 하지 않는다는 것이다. 이러한 방식은 packet loss혹은 bit error가 나지 않도록 데이터 전송에 있어 높은 신뢰성을 요구한다.
예컨대 GigE의 경우 data resend 방식을 이용하여 protocol의 복잡성을 증가시키며 real-time 처리에 능하지 않다. 이와 반대로 CXP 통신은 data resend 방식을 이용하지 않고 CRC32 checksum*을 통해 packet loss가 없는 환경을 만들어 높은 데이터 전송 신뢰성을 갖는다. 데이터를 재전송하지 않기에 데이터를 보낼 때 어떠한 loss도 발생하지 않도록 하는 것이 매우 중요하다.
그렇기 때문에 CXP의 링크 프로토콜은 packet 코딩을 신중하게 선택하여 주요 정보를 여러 번 전송하는 조합을 통해 단일 비트 오류에 영향을 받지 않도록 설계되었다. 그렇기에 packet loss가 발생할 확률이 매우 낮다. 또한 만약 packet loss 혹은 bit error가 발생하더라도 CRC32 checksum 방식을 사용하여 정밀한 에러 관리를 진행한다. 그렇게 감지된 에러는 피드백을 통해 해결되어 정보가 보호된다.
* CRC32 checksum은 Cyclic Redundancy Check(CRC) 방식 중에 CRC32 다항식을 적용하여 검증코드(checksum)를 취득하고 이를 통신에 적용하는 채널코딩 기술이다. 주로 데이터 전송 또는 저장 후에 발생할 수 있는 오류 등을 감지 또는 검증하는 데 사용된다. 이러한 CRC32 checksum은 packet의 끝을 알리는 K코드와 함께 SPT에서 진행되며 데이터 점검을 통해 데이터 신뢰성을 확보하는 역할을 한다.
뷰웍스와 CoaXPress
CXP는 다른 인터페이스와 다르게 빠른 반응 속도의 trigger를 제공하며 신뢰성 높은 stream channel을 구성하고 있다. 그렇기에 고속에서 높은 data 전송 신뢰성을 요구하는 반도체/PCB AOI, web inspection, 자동화 검사 장비 등에 사용되고 있다. 뷰웍스에서는 CXP 인터페이스의 장점을 기반으로 다양한 카메라 라인업을 제작하고 있다. Area scan 12 메가픽셀 카메라부터 152 메가픽셀의 고해상도 카메라까지 갖추고 있으며 고해상도 TDI line scan 카메라도 선보인다.
더불어 Matrox, Euresys, Active Silicon을 비롯하여 여덟 곳 이상의 frame grabber 제조사 보드와 높은 호환성을 자랑한다. CXP 표준에 관해선 매년 개최되는 CXP 정기 미팅에 참석하여 신기술을 누구보다 빠르고 안정적으로 적용하고 있다.
저자: Application Engineer 류은지
자료 제공: Vieworks(vision.vieworks.com)








