소프트웨어에서 반송파 위상 복구를 수행하는 방법은 무엇입니까?


13

소프트웨어에서 BPSK 신호의 위상을 복구하기위한 옵션은 무엇입니까? 온라인에서 찾을 수있는 유일한 리소스에는 회로도가 포함되어 있습니다. 아날로그 회로에 익숙하지 않은 사람들에게는 이것을 설명 할 사람이없는 것 같습니다.

캐리어 복구가 이론적으로 어떻게 작동하는지에 대한 설명이 필요하며 의사 코드 또는 코드 예제도 좋아할 것입니다.


일반적으로 BPSK 복조기와 같은 복잡한 코드 예제는 제공하지 않습니다.
Jim Clay

1
JimClay가 지적했듯이, 복조기를 구현하기위한 전체 소스 코드를 제공 할 충분한 시간을 가진 사람이 없을 것입니다. 그러나 개념을 이해하면 구현 작성 메커니즘이 쉬워야합니다. 일반적으로, 소프트웨어 수신기는 대응하는 하드웨어 기술 (예를 들어, 피드 포워드 비선형 성 기반 동기기 또는 피드백 PLL- 기반 접근법)과 유사한 구조를 가질 것이다. 타겟팅하려는 특정 토폴로지가 있습니까?
Jason R

귀하의 의견에 감사드립니다 @JimClay 및 JasonR – 소스 코드 작업을 요구하는 것은 아닙니다. 질문을보다 구체적으로 업데이트했습니다. 아날로그 회로 및 회로 다이어그램에 대한 이해를 전제로하지 않는 설명을 찾고 있습니다.
Keith

답변:


25

BPSK가 가장 간단한 위상 편이 키 신호를 복조하려면 반송파 주파수, 위상 및 심볼 타이밍을 복구해야합니다.

버스트 신호 일부 신호는 버스트되어 프리앰블 또는 미드 앰블이라는 알려진 데이터 시퀀스를 제공합니다 (버스트의 시작 또는 중간에 나타나는지 여부에 따라 다름). 복조기는 알려진 데이터 시퀀스를 "보고"일치하는 필터를 사용하여 버스트의 주파수, 위상 및 심볼 타이밍을 파악할 수 있습니다. 모든 버스트에 대해이 작업을 수행하며 버스트가 일반적으로 드리프트가 충분하지 않을 정도로 짧기 때문에 "드리프트"(복조기와 수신 된 신호 사이에 축적되는 점진적인 거리)에 신경 쓸 필요가 없습니다. 문제.

연속 신호 그러면 연속 신호가 있습니다. 일반적으로 신호를 잠그는 데 도움이되는 알려진 데이터 시퀀스가 ​​없으므로 신호를 잠근 후에도 드리프트에 대해 걱정할 필요가 있기 때문에 버스트 신호보다 복구하기가 더 어렵습니다. 연속 신호를 복구하는 데 주로 사용되는 주요 단계를 개략적으로 설명하려고합니다.

캐리어 복구

일반적으로 찾고자하는 신호의 주파수 또는 적어도 주파수 세트를 알고 있습니다. 그러나 이러한 지식이 있더라도 두 송신기가 동일한 주파수로 전송하지 않기 때문에 일반적으로 주파수 오프셋을 보정 할 수 있어야합니다. 항상 약간의 오차가 있습니다. 따라서 일반적인 방법은 신호가있을 것으로 생각되는 주파수를 혼합 한 다음 잔류 주파수 오류를 수정하는 것입니다. 이것은 Costas Loop 로 수행 할 수 있습니다또는베이스 밴드 신호 데이터의 제 4 전력을 취하고 주파수 스파이크를 찾는 것. 반송파 오프셋 * 4에서 주파수 스파이크가 있어야합니다 (예 : 데이터의 FFT를 4 차 전력으로 가져와 8300 Hz에서 주파수 스파이크를 보는 경우, 반송파 오프셋이 8300/4 = 2075 Hz임을 의미). 이것은 주파수 오프셋에서 초기 잠금을 얻는 매우 효과적인 방법입니다. 드리프트를 재실행하는 경우에도 드리프트를 보정하는 데 사용할 수도 있습니다. 나중에 만질 드리프트를 보상하는 또 다른 방법이 있습니다.

캐리어 단계

이 시점에서 복소수 평면에 복소수 데이터를 플로팅 한 경우 (x 축은 실제, y 축은 가상) 다음과 같이 보일 것입니다.

