多功能信号发生器的设计_第1页
多功能信号发生器的设计_第2页
多功能信号发生器的设计_第3页
多功能信号发生器的设计_第4页
多功能信号发生器的设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录0 引言 .21 设计意义 .32 设计说明 .42.1 设计任务 .42.1.1 设计要求.42.1.2 设计目的: .43 设计过程 .53.1 系统顶层框图 .53.1.1 信号发生器结构图.53.1.2 信号发生器的内部构成.53.1.3 系统流程图.63.2 设计步骤 .63.3 系统设计 .74 代码及仿真结果 .84.1 各个模块的实现 .84.2 顶层模块 .165 小结及体会 .196 参考文献 .2020 引言引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。它能够产生多种波形,如三角波、锯齿波、矩形波(含方波) 、正弦波等,在电路实验和设备检测

2、中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频) 、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。本设计采用 FPGA 来设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、锯齿波等波形。 31 设计意义设计意义本次课设要求设计一个函数信号发生器。它能产生四种波形:正弦波、方波、三角波、锯齿波。同时能在不同的频率下显示。这次设计主要是练习了分频电路的设计,ROM 的设计,计数

3、器的设计、选择电路的设计和数码显示的设计。加强了对 when 语句,if 语句等语句的理解。拓展了对 VHDL 语言的应用。平时练习与考试都是设计一个简单的电路,本次课设综合了好几个电路的设计。同时我也增强了对分模块设计电路的应用。对我以后的电路设计生涯都是有所帮助的!函数信号发生器是应用了 VHDL 语言,通过数模转换来显示波形,实现了数模转换的应用。在工作中,我们常常会用到信号发生器,它是使用频度很高的电子仪器。信号发生器是指产生所需参数的电测试信号的仪器。按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着

4、广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波) 、正弦波的电路被称为函数信号发生器。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。凡是产生测试信号的仪器,统称为信号源,也称为信号发生器,它用于产生被测电路所需特定参数的电测试信号。信号源主要给被测电路提供所需要的已知信号(各种波形) ,然后用其它仪表测量感兴趣的参数。可见信号源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信号,提供给被测电路,以达到测试的需要。它能够产生多种波形,如三角波、矩形波(含方波) 、正弦波等,在电路实验和设

5、备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频) 、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。 本设计采用 EDA 来设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、锯齿波等波形。42设计说明设计说明2.12.1 设计任务设计任务2.1.12.1.1 设计要求设计要求:基于VHDL 语言 ,通过给定的仪器(EDA6000 试验箱)设计一个多功能信号发生器, (1

6、)能产生周期性正弦波、方波、三角波、锯齿波以及用户自己编辑的特定波形;(2)输出信号的频率范围为 100Hz200KHz,且输出频率可以调节;(3)具有显示输出波形、频率的功能。2.1.22.1.2 设计目的:设计目的:1) 掌握使用 EDA 工具设计信号发生器系统的设计思路和设计方法,体会使用 EDA 综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。2) 熟悉在 Quartus II 环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的 EDA 设计思路。3) 通过这一部分的学习,对 VHDL 语言的设计方法进行进一步的学习,对其相关语言设计规范进

7、行更深层次的掌握,能够更加熟练的做一些编程设计。53 设计过程设计过程3.13.1 系统顶层框图系统顶层框图 3.1.13.1.1 信号发生器结构图信号发生器结构图由于 FPGA/CPLD 只能直接输出数字信号,而多功能信号发生器输出的各种波形均为模拟信号,因此设计信号发生器时,需将 FPGA/CPLD 输出的信号通过 D/A 转换电路将数字信号转换成模拟信号。多功能信号发生器可由信号产生电路,波形选择电路和 D/A 转换电路构成,如下图所示: 时钟信号信号产生电路波形选择电路D/A 转换波形输出选择信号3.1.23.1.2 信号发生器的内部构成信号发生器的内部构成数控分频器三角波波形数据正弦

8、波波形数据方波波形数据任意波形数据数据选择器波形选择关时钟预置分频数(0-255)复位信号8 位数据outf6图 1 原理框图在原理框图中,正(余)弦查找表由 ROM 构成,内部存有一个完整周期正(余)弦波的数字幅度信息,每个查找表的地址对应正(余)弦波幅度信号,同时输出到数模转换器(DAC)输入端,DAC 输出的模拟信号经过低通滤波器(LPF) ,可以得到一个频谱纯净的正(余)弦波。3.1.33.1.3 系统流程图系统流程图 当输入端有时钟信号输入时,各个信号发生器模块独立运行,独立存在,发出各种信号,这些信号作为数据选择器的输入信号,在数据选择器的作用下,波形切换到相应的模块输出,再通过数

9、模转换器(D/A) ,将通过示波器显示出相应的波形图,其程序流程图如下图所示:输入信号各个信号发生器模块开始输出信号数模转换器(D/A)四选一数据选择器复位3.23.2 设计步骤设计步骤 用 VHDL 语言结合原理图设计实现一个函数信号发生器,输出正弦波、方波和三角波三种波形。将频率控制、分频、三角波、正弦波、方波发生邓各个模块分别用 VHDL 语言编程为一个子程序,并把每一个模块转换成图形文件,然后在原理图编辑框调用这些图形模块,连接电路如上图系统顶层框图所示。通过按键 1 到按键 8 控制频率调节 f7.0,用按键 6、按键 7、按键 8 控制dlt、sin、sqr 波形选通,最后把八位输

