一些gnuradiogrc模块
gnuradio的basic block开发实例
gnuradio的basic block开发实例GNU Radio是一个开源的无线电通信框架,它允许你使用图形化的接口设计复杂的无线电系统。
基本块(basic block)是GNU Radio中用于构建流图的基本单元。
下面是一个简单的GNU Radio基本块开发实例,该实例是一个简单的振幅调制器。
首先,你需要安装GNU Radio和必要的工具包。
你可以在GNU Radio的官方网站上找到安装指南。
一旦你安装了GNU Radio,你可以使用以下代码创建一个简单的振幅调制器。
这个基本块将输入的复数信号作为I/Q数据,并将它们调制到一个给定的频率。
```pythonfrom gnuradio import grimport mathclass am_modulator(_block):def __init__(self, sample_rate, freq):_block.__init__(self, "am_modulator", _signature(1, 1,_gr_complex), _signature(1, 1, _float))_rate = sample_rate= freq= 0= (2)/_rate_port_register_in(_PY_PORT_NAME)_port_register_out(_PY_PORT_NAME)= _to_short(2)= _to_float()= _to_short(2)((self, 0), (, 0))((, 0), (, 0))((, 0), (, 0))((self, 1), (, 1))((, 1), (, 1))((, 1), (self, 0))def forecast(self, noutput_items, ninput_items_required):setup size of input queue based on history and other factors passdef general_work(self, input_items, output_items):in0 = input_items[0] input complex streamout = output_items[0] output float streamout[:] = in0 (1j) modulation with carrier wavefor i in range(len(in0)): update phase for next iteration+=if > 2: -= 2if < -2: += 2return len(output_items[0]) number of output items produced```这个基本块将输入的复数信号与一个指数相位进行相乘,从而实现振幅调制。
USRP和GNURadio调研报告
USRP和G NU Radio调研报告一、GNU Radio简介GNU Radio起源于1998年,是一个学习、构建和应用软件无线电技术的工具包,由Eric Blosso m开发。
现在GNURadio已是一个官方的开源项目,它按照GNU GPL规范发行。
作为完全开放源代码的软件无线电项目,GNU Radio致力于为软件无线电的研究和产品开发提供一个良好平台,将软件的思想扩展到传统的硬件领域。
与其他无线电系统相比,完全开源和可重配置是G N U Radio的最大特点,它自身有丰富的信号处理模块,研究者也可以编写源码模块,然后加载到工具包中,实现想要的功能。
GNU Radio的信号处理在P C机种完成,只需外加一个简单的硬件前端,如AD/DA芯片、声卡,就可以构建一个软件无线电研究和应用平台。
GNURadio是免费的软件开发工具套件。
它提供信号运行和处理模块,用它可以在易制作的低成本的射频(RF)硬件和通用微处理器上实现软件定义无线电。
这套套件广泛用于业余爱好者,学术机构和商业机构用来研究和构建无线通信系统。
GNU Radio的应用主要是用Python 编程语言来编写的。
但是其核心信号处理模块是C++在带浮点运算的微处理器上构建的。
因此,开发者能够简单快速的构建一个实时、高容量的无线通信系统。
尽管其主要功用不是用来做仿真器,G NU Radio在没有射频 RF 硬件部件的境况下还可用作对预先存储或(信号发生器)生成的数据进行信号处理的算法研究的平台。
GNU Radio遵从GNU GPL V3.0. 所有其代码归FSF - Free Softwa re Founda tion(自由软件基金)所有。
二、USRP架构USRP(Univer sal Softwa re RadioPeriph eral)是MattE ttus专门为GNU Radio的应用开发的硬件平台,是连接GNU Radio和射频前端的桥梁,是无线通信系统的数字基带和中频部分,功能强大而且十分灵活,目前最新版本是USRP2。
GRC块整理
GRC块整理1、AUDIO声卡控制,可以用来向声卡发送信息或者通过声卡接收信息(1)audio sink(2)audio souece2、Boolean Operator 布尔运算ANDAND ConstNOTORXOR3、Byt OperatorsPacket to UnpackedPack K BitsRepack BitsUnpacket to PackedUnpack K bits4、Channlizers(1)Frequency Xlating FFT Filter(2)Frequency Xlating FIR Filter(3)Hierarchical Polyphase channelizer(4)Polyphase Channelizer(5)Polyphase Decimator(6)Polyphase interpolator(7)Polyphase Synthesizer5、Channel Models(1)Channel Model(2)Channel Mode 2(3)Dynamic Channel Model(4)Fading Model(5)Freq .Selective IQ correction(6)Frequency Selective Fading Model(7)Frequency Selective Fading Model26、Coding(1)Additive Scrambler(2)Descrambler(3)Scrambler7、Comtrol Port(1)CtrlPort Monitor(2)CtrlPort Performance Monitor(3)CtrlPort Probe(4)CtrlPort Probe PSD8、Debug Tools(1)Tags Strobe(2)Vector Sink9、Deprecated(1)Correlate Access Code(2)CPFSK(3)PSK Demod(4)PSK mod(5)QAM Demod(6)QAM mod(7)Simple correlator(8)Simple Framer10、Digital Televsion(1)ATSC(2)DVB(3)DVB-S2(4)DVB-T(5)DVB-T2(6)ITU-T J 83b11、Equalize(1)CMA Equalizer(2)Kurtotic Equalizer(3)LMS DD Equalizer12、error coding(1)BER(2)BER Curve Gen(3)Decode CCSDS 27(4)Decoders Decoder Definitionb.Dummy Decoder Definitionc.LDPC Bit Flip Decoder Definitiond.LDPC Decoder Definitione.POLAR Decoder SC Definitionf.Systematic POLAR Decoder SC Definitiong.TPC Decoder Definition(5)Depuncture(6)Encode CCSDS(7)Encoder Ecoder Definitionb. CCSDS Encoder Definitionc.Dummy Ecoder Definitiond.LDPC Ecoder Definitione. LDPC Ecoder Definition(via generator)f. LDPC Ecoder Definition(via Parity Check)g.POLAR Encoder Definitionh.Repetition Encoder Definitioni.TPC Encoder Definition(8)FEC Async Decoder(9)FEC Async Encoder(10)FEC Decoder(11)FEC Encoder(12)FEC Extended Async Encoder(13)FEC Extended Decoser(14)FEC Extended Tagged Encoder(15)FEC Extended Tagged Decoder(16)FEC Tagged Decoder(17)FEC Tagged Encoder(18)LDPC Generator Matrix(19)LDPC Parity Check Matrix(20)POLAR code Configurator(21)Puncture13、File operators(1)File Descriptor Sink(2)File Descriptor Source(3)File Meta Sink(4)File Meta Source(5)File Sink(6)File Source(7)Wav File Sink(8)WAV File source14、Filters(1)Band Pass Filter(2)Band-Pass Filter Tags(3)Band Reject Filter带阻滤波器(4)Band-Reject Filter Tags带阻滤波器标签(5)DC Blocker(6)Decimating FIR Filter抽取FIR滤波器(7)FFT Filter(8)Filter Delay(9)Generic Filterbank(10)High Pass filter(11)High-Pass Filter Tags(12)HILbert希尔波特滤波器(13)IIR Filter无限脉冲响应滤波器(14)Intepolating FIR Filter内插FIR滤波器(15)Low Pass Filter(16)Low Pass Filter Tags(17)Root Raised Cosine Filter根升余弦滤波器(18)RRC Filter Tags(19)Single Pole IIR Filter单极IIR滤波器15、Founier analysis傅里叶分析(1)FFT(2)Goertzel格兹尔算法(3)Log Power FFT16、GUI widgets图形用户界面部件(1)QT GUI Check Box(2)QT GUI Chooser(3)QT GUI Lable(4)QT GUI Message Edit BOX(5)QT GUI Push Botton(6)QT GUI Range(7)QT GUI Tab Widget17、Impairment Model(1)Amplitude Balance振幅平衡(2)CFO Model(3)HW impairment(4)IQ imbalance Generator(5)Phase Balance(6)Quntizer(7)Second Order Distortion(8)SRO Model(9)Third Order Distortion18、Instrumentation(1)QT GUI Bercurve Sink 曲线(2)QT GUI constellation Sink(3)QT GUI Frequency Sink(4)QT GUI Histogram Sink(5)QT GUI Number Sink(6)QT GUI Sink(7)QT GUI Time Raster Sink时间光栅(8)QT GUI Time Sink(9)QT GUI Vector Sink(10)QT GUI Waterfall Sink19、Level Controllers(1)AGC(2)AGC2(3)AGC3(4)Feed Forward AGC(5)Moving Average(6)Mute(7)Power Squelch(8)Rail(9)Sample and Hold(10)Simple Squelch(11)Standard Squelch标准静噪(12)Threshold阈值20、Math Operators(1)ABS(2)ADD(3)ADD Const(4)Argmax一种函数(5)Complex Conjugate复共轭(6)Divide(7)Exponentiate Cons t int指数常数(8)Fast Multiply Const(9)Intergrate(10)Log 10(11)Max(12)Multiply(13)Multiply by Matrix(14)Mutiply by Tag Value(15)Multiply Conjugate(16)Mulyiply Const(17)RMS(18)Rotator旋转器(19)Subtract减去(20)Transcendental21、Measurement Tool(1)Ctrlport Complex Probe(2)Ctrlport Probe(3)MPSK SNR Estimator(4)MPSK SNR Estimator Probe(5)Probe Avg Mag^2(6)Probe Density(7)Probe Rate(8)Probe Signal(9)Probe Signal Vector探头信号矢量22、Message tools(1)Message Debug(2)Message Strobe信息选通(3)Message Strobe Randdom Delay消息选通随机延迟(4)PDU Filter(5)PDU Remove(6)PDU Set(7)PDU to Tagged Stream PDU到标记流(8)Random PDU Generator(9)Tagged Stream Multiply Length Tag(10)Tagged Stream to PDU23、Misc(1)copy(2)delay(3)head(4)import(5)NOP(6)Note(7)Null sink(8)Pad sink(9)Pad source(10)Python block(11)Python module(12)Selector(13)Skip head(14)Throttle(15)Vector source(16)Virtual sink(17)Virtual source(18)XMLRPC client(19)XMLRPC server24、Modulaters(1)AM Demod(2)Constellation Modulator星座调制器(3)Constellation Object(4)Constellation Rect. Object(5)Constellation Phase Modulator(6)FM deemphasis 去加重(7)FM Demod(8)FM Preemphasis(9)Frequency Mod(10)GFSk Demod(11)GFSK Mod(12)GMSK Demod(13)GMSK mod(14)GMSK Modulator(15)Modulator Vector(16)NBFM Receive(17)NBFM Transmit(18)Phase Mod(19)Quadrature Mod(20)WBFM Receive(21)WBFM Receive PLL(22)WBFM Tansmit25、networkingTools(1)Socket PDU(2)TCP Server sink(3)TUNTAP PDU(4)UDP sink(5)UDP source26、OFDM(1)OFDM Carrier Allocator 载波分配器(2)OFDM Channel Estimation(3)OFDM Cyclic prefixer(4)OFDM Frame equalizer(5)OFDM Receiver(6)OFDM Serializer(7)OFDM transmitter(8)Schmidl &Cox OFDM synch27、Packet operators 数据包操作(1)async CRC32(2)burst shaper(3)correlate access code tag stream(4)default header format obj(5)framer sink 1(6)HDLC deframer(7)HDLC framer(8)Header /payload demux 解复用(9)Packet header generator(default)(10)Packet header parser 包头分析器(11)Packet header parser (default)(12)Packet sink(13)Protocol formatter(14)Protocol formatter(async)(15)Protocol parser(16)Stream CRC3228、Peak Detectors(1)Burst detectors(2)Detect peak(3)Peak detector(4)Peak detector2(5)Plateau detector29、Resamplers 重采样(1)Fractional interpolator分数插值器(2)Fractional resampler分数重采样器(3)Polyphase arbitrary resampler多相任意重采集器(4)Rational resampler理性重采样器(5)Rational resampler base30、Stream Operators 数据流操作(1)Deinterleave逐行扫描(2)Enddian Swap结束交换(3)Interleave 交错(4)Keep 1 in N(5)Keep M in N(6)Patterned interleaver图案交织器(7)Regenerate(8)Repeat(9)Stream Mux(10)Stream to stream(11)Stream to Vector(12)Stretch(13)Vector insert(14)Vector to stream(15)Vector to streams31、Stream Tag Tools(1)Stream to Tagged stream(2)Tag debug(3)Tag gate(4)Tagged file sink(5)Tagged stream align(6)Tagged stream Mux(7)Tag share(8)Test tag variable rate32、Symbol Coding 符号编码(1)Binary slicer(2)Chunks to symbols(3)Constellation decoder(4)Constellation receive(5)Constellation soft decoder(6)Differential decoder(7)Differential encoder(8)Differential phasor(9)Map33、Synchronizers同步器(1)Clock Recvery MM(2)Correlation estimator(3)Costas loop(4)FLL band-edge(5)PLL carrier tracking(6)PLL freq Det(7)PLL ref out(8)PN correlator(9)Polyphase clock sync(10)Symbol sync34、Trellis Coding网格编码(1)PCCC deoder(2)PCCC decoder combo(3)PCCC encoder(4)SCCC decoder(5)SCCC decoder combo(6)SCCC encoder(7)SISO(8)SISO combo(9)Trellis encoder(10)Trellis metrics(11)Trellis permutation(12)Viterbi(13)Viterbi combo35、Type Convertes 类型转换(1)Char to float(2)Char to short(3)Complex to arg(4)Complex to float(5)Complex to IChar(6)Complex to imag(7)Complex to IShort(8)Complex to Mag(9)Complex to Mag^2(10)Complex to Mag phase(11)Complex to real(12)Float to complex(13)Float to int(14)Float to char(15)Float to short(16)Float to Uchar(17)Ichar to complex(18)Int to float(19)Ishort to complex(20)Magnitude and phase to complex (21)Short to char(22)Short to float(23)Uchar to float36、UHD略37、Veriables 参数(1)function probe(2)parameter(3)Struct variable(4)Tag object(5)Variable(6)Variable config38、Video略39、Waveform Generators 波形产生(1)constant source恒定源(2)Fast noise source(3)GLFSR source(4)Noise source(5)Random source(6)Random uniform source(7)VCO(8)VCO (complex)40、ZeroMQ interfaces略41、Satellites(1)Ax.25a. check AX.25 addressb. HDLC deframerc. HDLC framerd. Strip AX.25 header 去头(2)CC11XX CC11XX是TI推出的无线芯片a. CC11XX packet cropb. CC11XX remove lengthc. Check CC11XX CRC16(3)CCSDS CCSDS是国际空间数据系统咨询委员会a.Path ID demultiplexerb.Space packet parserc.Space packet peimary header adderd.Space packet time stamp ddere.Telecommand parserf.Telecommand primary header adderg.Telemetry OCF adderh.Telemetry packet reconstructioni.Telemetry parserj.Telemetry primary header adderk.Time format parametersl.Virtual channel demultiplexer虚拟信道解复用器(4)Codinga.AAUSAT-4 remove FSMb.AO-40 deinterleaver 解交织c.Matrix deinterleaverd.NRZI decodee.NRZI encode(5)CRCCheck swiatowid CRC-16(6)CSP(通信顺序进程)Communication Sequential Process (简称CSP)a.Append CRC32Cb.Check CRCc.Print CSP headerd.Swap CRC endiannesse.Swap CSP header endianness(7)Dataa.1KUNS-PF image decoderb.BY70-1 image decoderc.D-SAT image decoderd.K25At imade decodere.SMOG-P/ATL-1 spectrum savef.swiatowid imade decoder(8)ESEO 卫星略(9)FEC前向纠错码a.Ao-40 interleaved reed-solomon decodersSDS reed-solomon decoderSDS reed-solomon encoderSDS reed-solomon interleave encodere.NuSat FEC decoderf.RA decoderg.reed-solomon decoder(libfec)h.reed-solomon decoder(rscode)i.S-NET deframer(10)GOMspace(11)KISS(12)MISC(13)NGHam(14)Packet(15)Scrambling(16)Telemery(17)TT-64。
(完整版)一些gnuradiogrc模块
Source block:1、Constant Source。
提供一个幅度恒定的波形(阶跃信号)。
Output type:complex、int、short、floatParameters参(数):Constant:幅度值。
2、Signal Source 信号源,可提供恒定波形(阶跃信号)、正弦信号、余弦信号、方波信号、三波信号、锯齿波信号。
Output type:complex、int、short、floatParameters:Sample rate:采样率;Waveform:选择信号源所用波形;Frequency:频率;Amplitude :幅度;Offset:上下偏移量。
3、Noise Source 噪声源,可提供四种噪声:高斯噪声(Gaussian)、拉普拉斯噪声(Laplacian)、脉冲噪声(Impulse)、均匀分布噪声(Uniform )。
Output type:complex、int、short、floatParameters:Noise Type:噪声类型;Amplitude :噪声幅度;Seed:种子(噪声是一种随机数,但一般随机数都是伪随机数,即以一真随机数种子作为初始条件,用一种算法不停迭代产生随机数)4、Vector Source 矢量源,从一个向量中获取数据输出。
Output type:complex、int、short、float、byte Parameters:Vector:获取数据的矢量;Repeat:一个数据结束后是否重复该数据;Vector Length:矢量长度。
5、Random Source 随机源,提供随机信号。
Output type:int 、short、byte。
Parameters:Minimum :随机数范围最小值;Maximum :随机数范围最大值;Num samples:取样个数;Repeat:是否重复。
6、GLFSR Source 伽罗华线性反馈移位寄存器伪随机信源。
GNU Radio安装总结
安装GNU Radio安装GNU Radio的典型方法有两种:(1)通过build-gnuradio脚本安装最新版;(2)自己下载相应版本的.tar.bz2文件,自行编译安装。
上述的方法均来源于:/redmine/projects/gnuradio/wiki/InstallingGR可按其提示的步骤执行。
下面分别予以介绍。
(1)通过build-gnuradio脚本安装最新版该脚本适用于Ubuntu和Fedora系统,一般情况下可一次性地完成GNU Radio和UHD的安装,并顺利通过测试。
该方法适于基础较少的用户,安装过程简单方便,但是不利于我们深入地了解安装过程,因而即便安装成功,在今后如果出现程序运行上问题和错误,也同样需要很长的时间去寻找解决办法。
下面将以Ubuntu10.10系统为例,介绍GNU Radio的安装过程。
a.下载build-gnuradio安装脚本。
从/files/build-gnuradio处下载脚本文件。
(直接链接另存为即可)b.将脚本文件拷贝到主文件夹目录下,按照下面的命令依次操作即可。
wwfzs1990@wwfzs1990-laptop:~$ ./build-gnuradioThis script will install Gnu Radio from current GIT sourcesYou will require Internet access from the computer on which thisscript runs. You will also require SUDO access. You will requireapproximately 500MB of free disk space to perform the build.This script will, as a side-effect, remove any existing Gnu Radioinstallation that was installed from your Linux distribution packages.It must do this to prevent problems due to interference betweena linux-distribution-installed Gnu Radio/UHD and one installed from GIT source.The whole process may take up to two hours to complete, depending on thecapabilities of your system.Proceed?y (需要输入y后,按回车)Starting all functions at: 2012年 03月 08日星期四 07:45:31 CSTSUDO privileges are requiredDo you have SUDO privileges?y (需要输入y后,按回车)Continuing with script[sudo] password for wwfzs1990:Installing pre-prequisites...Checking for package libfontconfig1-devChecking for package libxrender-devChecking for package libpulse-devChecking for package swigChecking for package g++Checking for package automakeChecking for package autoconfChecking for package libtoolChecking for package python-devChecking for package libfftw3-devChecking for package libcppunit-devChecking for package libboost-all-devChecking for package libusb-devChecking for package libusb-1.0-0-devChecking for package fort77Checking for package sdccChecking for package sdcc-librariesChecking for package libsdl1.2-devChecking for package python-wxgtk2.8Checking for package git-coreChecking for package guile-1.8-devChecking for package libqt4-devChecking for package python-numpyChecking for package ccacheChecking for package python-openglChecking for package libgsl0-devChecking for package python-cheetahChecking for package python-lxmlChecking for package doxygenChecking for package qt4-dev-toolsChecking for package libusb-1.0-0-devChecking for package libqwt5-qt4-devChecking for package libqwtplot3d-qt4-dev Checking for package pyqt4-dev-toolsChecking for package python-qwt5-qt4Checking for package cmakeChecking for package git-coreChecking for package wgetChecking for package sdccChecking for package python-docutilsChecking for package gtk2-engines-pixbufChecking for package python-tkChecking for library libusb ...Found library libusb Checking for library libboost_ ...Found library libboost_ Checking for library libcppunit ...Found library libcppunitChecking for library libguile ...Found library libguileChecking for library libfftw ...Found library libfftwChecking for library libgsl ...Found library libgslDoneFetching Gnu Radio via GIT...Done (根据网速的差异,此处可能要等很久)Fetching UHD via GIT...Done (同上)Starting function uhd_build at: 2012年 03月 08日星期四 07:50:35 CSTBuilding UHD...Done building/installing UHDDone function uhd_build at: 2012年 03月 08日星期四 08:03:53 CSTStarting function firmware at: 2012年 03月 08日星期四 08:03:53 CSTFetching and installing FPGA/Firmware images via wget......Installing from: current.tar.gz...Copying into /usr/local/share/uhdDoneDone function firmware at: 2012年 03月 08日星期四 08:04:04 CSTStarting function gnuradio_build at: 2012年 03月 08日星期四 08:04:04 CST/usr/local/lib already in ld.so.conf.dDoing ldconfig...Building Gnu Radio......Doing cmake...Cmaking (此处make需要很久)...Building...InstallingDone building and installing Gnu RadioGRC freedesktop icons install ...DoneDone function gnuradio_build at: 2012年 03月 08日星期四 08:28:19 CSTStarting function mod_groups at: 2012年 03月 08日星期四 08:28:19 CSTGroup 'usrp' already in /etc/group********************************************************************************This script has just modified /etc/group to place your userid '('$USER')' into group 'usrp' In order for this change to take effect, you will need to log-out and log backin again. You will not be able to access your USRP1 device until you do this.If you wish to allow others on your system to use the USRP1 device, you will need to use: sudo usermod -a -G usrp useridFor each userid you wish to allow access to the usrp********************************************************************************FurtherDone function mod_groups at: 2012年 03月 08日星期四 08:28:19 CSTStarting function mod_udev at: 2012年 03月 08日星期四 08:28:19 CSTDone function mod_udev at: 2012年 03月 08日星期四 08:28:19 CSTStarting function mod_sysctl at: 2012年 03月 08日星期四 08:28:19 CSTApplying updates to /etc/sysctl.confGroup 'usrp' now has real-time scheduling privilegesYou will need to log-out and back in again for this totake effectDone function mod_sysctl at: 2012年 03月 08日星期四 08:28:19 CSTStarting function pythonpath at: 2012年 03月 08日星期四 08:28:19 CST************************************************************You should probably set your PYTHONPATH to:/usr/local/lib/python2.6/dist-packagesin your .bashrc or equivalent file prior to attempting to runany Gnu Radio applications or Gnu Radio Companion.*************************************************************Done function pythonpath at: 2012年 03月 08日星期四 08:28:19 CSTDone all functions at: 2012年 03月 08日星期四 08:28:19 CSTAll Donewwfzs1990@wwfzs1990-laptop:~$ sudo gedit .bashrc将下面两行内容添加到.bashrc文件的最后:PYTHONPATH=/usr/local/lib/python2.6/dist-packagesexport PYTHONPATH然后保存退出wwfzs1990@wwfzs1990-laptop:~$ source .bashrc(2)自己下载相应版本的.tar.gz文件,自行编译安装。
GnuRadio库介绍
GNU Radio 主要库函数。 这是总要被用到的库。
usrp
USRP “源”和“漏”及源”、“漏”)。 使用它给声卡来发送或接受音频,
但是配合外部射频前端声卡只能用作窄带接收机。
blks2
该模块包含额外使用 Python 编写的模块,
使用命令 from gnuradio.wxgui import * 来导入此子模块的一切,
或使用命令 from gnuradio.wxgui import stdgui2, fftsink2 来导入特定的部分。
eng_notation
添加用来处理工程标记的诸如:‘100M’ for 100 * 10^6' 的函数。
eng_options
使用命令 from gnuradio.eng_options import eng_options来导入功能。
此模块扩展 Pythons 的 optparse模块来理解工程标记 (参阅如上).
gru
功用杂类,算术和其它
诸如常用的调制、解调、一些额外的滤波代码、重新采样、压缩等等。
optfir
用于设计最佳 FIR 滤波器的例行程序。
plot_data
一些使用 Matplotlib 来绘制数的函数。
wxgui
此模块实际上是个子模块,它包含能够快速地构建图形化的同流程图相连接的用户接口的功能。
基于GNU-Radio+USRP的MCSS通信设计与实现
第38卷第5期计算机仿真2021年5月文章编号:1006 -9348(2021)05 -0158 -05基于GNU- Radio+ USRP的M C SS通信设计与实现陈盈,窦高奇,王青波,邓冉(海军工程大学电子工程学院,湖北武汉430033)摘要:多码组合扩频是一种载荷更高、带宽占用率更低、保密性更好的新型扩频模式,但由于实际应用依赖复杂的硬件电路,极大限制了通信模式的灵活性。
基于GNU - Radio+USRP构建多码组合扩频通信硬件平台,完成多码组合扩频通信算法设计和收发仿真测试,系统可根据实际需求调整扩频码周期、星座图映射方式、收发速率和载波频率等通信参数,并对接收载波和定时同步进行算法设计,实现系统连续和猝发通信需求,通过实时在线测试,验证了系统设计的灵活性和方案设计的有效性。
关键词:多码组合扩频;软件定义无线电;同步算法联合设计中图分类号:TN919.6 文献标识码:BDesign and Implementation of Multicode Combined Spread Spectrum Communication Based on G N U- Radio + U S R PCHEN Ying,D0U Gao-qi,WANG Qing-bo,DENG Ran(I n s t i t u t e o f E l e c t r o n i c E n g i n e e r i n g,N a v a l U n i v e r s i t y o f E n g i n e e r i n g,Wuhan Hubei430033, China)A B S T R A C T:M u l t i—c o d e combined s p r e a d s p e c t r u m i s a new t y p e o f s p r e a d s p e c t r u m mode w i t h h i g h e r l o a d,l o w e rb a n d w i d t h oc cu pa nc y and be t t e r c o nf i d e n t i a l i t y.However,t h e p r a c t i c a l a p p l i c a t i o n r e l i e s o n c o m p l e x h a r d w a r e c i rc u i t s,which g r e a t l y l i m i t s t h e f l e x i b i l i t y o f t h e c o m m u n i c a t i o n mode.T h i s p a p e r b u i l t a m u l t i- c ode combined s p r e a ds p e c t r u m co mm u n i c a t i o n h a r d w a r e p l a t f o r m b a s e d o n GNU - R a d i o + USRP,and c o m p l e t e d m u l t i - c o d e combineds p r e a d s p e c t r u m c o m m un ic at io n a l g o r i t h m d e s i g n and t r a n s c e i v e r s i m u l a t i o n t e s t.The s y s t e m c a n a d j u s t t h e communic a t i o n p a r a m e t e r s s u c h a s s p r e ad i n g c o de p e r i o d,c o n s t e l l a t i o n mapping mode,t r a n s m i s s i o n and r e c e p t i o n r a t e,a n dc a r r i e r f r e q u e n c y,a c c o rd i n g t o a c t u a l needs.And a l g o r i t h m de s i g n of r e c e i v i ng c a r r i e r and t i m i n g s y n ch r o ni z a t i o nwas c a r r i e d o u t t o r e a l i z e s y s t e m c o n t i n u o u s and b u r s t co mm u n i c a t i o n r e q u i r e m e n t s.The f l e x i b i l i t y o f s y s t e m d e s i g nand t h e e f f e c t i v e n e s s o f scheme d e s i g n w e r e v e r i f i e d t h r o u g h r e a l- t i m e o n l i n e t e s t s.K E Y W O R D S:MCSS;S D R;S y n c h r o n o u s a l g o r i t h m j o i n t d e s i g ni引言软件无线电(S o f t w a r e D e f i n e d Radio,S D R)技术是一种新 型的无线电体系结构,通过软硬结合,使无线网络和用户终 端具有可重配置能力[13。
基于GNURadio的伪卫星信号软件发射机设计
38 | 电子制作 2021年06月伪卫星(PL,Pseuolite)是用于测试验证和增强GNSS 定位性能的无线电导航定位设备,能发射出类GNSS无线电导航信号,通常安装于大型室内环境、地下空间等GNSS 卫星导航信号遮蔽的区域,提供实时定位导航服务。
伪卫星信号发射机一般有以下几种实现方式:(1)大多数实验室中研究学者通常采用多射频通道GNSS 信号模拟器进行替代[1, 2],其成本过高,信号体制改进比较困难[3];(2)利用FPGA、SoC 等硬件平台进行定制化实现,其技术实现门槛较高,硬件实现繁琐[4-7];(3)利用软件无线电平台实现伪卫星信号的收发[8]。
GNU Radio 是一个开源的软件无线电开发工具包,USRP 是功能强大的通用软件无线电平台。
本文采用的GNURadio 和USRP 软件无线电平台实现了伪卫星信号的产生与发射,利用GNURadio 框架实现伪卫星信号的模拟与产生,同时调用USRP 射频前端实现了伪卫星信号的发射[9]。
经实验测试验证,该发射机发出的信号可作为伪卫星定位系统使用。
1 伪卫星信号模型伪卫星导航信号从结构上划分,通常分为数据码、扩频码和信号载波。
信号载波用来调制伪码和数据码,然后经射频前端发射出去;扩频码是实现卫星信号码分多址的基础,其码间自相关与互相关特性直接决定信号的跟踪与捕获能力。
扩频码是一组固定序列码,只能作为区分伪卫星信号编号的标识,而不能携带其他信息;数据码用来携带伪卫星本文设计的伪卫星向用户发送的信号为GPS-L1信号,图1完整的展示了伪卫星信号的具体调制过程。
其第i 颗卫星信号的发射信号模型的数学模型为[11]:()()()111sin i i ii L c SA C t D t t ωϕ =+ (1)其中,c A 为载波1L 的振幅;()()i iC tD t 、分别为第i颗卫星的C/A 码以及D 码;1ω分别为1L 频段的角频率;1iϕ为1L 的初始相位值。
gnuradio中建立简单模块的步骤
利用模板写模块gnuradio3.7用的都是gr_modtool
在终端进入主文件夹,输入:$gr_modtool newmod howto(这里以howto为例),主文件夹下就生成一个gr-howto文件夹
接下来就是添加要编写的模块。
先进入刚才生成的gr-howto文件夹,在终端输入
$gr_modtool add -t general square
下面选项选择默认
接下来就是编写C++代码:进入lib文件夹,修改square_文件(由于例子比较简单两个头文件都不需要修改)
编写完.cc文件后,进入gr-howto文件夹,新建文件夹:$mkdir build
进入build文件夹:$cd build
编译:$cmake ../
$ make
使模块可以在GRC中使用:在gr-howto目录下输入$gr_modtool makexml square,选择Y
安装模块:进入build目录,$sudo make install
ubuntu可能要整理一下依赖关系:$sudo ldconfig
完成。
利用GNU Radio的gr_modtool工具来编写C++模块
利用GNU Radio的gr_modtool工具来编写C++模块GNU Radio是一款免费的软件无线电信号模块和系统开发工具,支持python和C++两种语言编程。
在GNU Radio中虽然提供了近百种常用的功能模块(blocks),但是在我们自己的系统设计中,需要不同的模块完成特定的功能。
所以,有些实现特定功能的模块就需要我们自己来编写,这样既可以很好地完成系统所需的功能又可以更深入了解GNU Radio的工作原理。
本文主要介绍如何使用GNU Radio中的gr_modtool工具来编写一个C++源代码的模块,利用gr_modtool是GNU Radio自带的一个工具,来它新建模块可以免去繁重的编程任务而只需专注于信号处理部分的代码。
1,首先按快捷键(Ctrl+Alt+T)打开命令终端,然后在里面输入命令:gr_modtool newmod howto,意思是在当前工作目录下新建一个工程,工程名字是howto。
之后,打开home目录可以看到新建的工程名:gr-howto。
(另外,关于gr_modtool的更多命令可以在终端中键入:gr_modtool 查看,里面有对各种命令的详细介绍。
)2,打开刚建好的工程。
输入:cd gr-howto 。
3,给你的模块取个名字。
需要注意的是新建模块名最后能体现该模块所要实现的功能,这样可以养成一个好的习惯便于项目的扩展。
例如需要新建一个所有采样点都加上一个常数的模块,那么这个模块你可像这样命名(add_const_f)。
让人一看便明白这是一个输入数据加上一个浮点型常数的模块。
因此,这步应输入命令:gr_modtool add add_const_f .4,选择端口类型:sink 是只有输入没有输出的(比如示波器,扬声器等);source 只有输出没有输入(比如信号发生器,usrp信源等);sync 有输入也有输出,输入输出采样关系是1:1(至于具体的输入输出个数是在程序中确定的);decimator 有输入也有输出,输入输出采样关系是10:1(至于具体的输入输出个数是在程序中确定的);interpolator 输入也有输出,输入输出关系是10:1的内插(至于具体的输入输出个数是在程序中确定的)。
基于GNU Radio和USRP X310的多带Chirp信号检测
基于GNU Radio和USRP X310的多带Chirp信号检测作者:蒋相来源:《电子科学技术》2016年第03期摘要:为了提高Chirp通信系统的传输速率,本文采用多带Chirp信号作为信息传输的载体来实现多带Chirp通信系统。
而实现高速多带Chirp通信系统的关键是接收端多带Chirp信号的检测,基于GNU Radio和USRP X310平台,分析了多带Chirp信号的检测方法。
与纯硬件实现多带Chirp信号检测相比,使用Python脚本语言和GNU Radio中的软件模块,具有实现简单、开发周期短、复杂度低等优点。
最后通过GNU Radio和USRP X310实验平台对多带Chirp信号检测方法的可行性进行了实验验证。
实验结果表明,该检测方法能够有效地实现多带Chirp信号的检测。
关键词:多带Chirp信号;多带检测;GNU Radio;USRP X310中图分类号:TN911.23 文献标识码: A 文章编号: 2095-8595 (2016) 03-243-06电子科学技术 URL: http// DOI: 10.16453/j.issn.2095-8595.2016.03.013引言线性调频(Chirp)信号是一种典型的扩频信号,在一个Chirp信号周期内会表现出瞬时频率随着时间线性变化,具有良好的自相关特性。
Chirp信号的脉冲压缩特性具有多径分辨能力强、信号峰均功率比较小等特点,很好地解决了雷达系统测距与测速精度之间的矛盾。
所以采用Chirp脉冲压缩的雷达系统具有抗干扰能力强、截获率低、体积小、作用距离远等优点[1]。
采用Chirp脉冲压缩的Chirp通信系统也具有许多优势,比如抗干扰和抗衰落能力强、系统复杂度低、同步容易实现、通信距离远等[2]。
文献[3-5]在单带Chirp通信系统中实现了2Mbit/s的数据传输系统,为了获得数据的更高传输速率,文献[6]利用多带Chirp信号实现了多带Chirp信号的发射,而多带Chirp通信系统的实现关键是接收端多带Chirp信号的子带检测。
基于决策树的调制模式识别与gnuradio模块实现
哈尔滨工业大学工学硕士学位论文摘要软件无线电的基本思想是以一个通用、标准、模块化的硬件平台为依托,通过软件编程来实现无线电台的各种功能,解除对基于硬件、面向用途的电台设计方法中的完全依赖。
由于它所特有的多频段、多体制、多功能的特点,事先无法知道所接收到的信号各种参数,因此,在对信号进行解调前必须要先识别该信号的调制模式及其信号参数。
尤其在当今通信环境下,通信双方处于非合作模式下,电子战日益复杂化,对未知信号的参数分析、模式识别等技术就显得更加重要,在非合作通信系统接收机设计中,自动调制模式识别已经成为重要的研究课题。
本文研究的调制识别是首先进行输入样本特征的选取和处理,这些特征能够表现出信号调制方式的不同,或者对这些特征进行一定的处理后能够表现出信号调制方式的不同。
然后根据所选的特征值进行分类,根据分类的结果判定是哪种调制模式。
调制的方法通常分为脉冲调制和正弦波调制两大类。
脉冲调制是用脉冲串或一组数字信号作为载波的调制方式,正弦波调制则是载波为高频正弦信号的调制方式。
本文主要讨论的是正弦波调制,基于决策树算法进行分类,对算法的选择也可以根据具体的情况具体分析,在具体的情况下,可以选择神经网络等不同的算法。
决策树算法具有高效性的特点,用其进行分类,提高了识别效率,并且可以用于CPU频率低的系统中进行调制模式识别,比如PDA,智能手机等,这样可以以最快的速度得到信号的解调信号,得到我们要用的信息。
本文通过提取信号的特征值,将特征值通过决策树进行分类,对输入的多种调制信号进行选择提取,能够正确识别出AM、FM、QPSK等调制信号,在8dB时对调制信号的平均识别正确率可达到95%以上。
本文使用GNU Radio平台,这个作为软件无线电的一种开发平台,利用它提供的信号运行和处理模块,在易制作的低成本的射频(RF)硬件和通用微处理器上实现软件定义无线电。
通过使用GNU Radio的通用的硬件开发平台,节省了大量资金,并且具有很强的扩展性,可以通过使用不同的软件算法,实现不同的功能。
基于GNURadio的频谱分析仪设计
基于GNURadio的频谱分析仪设计金伟正;赵小月;肖云;林漫晖【摘要】设计了一种基于软件无线电(SDR)平台GNURadio便携式频谱分析仪,给出了完整的设计方案.频谱分析仪由天线、收发转换开关、射频前端、中频接收、ADC、混频器、抽取滤波、DSP、移动客户端显示、云端存储组成,采用HackRF One作为信号处理模块的射频中频硬件平台.该分析仪具有频率分辨率可调、频带宽、便携性好、灵活性强等特点,可广泛用于实验教学.【期刊名称】《实验室研究与探索》【年(卷),期】2019(038)001【总页数】5页(P86-90)【关键词】频谱分析仪;软件无线电;频率分辨率【作者】金伟正;赵小月;肖云;林漫晖【作者单位】武汉大学电子信息学院,武汉430079;武汉大学电子信息学院,武汉430079;武汉大学电子信息学院,武汉430079;武汉大学电子信息学院,武汉430079【正文语种】中文【中图分类】TN761.2;G642.4230 引言目前,频谱分析仪主要分为超外差式扫描调谐分析仪和傅里叶分析仪两大类[1]。
傅里叶分析仪难以对高频信号进行分析;超外差式扫描调谐分析仪对硬件要求很高,且这两类频谱分析仪难以同时满足高频率分辨率和宽频带的要求。
将模数转换器和数模转换器尽量靠近天线,直接使射频模拟信号转换为适合在数字信号处理器和计算机中处理的数据信息,在计算机中编写软件模块来实现信号的复杂处理过程,最后使这样的无线电系统具有良好的灵活性和扩展性,这就是软件无线电技术的设计思想[2]。
随着信息技术的快速发展,现代频谱分析仪朝着数字化、模块化、软件化的方向不断演进[3-4]。
现代的频谱分析仪中已经采用软件无线电结构,利用模拟的射频接收端和全数字式的中频接收处理系统,实现高频率分辨率和多测量功能。
本文基于软件无线电的采用宽带中频数字化方案的频谱分析仪可广泛用于信号的实时频谱分析,相比传统的频谱分析仪,具有频谱分析误差小,频率分辨率高;频带宽;具有灵活性、开放性、模块化结构;便于携带等优点。
手把手教你如何编写gnuradio信号处理模块
手把手教你如何编写gnuradio信号处理模块手把手教你如何编写自己的信号处理模块(how to write a signal processing block?)虽然目前的基于Python的信号处理模块网上有丰富的资源,但是完全按照自己需求的信号处理模块还是自己动手写比较好,我建议初次接触编写模块的人可以从下面三个步骤进行。
一、下载gr-how-to-write-signal-processing-block 的模板,然后将其编译成功下载地址为:ftp:///gnu/gnuradio/下载后解压,然后通过terminal 进入到该目录(以根用户的权限进入)然后./configuremake checkmake install只要gnuradio 安装正确,且版本和gr-howto一致,就不会出错了,make check 会显示2 pass, 多长多长时间等等信息。
问题:很多人用该模板,发现生成的qa_howto.py在make check时,没有问题,而独立运行时提示无法import howto 模块原因:在qa_howto.py里面直接是import howto, 所以只有当前的python路径和其安装路径一致,才可以调用否则无法成功解决方法:1)首先需要让make install 将howto 模块装入到gnuradio的路径中需要重新初始化,需要注意的是configure 需指定路径为/usr./configure --prefix=/usrmake checkmake install此时当你进入到usr/lib/python2.6/site-packages/gnuradio 你会发现里面有一个howto.py 了2)如果要直接运行qa_howto.py 则需要修改其源程序将import howto 改为from gnuradio import howto此时运行就能够成功了,到目前为止,我们得到了一个howto模块,具有平方的运算功能,这个以后都可以直接使用了。
一些gnuradiogrc模块
gr gnuradio 的主要库,基本上每个程序都需要用到
analog 和模拟信号和模拟信号调制有关的功能
audio 声卡控制,可以用来向声卡发送信息或者通过声卡接收信息
blocks 所有不属于其他模块的东西,可能就放在这
channels 仿真所用的信号模型
digital 与analog, 所用和数字信号调制有关的功能在这
fft 和ffts 有关的功能
fec 和fex有关的贡呢
filter 过滤器模块
plotdata 绘制数据
qtgui 和表示数据有关的图形界面(使用QT库)
wxgui 包含快速创建流图的用户界面的一些实体
vocoder 和声音编码有关的一些功能
wavelet 和微波有关的一些功能
gru 各种各样和数学及其他有关的一些功能实体
GRC模块中文说明。
2018-《玻璃纤维增强水泥(GRC)建筑应用》技术标准
UDC Array中华人民共和国行业标准P JGJ/T 413-2018备案号J 2481-2018玻璃纤维增强水泥(GRC)建筑应用技术规程Technical specification for glass fiber reinforced cement (GRC)used on building2018—02—14 发布2018—10—01 实施中华人民共和国住房和城乡建设部发布中华人民共和国行业标准玻璃纤维增强水泥(GRC)建筑应用技术规程Technical specification for glass fiber reinforced cement (GRC) usedon buildingJGJ/T 423-2018批准部门:中华人民共和国住房和城乡建设部施行日期:2018年10月1日中国建筑工业出版社2018北京前言根据住房和城乡建设部《关于印发<2015年工程建设标准规范制订、修订计划>的通知》(建标[2014]189号)的要求,规程编制组经广泛调查研究,认真总结实践经验,参考有关国家标准和国际先进标准,并在广泛征求意见的基础上,编制本规程。
本规程的主要技术内容是:1.总则;2.术语和符号;3.材料;4.建筑设计;5.结构设计基本规定;6.GRC平板的结构设计;7.GRC带肋板结构设计;8.GRC背附钢架板结构设计;9.生产;10.安装施工;11.验收;12.维护与保养。
本规程由住房和城乡建设部负责管理,由中国建筑材料科学研究总院负责具体技术内容的解释。
执行过程中如有意见或建议,请寄送中国建筑材料科学研究总院(地址:北京市朝阳区管庄东里1号,邮政编码:100024)。
本规程主编单位:中国建筑材料科学研究总院上海建工房产有限公司本规程参编单位:南京倍立达新材料系统工程股份有限公司北京雷诺轻板有限责任公司湖南天泽建材有限公司北京宝贵石艺科技有限公司上海肯特装潢工程有限公司砼创(上海)新材料科技股份有限公司大连山泰新实业有限公司广西青龙化学建材有限公司成都润科建筑工程有限公司北京隆源装饰材料有限公司广州市双瑜建筑艺术工程有限公司长沙梁氏装饰工程有限公司成都金圣实业有限公司上海鼎中新材料有限公司上海汇辽建筑装饰工程有限公司泰孚新材料科技发展(上海)有限公司台州亿恒装饰有限公司湖北汇尔杰新材料科技股份有限公司泰山玻璃纤维有限公司安徽华普节能材料股份有限公司宁波市轨道交通集团有限公司本规程主要起草人员:崔琪李清海钱进熊吉如雷新忠车延飞黄政国杨小赫张朝岳超张堂斐宋敦清罗强秦永超袁建华梁金华唐纲矫民余战进董大根许挺贤郭清唐志尧汤俊怀周昌宝高国庆张洁龙尹向红本规程主要审查人员:李宏王培铭王存贵费毕刚朱松超霍瑞琴刘之春奚飞达肖慧沈春林贺鸿珠目次1 总则 (1)2 术语和符号 (2)2.1术语 (2)2.2符号 (3)3材料 (9)3.1一般规定 (9)3.2金属材料 (9)3.3建筑密封材料 (9)3.4其他材料 (10)4 建筑设计 (11)4.1一般规定 (11)4.2性能与检测要求 (11)4.3 建筑构造设计 (12)4.4 GRC构件的构造与连接设计 (12)4.5 防火与防雷设计 (13)5结构设计基本规定 (15)5.1 一般规定 (15)5.2 材料力学性能 (17)5.3 荷载与作用 (20)5.4 作用效应组合 (22)5.5 连接设计 (24)5.6 承载力极限状态设计 (24)5.7 抗裂验算 (27)5.8 锚固承载力设计 (28)6 GRC平板结构设计 (31)6.1 GRC平板 (31)6.2 横梁 (32)6.3 立柱 (34)7 GRC带肋板结构设计 (37)7.1 面板 (37)7.2 加强肋 (37)7.3 极限状态设计 (38)8 GRC背附钢架板结构设计 (40)8.1 GRC面板 (40)8.2 背附钢架设计 (41)9制作加工 (42)9.1一般规定 (42)9.2 GRC构件制作 (42)9.3金属构件加工 (42)9.4检验 (43)9.5搬运和堆放 (43)10安装施工 (45)10.1 一般规定 (45)10.2运输和现场堆放 (45)10.3施工准备 (46)10.4安装施工 (46)10.5安装质量要求 (47)11验收 (49)11.1一般规定 (49)11.2进场验收 (49)11.3中间验收 (49)11.4竣工验收 (50)12维修与保养 (52)12.1一般规定 (52)12.2 检查与维修 (52)12.3清洗和保养 (52)附录A 耐候钢强度设计值 (53)附录B 钢结构连接强度设计值 (54)附录C 预埋件设计 (56)附录D 双向板计算系数 (59)附录E GRC外墙分项工程验收表 (63)本规程用词说明 (65)引用标准名录 (66)附:条文说明 (68)Contents1 General Provisions (1)2 Terms and Symbols (2)2.1Te r m s (2)2.2S y m b o l s (3)3 Materials (9)3.1G en e r a l R e q u ir eme n ts (9)3.2M e ta l (9)3.3 Sealants (9)3.4 Other Materials (10)4 Arch itectural Design (11)4.1 General Requirements (11)4.2 Performance and Testing Requirements (11)4.3 Building Construction Design (12)4.4 GRC Element Constru ction and Connection (12)4.5 Fire and Lightning Protection Design (13)5 Basic Regulations for Structural Design (15)5.1 General Requirements (15)5.2 Material Mechanical P roperties (17)5.3 Load and Effect (20)5.4 Effect Combination (22)5.5 Fixing Design (24)5.6 Load Capacity Limit State Design (24)5.7 Crack Resistance Calcul ation (28)5.8 Anchor Capacity Design (28)6 Structural Design for GRC Flat Sheet (32)6.1 GRC Flat Sheet (32)6.2 Beam (34)6.3 Colum n (36)7 Structural Design for GRC Ribbed Panel (39)7.1 Panel (39)7.2R ib (39)7.3 Limit State Design (41)8 Structural D esign for GRC Stud Frame Panel (42)8.1 GRC Panel (42)8.2 Stud Frame Panel Design (43)9 Manufacturing (45)9.1 General Requirements (45)9.2 GRC E lements Manufacturing (45)9.3 Metal Parts Fabrication (45)9.4 Inspection (46)9.5 Transportation&Stacking (47)10 Installation (48)10.1 Genera l Requirements (48)10.2 Transportation&Site Stacking (48)10.3 Preparation (49)10.4 Installation (49)10.5 Quality Requirements (50)11 Acceptance (52)11.1 General Requirements (52)11.2 Incoming Acceptance (52)11.3 Intermediate Acceptance (52)11.4 Final Acceptance (53)12 Servicing and Maintenance (55)12.1 General Requirements (55)12.2 Inspection and Maintenance (55)12.3 Cleaning and Maintenance (55)Appendix A Design Strength of Weathring St eel (57)Appendix B Design Stength of Steel Structure Connection (58)Appendix C Embedded Parts Design (60)Appendix D Two-way Slab Calculation Coefficient (63)Appendix E Acceptance Form for GRC Cladding Panel Itemized Project (67)Explanation of Wording in This Specification (70)List of Quoted Standards (71)Addition:Explanation of Provisions (73)1 总则1.0.1为提高玻璃纤维增强水泥(以下简称GRC)建筑应用技术水平,促进GRC构件在建筑中应用的科学化、规范化,做到技术先进、安全可靠、适用美观和经济合理,保证工程质量,制定本规程。
howto
Out-of-tree 模块用gnuradio自带的功能扩展自定义模块什么是Out-of-tree 模块Out-of-tree 模块是不存在于gnuradio源代码树中的gnuradio组成部分,通常如果你想自己扩展gnuradio的功能和模块,Out-of-tree 模块就是你需要创造的这种模块(通常我们不会向实际的gnuradio源代码树里面加东西,除非你是想把它上传给开发者们整合使用)。
这样可以维护你的代码,并且延续主代码的功能。
工具和资源都可以自己管理作为一对捆绑式的工具,文件和脚本都可以作为第三方的程序或者gnuradio自己的一部分。
gr_modtool 模块编辑的利器开发一个模块的时候涉及很多单调和枯燥的工作:样板代码,makefile文件的编辑等,gr_modtool作为一个脚本,旨在帮助这些所有的事情自动编辑生成文件,尽可能的为开发者做跟多的工作,这样你就可以直接开始DSP编码的工作。
需要注意的是,gr_modtool在你所看到的代码上做了许多的假设,越是你自己定制的,或者有特定变化的,gr_modtool使用的就越少,但是它可能是启动新的模块的最好的地方。
Cmake,make等等。
在gnuradio中使用cmake来作为系统的构建。
不管你是否喜欢这个系统构建,你要构建模块就需要安装cmake(最常见的是make,但是也可以使用Eclipse或者MS Visual Studio)。
教程1 创建Out-of-tree 模块在下面的的教程中我们将使用名叫howto的模块。
第一步是创建这个模块。
利用gr_modtool是非常简单的,无论你想要什么样的新模块目录,只需要在命令行输入命令(这是在gnuradio源代码树之外的),然后继续。
% gr_modtool newmod howto #####howto就是你要创建的目录名Creating out-of-tree module in ./gr-howto... Done.Use 'gr_modtool add' to add a new block to this currently empty module.如果一切顺利,你将会有意个名叫gr-howto的目录。
gnuradio编程范例
GNU Radio是一个开源的信号处理工具,可以用于构建无线通信系统。
以下是一个简单的GNU Radio编程范例,用于实现一个简单的数字调制解调器。
首先,安装GNU Radio和必要的软件包。
你可以在GNU Radio的官方网站上找到安装指南。
创建一个新的GNU Radio流程图。
在终端中输入以下命令:复制代码gnuradio-companion这将打开GNU Radio Companion(GRC)编辑器。
3. 在GRC编辑器中,创建一个新的流程图。
在菜单栏中选择“File”->“New Flow Graph”。
4. 从左侧的模块库中拖动以下模块到工作区域:输入源模块(如“file source”)频率转换模块(如“freq_xlating_fir_filter”)调制模块(如“constellation modulator”)解调模块(如“constellation demodulator”)输出目的地模块(如“file sink”)将这些模块连接在一起,形成完整的信号流图。
确保正确连接每个模块的输入和输出端口。
在频率转换模块中,设置适当的频率和采样率参数,以匹配你的信号频谱和采样率。
在调制模块和解调模块中,选择适当的调制方式(如QPSK、QAM等)。
在文件源模块中,指定要读取的输入文件路径。
在文件接收模块中,指定要写入的输出文件路径。
点击工具栏上的“Run”按钮,开始运行流程图。
你应该能够看到信号的调制和解调结果输出到指定的文件中。
你可以根据需要调整各个模块的参数,以优化性能或适应不同的信号条件。
这个范例演示了如何使用GNU Radio构建一个简单的数字调制解调器。
你可以根据自己的需求扩展和修改这个范例,以实现更复杂的通信系统。
gnuradio实训心得
gnuradio实训心得在参加GNURadio实训之前,我对信号处理和通信系统有着一定的了解,但实际操作和深入理解仍有所欠缺。
这次实训为我提供了一个难得的机会,让我能够深入了解并实际操作GNURadio这一强大的工具。
实训开始阶段,我们首先对GNURadio进行了简要的介绍和学习。
我了解到,GNURadio是一个开源的、模块化的软件定义无线电(SDR)工具,它允许用户通过简单的图形界面来创建和修改无线通信系统。
我们通过一系列的实验,学习了如何使用GNURadio进行信号的接收、处理和发送。
在学习过程中,我遇到了许多挑战。
例如,在处理复杂的信号时,我经常不知道该如何选择合适的模块和处理方法。
但随着不断的尝试和与小组成员的交流,我逐渐掌握了GNU Radio的使用技巧,并且能够独立完成一些简单的信号处理任务。
这次实训中,我最深的一个体会是理论与实践的结合。
在学习GNURadio之前,我虽然对通信原理有一定的了解,但在实际操作中,我还是遇到了很多问题。
例如,如何选择合适的滤波器以去除噪声、如何调整参数以获得最佳的信号质量等。
通过不断的实践和调整,我逐渐理解了这些理论,并且能够在实际操作中加以应用。
此外,我也认识到了团队合作的重要性。
在实训中,我们经常需要分工合作来完成一个项目或实验。
通过与小组成员的交流和合作,我不仅学到了很多知识,也锻炼了自己的沟通和协作能力。
这次GNURadio实训为我提供了一个宝贵的实践机会,让我更加深入地了解了信号处理和通信系统的原理。
我相信,这次实训的经验和收获将对我未来的学习和工作产生积极的影响。
未来,我计划进一步深入学习GNURadio的高级功能和应用,并尝试将其应用于实际的项目中。
同时,我也希望能够与更多的同学和专家进行交流和合作,共同推进信号处理和通信技术的发展。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Source block:1、Constant Source。
提供一个幅度恒定的波形(阶跃信号)。
Output type:complex、int、short、floatParameters(参数):Constant:幅度值。
2、Signal Source信号源,可提供恒定波形(阶跃信号)、正弦信号、余弦信号、方波信号、三波信号、锯齿波信号。
Output type:complex、int、short、floatParameters:Sample rate:采样率;Waveform:选择信号源所用波形;Frequency:频率;Amplitude:幅度;Offset:上下偏移量。
3、Noise Source噪声源,可提供四种噪声:高斯噪声(Gaussian)、拉普拉斯噪声(Laplacian)、脉冲噪声(Impulse)、均匀分布噪声(Uniform)。
Output type:complex、int、short、floatParameters:Noise Type:噪声类型;Amplitude:噪声幅度;Seed:种子(噪声是一种随机数,但一般随机数都是伪随机数,即以一真随机数种子作为初始条件,用一种算法不停迭代产生随机数)。
矢量源,从一个向量中获取数据输出。
Output type:complex、int、short、float、byte Parameters:Vector:获取数据的矢量;Repeat:一个数据结束后是否重复该数据;Vector Length:矢量长度。
5、Random Source随机源,提供随机信号。
Output type:int、short、byte。
Parameters:Minimum:随机数范围最小值;Maximum:随机数范围最大值;Num samples:取样个数;Repeat:是否重复。
6、GLFSR Source伽罗华线性反馈移位寄存器伪随机信源。
Output type:float、byte。
Parameters:Degree:阶数;Mask:移位寄存器的多项式表达;seed:移位寄存器初始状态。
7、Null Source空信源,提供一个输出为零的信源。
Output type:complex、int、short、float、byte。
文件源,将一个文件当做信源,读入一个文件然后以不同数据形式输出。
Output type:complex、int、short、float、byteParameters:Repeat:是否重复;Vector length:矢量长度。
Notice:不可使用内容为汉字的文件作为信源。
9、TCP SourceTCP信源,有两种模式,即客户机与服务器,模拟面向连接的TCP 协议下客户机与服务器的通信。
Output type:complex、int、short、float、byte。
Parameters:Address:IP地址;Port:端口号;Mode:工作模式(Server or Client);Vector Length:矢量长度。
10、UDP SourceUDP信源,模拟面向无连接的UDP模式通信。
Output type:complex、int、short、float、byte。
Parameters:IP Address:IP地址;Port:端口号;Payload size:负载长度;Null pkt is EOF:是否以空包作为结束标志;Wait for DATA:是否等待数据;Vector Length:矢量长度。
11、Audio Source音频信源,可以读入音频设备的产生信号作为输出。
Output type:float。
Parameters:Sample rate:采样频率(注意采样频率修改要参考硬件音频设备,不是每种采样瓶率设备都支持);Device Name:设备名称(信号输入设备的名称);Num Output:模块输出个数(Audio Source可以依据硬件设备产生多个输出,例如立体声就需要两个输出)。
12.、W A V File SourceW A V 波形文件信源,可以以一个W A V波形文件作为信源。
W A V是一个采样率为44。
1KHz,16位量化的无损音频文件,实际上就是PCM,一般录音文件格式为W A V。
Output type:float。
Parameters:Repeat:是否重复;N channels:信道数。
13、Message Source消息信源,把一个接收到的消息转化成可用的几种数据类型后再输出。
Output type:complex、int、short、float、byte。
Parameters:Vector length:矢量长度。
14、Pad Source该模块可以将一个模块的输出作为另一个flow graph的输入,需要配合Pad sink来使用。
其模块系数自动排列,初始系数为0。
Output type:complex、int、short、float、byte。
Parameters:Vector length:矢量长度。
15、Virtual Source虚拟信源,可设置一个数据流ID,提供一个虚拟信源。
Sink block:1、Variable Sink变量信宿,将输入数据流采样读入,并按找设定好的点数,隔几个点取一个并写入变量中。
Input type:complex、int、short、float、byte。
Parameters:Variable:变量名(要写入的变量名);Decimation:抽取系数,即选择隔多少点抽取一个点;Vector length:矢量长度。
2、Vector Sink矢量信宿,将输入的数据写入矢量中。
Input type:complex、int、short、float、byte。
Parameters:Vector length:矢量长度。
3、Null Sink空信宿,位地址,用于接收数据及丢弃不需要的数据。
Input type:complex、int、short、float、byte。
Parameters:Vector length:矢量长度。
4、File Sink文件信宿,将接收到的数据流写入到一个文件中。
Input type:complex、int、short、float、byte。
Parameters:File name:文件名;Vector length:矢量长度。
5、TCP SinkTCP信宿,与TCP信源相对应,在TCP协议下建立面向连接的可靠通信。
有客户机与服务器两种工作模式,在客户机模式下,与给定IP 地址和端口号的服务器建立连接;在服务器模式下,将给定的地址与端口号关联到套接字上。
Input Type:complex、int、short、float、byte。
Parameters:Address:IP地址;Port:端口号;Mode:工作模式(Server or Client);Vector Length:矢量长度。
6、UDP SinkUDP信宿,与UDP信源相对应,在UDP协议下建立面向无连接的通信,将输入数据流写入一个UDP socket(套接字)中。
Input Type:complex、int、short、float、byteParameters:Destination IP Address:IP地址;Destination Port:端口号;Payload size:负载长度;Null pkt is EOF:是否以空包作为结束标志;Vector Length:矢量长度。
7、Audio Sink音频信宿,将音频信息输入到音频硬件设备中。
Input type:float。
Parameters:Sample rate:采样频率(注意采样频率修改要参考硬件音频设备,不是每种采样瓶率设备都支持);Device Name:设备名称(信号输入设备的名称);Num Input:模块输入个数。
8、W A V File SinkW A V文件信宿,从一个W A V文件中读入数据流,输出浮点型数据,取值在(-1.0,1.0)。
Input type:flaotParameters:File name:输入文件;N channel:信道数;Sample rate:采样率;Bit per sample:每样值比特数(默认8bit)。
9、Message Sink消息信宿,将接收到的信息汇集到消息中去,并将其插入到信息阵列中。
Inputtype:complex、int、short、float、byte。
Parameters:Vector length:矢量长度。
10、Pad Sink与Pad source一同使用,将一个模块的输入作为另外一个flow graph 的输入。
Input type:complex、int、short、float、byte。
Parameters:Vector length:矢量长度。
11、Virtual Sink虚拟信宿,可设置一个数据流ID,提供一个虚拟信宿。
Graphical block:1、Scope Sink示波器,观察信号的时域波形。
Input type:complex、float。
Parameters:Sample rate:采样率;V scale:垂直方向扫描范围;V offset:垂直方向偏移;T scale:水平方向扫描范围;AC couple:交流开关;XY mode:XY模式开关;Num Inputs:输入个数;Window size:显示窗口尺寸;Grid Position:当多于一个窗口显示时,当前窗口的位置。
2、Constellation Sink星座图显示,能够显示信号的星座图。
Input type:complex。
Parameters:Sample rate:采样率;Frame rate:帧速率;Constellation size:星座图尺寸;M:科斯塔环控制系数;Theta:科斯塔环控制系数;Alpha:科斯塔环控制系数;Max freq:最大频率;Mu:M&M模块系数;Gain Mu:用于调整Mu的值;Symblo rate:符号率;Window size:窗口尺寸;Grid positon:当多于一个窗口显示时,当前窗口的位置。
3、FFT Sink快速傅里叶变换频谱分析仪,观测快速傅里叶变换的频谱。
Input type:complex、float。
Parameters:Sample rate:采样率;Baseband freq:基带频率;Y per Div:纵坐标之间的间隔;Y divs:显示窗口中纵坐标的显示个数;Ref level:窗口刚出现时所显示的纵坐标最大值;Ref scale:?FFT size:FFT大小;Refresh rate:窗口图像更新率;Peak hold:峰值保持;Average:均值;Window:FFT窗口算法,如汉明窗等;Window size:窗口尺寸;Grid Position:当多于一个窗口显示时,当前窗口的位置。