회전 된 BPSK

자세히 보면 흐릿한 선의 끝을 향한 두 개의 밀집된 영역을 볼 수 있습니다. 이것이 BPSK 별자리입니다. 사이의 점은 별자리 점 사이의 전환입니다. 심볼 타이밍이되면 이것들이 사라질 것입니다. 선이 비스듬한 이유는 반송파 위상 때문입니다. 음의 실수 값을 갖는 모든 점에 를 곱하여 신호를 미러링하여 측정 할 수 있습니다.ejπ

회전 및 미러링 된 BPSK

ejω

시끄러운 BPSK

데이터가 위상 수정되면 정보를 추가하지 않기 때문에 데이터의 허수 부분을 삭제할 수 있습니다.

심볼 타이밍

일반적으로 복조하려는 신호의 심볼주기를 미리 알고 있어야합니다. 그러나 심볼주기 / 주파수를 결정해야하는 경우 반송파 오프셋이 감지 된 방식과 유사한 방식으로 수행 할 수 있습니다. 심볼 주파수의 두 배로 주파수 스파이크가 발생하는 데이터를 제곱 할 수 있습니다.

캐리어와 마찬가지로 위상 (타이밍)을 올바르게 설정 한 다음 드리프트를 보상해야합니다. 이 두 가지 문제에 대한 일반적인 방법은 제로 크로싱을 찾는 것입니다. 노이즈가 상당히 나쁘지 않은 한, -1에서 1로 또는 1에서 -1 로의 심볼 전환 중간에 영점을 넘어야합니다. 노이즈가 심볼의 중간에서 이로 인해 발생하더라도 매우 자주 발생하지는 않습니다.

아이 다이어그램

위 그림은 보통 "눈 다이어그램"또는 "눈 패턴"이라고합니다. 폭은 두 개의 심볼 기간이며, 많은 심볼이 서로 "쌓여 있습니다". 오실로스코프에 익숙한 지 잘 모르겠지만 오실로스코프에서 이와 같은 그림을 보여줄 수 있습니다. 어쨌든, 두 개의 "X"는 심볼 전환입니다. X에서 하이 라인에서 로우 라인은 심볼이 1에서 -1로 전환 될 때이고, X에서 로우 라인에서 하이 라인은 심볼이 a -1에서 1로 전환 될 때입니다. 분홍색 선은 기호가 1 또는 -1인지 확인하기 위해 데이터를 샘플링하기에 최적의 장소입니다.

이와 동일한 기술을 사용하여 심볼 타이밍 드리프트를 처리 할 수 ​​있습니다. 이전 제로 크로싱과 제로 크로싱 이후 거리의 연속 평균을 취합니다. 두 평균이 거의 같으면 모두 좋습니다. 하나가 다른 것보다 큰 경우 샘플을 잡는 위치로 이동해야합니다.

올바른 포인트에서 심볼을 샘플링하면 데이터 포인트는 클래식 BPSK 성상 포인트와 같은 것을 얻을 수 있습니다.

시끄러운 BPSK 별자리

이게 도움이 되길 바란다.


이 멋진 포스트를 더 좋게 만들기 위해 심볼 타이밍 전에 클럭 복구 섹션을 추가 할 수 있습니까?
LWZ

나는 당신이 생각하고있는 것을 알고 있다고 생각하지만 확실하지 않습니다. 특별히 무엇을 염두에 두셨습니까?
Jim Clay

정말 고마워! 나는 제로 크로싱을 찾거나 x / y에 실제 / 가상을 이런 식으로 표시하는 것을 생각하지 않았습니다. 방금 위상 그래프를보고 모든 것을 동기화하는 방법이 궁금합니다. 다시 감사합니다!
Keith

@JimClay, Symbol Timing 섹션 의 시작 부분에서 "복조하려는 신호의 심볼주기를 알고 있어야합니다."라고 언급했으며, 이는 일반적으로 클럭 복구 장치에 의해 달성됩니다. 데이터와 함께 시계를 보내지 마십시오. BPSK 신호의 경우 신호를 제곱 할 수있어 데이터를 제거하는 것이 쉽습니다. 그런 다음 전력 스펙트럼을 살펴보면 클럭 톤 이라고하는 피크 주파수가 있어야합니다 .
LWZ

기호 빈도에 대한 단락을 추가했습니다.
Jim Clay
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.