相关推荐
射频接收机阻塞与干扰抑制:从原理到实战
在无线通信系统中,接收机面临的强干扰信号是导致灵敏度下降的常见难题。阻塞现象源于强干扰推动有源器件偏离线性工作区,引发增益压缩与非线性产物,而干扰抑制则是系统性工程,涉及无源滤波、有源线性度、自动增益控制及数字域处理等多个层面。理解阻塞与干扰抑制的技术原理,能够帮助工程师有效提升接收机的抗干扰能力和动态范围,对于手机、IoT模块、车载电子及工业无线设备等场景尤为关键。文章结合工程实践,深入剖析接收机架构选择、前端滤波与AGC策略,并揭示电源域反向电流阻断这一被忽视的“后门”问题,为射频链路设计与整机EMC整
采样率选择
采样有两种形式: (1) 过采样,又称低通采样 (2) 欠采样,又称带通采样 根据奈奎斯特定理,在进行模拟/数字信号的转换过程中,要想采样之后的数字信号完整地保留了原始信号中的信息,采样频率fs大于信号中最高频率fmax的2倍时(fs.max>2fmax)。一般实际应用中保证采样频率为信号最高频率的2.56~4倍 假设信号带宽BW=100MHz,fc=500MHz。 如果用过采样的话,就要求fs>2*(fc+BW/2)=11000MHz。即要求ADC的采样率为1.2GHz。 如果用欠采样的话,要
射频接收机阻塞灵敏度设计:从噪声预算到工程实践
在无线通信系统设计中,接收机灵敏度是衡量其接收微弱信号能力的关键指标,其理论基础涉及噪声系数、相位噪声和信噪比等核心概念。接收机内部的本振相位噪声、热噪声、时钟抖动及非线性失真等多种噪声源,会通过倒易混频等机制恶化接收性能,尤其在强阻塞信号存在时,这些噪声的叠加效应会显著降低系统灵敏度。从工程实践角度,系统化的噪声预算方法能有效评估各噪声贡献,指导本振选型与链路设计,确保在复杂干扰场景下满足协议要求。本文聚焦阻塞灵敏度分析,详细拆解了包括本振相噪和ADC时钟抖动在内的六大噪声源及其合成方法,为射频工程师提供
带通采样定理及其公式推导
2022年电赛F题-信号调制度测量装置说明中提到带通采样定律。低通采样定理在《信号与系统》教材中进行了详细的讨论,但未对带通信号的采样定理进行描述,国内《通信原理》第10章第2小节有所描述,但没有详细的公式推导,容易给初学者产生超过该最低采样频率即不会产生频谱混叠的假象.
ES32 RISC-V单片机在航模射频接收机中的工程实现
航模遥控接收机是飞控链路的关键终端,其核心需求包括微秒级确定性中断响应、多通道同步PWM输出及轻量级射频协议栈运行。RISC-V架构MCU凭借指令集精简、硬件加速支持(如CRC、DMA)和高实时性表现,正成为替代传统ARM Cortex-M的优选方案。国产ES32系列以120MHz主频、双DMA、高级定时器与高精度UART等特性,在CRSF/IBUS协议解析、低延迟信号输出及电源噪声抑制等方面展现出显著工程优势。本文围绕ES32F369x在2.4GHz射频接收系统中的硬件协同、协议栈轻量化实现与飞行实测调优
数字无线电课程设计-基于带通采样结构的模拟普通调幅(AM )数字收发机的设计
基于带通采样结构的模拟普通调幅(AM )数字收发机的设计 1.调制信号为; 2.调制方式为普通AM,调制指数; 3.发射机采用正交调制方式; 4.接收机采用数字射频接收机方式完成,其数字前端尽可能采用高效结构; 5.调制载波为,采用短波AM广播频段,设置为学生学号后6位的4倍,如某同学学号为2017020901001,则该位同学应用的= 4×901001 =3,604,004Hz; 6.课程设计建议采用Matlab编程完成,设计报告和Matlab仿真程序提交电子档文件; 电子档文件通过云班课发送(或者发送给助教,email标题格式为“数字无线电课程设计-姓名-学号” ),电子档文件统一用.rar压缩文件格式,文件名格式为“数字无线电仿真报告-姓名-学号”。
数字信号处理基础----信号的抽取和插值
1. 采样定理回顾 这一篇博客中将会介绍信号的 速率变换 和 抽取、插值 等操作。这些内容在FPGA进行数字处理的时候那是相当有用,解决了我在AD/DA和信号频率这些问题上的诸多疑问。其实这些问题,主要需要关注两个率,一个是信号的中心频率 Fb,一个是对信号的采样速率 Fs。 1.1 低通采样定理 低通采样定理要求采样的最低频率需要大于两倍的信号的带宽。也即 Fs >= 2Fh。由卷积定理可以知道,时域相乘等于频域卷积。于是可以看到以采样速率 Fs 进行低通采样过后,将基带信号的中心频率 Fb
txt经纬度批量转面要素(附自定义ArcGIS工具箱方法)
当涉及大量txt坐标文件需要转换成面要素的时候,逐步操作工作量较大。本文由需求出发,以ArcGIS10.2为例,采用python脚本自定义ArcGIS工具,实现批量操作的目的。
带通采样(欠采样)原理以及其在ADC中下变频的应用
目录 包含工程中的实际应用举例。 1.带通采样的原理 2.如何确定带通采样后的频谱中心位置,以进行下变频 1.带通采样的原理 射频信号频率高,带宽有限,直接奈奎斯特采样难度大。 采样的目的是无失真的恢复信号频谱,采样后信号频谱周期延拓,只要保证延拓后的频谱不叠加即可恢复原始信号频谱。 其原理如下图[1]: 图1 带通采样原理 2.如何确定带通采样后的频谱中心位置,以进行下变频 ...
NVIDIA GPU任务调度全景:从Block分配到Warp发射
GPU并行计算的核心是任务调度,而CUDA kernel在GPU上的执行并非简单的一次性操作,而是经过从CPU命令队列到硬件前端,再到GigaThread引擎和Warp Scheduler的多层协同。理解这一过程,是性能优化的基础。Warp作为硬件调度的基本单位,其状态切换与延迟隐藏能力直接决定计算单元的利用率;而Occupancy作为衡量SM上活跃Warp池大小的指标,也并非越高越好,需要结合访存模式与资源占用综合判断。对于多任务并发场景,Stream优先级、计算抢占、MIG硬件隔离与MPS软件共享等机制
HRnet的pytorch实现
HRnet的pytorch实现
带通采样定理
1 带通采样又叫IF采样、调和采样、下奈奎斯特采样和下采样等。 在带通采样中,我们更要注意信号的带宽,而不只是信号的最高频率成分。 无论是低通采样还是带通采样,信号的频谱都是按照采样频率的大小进行周期性的重复。对于带通采样,正负频谱都按照采样频率的大小进行搬移,采样频率的选择要是正负各个频谱之间不能重叠。 对于带通采样,为了避免假频,出了要保证fs>=2B,采样频率有个一个范
无线网卡选购指南:哪些型号支持Kali Linux的监听模式?附免驱动网卡推荐
本文详细解析了如何在Kali Linux下选购支持监听模式的无线网卡。核心在于选择兼容的芯片组,如Atheros AR9271和Ralink RT3070等经典型号,并提供了免驱动网卡推荐与实战配置指南,帮助安全研究人员和爱好者快速搭建无线测试环境。
中频采样和IQ采样的比较和转换
射频接收系统通常使用数字信号处理算法进行信号解调和分析,因此需要使用ADC对信号进行采样。根据采样频率的不同,可以分为射频直接采样、中频采样、IQ采样。射频采样和中频采样只需要一路ADC,采样结果为一组数字序列,而IQ采样需要两路ADC,采样结果为两组数字序列。中频采样比射频采样对ADC的带宽和采样率要求更低,同时宽带接收机的中频频率一般为固定频率,故中频采样应用非常广泛。
修勾逃生巨人危机v10.9.9修改版:免广告无限内购与GM工具详解
游戏修改技术是通过对原版游戏程序进行代码层面的调整,实现特定功能的增强或限制解除。其核心原理涉及内存修改、资源替换和API拦截等技术手段,能够有效提升用户体验和测试效率。在移动游戏领域,免广告和无限内购是常见的技术实现方向,通过屏蔽广告SDK调用和修改内购验证逻辑,为用户提供更流畅的游戏体验。这类技术特别适合游戏开发者进行功能测试,以及玩家希望完整体验游戏内容而不受商业模式限制的场景。以修勾逃生巨人危机v10.9.9版本为例,该修改版集成了GM工具开启功能,通过特定操作路径即可激活调试面板,实现了广告去除和
Unity 多线程编程笔记 _Task详解
士大夫
matlab IQ 采样,中频采样和IQ采样的比较和转换
一、什么是中频采样,什么是IQ采样射频接收系统通常使用数字信号处理算法进行信号解调和分析,因此需要使用ADC对信号进行采样。根据采样频率的不同,可以分为射频直接采样、中频采样、IQ采样。射频采样和中频采样只需要一路ADC,采样结果为一组数字序列,而IQ采样需要两路ADC,采样结果为两组数字序列。中频采样比射频采样对ADC的带宽和采样率要求更低,同时宽带接收机的中频频率一般为固定频率,故中频采样应用...
[ vulhub漏洞复现篇 ] ActiveMQ反序列化漏洞复现(CVE-2015-5254)
Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。......
can通道采样频率_中频采样和IQ采样的比较和转换
RF测试笔记是业界一线工程师们通过理论和实践相结合的方式介绍射频微波测试技术的专栏,主要涵盖噪声系数、数字调制、矢网、频谱分析、脉冲信号等内容。如有想看到的内容或技术问题,可以在文尾写下留言。一、什么是中频采样,什么是IQ采样射频接收系统通常使用数字信号处理算法进行信号解调和分析,因此需要使用ADC对信号进行采样。根据采样频率的不同,可以分为射频直接采样、中频采样、IQ采样。射频采样和中...
USB 基础学习:USB 电气信号介绍
USB电气信号技术解析 USB通信的核心是差分信号传输技术,通过D+和D-两根线传输相位相反的电压信号实现数据通信。USB信号系统包含三类关键信号:差分数据信号(抗干扰性强)、单端状态信号(用于设备识别)和电源信号(提供5V供电)。USB2.0采用400mV电压摆幅和NRZI编码,支持低速(1.5Mbps)至高速(480Mbps)传输;USB3.0则新增专用差分对,数据速率可达20Gbps。物理层通过上拉/下拉电阻检测设备连接,高速模式需特殊握手协议。抗干扰设计的关键在于保持差分线等长、阻抗匹配和使用共模扼
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
HackRF射频接收系统性能优化实战:低噪声放大器工程应用深度解析
HackRF One是一款低成本的开源软件定义无线电(SDR)平台,作为射频接收系统的核心设备,其低噪声放大器(LNA)的工程应用对系统性能至关重要。本文深入探讨HackRF的射频接收系统架构,重点分析低噪声放大器在信号链路中的关键作用,并提供实用的性能优化技巧,帮助用户最大化HackRF的接收灵敏度。 ## HackRF射频接收系统架构解析 HackRF One采用模块化射频架构设计,其接收
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
射频接收链路设计实战:从TSW1265评估板解析信号链核心
在无线通信和软件定义无线电(SDR)系统中,射频接收链路是实现信号从空中到数字世界转换的关键。其核心原理是将高频射频信号通过下变频、滤波、放大等环节,转换为适合模数转换器(ADC)处理的模拟信号,最终数字化为比特流。这一过程直接决定了系统的灵敏度、动态范围和带宽等关键性能指标。在工程实践中,如何合理分配增益、选择关键器件(如混频器、可变增益放大器和ADC)并优化时钟设计,是确保链路性能的核心挑战。本文以德州仪器TSW1265双宽带射频接收器评估模块为具体案例,深入剖析了从射频输入到数字输出的完整信号链设计,
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
从FM收音机到5G基站:图解射频接收机进化史中的关键技术突破
本文图解了射频接收机从FM收音机到5G基站的关键技术演进史。文章深入剖析了奠定现代通信基础的超外差架构,并重点阐述了推动移动设备小型化的零中频与低中频架构的核心原理与挑战。最后,探讨了软件定义无线电带来的范式革命,以及这些架构如何共同塑造了现代Wi-Fi 6与物联网设备的设计哲学。
射频接收机选型指南:超外差、零中频、低中频到底怎么选?
本文深入解析射频接收机架构选型,对比超外差、零中频和低中频三种主流方案的核心原理与性能表现。通过实测数据和典型应用案例,为IoT、卫星通信等场景提供选型指南,帮助工程师在动态范围、集成度和功耗之间做出最优决策。
射频接收芯片结构选择的几个要点
如果简单的把射频芯片设计分成系统设计、路模块设计、版图设计三个阶段,那么,我们知道,越早出现不良设计对后面的设计工作造成的难度越大,为得到相同效果所花费的代价也就越大,由此系统级设计就显得尤为重要。射频接收器结构的确定可以说是系统设计的一个基本任务。 一般而言,在现代的射频系统中,天线接收到的信号频率很高而且具有极小的信道带宽。如果考虑直接滤出所需信道,则滤波器的Q值将非常大,而且高频电路在 增...
355



被折叠的 条评论
为什么被折叠?



