入门例子

2019-08-01 22:34

初学实例

以前我在熟悉python 的过程中,写过几个简单的程序,和初学者一起分享一下在gnuradio里面对于各个模块都有规范的命名规则,理解了以后对阅读程序很有帮助 如 信源关键字 source 例如 usrp_source_c, gr.vector_source_f 等等 信宿 sink 例如 usrp_sink_c , fft_sink_c 信号的数据格式 c 复数信号,f 实数信号

例1 模拟调幅信号的生成,及显示

这里用到了gr里面的信号生成器sig_source_f,实数乘法模块,和scopesink2里的scope_sink_f模块,fftsink2 中的 fft_sink_f 模块

1)首先产生载波信号和基带信号

sinwav=gr.sig_source_f (Fs, gr.GR_SIN_WAVE, Fc, 100)

base=gr.sig_source_f (Fs, gr.GR_SIN_WAVE, Fb, 100)# TRI,SAW, sig_source_f应该都比较熟悉了,一共有4个参数 sig_source_f(fs,wav_style,fc,am)

fs 信号的采样率,wav_style 产生周期信号的样式,如gr.GR_SIN_WAVE 正弦波 gr.GR_TRI_WAVE,三角波

fc 周期信号的频率,am 周期信号的幅度

在程序里面这个参数定义为 Fs=2e5 Fc=2e4 Fb=1e3

Fs设的足够大,以便能够看到连续的波形,而不会因为采样导致观测的信号不平滑 载波为20K的正弦信号,基带为1K的正弦信号 2)混频

这个过程就是一个乘法运算 用到了模块mul=gr.multiply_ff () 乘法的输入应该是两路信号,连接关系为 self.connect(sinwav,(mul,0)) self.connect(base,(mul,1))

3) 将结果显示

第一种方式是直接显示波形

用到了模块

scop = scopesink2.scope_sink_f(frame, sample_rate=Fs)

sample_rate=Fs 给定输入信号的速率,这个是为了定义时间尺度 vbox.Add(scop.win,1,wx.EXPAND) 将scop 添加到窗口里面

注意里面的窗口框架frame,视窗 vbox, 都是stdgui2.std_top_block 的属性

这样经过乘法以后的数据流就直接输入到了scop中用于显示 self.connect(mul,thr1,scop)

thr1 = gr.throttle(4, Fs)的目的是减缓一下数据流的速率,没有throttle 会让计算机完

全忙于处理这些流信息,从而导致死机

第二种显示方式是频谱图

fft = \\

fftsink2.fft_sink_f(frame, fft_size=1024,sample_rate=Fs,y_divs = 10,ref_scale=1000)

这里面的参数同样很直观

需要解释的是y_divs 纵坐标的分辨间隔,功率ref_scale 归一化参考值

运行的结果为

源程序数:508

example1.rar (46 K) 下载次


入门例子.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:总包管理方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: