一种谱分析的Matlab与VHDL代码转换方法

来源 :网友世界 | 被引量 : 0次 | 上传用户:haha300n
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】本文讨论由Matlab生成VHDL代码的原理,并介绍了利用System Generator及DSP Builder将Simulink模型转换为VHDL代码的方法。这样设计者可以利用Simulink高层次的设计仿真工具进行系统级设计,有助于在设计早期发现错误和应对系统复杂性不断增加的挑战,使用集成转换工具能够方便地进行VHDL代码的生成并进行硬件测试,极大地提高了设计效率。
  【关键词】MATLAB;傅里叶变换;频域分析;VHDL
  频谱分析在生产实践和科学研究中有着广泛的应用。其中,快速傅里叶变换(Fast Fourier Transform,FFT)是数字信号处理的最基本技术之一。近年来,随着现场可编程门阵列FPGA(Field Programmable Gate Array)技术的迅猛发展,利用高并行度、高速度的FPGA芯片来实现FFT已成为必然趋势。
  本文将以MATLAB为工具,对信号与系统在联系时间系统的频域进行分析。
  一、Matlab编程实现FFT实践频谱分析
  步骤如下:
  1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图。
  2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选。
  3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱。
  4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图。
  正弦波、矩形波以及白噪声三种信号的FFT变换(傅里叶变换)及IFFT变换(傅里叶反变换恢复信号)。
  图1-1 正弦波
  图1-2 矩形波
  图1-3 白噪声信号
  二、FFT算法在基于VHDL的FPGA下实现
  1.基于VHDL的FPGA设计流程
  本小节以Xilinx公司的FPGA系统开发为实例,FPGA的设计流程一般包括系统功能设计定义、设计输入、功能仿真、逻辑综合、前仿真、设计实现(包括翻译、映射、布局布线)、时序仿真与验证、下载配置与器件编程、测试验证等几个步骤。
  本设计运用ISE和ModelSim与Matlab联合仿真的设计方法。
  ISE的简称为集成综合的环境,是Xilinx公司的配套设计软件,这种工具可完成上述FPGA/CPLD的整个开发过程
  2.FPGA的基本原理和结构
  FPGA即现场可编程门阵列,相对其他可编程器件具有更高的集成度、更强的逻辑实现能力和更好的设计灵活性。
  FPGA的基本结构如图2-1所示。CLB阵列实现用户指定的逻辑功能,它们以阵列的形式分布在FPGA中;IOB为内部逻辑与器件封装引脚之间提供了可编程接口,它通常排列在芯片四周;可编程互连资源分布在CLB的空隙,互连资源可以编程配置在模块之间传递的信号网络,用于实现各个CLB之间、CLB与IOB之间以及全局信号与CLB和IOB之间的连接。FPGA利用可编程查找表实现逻辑块;程序控制多路复用器实现其功能选择。
  图2-1 FPGA的基本结构
  3.FFT 处理器的设计
  本设计用于基于IEEE 802.11a协议的OFDM系统的OFDM调制,根据IEEE802.11a协议规定,OFDM调制采用64点FFT变换,采样速率20M/s,即采样周期为50ns,即64点FFT数据输入的时间为64*50ns=3200ns。
  本系统采用的时域抽取算法中要对输入的所有数据进行倒序以后才开始蝶形运算,FFT可以分为数据输入、蝶形运算两个阶段,蝶形运算结束后,将最终结果存储到另一个单独的结果存储器另行读取,而为了能对输入数据实现连续的FFT变换,就需要蝶形运算的总时间小于3200ns,这样就可以用两个FFT模块去轮换做FFT,实现连续的FFT处理。如图2-2所示。
  64点的基2的时域抽取FFT算法总共有6级蝶形运算,每级32次蝶形运算,总共需要32*6=192个蝶形运算,如果采用单蝶形设计,需要192次蝶形运算,蝶形运算的极限时钟周期为3200ns/192=16.67ns,在本设计的蝶形运算时钟周期采用16ns。
  开发环境:Quartus II 6.0
  选择FPGA芯片:Altera公司Stratix系列中的EP1S10484C5
  语言:VHDL
  图2-2 两个FFT模块
  三、MATLAB到VHDL轉换工具Simulink
  Simulink程序包是MathWorks公司提供的一个非常有吸引力的高水平设计、仿真工具。
  1.高效地从Simulink到VHDL的转换工具
  目前为止,设计者经常遇到的最大问题是怎样完成从算法设计到物理实现的转换。在这个问题的研究发展过程中,设计者首先使用的是一种高层次的设计仿真工具,最通常的就是Matlab的Simulink。首先利用Mathworks的Matlab/Simulink完成顶层系统设计,然后通过转换工具配置Simulink中的IP核,即将静态参数传递给基于VHDL的IP,将Simulink模型文件(.md1)转换成VHDL的RTL表述和工具命令语言(Tcl)脚本,同时还可进行RTL级的功能仿真;然后通过SOPC设计工具进行综合、适配与时序仿真;最后形成对指定FPGA进行编程配置的POF和SOF文件,实现硬件系统的仿真测试。转换的工作可以描述成以下几步:
  (1)分析并确定Simulink模型。
  (2)产生VHDL环境。
  (3)生成对应网表文件或示意图进行布局、布线和硬件的下载测试。   2.從Simulink到VHDL的自动转换
  为了简单化转换程序,在最初的Simulink模块中设定一些约束条件(如图3-1所示):
  (1)运行高字节的信号或变量;
  (2)整个设计只有一种取样率;
  (3)系统只由入口、常数、端口及总线组成。
  这些能够使相关的VHDL结构描述比较容易地产生。工具箱的下一部分就可以允许不同的变量类型和生成可应用的结构和行为的VHDL。
  图3-1 从Simulink到VHDL转换流程
  从MDL(主要数据程序)模型到VHDL的转换的初步翻译由定制的Matlab程序完成。由于对Simulink描述的分析比较困难,生成的VHDL代码需要额外的编辑。例如,一些基本模块如标准逻辑门和双相位时钟等的行为描述被手动设计成标准模块库中的一部分。
  四、Matlab/Simulink到VHDL代码的转换研究
  1.Xilinx System Generator
  Matlab中的Simulink是一种对动态系统进行建模、仿真及分析的交互式工具。Xilinx公司新推出的System Generator是一种高性能的设计工具,他可以嵌入作为Simulink的一部分运行。在Simulink中System Generator打包为Xilinx Blockset,从Simulink的库中可以浏览。System Generator设计流程图如图4-1所示。
  转换的操作也很简单,在System Generator的模型参数设置对话框,选择一个输出路径并选择“Create Test bench”,单击“Generate”就可以生成VHDL代码和设计的testbench变量。当选择生成testbench变量后,Simulink将重新运行刚才的仿真。这次由于将经历代码生成过程,他将在testbench变量中保存所有输入和输出信息供VHDL和post-PAR仿真调用。
  图4-1 System generator设计流程图
  2.基于System Generator的FFT算法的实现
  System Generator for DSP是Xilinx公司开发的基于Simulink图形环境的DSP开发工具。利用System Generator工具,即使是没有多少FPGA设计经验的设计人员也能够快速开发出高性能的FPGA来实现DSP算法。
  FFT算法实现流程:
  根据FFT算法的原理以及System Generator工具的特点,可以在System Generator中完成FFT算法的设计,然后自动生成HDL代码,通过ISE软件生成位流文件下载到FPGA中,从而完成整个设计。
  实验环境:matlab 2010b、ISE 12.3、System Generator for DSP 12.3
  (1)系统模型设计
  在Simulink环境中建立一个mdl模型文件,用图形方式调用System Generator和其它的Simulink原图形模块,构成系统级或算法级设计框图如图4-2所示。
  图4-2 设计框图
  Gateway in和Gateway out模块:用于双浮点精度数据和定点数据之间的转换。
  System Generator模块:提供Matlab和硬件设计环境ISE的接口,可在指定目录中产生可在ISE软件下实现的硬件描述语言。
  Delay模块:构成一个时延环节,可以配置其延迟时钟周期的整数倍。
  FIFO模块:用于实现一组FIFO列。
  FFT v3_2模块:为离散傅立叶变换(DFT)提供了一种有效算法。该模块根据不同的结构和实现方式有三种模式可供选择:1)流水线,Streaming I/O结构;2)基4,BurstI/O结构;3)基2,Burst I/O结构。
  (2)验证与仿真
  为了证明模型设计的正确性,需要对模型进行测试试验,将FFT模型的仿真结果与MATLAB的理论计算结果进行比较,完成对所建立模型的测试工作。
  1)信号在MATLAB中的处理
  系统的输入函数为,点数N=512,采样周期为1s,在MATLAB中实现FFT处理的程序描述如下:
  n=512;
  n=0:511;
  t=1*n;
  k=n;
  x=sin(2*pi/25*t);
  y=fft(x,N);
  r=real(y);
  i=imag(y);
  subplot(1,1,1);
  plot(k,r);
  subplot(1,1,1);
  plot(k,i);
  通过以上程序得到正弦信号通过512点FFT处理后的MATLAB理论计算结果如图4-3所示。
  a)实部结果 b)虚部结果
  图4-3 MATLAB理论计算结果
  2)信号在FFT模型中的处理
  在仿真前先对Gateway in模块和FFT v3_2模块进行一下参数配置:
  Gateway in模块
  Output type:Signed
  Number of bits:16
  Binary point:15
  Quantization:Round
  Overflow:Saturate
  Sample period:1   FFT v3_2模块:
  Impliment:Pipelined Streaming I/O
  Number of sample points:512
  Output ordering:Natural order
  Scaling:Unscaled
  Rounding mode:Truncation
  Phase factor bit width:8
  将参数配置好后在Simulink的FFT模型的输入端输入正弦信号,然后选择simulink/start,待仿真结束后查看scope模块所显示的仿真结果如图4-4所示。
  a)实部结果 b)虚部结果
  图4-4 FFT模型仿真结果
  比较图5-3和图5-4的波形,可以看出FFT模型处理后的结果和Matlab的理论计算结果的波形基本一致,得到的都是频率单一的实部和虚部。
  需要说明的是:在图5-5中实部和虚部的输出都是从横坐标的1118点开始的,这是因为FFT模型中的FFT v3_2模块参数选择的是Pipelined Streaming I/O模式,在该模式下输出需要延迟一段处理时间然后才能连续输出,这里横坐标的1118点实际上就是输出的起始点,也就是输出的的k=0的位置。
  3.自动代码生成
  通过上面的测试实验,证明所建立的FFT模型是满足要求的,下面就需要将FFT模型转换成HDL代码。双击打开System Generator模块的系统设定对话框,在该对话框中设定好目标器件的型号(Virtex6 xc6vsx315t-3ff1156)、综合工具(XST)、产生语言种类(VHDL)等参数(如图4-5所示),并且选中“Createtest bench”选项,之后启动System Generator模块,将在指定目录中产生可在ISE软件下实现的硬件描述语言,并且自动生成设计的测试代码。
  图4-5 System generator的参数设置
  Gateway in模块的参数设置如图4-6所示:
  图4-6 Gateway in模块的参数设置
  五、总结
  本文的研究工作主要是以下几个部分:
  1.介绍了傅里叶变换及其在频谱分析中的应用;
  2.研究了利用MATLAB实现谱分析的傅里叶变换,其中包括基于MATLAB的连续信号与离散信号的频域分析;另外,本文實现了基于MATLAB的快速傅里叶变换(FFT)以及信号的采样——重构操作;
  3.探讨FPGA的结构,其中主要涉及基于VHDL的FPGA设计流程;
  4.讨论了由Matlab生成VHDL代码的原理,并介绍了利用System Generator及DSP Builder将Simulink模型转换为VHDL代码的方法。
  下一步的研究工作在于对转换研究进行细化和拓展,其中细化部分集中于调试优化,而拓展部分在于各种功能器件的转换实现。
  参考文献:
  [1]石海,毛哲.基于DSP实现RFID实时信号频谱分析[J].武汉工业学院学报,2008,9(3):69-72.
  [2]Agilent Technologies Inc,Agilent N9340A Handheld Spectrum Analyzer TechnicalOverview.
  [3]刘树堂.2006.数字信号处理——使用MATLAB.西安:西安交通大学出版社,252-255.
  [4]胡广书著.数字信号处理——理论、算法与实现[M].北京:清华大学出版社,2003,2:93-210.
  [5]Joyce Van de Vegte著.侯正信,王国安等译.数字信号处理基础[M].北京:电子工业出版社,2004.249-255,328-361.
  [6]程佩青著.数字信号处理教程[M].北京:清华大学出版社,2001,2:117-122,138-141.
  [7]吴继华,王诚编著.Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005:3-7.
