基于FPGA信号发生器论文_第1页
基于FPGA信号发生器论文_第2页
基于FPGA信号发生器论文_第3页
基于FPGA信号发生器论文_第4页
基于FPGA信号发生器论文_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 fpga 的信号发生器设计论文- 1 -基于基于 fpgafpga 信号发生器论文信号发生器论文目目 录录摘 要.21 前 言.32 设计方案.52.1 总体设计思路 .52.2 方案论证 .62.2.1 方案一 .62.2.2 方案二 .62.2.3 方案三 .62.3 方案确定 .73 软件设计.83.1 波形产生模块 .83.1.1 正弦波 .83.1.2 矩形波.103.1.3 三角波.103.1.4 基波.113.1.5 谐波的产生 .113.1.6 波形模块图.113.2 频率控制模块 .113.3 选择波形模块 .113.4 分频器模块 .133.4.1 设计思路.133.

2、4.2 vhdl 实现 .133.4.3 分频值计算.144 硬件电路设计.154.1 硬件设计注意事项 .154.2 滤波电路.154.3 幅度控制电路 .164.4 fpga 器件引脚分配.164.5 硬件电路实现 .175 调 试.185.1 设计及仿真调试使用设备.18基于 fpga 的信号发生器设计论文- 2 -5.2 调试方法 .185.2.1 硬件调试.185.2.2 软件调试.185.2.3 综合调试.185.3 调试结果 .195.3.1 软件仿真结果及分析.195.3.2 综合调试结果.216 结 论.24致谢辞.25参考文献.26附 录.27基于 fpga 的信号发生器设

3、计论文- 3 -基于基于 fpgafpga 的信号发生器的信号发生器摘摘 要要本次设计课题为应用 vhdl 语言及 max+plus ii 软件提供的原理图输入设计功能,结合电子线路的设计加以完成一个可应用于数字系统开发或实验时做输入脉冲信号或基准脉冲信号用的信号发生器,它具结构紧凑,性能稳定,设计结构灵活,方便进行多功能组合的特点,经济实用,成本低廉。具有产生三种基本波形脉冲信号(正弦波、矩形波和三角波) ,以及三次(及三次以下)谐波与基波的线性组合脉冲波形输出,且单脉冲输出脉宽及连续脉冲输出频率可调,范围从 100hz 到 1khz,步进为 100hz;幅度可调,从 0 到 5 伏,步进为

4、0.1v。关键词:信号发生器, fpga,eda,vhdl 语言。基于 fpga 的信号发生器设计论文- 4 -基于 fpga 的信号发生器设计论文- 5 -1 前 言随着我国的经济日益增长,社会对电子产品的需求量也就越来越大,目前,我国的电子产品市场正在迅速的壮大,市场前景广阔。fpga(field programmable gate array,现场可编程门阵列)在现代数字电路设计中发挥着越来越重要的作用。fpga/cpld(complex programmable logic device)所具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,这样就极

5、大地提高了电子系统设计的灵活性和通用性,缩短了产品的上市时间并降低可电子系统的开发成本,且可以毫不夸张地讲,fpga/cpld 能完成任何数字器件的功能,从简单的 74 电路到高性能的 cpu。它的影响毫不亚于 20 世纪 70 年代单片机的发明和使用。现在随着电子技术的发展,产品的技术含量越来越高,使得芯片的复杂程度越来越高,人们对数万门乃至数百万门设计的需求也越来越多,特别是专用集成电路(asic)设计技术的日趋进步和完善,推动了数字系统设计的迅速发展。仅靠原理图输入方式已不能满足要求,采用硬件描述语言 vhdl 的设计方式应运而生,解决了传统用电路原理图设计大系统工程时的诸多不便,成为电

6、子电路设计人员的最得力助手。设计工作从行为、功能级开始,并向着设计的高层次发展。这样就出现了第三代 eda 系统,其特点是高层次设计的自动化。 第三代 eda 系统中除了引入硬件描述语言,还引入了行为综合工具和逻辑综合工具,采用较高的抽象层次进行设计,并按层次式方法进行管理,可大大提高处理复杂设计的能力,缩短设计周期,综合优化工具的采用使芯片的品质如面积、速度和功耗等获得了优化,因而第三代 eda 系统迅速得到了推广应用。目前,最通用的硬件描述语言有 vhdl 和 veriloghdl 两种,现在大多设计者都使用 93 年版标准的 vhdl,并且通过了 ieee 认定,成为世界范围内通用的数字