10、出接 DAC0832 通过 D/A 转换,从示波器上就能看到波形输出。按下不同的按键输出不同的波形及频率。73.33.3 系统设计系统设计 (1)数控分频器模块在时钟的作用下,通过预置分频数 DIN,来改变输出频率。假如分频系数为 N,波形存储模块存储一个周期的波形,实验里按照一个周期波形采样 64 个点存储在波形存储模块里。则输出频率Nffclkout.64(2)数据存储模块 (存储波形数据)数据存储模块主要存的是正弦波、三角波、锯齿波等一个周期的采样点。三角波模块可设计一个可逆计数器实现,设计时设置一变量作为工作状态标志,在此变量为 0时,当检测到时钟的上升沿进行加同一个数操作;为 1 时

11、,进行减同一个数操作。DA 转换采用的DA0832,输入有 8 个数据端,范围是 0 到 255;而且设置 64 个时钟周期为一个三角波周期,所有每次加、减为 1。锯齿波的存储数据与三角波类似。方波可以通过交替输出全 0 和全 1,并给以 32 个周期的延时来实现。正弦波可以通过波形变换实现把asin 变换成5.127*)1(cosa的形式进行采样,然后变换成8 位二进制码,存储在波形存储器里。(3)数据选择器模块在波形开关的控制下,选择相应的波形输出。可以用 3 个按键来控制波形选择84 代码及仿真结果代码及仿真结果4.14.1 各个模块的实现各个模块的实现4.1.14.1.1 数控分频器的

12、实现数控分频器的实现其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(d_mode:in std_logic_vector(3 downto 0); clk:in std_logic; d_out:out std_logic);end fenpin;architecture behav of fenpin is signal full:std_logic; begin p_reg: process(clk) variable cnt

13、8:std_logic_vector(3 downto 0); begin if clkevent and clk=1 then if cnt8=1111 then cnt8:=d_mode; full=1; else cnt8:=cnt8+1; full=0; end if; end if; end process p_reg;p_div:process(full) variable cnt2:std_logic; begin if fullevent and full=1 then cnt2:=not cnt2; if cnt2=1 then d_out=1 ; else d_out=0;

14、 end if; end if;end process p_div;end behav; 频率为 1MHz 的分频波形图:9 其生成元器件如图 2 所示:图 2 数控分频器器件生成图4.1.24.1.2 方波的实现方波的实现产生方波,是通过交替送出全 0 和全 1 实现,每 32 个时钟翻转一次。其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;entity square is port(clk,clr:in std_logic; q:out integer range 0 to 255); end square;architecture

15、 one of square issignal a:bit:=0; begin process(clk,clr) variable cnt:integer range 0 to 31; begin if clr=0 then a=0; elsif clkevent and clk=1 then if cnt31 then cnt:=cnt+1; else cnt:=0; a=not a; end if; end if; end process; process(clk,a) begin if clkevent and clk=1 then10 if a=1 then q=255; else q

16、=0; end if; end if; end process;end one;其仿真波形如图 3 所示:图 3 方波仿真图其生成元器件如图 4 所示:图 4 方波元器件生成图4.1.34.1.3 三角波的实现三角波的实现该模块产生的三角波以 64 个时钟为一个周期,输出 q 每次加减 8。其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity delta is port(clk,reset:in std_logic; q:out std_logic_vector(7

17、 downto 0); end delta;architecture delta_arc of delta isbegin11 process(clk,reset) variable tmp:std_logic_vector(7 downto 0); variable a:std_logic; begin if reset=0 then tmp:=00000000; elsif clkevent and clk=1 then if a=0 then if tmp=11111110 then tmp:=11111111; a:=1; else tmp:=tmp+1; end if; else i

18、f tmp=00000001 then tmp:=00000000; a:=0; else tmp:=tmp-1; end if; end if; end if; q=tmp; end process;end delta_arc;其仿真波形如图 5 所示:图 5 三角波仿真图其生成元器件如图 6 所示:12图 6 三角波元器件生成图4.1.44.1.4 正弦波的实现正弦波的实现该模块产生以 64 个时钟为一个周期的正弦波。其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;en

19、tity sin is port(clk,clr:in std_logic; d:out integer range 0 to 255);end sin;architecture sin_arc of sin isbegin process(clk,clr) variable tmp:integer range 0 to 63; begin if clr=0 then dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; end case; end if; end process;end sin_arc;其

20、仿真波形如图 7 所示:图 7 正弦波仿真图其生成元器件如图 8 所示:图 8 正弦波元器件生成图4.1.54.1.5 锯齿波的实现锯齿波的实现改变该模块递增的常数,可以改变锯齿的个数。其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;14use ieee.std_logic_unsigned.all;entity ladder is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0);end ladder;architecture ladder_arc of l

21、adder isbegin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); begin if reset=0 then tmp:=00000000;elsif clkevent and clk=1 then if tmp=11111111 then tmp:=00000000; else tmp:=tmp+16; -锯齿常数为 16,可修改 end if; end if; qqqqqd_mode,clk=clk, d_out=square,d_out= delta, d_out= sin, d_out= ladder)

22、;wen2: square port map(clr=resel,clk= square, q= d0);wen3: delta port map(resel =resel,clk= delta, q= d1);wen4: sin port map(clr=resel,clk= sin, q= d2);wen5: ladder port map(resel =resel,clk= ladder, q= d3);wen6: select4_1 port map(sel = sel, d0= d0, d1= d1, d2= d2,d3=d3,q=q);end behav;4.2.24.2.2 生成整体生成整体 RTLRTL:新建一工程,加载上述模块,利用顶层模块法生成整体多波形信号发生器。整体 RTL 图如图 13所示:图 13 整体多波形信号发生器 RTL 图184.2.34.2.3 整体仿真图整体仿真图整体多波形信号发生器仿真如图 14 所示:图 14 整体多波形信号发生器仿真图其中,d_mode

温馨提示

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

评论

0/150

提交评论