信号发生模块(精选7篇)
信号发生模块 篇1
1 引 言
随着电子技术的快速发展, 特别是大规模集成电路的产生而出现的微型机, 使现代科学研究得到了质的飞跃, 而嵌入式微控制器技术的出现则是给现代工业控制领域带来了一次新的技术革命。嵌入式Linux 在近几年发展迅速, 它没有昂贵的版权费, 完全开放源代码, 具有可裁减性与可移植性, 是开发嵌入式产品的优秀操作系统平台。设备驱动程序是Linux内核的重要组成部分, 运行在Linux内核底层, 在内核源代码中占有很大比例, 驱动程序开发逐渐成为嵌入式软件开发中一项重要的工作。应项目设计的需要, 我们完成了嵌入式Linux下的信号发生模块的驱动程序设计。
2 Linux下设备驱动程序
驱动程序从字面上可以理解为一类程序, 这类程序的目的一般是驱动硬件正常工作, 所以通常所说的驱动程序都是针对特定的硬件来编写的。Linux设备驱动程序是为特定的硬件提供给用户程序的一组标准化接口, 它隐藏了设备工作的细节。设备驱动程序从总体上看分为两部分:驱动程序与操作系统内核的接口、驱动程序与设备的接口。其代码结构大致可以分为如下几个部分:驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作、设备的中断和轮询处理。Linux系统中, 用户对设备的操作需要Linux系统中虚拟文件系统的支持, 用户采用标准的文件操作访问设备, 虚拟文件系统将用户的这种文件访问转化成对驱动程序的调用。为了实现这种用户文件操作到设备操作的转换, 虚拟文件系统为设备驱动提供了一个标准化的文件操作实现接口, 并由file_operations结构定义。
Linux系统的设备分为三种类型, 即字符设备、块设备和网络设备。本文所介绍的信号发生模块驱动属于字符型设备驱动程序。在对字符设备发出读、写请求时, 实际的硬件I/O一般就紧接着发生了。应用程序可以用与存取文件相同的系统调用来打开、读写及关闭。字符设备驱动程序一般要包含open、close、read、write等几个系统调用。
Linux下, 设备文件使用主设备号和次设备号来标识。主设备号指明对应哪些设备驱动, 次设备号区分被一个设备驱动控制下的某个独立的设备。在启动设备驱动程序之前, 需要先注册到内核上, Linux下注册设备驱动程序就是在内核上注册file_operations结构体的变量。为了在内核上注册或注销file_operations结构体, 一般使用下面两个函数。注册函数定义为:
类似地, 字符设备注销函数定义为:
int unregister_chrdev (unsigned int major, const char *name)
其中, major是主设备号, name是设备名称, 设备是以文件的形式存在的, 设备注册时需要使用文件结构struct file_operations定义。
3 信号发生模块驱动程序设计
3.1 信号发生模块硬件电路
信号发生模块的核心器件是12位四路电压输出数模转换器DAC7725U。在计算机的测控系统中, 常要用到模拟输出, 数模转换器 (DAC) 就是一种将数字信号转换成模拟电信号的器件。DAC根据输入数据的格式一般分为并行和串行两种, 并行的DAC通常有8位、10位、12位和16位等。DAC7725U为并行的12位数模转换器, 输出电压范围为-10~+10 V, 可输出四路电压。它还支持双缓冲数据输入, 使数据输入更加快速。DAC7725U的运行是由主处理器OMAP-L137控制的, 它们之间的电路连接关系如图1所示。
在项目设计里需要产生一个能让整个系统稳定有序运行的控制信号, 这就需要由信号发生模块驱动程序来实现。当核心处理器OMAP-L137收到一个由键盘模块发送来的开始命令后, 系统软件会自动做出反应, 启动系统内的一个信号发生程序。该程序完成一系列必要的初始化动作后, 通过调用DAC7725U驱动的相关操作, 使DAC7725U芯片输出一个方波, 该方波的占空比和幅度都可通过应用程序根据算法需求加以控制调节。
3.2 信号发生模块驱动程序的设计与实现
信号发生电路主要是由数模转换芯片DAC7725U发出模拟信号, 控制激光器按照一定规律工作。因此, 要控制信号发生电路, 其实就是控制DAC7725U芯片。本驱动的功能就是要实现OMAP-L137主处理器对DAC7725U芯片的基本控制并为上层应用程序提供接口。
3.2.1 信号发生模块驱动程序的文件操作
在信号发生模块的驱动程序里, 对struct file_operation结构声明如下所示:
3.2.2 信号发生模块驱动程序的加载
驱动程序的加载方式有两种:一种是将其作为内核的一部分, 直接编译到内核中, 即静态编译;另外一种是单独作为一个模块编译, 在需要时再动态地把它加载入内核, 不需要时从内核中删除, 即动态连接。在这里我们采用加载模块的方式进行。
信号发生模块驱动程序的模块加载功能由模块加载函数和模块卸载函数来完成, 其中模块加载函数负责调用SM_init () 函数, 并根据返回值判断调用情况, 模块卸载函数则负责卸载信号发生模块的驱动程序, 并使D/A转换器输出最小值。代码如下:
SM_init () 在模块加载函数中被调用, 该函数主要完成信号发生模块驱动程序的系统注册、设备号申请、文件操作结构声明等工作。此外, 它还通过ioremap () 函数实现I/O地址的映射, 使嵌入式处理器可以方便地控制D/A转换器。
3.2.3 信号发生模块的写模块
由于信号发生模块的输入数据是从嵌入式处理器一端取得, 经过转换后输出模拟信号, 所以对应的驱动程序仅需实现写函数, 将需要转换的数字信号 (二进制码) 传入D/A转换器中。
3.2.4 信号发生模块的打开、退出模块
信号发生模块的打开、退出模块用于打开和关闭驱动程序。SM_open所做的工作非常简单, 就是增加模块使用的计数值;当调用信号发生模块的关闭函数时, 驱动程序向D/A转换设备发送数据0x0000, 使D/A转换输出最小值零, 并将模块使用计数值减一, 表明使用结束。
4 信号发生模块的测试程序设计
信号发生模块的驱动程序就是让嵌入式处理器将数字信号按照一定的时序规律发送给D/A转换器, 并得到正确的数/模转换结果。为了检验驱动程序的正确性, 就需要设计相应的测试程序。信号发生器的转换中经常使用方波信号和正弦波信号, 由于在工程项目中, 需要输出方波信号, 在本文中就以输出方波信号作为例子。其流程如图2所示:
其中, main () 函数首先调用open () 函数, 完成设备文件的打开, 然后调用信号发生模块的功能函数, 来完成用户期望D/A的操作, 在完成D/A转换功能后, 程序再返回该主函数关闭设备文件;功能函数sm_func () 是完成对方波生成函数的调用;功能打印函数主要负责实现人机交互功能, 通过打印功能选择界面, 让用户根据自己的实际需求选择D/A转换操作, 并调用对应的D/A转换函数;方波生成函数先定义方波信号的高电平二进制码0xfffe, 然后将该数字信号写入信号发生模块, 延时一段时间后, 定义方波信号的低电平0x0000, 再将数字信号写入信号发生模块, 周期性地重复此过程就可以在模拟输出端得到方波信号, 其代码如下:
运行测试程序, 连接示波器到信号发生电路的输出端, 可以看到所要求的方波波形 (如图3所示) , 通过结果分析, 完成了信号发生模块驱动程序的设计要求。
5 结束语
在编写完驱动程序后, 我们将该驱动程序以加载模块的方式进行编译, 在检查相关硬件完好后, 正确连接相关器件, 将编译好的信号发生模块的设备驱动下载到目标板上, 通过测试设备驱动的应用程序, 实现了设备的打开、关闭、内存映射和写等具体的操作。通过本次驱动程序的设计与实现, 完成了信号发生模块的输出, 编译此程序后在目标板上运行, 在示波器上显示输出了所需要的方波波形。这就完成了驱动程序的设计要求, 为接下来的开发奠定了基础。
通过本文, 我们了解了嵌入式Linux下的设备驱动程序设计的基本框架和步骤, 并学习了信号发生模块的设备驱动在Linux内核中的具体实现, 通过分析Linux下信号发生模块的驱动程序的设计与测试, 我们可以对Linux的驱动程序的结构、编写以及测试有一定的了解, 为以后更进一步地学习奠定了基础。
参考文献
[1]李亚峰, 欧文盛.ARM嵌入式Linux系统开发从入门到精通[M].北京:清华大学出版社, 2007.
[2]李新峰, 何广生, 赵秀文.基于ARM9的嵌入式Linux开发技术[M].北京:电子工业出版社, 2008.
[3]孙天泽, 袁文菊.嵌入式设计及Linux驱动开发指南[M].第2版.北京:电子工业出版社, 2007.
[4]冯国进.嵌入式Linux驱动程序设计从入门到精通[M].北京:清华大学出版社, 2008.
[5]宋宝华, 华清远见嵌入式培训中心.LINUX设备驱动开发详解[M].北京:人民邮电出版社, 2008.
脉冲信号测速电路模块设计 篇2
关键词:电机,光电编码器,脉冲测速电路,脉冲信号采集
1 总体设计思路
本模块首先通过光电编码器获得脉冲信号,将脉冲整形后[1],输送给单片机进行计数,经过一定时间(200 ms)后计算出电机转动的速度值,通过4位数码管显示出来(此时如果转速超过设定的上限值则启动声光报警),显示范围为0~9 999。同时,单片机将速度信号通过比例计算,得到对应的电压值(1 500 r/min对应5.0 V),输出0.0~5.0 V的电压模拟信号,通过PCB板上两个接头,实现连接外部设备的使用和测量,同时将电压值显示在两位八段数码管上,显示精度为小数点后一位(0.0 V)。
为实现对电机的远程控制,通过键盘设置转速上限(初始值为1 500 r/min)的报警值,当转速超过设置值时声光报警。模块本身可以通过电位器实现对电机的手动调速。系统基本设计如图1所示。
2 各部分设计
2.1 单片机选择
经过综合考虑各功能的实现,选用宏晶公司推出的小型单片机STC12C5202AD-LQFP-32。它是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统的8051,但速度增快了8~12倍。
2.2 单片机功能实现
该模块采用按键电平复位方式实现复位功能;利用E2PROM保证键盘设置的转速上限值得以保存,当断电后再次通电时,上限值为设置后的数值而不是设定的初始值;通过单片机自带的A/D转换口进行输出显示前必要的A/D转换。
设定T1接口为外部计数器,T0用于数码管显示及形成闸门信号,选用工作状态1(即M1M0=01时,定时器所选择的状态)。系统使用最常见的11.059 2 MHz的晶振,设定定时/计数器T0每10 ms中断一次,用以数码管的显示,每200 ms读取一次计数器T1中的数值[2]。
2.3 硬件电路设计
本设计使用一个4位共阳数码管显示电机转速,一个2位共阳数码管显示0.0~5.0 V的电压(其中5.0 V对应1 500 r/min的转速)。
用于设定上限转速的键盘电路由3个按键组成(K1,K2,K3),K1用于进入(此时数码管显示由实际的转速值切换为需要设定的报警上限值)或退出电机转速上限报警值设置界面,K2用于调整数值的大小,K3用于选择需要调整数值的某一位数码管。
A/D转换通过单片机内部引脚实现。STC12C5202AD单片机的ADC是逐次比较型ADC。逐次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。逐次比较型ADC转换器具有速度高、功耗低等优点。
D/A转换的实现采用了美国德州仪器公司生产的TLC5615。它具有串行接口的数/模转换器,其输出为电压型,最大输出电压是基准电压值的两倍;带有上电复位功能,即把DAC寄存器复位至全零;性能比早期电流型输出的DAC要好,只需要通过3根串行总线就可以完成10位数据的串行输入。
2.4 软件部分
2.4.1 主程序设计
主程序设计流程如图2所示。
在显示部分,显存分别为D_MEM,D_MEM+1,D_MEM+2,其中D_MEM,D_MEM+1用于显示转速,D_MEM+2用于显示电压,BLINK(20H)(位地址00H~07H)为闪烁位控制,2FH(位地址70H~7FH)用作标志位。
P2口控制8段数码管显示,分别由P0.0,P0.1,P0.2,P0.3,P1.1,P1.0控制显示速度的4位数码管和显示电压的两位数码管。
2.4.2 其他子程序
脉冲计算程序、速度转换对应电压程序、键盘设置程序、比较报警上限程序、A/D转换程序、D/A转换程序、E2ROM保存程序、数码显示程序、延时子程序以及其他数值转换和计算子程序[3]。
3 误差分析
根据综合调试实测速度值得出表1,误差波动范围如图3所示。
平均误差分析:
根据数据分析,该模块的设计达到了很好的准确度。
4 结论
本模块的实用性非常强,在运用电机的场合检测电机的实时转速是十分必要的,采用光电式测速系统正是由于其低惯性、低噪声、高分辨率和高精度的优点,同时本文的设计也实现了对电机转速的简单控制和转速过快时的报警提示。设计中通过软件硬件各种手段尽可能地减小了误差,保证了检测数据的可靠性。
参考文献
[1]汤鸿来,吴显祥,李璐莹.光电编码器的输出接口和电路系统[J].电子技术,1990(10):34-36.
[2]段晨东.单片机原理与接口技术[M].北京:清华大学出版社,2008.
[3]何立民.MCS-51系列单片机应用系统设计[M].北京:北京航空航天大学出版社,1990.
[4]吴勇,李林涛,陈世纯,等.基于Arduino开发环境的光电编码器检测仪的设计[J].现代电子技术,2014,37(2):124-126.
[5]冯希,梁雁冰,张涛.基于FPGA的多路增量式光电编码器测角电路设计方法[J].现代电子技术,2008,31(19):175-177.
无线传感节点信号发送模块设计 篇3
无线传感器网络节点主要负责对周围信息的采集和处理,并发送自己采集的数据给相邻节点或将相邻节点发过来的数据转发给其他相邻节点。所以,信号发送模块在无线传感器网络中具有举足轻重的地位,它设计的好坏直接影响整个无线传感器网络的通信质量。提高信号发送模块的通信能力和降低功耗是传感器节点设计的重点。
2 无线传感器网络概述
2.1 无线传感器网络结构
传感器网络结构如图1所示,传感器网络系统通常包括传感器节点(sensor node)、汇聚节点(sink node)和管理节点。
2.2 传感器节点结构
传感器节点是一个微型的嵌入式系统,它的处理能力、存储能力和通信能力相对较弱,并通过携带能量有限的电池供电。它由传感器模块、处理器模块、无线通信模块和能量供应模块四个部分组成。如图2所示:
3 传感器节点信号发送模块设计
信号发送模块是一种把输入的基带信号调制成高频信号并把已调信号发射出去的电路,它实际上是一个发射机。由信源、调制器、载波振荡器、变频器、激励放大器、输出功率放大器和天线组成。
我们根据信号发送模块的原理,选用具有相同功能或者功能相近的高集成度的芯片。目前,市场上有很多可用于收/发的芯片,它们具有体积小、功耗小、使用方便等优点。比如Chipcon公司生产的CC1000、CC1100、CC2420等。在同类产品中,CC1000是最适合用于设计无线传感器节点信号发送模块的芯片。很多无线传感器网络节点都选用CC1000来开发。在本设计中,我们也选择CC1000。
CC1000体积微小、功能强大,选用很少的器件就能组成信号发送模块的电路。图3所示的电路是利用CC1000设计的无线传感器节点信号发送模块的电路。
CC1000集成了收/发功能,它是通过三串行接口(PDATA、PCLK和PALE)编程来控制发送和接收的,发送部分包括压控振荡器(VCO)、功率放大器(PA)、鉴相器(PD)、低通滤波器(LPF)、分频器等。其工作原理如图4所示:
在没有Ui(t)的情况下,把频率为ωo的输出信号Uo(t)输入到分频器(/N),经分频器变频得到一个频率为ωo/N的Up(t)信号,鉴相器把信号Up(t)和频率为ωr的参考信号Ur(t)进行相位比较,产生一个反映两信号相位差大小的误差电压Ud(t),Ud(t)经过低通滤波器的过滤得到控制电压Uc(t),Uc(t)调整Up(t)的频率向参考信号的频率靠拢,即
调制后Uo(t)的频率是Ur(t)的N倍。当输入Ui(t)时,Ui(t)影响Up(t)从而使Uo(t)的频率发生变化,Uo(t)经功率放大器放大后从天线发射出去。
上述电路中,C210、C211、C213、C214是滤波电容,用来消除电路中的干扰信号;L202是压控振荡器(VCO)电感,决定收发频率的中心频点;C206、L204和C205、L203是发送和接收电路的匹配电路,需要根据不同的PCB板材料调整这些值;C207要将发送信号耦合到天线上,所以它的值与发送信号的频率相关;C208、C209和L205组成的电路是一个简易的滤波器,主要目的是在信号耦合前做最后一次滤波,提高信号发射质量。
4 信号发送模块工作平台
上述的信号发送模块本身也是一个信号接收模块,它通过PCLK、PDATA、PALE三个端口控制收/发。也就是说,它需要一个外部的控制电路来控制收/发,否则不能正常工作。
为了使传感器节点信号发送模块能够正常工作,必须要有一个能对CC1000内部寄存器进行编程、控制信号发送模块收发模式的平台。目前市场上都把无线传感器节点的无线通信模块和处理器模块集成在一起,称为Mote节点。图5所示是专门为上述信号发送模块设计的Mote节点。
图中U2是CC1000,它与其他器件构成上述的信号发送模块。U1是ATmega128单片机,它是处理器模块的核心部件,它通过3个I/O端口对CC1000编程,控制CC1000的收/发,此外它还可以处理传感器节点收集的信息。
U3是AT45DB041B芯片。传感器节点信号发送模块不仅仅是传输本地节点收集的数据,还要对其他节点传送过来的数据进行转发。有时候本地节点要求发送数据,相邻的节点同时也要求转发数据,这样就会造成冲突。为了避免这种冲突,有必要设计一个存储电路。由于单片机内部的存储器存储能力有限,而且很大部分开销在处理运算上,所以要选择外部的存储电路。J2是一个50针的插口,用于Mote节点和传感器板之间的连接。U4是DS2401P芯片,它是一个包含48位随机数的芯片,用于标识节点在网络中的唯一ID;U5是LM4041,用于构成节点电压检测电路。Mote节点的具体电路请查看说明书大图。
5 结束语
本文设计的信号发送模块完全按照无线传感器节点的要求来设计,与市场接轨。用户可以根据不同的要求,通过接口电路连接不同的传感器板,使用方便,是一种实用的信号发送模块。但是该信号发送模块也有不足之处:由于它功耗小,信号强度不够大,导致它的通信距离较短,只有几百米的距离,而且它的抗干扰能力较弱、传输速率较低。进一步提高信号发送模块的传输速率,增强抗干扰能力是现阶段必须解决的问题。
参考文献
[1]孙利民.无线传感器网络[M].北京.清华大学出版社,2005,5
[2]王殊等.无线传感器网络的理论及应用[M].北京:北京航空航天大学出版社,2007,7.
信号发生模块 篇4
无人机在飞行的过程中,要想采集高质量的动态信号,不是一件易事。由于在无人机飞行过程中存在大量异常振动环境,采集的动态信号数据也会随着飞行环境变化而出现随机性改变,降低了动态信号数据关联性。并且在无人机动态信号处理过程中,由于采集模块数据失真,也会导致最终处理调理模块反馈失常,降低无人机分析稳定性。本文基于无人机高质量信号采集及处理调理模块进行分析,优化设计实现无人机动态信号高质量采集模块及处理调理模块。
1 无人机技术
可以通过采取计算机系统编程的手段,来实现对无人机行驶方向、飞行启停以及飞行速度的自动化控制,确保无人机在无需人工干预的情况下,可以正常运行。无人机实现中,集环境感知技术、规划决策技术于一体,并且实现了无人机自动飞行控制,也是一项由多项技术综合实现的过程[1,2,3]。无人机中,要想采集高质量动态信息,不仅需要集中运用计算机技术、传感技术、信息技术以及通信导航技术,同时也需要运用人工智能技术。随着当前智能化技术的发展,在无人机设计中,提升无人机动态信息采集处理效率,有助于确保无人机高速稳定运行[4];无人机可以预先按照设定好的模式飞行,无需人为干预管理,无人机就可在特定环境内自动化飞行运作。
2 需求分析
无人机动态信号采集与处理,是控制无人机稳定运行的关键[5]。在无人机飞行过程中存在大量异常振动环境,利用传统的系统信号采集模块进行动态振动信号采集,受到多信号属性纠缠的影响,降低了无人机动态信号采集的准确性[6,7,8,9]。优化设计无人机信号采集模块,能够极大地提高采集的准确性。设计无人机动态信号高质量采集模块及处理调理模块,可以选择通用性强、成本低的STC89C52单片机,作为本次无人机动态信号采集模块中的控制平台,并且通过具体的细化无人机系统设计要求,结合现代化动态信息采集传感器技术、无人机飞行电机控制的相关技术知识,优化实现无人机动态信号高质量采集及处理调理功能,以便可以达到设计目标需求。
3 优化设计实现无人机动态信号高质量采集模块及处理调理模块
3.1 总体设计结构
在本次无人机系统设计中,系统主要包括STC89C52单片机、信号采集终端、信号处理板模块、信号调理模块以及传感器信号放大与A/D转换模块、显示译码驱动模块以及LED数码管显示模块,其设计总体结构如图1所示。
STC89C52单片机作为主控制器。这是由于在无人机的内部,还装有一些减速齿轮组设备,因此在系统动态信号处理中,并不需去单独考虑飞行调速的问题,可以直接采用L298N作为控制电机驱动的芯片,其具有操作方便、稳定性好等优点[10]。同时,用光敏电阻作为动态信息采集器,采光敏电阻的阻值,能够跟随无人机飞行过程中周围环境光线变化而产生相应的变化,这样就在无人机处理调理模块中,与单片机以及动态信息采集传感器组成有反馈的系统结构。
3.2 高质量采集模块设计
无人机动态信号高质量采集模块设计中,是通过传感器采集信号向单片机提供信息,合理地布局传感器特别重要。本次传感器采取M型布局。M型布局最适合检测多弯道的轨迹[11],能使在相同数量的传感器下,获得更多的数据,其设计电路如图2所示。
3.3 处理调理模块设计
在无人机动态信号处理调理模块设计中,通过系统接收动态信号,并高速及时发挥处理调理结果。具体处理流程如图3所示。
3.4 软件代码实现
在无人机动态信号高质量采集模块及处理调理模块设计中,中断动态信号高质量采集部分代码设计如下:
进行无人机飞行模拟,得出飞行动态信息采集处理结果如图4所示。优化设计无人机动态信号高质量采集模块及处理调理模块,可以有效控制无人机飞行中的姿态,确保无人机在飞行中的稳定性。
4 分析优化设计中的应用效益
本次无人机设计中,应用LED 89C52无人机动态信号采集以及处理调理模块,增强了无人机动态信息检测精度,提高了无人机信号检测动态性能,可准确获取无人机中动态信号,完成信号的有效处理,具有较高的准确率。该设计在未来应用前景广阔。在无人机系统设计中,优化设计无人机动态信号高质量采集模块及处理调理模块,可提升12.0%的无人机动态信号采集质量,同时,也可提升8.0%的无人机动态信号处理调理速度。
5 结论
综上所述,优化设计的无人机动态信号高质量采集模块及处理调理模块,基于支持本体提纯无人机动态号,确保了动态信号高质量采集实时性。不仅提高无人机动态信号挖掘的及时性与准确性,还可在提纯无人机动态信号,降低信号处理调理误差,确保无人机稳定运行方面,发挥积极影响,可以在实践中推广该设计方法。
参考文献
[1]郑羽洁,梅佳.基于LED-89C52的无人机动态信号采集处理系统设计[J].计算机测量与控制,2015,23(3):995-997.
[2]贾毅,张永升,刘丹,等.无人机气动力地面车载测试系统[J].实验流体力学,2013,27(3):81-86.
[3]李波.无人机发动机检测系统设计[J].成都信息工程学院学报,2013,28(4):332-335.
[4]郑勇.无人机飞行异常振动信号采集方法研究[J].科技通报,2014(7):184-187.
[5]张轶辉,吕勇,张贵.基于知识本体提纯的无人机故障数据采集仿真[J].计算机仿真,2014,31(11):88-91.
[6]罗秋凤,王海涛,蒋梦浩,等.飞行控制计算机采集处理系统的设计与实现[J].测控技术,2010,29(8):89-91.
[7]徐向荣,陈昌涛,欧阳月华.飞行控制计算机采集处理系统的设计与实现[J].计算机与现代化,2011(2):89-91.
[8]王伟,徐平,林德福,等.基于MCU和DSP的无人机控制系统设计[J].测试技术学报,2011,25(6):494-498.
[9]吴洋,周乃恩.无源检测环境下无人机执行任务的对策研究[J].指挥控制与仿真,2013,35(1):18-22.
[10]王婷,张喆,王博.无人机飞控系统稳定性分析研究[J].科技创新导报,2014,11(4):94-95.
信号发生模块 篇5
在应用FPGA开发数字信号处理(DSP)系统时,往往存在这样一种情况,了解DSP算法的人不知道如何将其映射到FPGA语言、熟悉FPGA语言的工程师则不能深入了解DSP算法本身,这样随着工程师的离开,其设计的模块通常需要重新设计和开发。另外,利用FPGA开发DSP对工程师本身的要求也相当高,只有深入了解了FPGA的开发环境、各种芯片的内部资源、DSP算法的特点等才有可能利用VHDL或Verilog语言进行熟练编程,而且通常开发出来的模块可移植性、通用性和设计效率等都需要经过反复测试才能满足要求。
Xilinx公司提供了System Generator是一种嵌入Matlab语言开发工具,该工具为我们利用FPGA开发DSP模块提供了捷径,它提供了各种基本的小模块用于构建一个大系统,这些基本的小模块可以自动转化成所需的VHDL或Verilog语言。这样对于DSP系统的设计而言,事实就是一些基本模块(加、乘、减)的重构,不同的重构方式就可以得到不同的DSP算法,而且这样设计的系统可以直接利用Matlab进行仿真和调试,而不需要像VHDL或Verilog语言开发时利用第三方的仿真工具进行仿真和调试。Matlab仿真和调试的优点在于精度高、数据输入输出格式便于调整、参数调整灵活、设计修改方便、时序设计简单。下面利用该软件对数字脉压的过程进行设计和开发。
1 系统实现的功能
设计一个通用的数字脉压处理模块,模块采用频域脉压实现,实现如下功能:
①脉压的点数可以实时调整。
②脉压数据长度可以实时调整。
③模块综合的频率≥60MHz。
2 系统实现方案
脉压的实现方式有两种:一是时域方式;二是频域方式。时域处理与频域处理虽然等同,但从硬件实现的角度两者是有差别的,一般时域处理采用FIR结构进行,而频域采用FFT结构进行。
时域脉压处理时,脉压的点数N,距离门数为M时,脉压输出点数为N+M-1点,然而各脉冲的数据是连续进入的,这样脉压的输出过程中中间有一段是数据是两个相邻脉冲重叠计算部分,这些重叠数据后续计算过程中是不能用的,即真正有效的数据为M-N+1,所以用于控制有效数据的时序很复杂。不同的系统,具有不同的脉压点数和数据长度,某些系统中存在多种脉压点数的情况,这就会给具体的系统实现带来麻烦。所以为了达到通用的目的,采用频域脉压,同时为了降低输出时序控制的复杂性,距离门数统一补零变换成2N个距离门的数据,这样输出时序控制就简化了很多。
通过上述的系统分析,设计的脉压方案如图1所示。
3 系统功能实现
根据图1的系统框图,利用XilinX System Gene-rator来具体实现各项的功能,得到如图2所示的FPGA硬件原理图。另外,图3是图2中的“Mult”模块详细原理图,图4是图2中“Control”原理图的一部分时序。
针对图2的说明如下:
①图2中的“Control”模块作用是时序的产生及控制,用于实现数据缓存、脉压点数控制、脉压后数据输出时序控制,图3是本模块中的一个子模块,目的是实现系统的一个全局时序,具体标注见图。
②图2中的“Mult”模块详细原理图为图4,“Add”模块是地址产生模块,用于产生读脉压系数及均衡系数的地址;“coef1”是脉压系数ROM库,用于存贮脉压系数的频域值,是512点FFT后的结果,位数12位;“coef2”是均衡系数RAM库,用来存贮TS201计算得到的均衡系数,均衡系数一般为64点或32点,这里存贮的是系数的FFT后的数据,长度也是512点,位数12位;“Mult1”模块用来实现频域数据、脉压系数和均衡系数的复数乘积(对应数据的点乘)。
③图2中的“FFT”和“IFFT”模块结构完全相同(就差一个控制信号),直接采用系统提供的FFT模块,模块的参数是以4为基的数据流I/O格式(Radix-4 Streaming I/O)的512点FFT,相位因子的精度为16位,需要注意的是FFT输入数据必须为-1~1之间的数,且“FFT”模块如果数据输入为16位,输出则为23位,如果输入为24位,则输出为31位,另外系统提供的一个BRAM空间为18Kbit。
④脉压前的数据位数是14A/D采样的结果,可以通过数据接口将其转化成浮点数,也可以在“FFT”模块中转化为16数(注意:转化过程采用移位法,而不能用除法),这里采用移位方式转化。这样“FFT”模块的输入数据为14位有符号的整点数,则“FFT”模块输出数据的精度为23位有符号小数,“coef1”和“coef2”模块输出为[-1,1]之间的12位小数,“Mult”的输出数据截取精度为24位有符号小数,则“IFFT”模块的输出数据为31位有符号小数;
⑤脉压的精度问题,由于脉压和均衡的过程均可以看成是相干积累过程,所以根据相干积累过程的位数扩展公式为
N1=log2[N/N0.5] (1)
式中N为相干积累的点数,N1为需要扩展的位数。由系统要求可知,脉压的点数小于128,而均衡的点数不超过64,所以脉压过程位数扩展为
N1=log2[128/1280.5]=3.5 (2)
另外,由于A/D采样过程中有效位是14位,如只考虑脉压时,脉压输出有效位数应为18位;如果再考虑均衡,则输出的有效位数21已经足够了,在系统中统一取了18位,主要是考虑到后续处理过程的乘法运算(系统提供的乘法器是18×18位)。
4 系统实验分析
本节对上节中设计的频域脉压FPGA模块进行仿真实验。对于FPGA模块:脉压前数据输入精度为16整点数(14位有效位),脉压后数据输出为18位浮点数,FPGA测试时没有计算均衡。
①数字脉压的FPGA数据测试
实验中“FFT”模块输入精度为16位,脉压系数为12位,“IFFT”模块输入精度为24位。
图5是采用图2进行实际测试的一个结果,脉压点数为40,图5和图6为脉压后的值与理论值的比,实验值为系统的输出数据,理论值为采用Matlab对原始数据进行脉压后的值。
②数字脉压的FPGA资源及性能测试
表1中列出了图2所示的FPGA脉压模块的资源评估情况,参数如下:“FFT”模块输入精度为16位,脉压系数为12位,“IFFT”模块输入精度分别为24位。表2中是采用Xilinx ISE6.2综合的结果,表中的芯片见XilinX手册。
从仿真实验中可以看出,采用图2所示的频域FPGA结构实现的脉压系统测试精度与理论值相当接近,速度也完全可以达到指标,从表中可知“FFT”和“IFFT”模块虽然结构相同,但由于输入数据精度不同导致两个模块占用的资源不同,“Mult”模块中虽然没有对均衡系数进行相乘,仍然用了8个嵌入式乘法器,原因在于系统提供的乘法器是18×18位,所以当数据位数大于18时,它需要多占用一个乘法器,这正是我们将脉压后输出精度定在18位的原因所在。但需要说明的是如果芯片资源允许,中间过程的精度应选高一些,后续应用中“IFFT”模块的输入精度选用24位。从最后一个实验可以看出采用DSP处理的结果较FPGA的精度要高,但运行的效率要低很多。
5 结束语
通过以上的描述,可以知道采用Xilinx公司提供了System Generator可以很方便设计所需的通用DSP处理模块,该设计方法简单、有效,而且设计方案的更改、测试、调整相当方便,避免了设计过程中的复杂的时序测试和调整过程,降低了系统开发和改进的工作量,更重要的是提高了系统工作的可靠性。
参考文献
[1]XilinX System Generator.XilinX.软件使用说明[Z].2004.
[2]刘凌,胡永生.数字信号处理的FPGA实现[M].北京:清华大学出版社,2003.
信号发生模块 篇6
近年来, 随着计算机技术水平的不断提升, 人们生活和工作越来越离不开计算机技术和相关设备。而电子微机联锁系统主也是利用现代化计算机技术, 在系统中一组结点以及链路组成了微机网络, 将这些结点连接起来形成一种微机联锁, 能通过计算机直接将车站现场的信息通过系统中的控制系统、解锁系统, 然后最终才能确定车道进路的联锁设备。而解锁模块作为系统中的一个重要组成方面, 在系统中发挥着重要的作用, 占据着重要的地位, 研究和实现这种模块能提升工作的质量和效率, 因此, 工作人员要深入研究和分析这种解锁模块, 能更好地利用这种系统, 发挥系统应有的作用。
1 电子微机联锁系统分析
1.1 电子微机联锁系统的基本构成
电子微机联锁系统是当前车站使用比较广泛的长、短调车进路控制、联锁以及解锁的设备, 联锁系统以计算机技术为基准, 以电子开关级数作为整个系统的基本以及核心子系统, 不仅如此, 还要借助现在设备开关控制、网络以及电子通讯等方面的技术, 尤其是要利用互联网信息技术, 将车站的信息通过系统联系在一起, 实现对信息资源的统一管理。其基本构成主要由两个方面构成, 即硬件和软件方面和方面, 其中软件负责的主要任务就是要将系统中的车站信息利用互联网技术联锁在一起, 并且能通过一定的计算, 推算出想要得到的理想结果, 此外, 还要通过计算机设备将计算得出的结果通过图表展现在工作人员眼前, 让车站工作人员和人们能更加直观的观察结果。在整个数据库中包括数据管理、收集、整理以及归档等方面的工作, 同时还有时钟中断模块以及解锁模块等, 每一个模块都是其重要的构成部分, 这些模块之间是相互联系相互制约的, 任何一个部分出现故障, 整个系统运行的安全指数就会受到影响。
1.2 电子微机联锁系统的基本功能
电子微机联锁系统的基本功能有很多, 其主要包括联锁功能、显示功能、记录功能、语音报警功能以及结合功能等。其中联锁功能主要能将各车站结点连接起来, 然后在系统中形成一个完整的查询链, 车站管理人员和人们能够通过系统上的显示屏清楚的了解自己想要等候的车辆的详细信息。显示功能主要是指解锁模块中控制系统中信息的显示可以通过车站设置的大屏幕之间展现出来, 让乘客和工作人员都能直接观看相关信息。再者是记录储存、处理、诊断功能, 其主要是指系统能及时针对故障和问题发出诊断结果, 并且系统利用现代计算机强大的数据储存和管理功能, 通过对信息的分类和归档储存, 最为实现车行管理的自动化。此外, 语音报警功能主要是指联锁系统信息经过语音报警器时, 系统就能根据信息传输时间和排列顺序, 通过广播将信息直接播报出来, 人们能通过广播更加清晰准确的找到自己准备要乘坐的车道。这种智能语音报警系统与系统中其他功能相结合, 进而产生一种数据之间相互交换的效果, 实现全面管理和共享。
2 电子微机联锁系统信号解锁模块主要功能及作用
2.1 解锁模块的功能
解锁模块一般是建立在原有的电子微机联锁系统的基础之上, 在系统中添加解锁模块。解锁模块的最大优势是能将长调车的前进路线和行使路线进行解锁, 通过利用系统中已经记录的进路数据, 将进路数据取消或者刷新, 进而利用逻辑计算技术对某点进路进行解锁和计算。这种功能主要是针对原有进路中并没有将其进行分段, 需要解锁模块将其分段处理, 通过解锁模块能够判断长调车前进的方向, 为其提供准确的信号, 那么, 工作人员就能选择最佳关闭时间。
其次是取消长调车的进路, 通过对其进路进行分段后, 建立了完整的进路后, 这时的进路是不可使用的, 需要及时根据最新情况更新进路记录情况。而系统中的解锁模块则可以将在这些情况出现的时候, 立刻建立新的车道进路, 并且模块会自动刷新原本的进路记录。当开放了信号机之后, 长调车还没有靠近的情况下, 解锁模块会自动取消掉进路的措施, 将其进路进行解锁。
最后, 段区的故障解锁功能。在进路建立和取消长调车的进路后, 系统中将会记录最新的进路数据, 然后将原有的进路数据覆盖, 确定最新的发车进路, 或者是列车的进路以及行使过程中经历过的进路, 还有可能是在行使过程中进路的起始部分, 任何一段的进路都可能取消掉。在系统中经常会出现一种情况, 就是要取消掉的进路并不是车子最原始的进路应该储存的部位, 导致后来要取消或者删除也不一定就能准确找到正确的部位。因此, 在利用解锁模块时, 一定要确定一个进路区间段, 然后在选取的进路段中查找数据信息, 从相近、第一个或最后一段进路进行计算, 确定进出路是否空闲。
2.2 解锁模块实现的重要作用和意义
解锁模块的主要功能就是长调车的进程以及经过进路后的解锁、刷新车道进路、区段的故障确定以及解锁三种, 三种功能相互作用而共同协调来确保系统的正常运行。其中, 解锁模块要实现取消进路和区段故障解锁功能, 就必须要依靠进路以及经过进路后的解锁功能为其提供基本信息。解锁模块在整个系统中占据着重要的地位和作用, 解锁模块中的软件能将编码、集成测试和区段测试等阶段的进路测试进行解锁, 最终实现对系统中车子进路的解锁和控制, 实现长、短车行使方向的准确性。
本文针对电子微机联锁系统信号解锁模块进行分析, 其最主要的原因就是希望能通过本文的研究, 为未来技术研究提供一些建议, 明确未来的研究方向, 进一步提升系统的科学化和自动化水平, 提升系统运行的安全性和准确性。
3 结束语
综上所述, 电子微机联锁系统在实际生活中的使用具有积极的作用和意义, 系统具有控制功能、显示功能、记录储存功能、结合功能以及语音报警功能等技术功能。此外, 电子微机联锁系统信号的解锁模块的实现具有极强的实效性, 并且能降低整个微机联锁系统的运行成本, 在实际使用中将计算机技术与软件结合起来, 提升系统的自动化和科学化水平, 提升电气集中原有的联锁技术水平, 提高联锁计算的模块修改工作的效率和质量。
参考文献
[1]潘美莺.全电子微机联锁系统信号的解锁模块探究[J].赤峰学院学报 (自然科学版) , 2013 (03) .
[2]李赫.探讨全电子微机联锁系统信号的解锁模块[J].城市建设理论研究 (电子版) , 2012 (34) .
[3]占自才.TMR微机联锁系统的可靠度与安全度分析[J].华东交通大学学报, 2010 (02) .
[4]周跃峰, 王玉松, 钟剑.一种基于CAN Open协议的微机联锁总线控制解决方案[J].工业控制计算机, 2009 (08) .
多模多制式调制信号发生技术 篇7
关键词:多模,多制式,现场可编程门阵列
1 引言
本设计针对市场的实际需求以及多模通信信号和多制式数字调制信号的特点, 设计了以FPGA为主, “DDR2+FPGA+DAC+DDS+宽带调制器”为硬件架构的多模多制式通信矢量信号发生装置, 利用FPGA可编程的特点, 在尽量简化硬件设计的情况下, 可以发射TD-SCDMA、、WCDMA、TD-LTE、FDD-LTE等多模模信号, 发射BPSK、QPSK、OQPSK、、DQPSK、8PSK、16QAM、32QAM、、64QAM、2FSK、4FSK、GMSK等多调调制格式数字调制信号, 并可以将用户户数据灌入DDR2, 根据用户实际需要要发出, 实现复杂信号模拟的功能。
2 设计目的
(1) 多模通信信号:GSM/TD-SCDMA/WCDMA/TD-LTE/FDD-LTE等通信制式非信令信号。
(2) 多制式调制信号:
●调制格式:BPSK、QPSK、OQPSK、DQPSK、8PSK、16QAM、32QA M、64QA M、2FSK、4FSK、GMSK;
●码元速率:2ksps~40Msps;
●滤波类型RC、RRC、GAUSS;
●α因子/bt:0.2~1。
(3) 用户数据发射。
(4) 将上述信号调制到相应的载波上。
3 硬件设计实现
随着FPGA器件的快速发展, 其高速大容量可编程的特点使其得到广泛应用, 对多模多制式的设计需求需要选用FPGA进行设计, 它主要完成数字信号处理工作。另外, 由于TD-LTE、FDD-LTE的高数据量高速的要求, 需要DDR2作为多模信号或用户数据的存储介质。在基带信号发生后, 还需要将其DAC转换后用宽带正交调制器调制到各自载波上发射。另外, 多模多制式信号的发生需要不同码元速率的设计, 需要选用DDS分频出高分辨率可变时钟。所以该设计选用“DDR2+FPGA+DAC+DDS+宽带调制器”硬件架构, 其框图如图1。
4 FPGA设计实现
该设计的重点是对多模多制式调制信号进行数字信号处理, 由FPGA完成, 包括多模信号或用户数据的插值、FIR成型滤波、CIC插值等处理;以及多制式信号的伪随机信号产生、映射、插值、FIR成型滤波、频偏系数生成、DDS及CIC插值等处理。FPGA处理流程见图2。
PN码产生单元主要在时钟的作用下可以不断地产生原始的二进制伪随机序列, 然后将产生的伪随机序列进行编码及映射, 以QPSK为例, 每两个二进制编码构成一个码元, 即为{ (00) , (01) , (10) , (11) }四种状态, 再映射为星座图上的相位点, 如IQ两路幅度分别用9位补码表示, 则为hex{ (1ff1ff) , (1ff0ff) , (0ff1ff) , (0ff0ff) }, 用IQ的幅值来表示信号的矢量位置。QPSK星座图见图4。
由于映射产生的是矩形脉冲信号, 信号幅度的突变也会使其占用的频带很宽, 不利于传输, 造成符号间干扰, 导致接收机在检测一个符号时发生错误的概率增大, 需要设计脉冲成形滤波器, 而各种滤波器可以通过有限脉冲响应数字FIR滤波器来实现, 因为FIR滤波器有两大优点:
(1) 单位脉冲响应h (n) 有限长, 长度为N的h (n) 系统函数, H (z) 在z平面有 (N-1) 个零点, 原点z=0是 (N-1) 阶重极点而无其它极点, 因而是稳定的;
(2) 在满足一定条件下 (单位脉冲响应奇对称或偶对称) , 保证严格的线性相位。
它的基本算法是一种乘法-累加运算, 即不断地输入样本x (n) , 经过z-1延时后, 再进行乘法-累加, 最后输出滤波结果y (n) 。其实现流程和输出表达式如下所示。
式中, ai为滤波因子;x (n) 表示滤波器在n时刻的输入;y (n) 为n时刻的输出。
由图6可知FIR滤波器主要由一些延时器、乘法器和加法器等组成, 其频响的调整由滤波因子来控制。滤波因子可以通过对滤波器频响采样后经过反傅立叶变换来得到, 滤波因子的物理意义是滤波器频响在时域上的反映, 在该设计中可以利用MATLAB进行仿真, 得到各种滤波类型 (RC、R R C、G A U S S) 、不同滚降系数 (0.20-1.00) 的滤波因子。滤波因子可以根据用户需求和通信制式选用
在该设计中, 基带信号的码元速率变化范围很大, 如果将成形后的数据直接输出给D/A转换器, 输出信号必然带有D/A工作时钟信号, 而我们设计的基带带宽大, 要滤除时钟但不影响信号, 模拟低通滤波器将很难设计, 所以我们增添了CIC插补滤波模块来提高DAC的采样时钟, CIC滤波器可以用来实现抽取器和内插器, 它具有结构简单、规整以及需要的存储量小的优点。由于它不需要乘法器, 加之滤波器的所有系数均为1, 而且利用积分环节减少了中间过程的存储量, 因此常常用在高速采样和插值比很大的场合。CIC插值滤波器实现流程如下。
(a) 64QAM解调测试 (b) TD-LTE PUCCH信号测试
通过调节CIC插补滤波的插补比例, 使D/A转换器的时钟在小范围内变化, 并且最小时钟信号也高于基带信号, 这样D/A后模拟低通滤波器将很容易设计。例如, 本设计要求码元速率达到2ksps~40Msps, 此时基带信号1k Hz~20MHz, 这就要求DAC后低通滤波截止频率大于20MHz, DAC采样时钟理论上应该大于20MHz, 考虑工程实现应大于40MHz, 下表给出了该设计针对码元速率变化所做的不同数据处理, 通过改变CIC的插值率、每码元点数、可以实现设计目的。
FPGA输出数据经过DAC转换, 低通滤波后由宽带正交调制器调制到相应的载波上发射。
在频移键控2FSK、4FSK、MSK等调制格式时, 需要设计不同的频偏来表示信息。在数字电路设计中, 可以利用乘法器实现不同的频偏。将FIR得到的数据乘以一个频偏因子k来控制频移键控的频偏,
式 (1) 中map为随机序列的映射值, ai为FIR的各滤波因子, ∆f为频移键控的频偏, f为查正余弦表的时钟, n为查表之前丢弃的数据位数 (主要包括FIR和乘法器丢失) , 2即为正余弦表满量。由式 (1) 可得
N为正余弦表的有效位数。在设定频偏∆f的情况下可以求出对应的k值。
5 多模通信信号及用户数据设置
多模通信信号主要处理流程和多制式信号类似, 关键是将数据源切换到前面仿真好后存入DDR2的数据, 并按照各通信标准分别设置码元速率、滤波类型和滤波因子等参数。具体设置参照表1。
6 测试结果
经过实际验证, 该方案很好地实现设计目的, 硬件结构简单, 成本低, 灵活性好, 指标高, 已经应用在通信矢量信号发生器的设计中, 相关产品已经推向市场, 得到用户认可。
参考文献
[1]王秉钧, 冯玉珉, 田宝玉.通信原理[M].北京:清华大学出版社, 2006.11
[2]丁玉华, 高西全.数字信号处理[M].西安:西安电子科技大学出版社, 2000.12
[3]ADL5375 Data Sheet[Z].ANALOG DEVICES, 2007