7、系统设计标准。vhdl 是一种新兴的程序设计语言,使用 vhdl 进行设计其性能总是比常规使用 cpu 或者 mcu 的程序设计语言在性能上要高好几个数量级。这就是说,在传统上使用软件语言的地方,vhdl 语言作为一种新的实现方式会应用得越来越广泛。本课题设计是采用美国 altera 公司的 flex10k10 器件,使用的是 altera 公司的 eda 软件平台 maxplus ii 可编程逻辑器件开发软件。基于 fpga 的信号发生器设计论文- 6 -基于 eda 工具的 fpga/cpld 的开发流程 cpld/fpga 器件的设计一般可分为设计输入、设计实现和编程三个设计步骤:1.设

8、计输入方式主要由文本输入和图形输入两种,可根据需要选择,也可混合输入。eda 工具会自动检查语法;2.设计实现阶段 eda 工具对设计文件进行编译,进行逻辑综合、优化,并针对器件进行映射、布局、布线,产生相应的适配文件;3.编程阶段 eda 软件将适配文件配置到相应的 cpldfpga 器件中,使其能够实现预期的功能。信号发生器是数字设备运行工作中必不可少的一部分,没有良好的脉冲信号源,最终就会导致系统不能够正常工作,更不必谈什么实现其它功能了。不论是处于开发还是故障检修阶段,输出标准且性能优秀的信号发生器总是能够带来工作效率的大幅提升,使新产品有一个标准的信号源、损坏的系统得到正确校验,不会

9、被一些故障所蒙蔽。在传统的信号发生器中,大都使用分立元件,而且体积庞大携带不便,且大部分只能输出一种脉冲信号波形。在设计领域,不管采用什么技术生产,生产的产品用在哪里,其产品设计的宗旨都是离不开以下几点:实用性高、成本低、可升级、功能完善可扩展等!使用专用的数字电路设计的信号发生器,设备成本高、使用复杂。基于以上考虑,在中小型数字电路的设计和测试中,迫切需要设计一种小型易用成本低廉的信号发生器。此课题的设计以小型经济,集成度高,性能稳定,使用方便为指导,在功能上力求完善实用,同时兼顾商业价值与应用价值的体现。基于 fpga 的信号发生器设计论文- 7 -2 2 设计方案设计方案2.1 总体设计

10、思路1 设计步骤此设计将按模块式实现,据任务书要求,设计总共分四大步份完成:(1)产生波形(三种波形:方波、三角波和矩形波)信号;(2)波形组合;(3)频率控制;(4)幅度控制。2 设计思想利用 vhdl 编程,依据基本数字电路模块原理进行整合。系统各部分所需工作时钟信号由输入系统时钟信号经分频得到,系统时钟输入端应满足输入脉冲信号的要求。组合波形信号经显示模块输出。具备幅度和频率可调功能,幅度可通过电位器调整,频率控制模块则是一个简易的计数器,控制步径为 100hz的可调频率,最终送至脉冲发生模块输出脉冲信号,达到设计课题所要求的输出波形频率可调及幅度可调功能。幅度可调功能由于比较简单,可以

11、在 fpga 外部利用硬件电路实现。总体设计框图如下图 1 所示:1khz图 1 总体设计框图控制电路正弦波、方波、三角波信号产生模块波形组合选择模块幅度控制/电位器频率控制模块/计数器模块滤波电路fpga输出电路100hz1khz基于 fpga 的信号发生器设计论文- 8 -2.2 方案论证2.2.1 方案一采用 dds(直接数字频率合成器)来设计,设计总体框图如图 2 所示。在设计界里众所周知,dds 器件采用高速数字电路和高速 d/a 转换技术,具有频率转换时间短、频率分辨率高、频率稳定度高、输出信号频率和相位可快速程控切换等优点,所以,我们可以利用 dds 具有很好的相位控制和幅度控制