其他文献
摘 要 通过实例,介绍了隆德县房管所基于南方数码房产管理信息系统Emf平台建设县房产管理信息系统的过程,总结了系统的优点、特点以及系统的管理和维护。阐述了利用现代信息技术建立与房产管理工作现代化要求相适应的房产管理信息系统的现实意义。  关键词 房产管理 信息系统 Emf 房产测绘      1引言  2005年10月至2006年4月隆德县房产管理所委托宁夏第一测绘院合作完成了
【摘 要】本文讨论了利率政策在对商品住宅方面的调控作用,特别是在影响低收入人群的购房需求方面,介绍了利率的对房价的的影响作用,包括利率对供给的影响及其对需求的影响,最后分析了现有中国旨在调控房价的利率政策对房价和购房人需求的影响。  【关键词】利率政策 低收入住房需求   中图分类号:F723 文献标识码:A 文章编号:1009-8283(2010)09-0030-01    前言   从2007
专门用途英语(ESP)是一种以满足不同学习者的不同需要,培养复合型应用人才为宗旨的教学途径。本文将ESP教育理念引入高职涉外护理专业英语教学实践,从ESP词汇、阅读以及写作
目的 探讨指尖再植的临床体会.方法 指尖完全离断的患者14例14指(1例是艾滋病患者),6例行逆行法再植术,8例行顺行再植.结果 再植14指12指成活,2指失败,成活率为85.7%,随访3~12
目的 探讨人性化管理理念在手术室护理管理中的应用.方法 对护理人员的需求现状进行调查和分析.满足护理人员的素质教育,解决人力问题、进修学习和奖金待遇的需求.结论 在手
作为基层党支部书记,在日常管理中针对基层单位的实际生产情况总结出的切实符合员工心理的管理方法.着重于对员工的行为管理,管理成本低,效果显著,能从思想上激发员工的工作
【摘要】本文结合笔者多年的教学实践,阐述了在英语课堂教学中,根据教材和学生的心理、生理及年龄等特点,吸引学生注意力的有效途径——直观法、听说法、交际法和全身反应教学法等。  【关键词】课堂教学注意力有效途径  在英语课堂教学中,教师所传递的各种信息,只有受到学生的注意后才能进入他们的意识,那么如何控制学生的注意力呢?我在多年的中学英语教学实践和理论学习中得到这样的启发:在英语课堂教学中,根据教材和
目的评价热疗结合胸腔化疗治疗肺癌合并胸腔积液的临床效果及安全性。方法 46例肺癌合并胸腔积液患者,随机分为热疗联合化疗组和胸腔化疗组,于治疗3~4周评价效果和毒性反应,EC
奥沙利铂(oxaliplatin for injection)又名草酸铂、艾恒(eloxatin),商品名乐沙定是常用于治疗结肠癌的化疗药物之一。奥沙利铂通过产生水化衍生物作用于DNA,形成链内和链间交
随着现代社会的发展与信息时代的来临,计算机成为了人们日常生活中不可或缺的重要交流手段,计算机教学也随之成为高校教学的必修科目。课改潮流中,各科教学手段、理念均有较