软件无线电 | hackrf one 教程学习笔记lesson4-11

lesson4:GNURadio &dsp

本节课通过讲解上一节课的作业,来学习GNURADIO和DSP的知识。

Htop查看系统CPU的占用情况

sudo apt-get htop 安装htop,之后运行htop -p 0 即可。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

采样率越高,CPU资源占用的越多,throttle控制了运行时的采样率,流图中每秒通过多少样本,以及每秒多少样本被CPU处理,实现方法是输入端口的数据到达后等待到设置的时间点才输出,使输出的采样率正好等于设置好的值。

信号源、FFT、throttle都有采样率,但是作用不同。

 

Q2FFT和信号源的频率一样吗?

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

你可能感兴趣的:(软件无线电 | hackrf one 教程学习笔记lesson4-11)