12、功能,另外其数据采样功能也是极具精确和完善的,它可以产生较为精确的任何有规则波形信号,可以实现对信号进行全数字式调制。用 fpga 和 dds 实现信号调制,既克服了传统的方法实现带来的缺点,若采用它来编程设计,必定会事半功倍,且使设计趋于理想状态。但鉴于 dds 的占用 ram 空间较大,我们设计是采用fpga10k10 器件,总共只有一万门的逻辑门数量,而整个 dds 设计下来,大概最少会占用 3-4 万门的数量,所以在性价比方面不合理,这样也使得我们的设计会有些不切实际。 频率控制字 信号输出 时钟 图 2 dds 与 fpga 总体设计图 2.2.2 方案二采用震荡器频率合成方案。具体

13、方案如下:首先通过频率合成技术产生所需要频率的方波,通过积分电路就可以得到同频率的三角波,再经过滤波器就可以得到正弦波。其优点是工作频率可望做得很高,也可以达到很高的频率分辨率;缺点是使用的滤波器要求通带可变,实现很难,高低频率比不可能做得很高。相位累加器romd/a变换低通滤波基于 fpga 的信号发生器设计论文- 9 -2.2.3 方案三采用 vhdl 语言来编程,然后下载文件到 fpga 来实现。vhdl 语言是电子设计领域的主流硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大降低了硬件设计任务,提高了设计效率和可靠性,要比模拟电路快得多。该方案

14、是利用 fpga 具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,极大地提高了电子系统设计的灵活性和通用性,而且大大缩短了系统的开发周期。2.3 方案确定 由上述三个方案对比,采用第三种方案:通过 fpga 软件扫描方式将波形数据读出传输给 dac0832 产生波形输出。这种方法在软、硬件电路设计上都简单,且与我们的设计思路紧密结合。由于幅度控制部分在设计需要用到数字电子,这样有要经过 d/a 转换器再输出,必将占用大量资源,造成不必要的开销。鉴于有设计经验的同学和老师的建议,采用一个电位器代替,虽然精确度不够,但是也弥补了性价比方面的不足。波形组合如果

15、采用分开式模块实现,也必将导致占用大量的资源,而且模块设计复杂度提高,只要采用重复调用一个模块的设计方法,既可以降低资源的占用率,也使得设计更加灵活且有针对性。此信号发生器的特点及功能集成度高,因采取整体模块式设计,在此也考虑到实际应用中,万一 fpga 的逻辑门数量不够,特准备了一套备用方案。备用方案:将波形数据存放在 6116ram 中,6116 的存储容量大,且可重复使用,虽用单片机在速度方面远不及 fpga,但是这样是在出现上述状况后的最佳补偿方式。综合以上涉及方面的分析,因此本次课题采用此方案进行设计。基于 fpga 的信号发生器设计论文- 10 -基于 fpga 的信号发生器设计论

16、文- 11 -3 软件设计软件设计3.1 波形产生模块本设计用 vhdl 语言根据傅立叶函数采集点进行扫描,分别产生正弦波、三角波和矩形波。以下介绍各种常用周期信号的傅立叶函数展开式。3.1.1 正弦波1 设计思想 正弦波发生分为两个步骤,即正弦波幅值采样存储和正弦波波形的还原输出。幅值采样是将一个周期正弦波进行 64 等分,如图 3 所示,将 64 个采样点进行量化处理,量化值=255*sin360/64(v) ,将 64 点量化值存入存储器。正弦波形的产生是通过循环反复将存储器中的 64 点采样值通过 dac0832 进行还原输出,得到幅值正比于 64 点采样值的正弦波。 f(t) a t

17、 0.5t -a t图图 12-18(c) 矩矩形形波波三三 2 vhdl 实现1正弦信号波形数据文件建立正弦波波形数据由 64 个点构成,此数据经 dac0832,可在示波器上观察到正弦波形。源程序如下程序 1 所示: 程序程序 11width=8; -表示数据输出位宽是 8depth=64; -表示共有 64 个 8 位数据点address_radix=hex; -表示地址信号用十六进制数表示data_radix=dec; -表示输出数据是十进制数content begin 00:255;01:254;02:252;03:249;04:245;05:239;06:233;07:225; 0

18、8:217;09:207;0a:197;0b:186;0c:174;0d:162;0e:150;0f:137;图 3 正弦波采样图图 4 方波采样图t0tf(t)基于 fpga 的信号发生器设计论文- 12 - 10:124;11:112;12: 99;13: 87;14: 75;15: 64;16: 53;17: 43; 18: 34;19: 26;1a: 19;1b: 13;1c: 8;1d: 4;1e: 1;1f: 0; 20: 0;21: 1;22: 4;23: 8;24: 13;25: 19;26: 26;27: 34; 28: 43;29: 53;2a: 64;2b: 75;2c:

19、 87;2d: 99;2e:112;2f:124; 30:137;31:150;32:162;33:174;34:186;35:197;36:207;37:217; 38:225;39:233;3a:239;3b:245;3c:249;3d:252;3e:254;3f:255; end;2定制 rom 源程序如下所示:sindata.vhdsindata.vhd:library ieee;use ieee.std_logic_1164.all;entity sindata isport(address:in std_logic_vector(5 downto 0);inclock:in std

20、_logic;q:out std_logic_vector(7 downto 0);end sindata;architecture syn of sindata issignal sub_wire0 :std_logic_vector(7 downto 0);component 1pm_romgeneric(1pm_width :natural;1pm_widthid :natural;1pm_address_control:string;1pm_outdata:string;1pm_file:string);port(address:in std_logic_vector(5 downto

21、 0);inclock:in std_logic;q:out std_logic_v ector(7 downto 0);end component;beginq8,lpm_widthad=6,lpm_address_comtrol=registered,lpm_outdata=unregistered,lpm_file=d:/sin_g/data/sin_data.mif)port map(address=address,inclock=inclock,q=sub_wire0);end syn;正弦波信号发生器顶层设计源程序:正弦波信号发生器顶层设计源程序:library ieee;use

22、ieee.std_logic_1164.all;use ieee.std_logic_unsigend.all;entity signt isport(clk:in std_logic;dout:out std_logic_vector(7 downto 0);基于 fpga 的信号发生器设计论文- 13 -endarchitecture dacc of singt iscomponent sindataport(address:in std_logic_vector(5 downto 0);inclock:in std_logic;q:out std_logic_vector(7 downt

23、o 0);end conponent;signal q1:std_logic_vector(5 downto 0);beginprocess(clk)beginif clkevent and clk=1then q1q1,q=dout;in clock=clk);end;3.1.2 矩形波1 设计思路矩形波的实现较之正弦波发生简单,由于矩形波是两个电平值间的交替变换,因此波形采样值的预存只要有两个不同的数值就行了,为了使矩形波发生的频率灵活可调,采用 60 个采样值扫描输出来实现,每半个矩形波周期采用三十个采样值,循环反复将存储器中的 60 点采样值通过 dac0832 进行还原输出,得到幅值

24、正比于点采样值的矩形波。采样图如图 4 所示。2 vhdl 实现源程序见附录。 3.1.3 三角波1 设计思路由于三角波是线性的,比较简单就可以产生,如果最低电压设为 15v,最高是 255v,那么根据它的公式 255/15=17,每个点的电压只要依次加 17 就可以得到,一个波形所以采用简单的加减算法就可实现,如图 5 所示三角波的采样图: f(t) a t t -a 图图 12-19 三三角角波波基于 fpga 的信号发生器设计论文- 14 -图 5 三角波采样图 2 vhdl 实现具体源程序见附录。3.1.4 基波通过 vhdl 编程产生的正弦波、方波、三角波三种周期性波形即为基波。3.

25、1.5 谐波的产生采用与基波产生的同样原理,编程产生三种波形的谐波,所不同的是一个波形的周期采样的点数不同,如果基波采样点为 63 个,谐波采样点数则为 21个,其每点的电压值为 255*(sin360/60+sin360/20) (v) ,在对其进行循环扫描即可实现基波与谐波的线性叠加。3.1.6 波形模块图 最终波形的设计模块图如图 6 所示,l1 是三角波,l2 是方波,l3 是正弦波,l4 是谐波。3.2 频率控制模块本课题要求频率控制是在 100hz-1khz,步进为 100hz。在本题设计中只需借助 fpga 便可完成。根据用户需要的频率,通过编程把频率控制数值传送给各个模块,从而

26、实现频率的控制。如下图 7 所示:3.3 选择波形模块这一部分主要是通过一个按键对波形进行循环选择,按下确认按钮后进行波形的调用。设计流程图如下图 8 所示基于 fpga 的信号发生器设计论文- 15 -图 6 波形模块图 图 7 频率控制模块流程图开始返回频率控制按下否读入按键数值调用频率控制模块yn键按下否?基于 fpga 的信号发生器设计论文- 16 -确认键按下否? 图 8 选择波形电路设计流程图3.4 分频器模块3.4.1 设计思路分频器模块将输入的高频脉冲降频得到各模块所需的低频脉冲,分频器模块利用计数器的原理进行设计,通过对预设的分频值进行比较计数,实现输入高频时钟脉冲的分频输出

27、功能。本次课题的设计方案中使用了十组分频器,其设计原理完全相同,将对应的频率用 8421bcd 码对其进行编程赋值,如 100hz则对应的二进制数是“0000” ,200hz 则是“0001”1khz 则是“1010” 。现选取其中的 500 分频分频器进行简单说明。具体程序见附录。3.4.2 vhdl 实现process(clk_in)开始返回波形选择控制按下否进行波形的调用调用波形选择程序ynyn基于 fpga 的信号发生器设计论文- 17 -beginif(clk_inevent and clk_in=0) thenif step249 then分频值step=step+1;elsest

28、ep=0;循环累加clk_out=not clk_out;计数满,输出翻转end if;end if;end process;3.4.3 分频值计算分频值(输出时钟脉冲周期输入时钟脉冲周期)21输入时钟脉冲频率1khz,周期1ms;输出时钟脉冲频率2hz,周期500ms分频值(500ms1ms)212493.4.4 分频器模块及初步仿真图分频器模块及初步仿真图如图 9 所示。图 9基于 fpga 的信号发生器设计论文- 18 -4 硬件电路设计4.1 硬件设计注意事项此次设计利用 eda 试验箱实现硬件功能,试验箱设计可靠,干扰小,能使系统在良好的环境中正常工作。但是实际制作硬件电路时,就应考

29、虑到干扰所带来的负面影响。为了避免干扰信号影响系统正常工作,未分配功能的 fpga 引脚必须接地,在 fpga 器件的电源端必须并连一 0.01uf 的退耦电容,在所有的输入引脚上串联 100 欧姆左右电阻减弱干扰信号影响,如有必要还应在输入端设置上拉或下拉电阻。4.2 滤波电路如图 10 所示,设计 d/a 输出后,通过滤波电路、输出缓冲电路,使信号平滑且具有负载能力。正弦波的输出频率小于 262khz,为保证 262khz 频带内输出幅度平坦,又要尽可能抑制谐波和高频噪声,综合考虑取 r1=1k,r2=1k,c1=100pf,c=100pf运放选用宽带运放 lf351,用 electron

30、ics workbench 分析表明:截止频率约为 1mhz,262khz 以内幅度平坦。 为保证稳幅输出,选用 ad817,这是一种低功耗、高速、宽带运算放大器 , 具有很强的大电流驱动能力。实际电路测量结果表明:当负载 100、输出电压峰-峰值 1ov 时,带宽大于 500khz,幅度变化小于土 1%。图 10 滤波电路基于 fpga 的信号发生器设计论文- 19 -4.3 幅度控制电路幅度控制电路采用初定方案来设计,即用一个电位器来控制波形的输出幅度。电位器的型号为 10k 欧。4.4 fpga 器件引脚分配为了方便硬件设计,降低硬件设计的复杂度,对 fpga 的输入输出引脚进行分配,将

31、关联的引脚集中排布,将同一组内的引脚按顺序排布,将需要输入高频时钟脉冲的端口安排在时钟输入端,以提高其信号接收能力。分配如下: clkusr pin62。cs0 pin67。cs1 pin68bev_clk pin76.bev_oe pin72 in pin31、33、73、75。d0 pin1td0 pin9td1 pin4ce0 pin64ce1 pin3config pin23conf_done pin65rs pin70ws pin69tms pin46trst pin45tck pin66dclk pin2status pin44基于 fpga 的信号发生器设计论文- 20 -mse

32、l0 pin20msel1 pin21init_done pin58rdy_busy pin59dev_oe pin72dev_clr pin774.5 硬件电路实现此次设计硬件部分通过 fpga/cpld 实验箱完成,如今后需制作单独的硬件电路,亦可以依照实验箱各部分结构进行设计。基于 fpga 的信号发生器设计论文- 21 -5 调 试5.1 设计及仿真调试使用设备设计及仿真调试使用设备示波器:hitachi v-1060,万用表,fpga 实验箱,pc 机各一台。 5.2 调试方法根据方案设计的要求,调试过程共分三大部分:硬件调试、软件调试和综合调试。电路用 fpga/cpld 实验箱按

33、模块调试,各模块逐个调试通过后再进行综合调试。5.2.1 硬件调试(1)在做控制电路的调试时,分析输入输出,可以发现时序与仿真结果是否有出入,便于找出硬件电路中的故障。再调试 d/a 转换是否正常。 (2) 为提高电路抗干扰性能,我们采取了一些抗干扰措施。如接线线尽量短,减少交叉,每个芯片的电源与地之间都接有去扰电容,数字地与模拟地分开。实践证明,这些措施对消除某些引脚上的 “毛刺 ” 及高频噪声起到了很好的效果。 (3) 运算放大器的选择 由于输出频率达到上千赫兹,因此对放大器的带宽有一定要求。所以,在调试滤波电路和缓冲输出电路时,都选择了高速宽带运放。5.2.2 软件调试 本系统的软件功能

34、强大,运用 vhdl 语言来编写,先在 max+plus ii 对所编的模块一一进行仿真,排除了语法的错误编写和设计逻辑思维的错误,当仿真完确认程序没问题时,再直接下载到 fpga 芯片,用 fpga 实验箱进行调试。采取的就是自底向上的调试方法,即先单独调试好每一个模块,然后再连接成一个完整的系统再调试。基于 fpga 的信号发生器设计论文- 22 -5.2.3 综合调试 fpga 系统的软硬件设计是紧密相连的,将软件编译综合并且通过下载对fpga 进行适配,运行中的 fpga 是由其内部的硬件结构控制读出数据,从而产生波形。因此,如果在软硬件都基本调通的情况下,系统的软硬件综合调试难度不是

35、很大。5.3 调试结果5.3.1 软件仿真结果及分析 1.分频(1)仿真波形图如图 11 所示: 图 11clkin:基准时钟输入;clkout:分频时钟输出;movin:处始置入值;(2)仿真结果分析clk_in 为输入高频时钟脉冲,clkout 为分频输出的低频时钟脉冲。此分频器输入为 1khz,输出为 100hz,为 10 分频分频器,如图 12 所示。2.信号波形产生 (1)正弦波 仿真波形图如图 12 所示: 图 12frct:相位控制端;clk:时钟输入;基于 fpga 的信号发生器设计论文- 23 -sinout:正弦波输出;vsin:正弦波地址寄存器;(2)方波 仿真波形图如图

36、 13 所示: 图 13clk:时钟输入;frct:相位控制端;squout:方波输出;(3)三角波 仿真波形图如图 14 所示: 图 14clk:时钟输入;frct:相位控制端;triout:三角波输出;(4)任意波形的地址 仿真波形图如图 15 所示: 图 15frct:相位控制端;clk:时钟输入;addout:地址输出;基于 fpga 的信号发生器设计论文- 24 -(5)波形选择 仿真波形图如图 16 所示: 图 16ri:ram 的读数控制端;selin:波形选择输入端(0:正弦波;1:三角波;2:方波;3:任意波地址;4:三角波和正弦波的叠加;5:方波和正弦波的叠加;6:方波和三

37、角波的叠加;7:三种波形的叠加)addin:地址输入端;sinin:正弦波输入端;triin:三角波输入端;squin:方波输入端;qadd:地址输出端;q:波形选择输出端;(6)仿真结果分析 经过仿真,从各个仿真图上看得,基本上可以实现预期的波形产生功能。5.3.2 综合调试结果 1基波的输出波形如图 17 所示: 基于 fpga 的信号发生器设计论文- 25 -(1)方波 (2)正弦波 (3)三角波 图 17 基波输出波形图2.谐波与基波叠加的输出波形(1)正弦与其三次谐波的叠加,如图 18 与图 19 所示:)3sin31(sin4)(2ttatf f1(t) 4a/ o t f2(t)

38、 a o t 图 18 图 19(2)我们观察到图 20d 的波形,它也混有二次谐波,但这二次谐波带有一定的相移(图 20c)。同样地,当观察到图 21b 的波形,我们就知道它除了基波以外混有三次谐波(见图 21a)。图 21d 的波形也混有三次谐波,并带有一定相移(图 21c)。 (a) (b) (c) (d)图 20 基波与二次谐波叠加(a) (b) (c) (d)图 21 基波与三次谐波的叠加图3综合调试数据(1)输出波形频率范围测试测试数据如下表 1 所示 : 基于 fpga 的信号发生器设计论文- 26 -单位:hz 输出频率预置频率正弦波方波三角波负载电阻(欧姆)100100.03

39、100.03100.03100500500.06500.06500.06100800800.5800.5800.51001k1 000.21 000.21 000.2100表 1(2) 输出波形幅度范围测试,在频率为 100hz-1khz 测得的输出幅度数据范围可以达到 0-5v 的要求。基于 fpga 的信号发生器设计论文- 27 -6 结 论通过此次设计,让我深深的感觉到自己所学知识真是非常的浅薄。面对电子技术日新月异的发展,利用 eda 手段进行设计已成为不可阻挡的趋势。相对于传统至底向上的设计方式,自上而下的设计具有其显著的优越性。利用 eda设计软件辅助设计,方便快捷,减少了错误率的

40、产生,缩短了产品的设计及上市周期,既减轻了设计工作量又满足了商业利益的需求。该系统以 fpga10k10 器件为核心部件,可利用软件编程实现了对 d/a 转换信号的处理。努力做到了线路简单、高性价比的特点,充分利用了软件编程,弥补了硬件元器件的不足。在设计过程当中,遇到了软件操作不熟练,程序编写不规范等诸多问题,通过对问题的总结分析得出,应用软件的主要功能必须熟练操作,才能提高工作效率,需要规范操作的地方必须严格按照使用说明操作,避免由于软件使用不当造成的错误产生。程序的编写格式必须规范,模块、端口以及信号变量的命名应当反映实际意义,缩进格式工整明了,方便阅读理解,这样有利于程序的编写,有利于

41、分析调试,也有利于程序的重复使用。此次课题的设计已告一段落,在这次毕业设计过程中需要用一些不曾学过的东西时,就要去有针对性地查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识,学会了一些编程方面的常用算法。作为一名电子专业的毕业生,我将会继续在新技术的道路上不断钻研、开拓进取。相信通过此次设计的锻炼,我对专业知识和技能的掌握将更加牢靠,在今后的工作和学习中,必将使我受益匪浅,取得应有的优势。基于 fpga 的信号发生器设计论文- 28 -致谢辞在这里感谢指导老师郑文斌给我耐心的指导,在这次设计期间,碰到许多专业方面的难题,郑老师都一一帮我解答,特别在教学

42、繁忙的情况下,还为我们提供了许多宝贵的资料和意见,并帮我们作出了详细的分析,使我们更加顺利地完成此次毕业设计。通过这一个多月的时间,使我学到许多知识,明白了许多以前上课时无法理解的知识,还积累了一些较简单的问题解决方案。与此同时也感谢同组做课题设计的同学,在设计过程中,有许多东西我不懂,他们都耐心地给我讲解,给予我技术支援,帮助我解决了不少难题。另外由于该方面的设计水平有限,所以存在着许多缺陷和失误,恳请老师批评指正。基于 fpga 的信号发生器设计论文- 29 -参考文献1潘松,黄继业. eda 技术实用教程(第二版). 北京科学出版社. 2005.22亿特科技. cpld/fpga 应用系

43、统设计与产品开发. 人民邮电出版社. 2005.73李辉. pld 与数字系统设计. 西安电子科技大学出版社. 2005.54王志鹏,付丽琴. 可编程逻辑器件开发技术 max+plus ii.北京国防工业出版社.2005.35王道先. vhdl 电路设计技术. 北京国防工业出版社. 2004.16 赵不贿. 在系统可编程器件与开发技术. 机械工业出版社. 2001.67 曾繁泰. eda 工程的理论与实践. 电子工业出版社. 2004.58 尹佳喜,尹 仕. 基于 cpld 的三相多波形函数发生器设计http:/ 高淼. 基于 fpga 的自治型 spwm 波形发生器的设计http:/ 李刚强

44、. fpga 设计中关键问题的研究 http:/ fpga 的信号发生器设计论文- 30 -附附 录录正弦波源程序:正弦波源程序:数据采集点表数据采集点表: :width=8;depth=64;address_radix=hex;data_radix=dec;content begin 00:255;01:254;02:252;03:249;04:245;05:239;06:233;07:225; 08:217;09:207;0a:197;0b:186;0c:174;0d:162;0e:150;0f:137; 10:124;11:112;12: 99;13: 87;14: 75;15: 64;

45、16: 53;17: 43; 18: 34;19: 26;1a: 19;1b: 13;1c: 8;1d: 4;1e: 1;1f: 0; 20: 0;21: 1;22: 4;23: 8;24: 13;25: 19;26: 26;27: 34; 28: 43;29: 53;2a: 64;2b: 75;2c: 87;2d: 99;2e:112;2f:124; 30:137;31:150;32:162;33:174;34:186;35:197;36:207;37:217; 38:225;39:233;3a:239;3b:245;3c:249;3d:252;3e:254;3f:255; end;定制定制

46、 romrom 源程序源程序 sindata.vhdsindata.vhd: library ieee;use ieee.std_logic_1164.all;entity sindata isport(address:in std_logic_vector(5 downto 0);inclock:in std_logic;q:out std_logic_vector(7 downto 0);end sindata;architecture syn of sindata issignal sub_wire0 :std_logic_vector(7 downto 0);component 1pm

47、_romgeneric(1pm_width :natural;1pm_widthid :natural;1pm_address_control:string;1pm_outdata:string;1pm_file:string);port(address:in std_logic_vector(5 downto 0);inclock:in std_logic;q:out std_logic_v ector(7 downto 0);end component;beginq8,lpm_widthad=6,lpm_address_comtrol=registered,lpm_outdata=unre

48、gistered,lpm_file=d:/sin_g/data/sin_data.mif)基于 fpga 的信号发生器设计论文- 31 -port map(address=address,inclock=inclock,q=sub_wire0);end syn;正弦波顶层设计源程序正弦波顶层设计源程序singt.vhdsingt.vhd:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigend.all;entity signt isport(clk:in std_logic;dout:out std_logic_v

49、ector(7 downto 0);endarchitecture dacc of singt iscomponent sindataport(address:in std_logic_vector(5 downto 0);inclock:in std_logic;q:out std_logic_vector(7 downto 0);end conponent;signal q1:std_logic_vector(5 downto 0);beginprocess(clk)beginif clkevent and clk=1then q1q1,q=dout;in clock=clk);end;a

50、ddersadders 程序:程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity address is port(clk:in std_logic; addout:out std_logic_vector(5 downto 0);end;architecture one of address isbegin process(clk) variable adda:std_logic_vector(5 downto 0); variable con:integer range 0 to

51、 60; begin if clkevent and clk=1then if adda=111100 then adda:=000000; else adda:=adda+1;基于 fpga 的信号发生器设计论文- 32 - end if; end if; addoutywclk,plclk=plclk,dain=datein,lock=datelock,squin=squ,triin=trii,sinin=sin,addin=add);u2:selecte port map(selin=selin,ri=ri,sinin=sin,addin=add,squin=squ,triin=trii

52、,q=q,qadd=addout);end;分频器源程序:分频器源程序:library ieee;基于 fpga 的信号发生器设计论文- 33 -use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fpq is port(clk:in std_logic; movin:in std_logic_vector(7 downto 0); clkout:out std_logic);end;architecture one of fpq is beginprocess(clk) variable full:std_lo

53、gic; variable cnt8:std_logic_vector(7 downto 0); begin if clkevent and clk=1then if cnt8=11111111then full:=not full; cnt8:=movin; else cnt8:=cnt8+1; end if; end if; clkoutq=sinin;ri1:=1;qaddq=triin;ri1:=1;qaddq=squin;ri1:=1;qaddqadd=addin;ri1:=0;qx:=0&sinin+triin;q=x(8 downto 1);ri1:=1;qaddx:=0

54、&sinin+squin;q=x(8 downto 1);ri1:=1;qaddx:=0&triin+squin;q=x(8 downto 1);ri1:=1;qaddx:=0&triin+sinin;y:=0&x+squin;q=y(9 downto 2);ri1:=1;qaddnull; end case; ri=ri1; end process;end;sig:sig:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sig is port( cl

55、k:in std_logic; sinout:out std_logic_vector(7 to 0);end;architecture one of sig issignal msin:integer range 0 to 60; begin process(clk) variable vsin:integer range 0 to 60; begin if clkevent and clk=1 then if vsin=60 then vsin:=0; else vsin:=vsin+1; end if; end if; msinsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinout

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论