• 画饼也充饥,使用声卡替代昂贵的SDR设备实现实验


    昨天有朋友问我,如果作为学生,家庭条件不好,买不起SDR设备,又想业余时间玩玩SDR,如何是好?我建议他使用声卡进行基带实验。实际上,我也经常使用声卡实验——因为虽然声卡简单,但它确实是一个支持双路IO的AD/DA设备,具备构造基带波形的完整能力。

    使用声卡进行SDR实验有两种方法。

    1. 电缆直连。本文要讨论的方法。使用两根直通线,直连两台计算机的扬声器与线路输入(Linein)
    2. 声波传递。后续准备尝试的方法。直接利用扬声器与麦克风进行数据传输。

    对于一般的高频无线电波形,特别是相位调制波形,建议使用声卡有线直连直接处理基带数据。未来尝试用喇叭和麦来做声波的无线传播,会遇到很多有趣的问题,需要使用OFDM、二次调制等专门的补偿技术。

    • 非线性失真。大部分音箱和麦克会引入非线性的畸变,使得QAM等波形的相位恶化。
    • 环境失真。空气介质,室内噪声的影响很大。多径叠加、回声都很显著。
    • 频率失真。如果一方是便携设备,拿在手里,则一旦移动,频率会随着距离远近变化而降低或者升高。

    1. 连接方式

    使用声卡发射、接收数据,处理的是基带波形,少了SDR的上变频环节。当然,也可以把0-96KHz的频段继续细分,构造多路载波,那样就需要在软件层面进行数字上变频、数字下变频。

    只需要购买两根立体声数据直连线,分别连接两台计算机的声音输出、线路输入口,如下图所示:
    Connect

    2. 范例实验

    我们依旧使用taskBus继续进行实验,相关知识参考前一系列的文章。由于没有购买专用的SDR设备,工程的源、宿均使用声卡。

    2.1 捕获网络数据并封装发射

    • 声卡模式:2声道,替代I、Q路,左I右Q
    • 采样率:192000

    工程连接关系如下图所示:

    Emit

    1. pcap_src 模块抓取网络包
    2. a1frame_encap 模块进行封装、纠错编码
    3. a1frame_askmod 模块进行 DASK 差分幅度键控调制
    4. sink_soundcard 模块通过声卡产生192000Hz采样率的基带IQ波形。

    2.2 接收线路输入波形并还原

    接收的工程连接关系如下图:

    Recv

    1. 声卡使用LineIn线路输入设备接收输入的声波
    2. a1frame_askdem进行检测、解调
    3. a1frame_decap模块进行纠错还原
    4. pcap模块把对应的数据还原到网卡上。

    3. 注意事项

    通过测试,可以发现使用直接电缆连接的两台计算机,在声卡的192000Hz采样率(立体声)下工作良好。但需要注意一些问题:

    1. 在Linux下,普通用户没有CAP的权限,需要用setcap打开:
    $ setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip'  bin/modules/sink_pcap
    $ setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip'  bin/modules/source_pcap
    
    • 1
    • 2
    1. root用户,有时声卡无法工作。因此,建议还是使用普通用户来执行。
    2. 采样率要匹配,声道数要匹配。

    4. 后续研究

    研究多状态符号,提高单个符号的比特传输效率。如使用 16QAM,256QAM进行传输。

  • 相关阅读:
    Mybiosource基因编辑技术HIV及研究工具
    环保法规要求:半导体厂务漏液监测如何满足法规标准
    b和B的区别?大B与小b的区别(Bps与bps)以及b、B、KB、MB、TB、PB、EB的换算
    生命在于学习——MSF初体验(二)
    《系列一》-- 1、容器最基本使用
    线性回归(机器学习)
    动态内存精讲
    一体多面:哪有什么DO、BO、DTO,只不过是司空见惯的日常
    企业数据治理的下一步是数据资产管理?
    在亚马逊云科技控制台上创建 Amazon Cognito 用户池
  • 原文地址:https://blog.csdn.net/goldenhawking/article/details/126941243