lesson4:GNURadio &dsp
本节课通过讲解上一节课的作业,来学习GNURADIO和DSP的知识。
Htop查看系统CPU的占用情况
sudo apt-get htop 安装htop,之后运行htop -p 0 即可。
采样率越高,CPU资源占用的越多,throttle控制了运行时的采样率,流图中每秒通过多少样本,以及每秒多少样本被CPU处理,实现方法是输入端口的数据到达后等待到设置的时间点才输出,使输出的采样率正好等于设置好的值。
信号源、FFT、throttle都有采样率,但是作用不同。
Q2:FFT和信号源的频率一样吗?
FFT算法把输入端的一组样本的各频率分量计算后输出给我们,FFT不停地算输入端的频率分量然后输出根据信号实时计算,现在图像不动,因为信号源的信号一直再重复,所以看上去是静态的,但其实是动的,只是每次的数据相同,是频域图。
改变信号源的频率,10K、100K发现只是波峰在横轴上有移动,其他的没有改变,为了弄清楚原因,采用另一种方式看看是怎么回事,scopesink。
Scopesink相当于一个示波器告诉你每个采样点的数值和时间的关系,是时域图。
红色矩形框中可以修改查看曲线图的方式,一般情况下我们看点图,因为处理的是数字信号嘛。
每个周期中采样点数=采样频率/信号频率。
每个模块中的参数可以填写任何的Python表达式。
信号源只在乎采样率和信号频率比值。
改变FFT的采样率,看到的变化是图像的横坐标变了,会根据采样频率的变化,变大或变小,但是图像形状没有变。,所以fft的采样率决定了横坐标值,还会影响刷新的效果。
如果采样率设置的过高1M,会出现一个延迟显示的问题,这是因为FFT的实现过程中有一个量叫刷新率。每秒收到的采样数量是1M,并刷新15下实现时会把1M/15得到刷新一次的采样点数。
因此FFT和信号源采样率不同,坐标轴会错,信号频率显示会错;
FFT和throttle采样率不同,刷新率会有问题。
Q3:FFT频率输出值和信号源是否一致?
答案是肯定的
Q4:更改信号源信号频率在0-16kHZ中变化会怎样?
FFT输出根据输入变化
在移动过程中会发现如下问题:
1)会有延迟;
2)如果不动,输出是一个波峰,若移动,会变为宽频信号,带宽达到几KHZ
3)如果键盘输入一个频率,一瞬间会有两个波峰;
Q5:如果信号源频率超过16K会怎样,把slider扩大到50K
流图中每经过一个模块都会有缓冲造成延迟。
Q6;输入负频率会怎样?
从时域信号表达上来看,二者没有区别,但是FFT能够区分它们
Q7:FFTPlot 上有没有除了信号源频率之外的频率?
使用autoscale观察或者dB/Div
模拟电路会有噪声是很正常的,但是数字信号为什么会有噪声呢?
和数据类型有关
Byte:8bit,共有256个取值
short:16bit,共有2^16个取值
数据类型的精度越大,信噪比越高。
数字系统中虽然量化过程会产生噪声,但是噪声可控。
如果时域图很平滑,就会得到窄带信号
lesson5
三个电源灯上电之后都会亮,除非开启低功耗模式。
后面三个灯可以自己修改,如果自己写固件的话。
DFU按钮,用来进入固件升级模式,正常情况下,hackrf会自动升级固件,DFU按钮只是出问题之后才用,如果hackrf的USB灯不亮,说明固件有问题,此时可以用DFU来还原。
进入DFU模式的方法:一是按着DFU按键拔除USB电线再插入,此时3V3灯两,其他灯不亮;
二是还原到正常模式,按着DFU再点一下reset,然后放开DFU按键即可
之后在电脑上运行一个固件烧写程序就可以了。
要注意hackrf的最大输入输出功率,否则可能损坏设备。
CLKIN、CLKOUT用来同步几个hackrf,也可以接GPS时钟或者Rubidium时钟,这样可以以更精确的时钟运行,clkin接着10Mhz方波,0-3.3V时钟,hackrf会自动同步,收发开始时,hackrf会先判断clkin有没有信号,没有就用自己的。
可以把CLKINCLKOUT直接连起来,也可以都连同一个外部时钟。
Hackrf项目有两个包
libhackrf用来和其他程序通信,如gnuradio
hackrf-tool是命令行方式操作HACKRF:hackrf_info
hackrf_transfer:接收信号,原始数据(rawdata)会从USB流入存入一个文件里
发射,数据通过USB发往hackrf并通过天线发射出去
通过接收数据,可以验证hackrf数字部分是否正常工作,确认USB可以提供xMS/s的采样率(-s2000000,最大21.5MS/s)
hackrf_transfer-r /dev/null %验证hackrf数字部分是否正常工作,有接收正常
hackrf_transfer-r /dev/null -s 16000000 % 确认USB可以提供xMS/s的采样率或者测试USB能够提供的速率
/dev/null不保存接受的数据,这样可以把USB和cup分开。
一般来说-i -o-m使用默认值即可。
-a放大器0关闭1开启在osmocomsource里10dB以上代表开启,以下关闭
-p天线上的功率,一般来说关闭,表示天线山么有直流电源,但是可以启用输出一定的小功率来驱动有源天线,比如GPS天线。
-n采样点数
-c能够传输载波
-b基带信号滤波器,默认即可。
如何升级固件????
下载最新固件,解压,进入firmware_bin固件二进制文件,在终端输入hackrf_spiflash-w hackrf_one_usb_rom_to_ram.bin
重启即可升级成功
升级CPLD
xsvf文件就是配置文件,cpld在ad/da和mcu中间
终端输入hackrf_cpldjtag-x hackrf_cpld_default.xsvf
都要升级,才可以!!!!!
放大器在天线旁边bypass可以让你在收发时候绕开放大器
RF GAIN 设为0(推荐做法)
比如你要接受FM信号,打开了放大器,但在你旁边有一个大功率的信号运行在2GHZrf放大器仍然会把他放大,这样可能超过内部某个放大器损坏设备
lesson6复数
这一节很详细的讲解了复数,为何会使用复数,在此领域又是如何发挥作用的。
加减法是平移,乘除法是放大、缩小,还可以旋转.
复数是解决了旋转任意角度而诞生的。
圆上的点
hackrf与电脑进行通信时,是这样传送的:IQIQIQIQ
2,3,-2,4
2+3i,-2+4i
pythonnotebook,来敲python 代码
FFT输出的是大小。
信号调制:讲了AM和FM从复数角度来看这两种调制方式,讲的很具体。
lesson8:on-off keying
通过接收车库信号,来说明on-off调制
fcc.gov、fcc.io
通过这两个网站看手里无线设备的资料
解调汽车信号
complexto mag 可以看到脉冲大小。
用scope看波形。
lesson9混叠现象
gr-osmosdr是hackrf和gnuradio的接口
为什么会有两个信号,而且有1/4周期的相位差?
所有模块的数据类型都是复数的,在scope里就有蓝绿两部分了
复数
复数信号时,带宽等于采样率
实数信号,带宽是采样率的一半。
FFT由于对称性,可以把坐标轴看成圆柱体。
lesson10滤波器
使用噪声源可以看滤波器的性质,因为噪声源包括了所有频段。
Lesson11
公共频段
发射时,注意附近没有人使用你覆盖的频段,尽量发射最低的功率,从小到大的调整功率。地理位置很重要,考虑其他用户的接收机
GPS最容易被干扰。
同轴射频电缆 衰减器至少20db
验证自己发射的信号,用频谱分析仪或另一个SDR设备
外接信号放大器,建议不要这么做,必须做,要遵守法规,高增益定向天线,把能量集中在指定方向上,能减少其他设备的干扰,用好的天线减少距离。
xxd car l less
od-f car l less
od-f -w4car l less