[HAM] Hermes Lite 2의 디지털 직접 변환(Digital Direct Conversion) [1/2]
------------------------
목차
[1부]
개요
openHDSDR 구성
디지털 주파수 변환
아날로그 디지털 변환
[2부]
주파수 변환 디지털 하드웨어: NCO와 곱셈기
------------------------
개요
Hermes Lite 는 SDR 무전기다. 홈페이지 http://www.hermeslite.com/ 에 소개된 글을 보면,
The Hermes-Lite is a low-cost direct down/up conversion software defined amateur radio HF transceiver based on a broadband modem chip and the Hermes SDR project. It is entirely open source and open hardware, including the tools used for design and fabrication files. Over 500 Hermes-Lite 2.0 units have been successfully built.
요약하면,
1. 광대역 모뎀 칩을 채택한 직접 변환 소프트웨어 정의 단파대역 아마추어 무선 송수신 장비
2. 하드웨어는 물론 소프트웨어 그리고 디지털 전용 칩 FPGA의 소스와 제작에 필요한 파일들 까지 완전히 공개된 개방 프로젝트
3. 현재 2.0 버전까지 나왔고 약 500여대가 성공적으로 제작(판매)되었다.
무료 개방 반도체 운동(Free and Open Source Silicon Movement) 2019년 Latch-Up 총회에서 발표된 내용을 들어보자. 다른 SDR 과는 다르게 요즘 아주 흔한 케이블 고속 모뎀 칩을 썼고 아날로그 믹서 없이 디지털 직접변환 방식을 사용했다고 한다. 마이크로 프로세서나 신호처리 프로세서 없이 FPGA 만 사용 되었다고 한다.
[출처] Hermis Lite 2 at Latch-Up Conference, 2019, https://youtu.be/qlgq52IIUo8?si=O8u9gRrJyMPUFxOa
[참고] 무료 개방 반도체 운동(Free and Open Source Silicon Movement), https://fossi-foundation.org/ : 이런 총회가 열리고 후원 재단이 있다는 게 부럽다!
개방 프로젝트(open source project)라고 하지만 이미 완성되어 상업화된 경우 제작도면까지 완전히 공개되었더라도 그 내용을 알아보기는 매우 어렵다. 오랜기간 동안 여러 사람들이 참여한 까닭에 세밀히 따라가기는 불가능 하다. 그래서 상업화를 위해서는 개발노트와 기술 이전이 필요한데 취미용 개방 프로젝트에 그럴 이유도 없고 그리 해줄 리도 만무하다. 그냥 완전히 베껴 제작하려면 재현은 될 테지만 그러느니 그냥 구입하는게 훨씬 좋을 것이다.
* 2023년 9월 현재 Magerfab ( https://www.makerfabs.com/hermes-lite-2.html )에서 보드만 약 300달러에 판매 중
이 프로젝트에 관심을 가지게 된 것은 아마추어 무선사로서 SDR 통신장비에 관심이 있기도 했지만 "디지털 직접변환(Digital Direct Conversion)에 기반을 둔"이라는 문구 때문이다. 공개되었다는 소스를 찾아보기로 했다.
Hermes Lite 2, https://github.com/softerhardware/Hermes-Lite2
소스는 세개의 폴더에 정리되어 있는데, 기판 제작 자료를 모아 놓은 hardware, PC에서 작동할 소프트웨어의 소스를 모아 놓은 software 그리고 FPGA에 들어갈 반도체 설계용 베릴로그는 gateware에 있다. PC에서 작동할 소프트웨어는 파이썬과 C++로 작성되었는데 openHPSDR 프로젝트의 Thetis 라는 프로그램의 부속 모듈로 수정한 것으로 보인다. 수정된 설치파일은 아래 링크에서 받을 수 있다.
openHPSDR Thetis, https://github.com/TAPR/openhpsdr-thetis/releases
이 소프트웨어에 방대한 량의 DSP 라이브러리의 C/C++ 소스가 함께 공개되어 있다. DSP 라이브러리는 나중에 살펴 보기로 하고 "직접 변환"을 수행하는 FPGA의 디지털 회로를 살펴보기로 한다.
openHDSDR 구성
Hermes Lite 2 보드를 제작하기 위한 github 에는 소스 파일만 있고 문서가 없다. 이 SDR 무전기의 전체 구성을 보려면 openHPSDR Thetis의 메뉴얼에 아래와 같은 계통도를 보자.
[출처] Thetis Manual, p.7, https://github.com/TAPR/OpenHPSDR-Thetis/blob/master/Documentation/Radio/Thetis%20manual_1.1.pdf
청색 바탕 부분이 Hermis Lite 2 보드에 해당한다. 그 중 녹색 바탕 부분이 FPGA다. 이더넷 컨트롤러 인터페이스(Ethernet)와 디지털 변환(Digital Up/Down Conversion)을 수행하는 블록이 있을 뿐이다. 그중 무선 통신의 변조에 해당하는 '디지털 업/다운 변환기(Digital Up/Down Convert)' 만 살펴보자.
디지털 주파수 변환 (Digital Up/Down Conversion)
베릴로그(Verilog)라는 디지털 회로 설계용 언어로 작성된 디지털 변환기가 FPGA에 구현되었다. 디지털 변환기(Digital Up/Down Converter)는 아날로그 회로로 치면 믹서(mixer)다. 높은 주파수의 전파 신호원에 고정 주파수의 신호를 곱하여 낮은(혹은 높은) 주파수 대역으로 변환하는 장치다. 수신을 위해 이런 다운 변환을 한다. 물론 송신을 위해서 그 반대로 업 변환 한다.
직접 변환기는 전파 신호원에 고정 주파수의 정현파를 한번 곱하여 곧장(=직접) 베이스밴드(base band)로 끌어내린다. 베이스밴드는 정보를 표현한 주파수 대역이다. 정보가 음성이라면 베이스밴드의 주파수는 0Hz, 대역폭은 2.4Khz(SSB 기준)다.
믹서 회로를 수학으로 풀어보면 두 정현파의 곱이다. 우리는 이미 고등학교 수학 과정에서 두 삼각함수의 곱으로 주파수 변환을 할 수 있다는 것을 배웠다[삼각함수 덧셈정리].
* 주파수가 x와 y인 두 정현파를 곱하면 주파수가 (x-y)인 정현파와 (x+y) 정현파가 나온다.
'디지털 업/다운 변환(Digital Up/Down Conversion)'이라는 표현에서 '주파수'가 생략되었다. '디지털 주파수 업/다운 변환(Direct Digital Frequency Up/Down Conversion)'이라고 해야 겠지만 너무 길다. 무엇을 높이거나 낮출 것인지 알기 때문에 줄여서 '업/다운 변환'이라고 한다. 또는 '주파수 변환'이라고 하자. 송신은 주파수가 높아지는 쪽으로, 수신은 주파수가 낮아지는 쪽으로 변환 한다.
'직접 디지털 변환(Direct Digital Conversion)' 에서 '직접(direct)'는 원하는 베이스밴드로 바꾸는데 한번의 주파수 변환 만 거치겠다는 뜻이다. 그리고 디지탈(digital)'은 바꾸는 방법이 아날로그 믹서회로 대신 숫자화된 정현파의 곱셈으로 대신 하겠다는 뜻이다. 위의 계통도를 보면 주파수 변환은 가변 주파수(VFO Tune)와 곱하여 곧장 베이스밴드 주파수로 바꾼다. 추가 국부발진기(Lo) 따위는 없다.
아날로그-디지탈 변환(Analog-to-Digital Conversion)
신호의 값(전압)을 표현하는 방법은 아날로그와 디지털이 있다. 예전에는 신호값을 디지탈로 표현하지 않았다. 그럴 필요가 없었기 때문이다. 20세기 들어와 전자 계산기가 발명되고 널리 쓰이게 되었다. 계산을 빠르게 대행해 주는 전자기기다. 이 전자기기는 신호의 전압 값을 숫자로 표현해 주어야 한다. 신호전압을 2진수 숫자로 변환해 주는 장치를 ADC(Analog-to-Digital Conversion)라고 한다. 앞서 말한 '변환'은 주파수를 의미하지만 여기서 말하는 '변환'은 신호의 표현 방식을 바꿔 준다는 뜻이다.
디지털 값으로 취하는 시간 간격을 샘플 주파수라고 한다. 샘플 주파수는 취하려는 신호의 주파수 대역의 2배여야 한다. 한 주기 내에 두곳의 극점을 갖는 정현파의 특성을 고려해야 하기 때문이다. 단파대역의 신호를 모두 취하려면 30Mhz의 두배인 60Mhz의 샘플 주파수를 가지고 값을 취해야 한다. 초당 6천만개의 디지털 값이 생산된다.
반도체 제조 기술이 발전하고 이에 더블어 아날로그 전송선로에 디지털 데이터를 빠르게 주고 받기위한 데이터 형식 변환 칩의 수요가 증가했다. 디지털 데이터를 아날로그로 바꾸는 DAC, 아날로그 신호를 디지털 데이터로 바꾸는 ADC 가 모두 내장된 칩이 흔해졌다. Hermes Lite 2 보드에 사용한 AD9866 칩도 그중 하나다. 아날로그 선로에 디지털 데이터를 송수신하기 위해 양방향 변환기가 모두 들어 있어서 모뎀(MODEM, Modulation-Demodulation) 칩이라고 한다.
원래 케이블 모뎀(유선 고속 전송선로)에 사용하던 칩인데 변환 속도(샘플링 주파수)가 80MSPS(초당 생플속도)에 달하며 광대역 증폭기와 필터를 내장하고 있으니 30Mhz에 불과한 단파대역을 그대로 수용할 수 있다. 실제 Hermes Lite 2 의 회로도를 보면 수신 안테나를 AD9866에 바로 연결한다.
아마추어 무선통신은 세상이 디지털화 하면서 널리 보급된 각종 반도체 부품의 혜택을 톡톡히 보는 취미다.
----------------------------------------------------------------
[2부 계속]
주파수 변환 디지털 하드웨어: NCO와 곱셈기
FPGA 내에서 하는 일을 수신 위주로 살펴보자. AD9866 모뎀칩에서 디지털로 표현이 바뀐 전파신호는 디지털로 표현된 정현파와 곱해진 후 필터를 거쳐 이더넷(랜 케이블)을 통해 PC로 전송된다. PC는 주파수 변환된 디지털 데이터를 가지고 복조를 수행하고 그 소리를 들려준다.
디지털로 표현이 바뀐 전파신호는 디지털로 표현된 정현파와 곱하여 주파수 변환을 수행한다. 위의 수식에서 보인 대로 곱셈이다.
반송파는 장현파 π/4 주기를 256 등분하여 롬(ROM)에 미리 저장해 두었다가 목표 주파수의 주기에 맞춰 생성한다. Hermes Lite 2의 베릴로그에 기술된 정현파 롬 테이블을 그려보면 아래와 같다.
여기에서 짚고갈 것은 NCO(Numerically Controlled Oscillator)는 DDS(Direct Digital Synthesis)와는 전혀 다른 것이다. DDS 는 생성 주파수를 결정하는 제어 방식이 숫자라는 뜻이지 생성되는 정현파는 아날로그 파형이다. NCO는 정현파를 생성하긴 하는데 숫자가 출력된다.
DDS(Direct Digital Synthesis) Tutorial
- Introduction, https://www.digikey.kr/ko/ptm/a/analog-devices/direct-digital-synthesis-tutorial-series-1-of-7-introduction/tutorial
- The Accumulator, https://www.digikey.kr/ko/ptm/a/analog-devices/direct-digital-synthesis-tutorial-series-2-of-7-the-accumulator/tutorial
- Analog to Amplitude Converter, https://www.digikey.kr/ko/ptm/a/analog-devices/direct-digital-synthesis-tutorial-series-3-of-7-angle-to-amplitude-converter/tutorial
- Digital to Analog Converter, https://www.digikey.kr/ko/ptm/a/analog-devices/direct-digital-synthesis-tutorial-series-4-of-7-digitaltoanalog-converter/tutorial
- Digital to Analog Reconstruction, https://www.digikey.kr/ko/ptm/a/analog-devices/direct-digital-synthesis-tutorial-series-5-of-7-digitaltoanalog-reconstruction-filter/tutorial
- Sinc Envelope Correction, https://www.digikey.kr/ko/ptm/a/analog-devices/direct-digital-synthesis-tutorial-series-6-of-7-sinc-envelope-correction/tutorial
- DDS in Action, https://www.digikey.kr/ko/ptm/a/analog-devices/direct-digital-synthesis-tutorial-series-7-of-7-dds-in-action/tutorial
NCO(Numerically Controller Oscillator)
- Numerically Controller Oscillator, https://en.wikipedia.org/wiki/Numerically_controlled_oscillator
- LatticeSemi NCO IP, https://www.latticesemi.com/Products/DesignSoftwareAndIP/IntellectualProperty/IPCore/IPCores02/NumericallyControlledOscillator.aspx
- NCO User's Guide, https://www.latticesemi.com/view_document?document_id=9193
<계속>
Hermes Lite 2(HL2) Presentation
https://youtu.be/Md17POaW14U?si=YXbBai35ZiFHCOU5&t=372
[참고]
1] DDC 구현, https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jinohpark79&logNo=110189214821
2] 14. 디지털 신호처리 응용, https://slidesplayer.org/slide/14919006/
3] Cascadeed Integrator-Comb Filter, https://en.wikipedia.org/wiki/Cascaded_integrator%E2%80%93comb_filter
4] CIC Compiler, https://www.xilinx.com/products/intellectual-property/cic_compiler.html
5] LogiCore IP CIC Compiler, https://docs.xilinx.com/v/u/en-US/cic_compiler_ds613
--------------------------
Cross-Frequency Coupling (What Hibert Transform Do ?), https://www.youtube.com/playlist?list=PLwojXY7eCqPBPsPjfTZ9NmJhQ0737WZkB
What are Transfer Functions? | Control Systems in Practice, https://www.youtube.com/watch?v=2Xl7--Df3g8
Transfer Function (Solved Problem 1), https://youtu.be/tWQubGjDY48?si=dXp64GSp2cxS_kkB
Transfer Function, https://en.wikipedia.org/wiki/Transfer_function
전달함수, https://m.blog.naver.com/spacebug/220646996266
ObserVIEW 전달함수란?, https://famtech.tistory.com/97
[제어공학] 전달함수(transfer function)의 영점(zero)과 극점(pole), https://study2give.tistory.com/entry/%EC%A0%9C%EC%96%B4%EA%B3%B5%ED%95%99-%EC%A0%84%EB%8B%AC%ED%95%A8%EC%88%98transfer-function%EC%9D%98-%EC%98%81%EC%A0%90zero%EA%B3%BC-%EA%B7%B9%EC%A0%90pole
Transfer Function 전달 함수, http://www.ktword.co.kr/test/view/view.php?m_temp1=3729
Laplace Transform 라플라스 변환, http://www.ktword.co.kr/test/view/view.php?m_temp1=1236&id=146
전달함수에 대해 알아보자, https://circuit-designer.tistory.com/entry/%ED%9A%8C%EB%A1%9C-%EA%B8%B0%EC%B4%88-%EC%A0%84%EB%8B%AC-%ED%95%A8%EC%88%98transfer-function%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90
Understanding the Z-Transform, https://www.youtube.com/watch?v=XJRW6jamUHk
The Mathematics of Signal Processing | The z-transform, discrete signals, and more, https://youtu.be/hewTwm5P0Gg?si=UXP0j4hbKbR94DTi