image info

GNU Radio là bộ công cụ phát triển phần mềm, mã nguồn mở và hoàn toàn miễn phí, cung cấp các khối xử lý tín hiệu để mô phỏng và thực hiện các hệ truyền thông. Phần mềm tương thích với các thiết bị ngoại vi vô tuyến để tạo thành thiết bị vô tuyến được định nghĩa bằng phần mềm (Software Define Radio).

 GNU Radio được sử dụng rộng rãi trong giảng dạy, nghiên cứu cũng như thương mại, hỗ trợ cho việc nghiên cứu các hệ truyền thông không dây và các hệ truyền thông vô tuyến trong thực tế.

 Được khởi xướng bởi nhà hảo tâm John Gilmore và trưởng dự án Eric Blossom từ năm 2001 liên tục được phát triển, cho đến năm 2009 phiên bản GNU Radio Companion 3.2 đầu tiên được phát hành bởi Josh Blum. Đến năm 2011, đội ngũ các nhà phát triển lõi của GNU Radio bắt đầu tổ chức hội nghị hằng năm đầu tiên với tên gọi GRCon. Hiện tại, GNU Radio đã phát hành đến phiên bản 3.8 với nhiều cải tiến và liên tục được cập nhật bởi nhà phát hành với các nhà phát triển độc lập . GNU Radio có sẵn rất nhiều khối được hoàn thiện và sẵn sàng sử dụng, dưới đây là những khối điển hình thường xuyên được sử dụng trong hệ truyền thông không dây 2G, 3G, 4G và 5G:

  • Waveform Generators

    • Signal Source (e.g. Sine, Square, Saw Tooth,…)

    • Noise Source

    • Constant Source

  • Modulator

    • AM Demod

    • Continuous Phase Modulation

    • PSK Mod / Demod

    • GFSK Mod / Demod

    • QAM Mod / Demod

    • WBFM Receive

    • NBFM Receive

    • CDMA

    • OFDM

  • Channel Models

    • Channel Model

    • Fading Model

    • Frequency Selective Fading Model

  • Filters

    • Low / High Pass Filter

    • Band Pass / Reject Filter

    • IIR Filter

    • Decimating FIR Filter

    • Hilbert

    • Root Raised Cosine Filter

    • FFT Filter

  • Fourier Analysis

    • FFT

    • FLL Band-Edge

    • Rational Resampler (Synchronizers)

    • PN Correlator

 GNU Radio được viết hoàn toàn bằng ngôn ngữ C++ để đảm bảo hiệu năng, tuy nhiên người dùng vẫn có thể sử dụng Python để viết các khối do GNU Radio sử dụng SWIG để liên kết C++ với các ngôn ngữ bậc cao mà ở đây là Python. Hình 1 mô tả cách thức vận hành của GNU Radio và cách nó liên kết với thiết bị SDR.

Sơ đồ làm việc của GNU Radio

 Giao diện cho người dùng thông thường là GNU Radio Companion (GRC) được hiển thị như hình 2:

Giao diện GNU Radio Companion

 Với giao diện khá tương đồng với Matlab Simulink, gồm các khối nguồn, xử lý tín hiệu, hiển thị, widget,… dễ dàng chọn lựa, tùy chỉnh và kết nối với nhau thành flow-graph. Tất cả được GRC compiled ra file python và đẩy cho GNU Radio xử lý và hiển thị kết quả dựa trên QT GUI (QT Toolkit), hoặc Wx GUI (WxPython, tuy nhiên Wx Python đã bị xóa bở ở phiên bản GNU 3.8 do tốc độ đáp ứng chậm).

 Đối với các nhà phát triển muốn tạo thêm các khối thực hiện các chức năng đặc biệt, GNU Radio cung cấp khả năng tương thích với cả C++ và Python. Bảng 3 dưới đây so sánh các tính năng của các phương pháp lập trình các khối trong GNU Radio.

Sơ đồ làm việc của GNU Radio

 Đó là toàn bộ tổng quan về GNU Radio mà bạn cần biết, nếu muốn thử nó ngay hãy truy cập vào link để xem hướng dẫn download nhé:

https://wiki.gnuradio.org/index.php/Download

 Trong bài viết tới, mình sẽ tiếp tục giới thiệu tổng quan về các thiết bị SDR (Software Define Radio), mọi người chờ nhé !!