1、基于 FPGA 的多频电疗仪的设计(内蒙古商贸职业学院,内蒙古 呼和浩特 010000)摘 要:本文介绍了利用 NCO IP核和 DSP Builder实现中频理疗信号发生器的详细方法及其原理。在 Matlab Simulink中设计了伪随机序列产生模块和正弦信号发生模块,并转换到 Quartus II中进行了仿真分析,最后下载到FPGA器件上测试。观察示波器的波形可知该设计满足要求。关键词:中频理疗;NCO;DSP Builder;FPGA中图分类号:TN752 文献标识码:A 文章编号:10076921(XX)01009102在医学中,理疗是常用的治疗方法。由于治疗过程中无痛苦、对某些疾病
2、疗效显著,应用较广。研究表明,当以某个固定的频率作用于人体时,随着时间的推移人体会对此频率产生适应性,对此频率刺激的反应逐渐减弱,导致疗效的降低。所以理疗中刺激频率的变化有着重要意义,因此输出频率为随机频率就有效避免了人体的适应性,取得更好的治疗效果。对于中频理疗信号发生器的设计,传统的方法是采用单片机和数字电路实现,虽然控制灵活但设计复杂,集成度低,体积较大,只适合在医院等专业机构使用,极大地限制了电疗仪的普及。随着 EDA技术的发展,在 FPGA/CPLD芯片上实现中频理疗信号发生器成为可能。1 基本原理在医学上,按输出频率的大小划分,大致可分为三种,分别为低频、中频和高频。此次设计产生的
3、信号频率范围为 1K10KHz 之间,属于中频范围。常用于治疗各种软组织损伤、肩周炎、关节痛、肌肉痛、神经痛以及胃下垂等。中频理疗信号发生器的产生主要分为两个模块,包括多路并行伪随机序列发生器模块和正弦信号发生器模块,图 1为中频理疗信号发生器的原理框图。用多路并行伪随机序列控制 NCO的频率控制字,从而产生一定范围内的随机正弦波。DA 转换器用于正弦波的 D/A转换,低通滤波器用于滤出正弦波中的杂散噪声信号,最后通过示波器观察中频理疗信号的波形。1.1 伪随机序列发生器模块的实现虽然随机数具有一定的统计学规律,但它是抽样值不能事先确定的数1。实际中产生的随机数不是绝对随机数,是相对的,称为“
4、伪随机数”。此设计采用 m序列作为伪随机序列,m 序列是一种最常用的伪随机序列,它是由带线性反馈的移位寄存器(Linear Feedback Shift Registers)产生的,并具有最长的周期。如图 2 所示。其特征值多项式可表示为:f(x)=DD(;Mni=0DD)Cixi 。根据以上条件可以算出一系列满足条件的系数,在此设计中使用:f(x)=1+x3+x20;f(x)=1+x7+x18;f(x)=1+x3+x17;f(x)=1+x+x15;f(x)=1+x2+x11;f(x)=1+x3+x10,相互独立的 6路伪随机序列。利用 DSP Builder构建随机序列有着设计简单,便于仿真
5、调试的优点。部分原理图模型如图 3所示,其中利用 Z-1、Z-2、Z-3、Z-9、Z-14、Z-17 等延时单元作为移位寄存器,用异或(XOR)完成模二运算,输出为 Out。通过 DSP Builder将其转化为VHDL语言,使之成为多路伪随机序列发生器模块。在 Simulink中仿真其中一列 f(x)=1+x3+x10 序列的波形如图 4所示,可以看出波形频率是随机变化的。1.2 正弦信号发生器模块的实现采用 NCO(Numerically Controlled Oscillators)作为正弦信号发生器表现了基于 EDA技术特有的 IP应用技术2。IP 核,或称 Megacore是 Alt
6、era公司具有知识产权保护的 megacore函数,只有在获得许可和购买的前提下才可以使用。基于 Quartus II和 DSP Builder的 IP核有多种,如 FIR数字滤波器,FFT 离散信号快速傅立叶变换器,NCO数控振荡器 IP核等。本设计采用的 NCO IP核,与LPM(library of parameterized modules)宏模块类似,用户可以设置其功能参数。此次设计中采用的 NCO IP核模块如图 5所示。其中 phi_inc_i是频率控制字的输入,本设计中采用的累加器精度即位宽为 20位。累加器的宽度决定采样点的数量从而决定了输出波形的频率分辨率。本设计中输出波形
7、的频率分辨率为f=fmin=fc2n,其中 fc为输入时钟频率,n 为累加器的宽度。输出频率为 fo=fcM2n,M为 phi_inc_i的输入值。fsin_o 是正弦波输出端口,其位宽是 10位,即幅度精度为 210。clk 是输入时钟;reset 为复位键;clken 是时钟使能;data_ready 是输出同步信号,当有正弦信号输出时为高电平。NCO IP核在 Quar-tus II和 DSP Builder中均可以直接调用,本设计中在 DSP Builder中使用并仿真,并将其转换为 VHDL语言3。而NCO IP核在 Simulink中仿真波形如图 6所示。740)this.widt
8、h=740“ border=undefined2 中频理疗信号发生器的性能特点明显的随机特性。采用 6路并行伪随机序列控制 NCO累加器的控制字,使输出正弦信号的频率具有明显的随机特性,从而有效地避免了人体对固定频率的适应性。3 软件实现3.1 系统原理图根据以上讨论的各模块实现原理,利用 Quartus II生成逻辑符号,并连接成图 7所示的原理图。其中各模块实现的功能如下:mCD#*3out 模块是伪随机序列发生器模块,分频模块和频率控制字模块的例化。利用分频模块将系统时钟分频,并作为伪随机序列发生器模块的输入时钟,频率控制字模块是将 6路并行伪随机序列转换成位宽为 20位的输出即 dou
9、t190,与 NCO的频率控制字输入位宽相匹配。nco_1 模块是 NCO模块、输出数据缓冲器模块和数据叠加器模块的例化。由于 NCO输出的波形数据类型是有符号数据,为了便于仿真观察将其转化成无符号数据,故采用数据叠加器来叠加,使输出端 fsin90为 10位无符号数据。740)this.width=740“ border=undefined3.2 仿真结果利用 Quartus II提供的 Simulator对上述原理图进行仿真得到的仿真结果图 8所示。图 8是仿真的完整波形,可以看出频率控制字 dout的变化是随机的。由于正弦信号 fsin的频率取决于 dout的取值,故可知输出正弦信号 f
10、sin的频率变化也是随机的。740)this.width=740“ border=undefined为了更直观的观察波形,在 Simulink中的仿真结果如图 9所示。740)this.width=740“ border=undefined4 结语根据仿真波形可以看出本设计满足中频理疗信号发生器的标准,通过示波器观察下载到 FPGA后的输出波形平滑并且随机性良好。利用 FPGA实现此设计使得该系统具有良好的兼容性,并且节省资源,成本较低。参考文献1 张卫钢.通信原理与通信技术M.西安:西安电子科技大学出版社,XX.2 潘松,黄继业.EDA 技术与 VHDLM.XX:清华大学出版社,XX.3 潘松,黄继业,曾毓.SOPC 技术实用教程M.XX:清华大学出版社,XX.