




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、多功能信号发生器的设计 目 录 0 引言 .2 1 设计意义 .3 2 设计说明 .4 2.1 设计任务 .4 2.1.1 设计要求.4 2.1.2 设计目的: .4 3 设计过程 .5 3.1 系统顶层框图 .5 3.1.1 信号发生器结构图.5 3.1.2 信号发生器的内部构成.5 3.1.3 系统流程图.6 3.2 设计步骤 .6 3.3 系统设计 .7 4 代码及仿真结果 .8 4.1 各个模块的实现 .8 4.2 顶层模块 .16 5 小结及体会 .19 6 参考文献 .20 0 引言引言 信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。它能够产生多种波 形,如三
2、角波、锯齿波、矩形波(含方波) 、正弦波等,在电路实验和设备检测中具有十分广泛的用 途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频 (低频) 、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学 等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频 率或高或低的信号发生器。 本设计采用 fpga 来设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、 锯齿波等波形。 1 设计意义设计意义 本次课设要求设计一个函数信号发生器。它能产生四种波形:正弦波、方波、三角波、锯齿波。 同时
3、能在不同的频率下显示。这次设计主要是练习了分频电路的设计,rom 的设计,计数器的设计、 选择电路的设计和数码显示的设计。 加强了对 when 语句,if 语句等语句的理解。拓展了对 vhdl 语言的应用。平时练习与考试都是 设计一个简单的电路,本次课设综合了好几个电路的设计。同时我也增强了对分模块设计电路的应 用。对我以后的电路设计生涯都是有所帮助的! 函数信号发生器是应用了 vhdl 语言,通过数模转换来显示波形,实现了数模转换的应用。 在工作中,我们常常会用到信号发生器,它是使用频度很高的电子仪器。信号发生器是指产生 所需参数的电测试信号的仪器。按信号波形可分为正弦信号、函数(波形)信号
4、、脉冲信号和随机 信号发生器等四大类。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用 。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波 (含方波) 、正弦波的电路被称为函数信号发生器。 信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。凡是产生测试信 号的仪器,统称为信号源,也称为信号发生器,它用于产生被测电路所需特定参数的电测试信号。 信号源主要给被测电路提供所需要的已知信号(各种波形) ,然后用其它仪表测量感兴趣的参数。可 见信号源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信 号,
5、提供给被测电路,以达到测试的需要。它能够产生多种波形,如三角波、矩形波(含方波) 、正 弦波等,在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要 射频(高频)发射,这里的射频波就是载波,把音频(低频) 、视频信号或脉冲信号运载出去,就需 要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超 声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。 本设计采用 eda 来 设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、锯齿波等波形。 2设计说明设计说明 2.12.1 设计任务设计任务 2.1.12
6、.1.1 设计要求设计要求: 基于vhdl 语言 ,通过给定的仪器(eda6000 试验箱)设计一个多功能信号发生器, (1)能产生周期性正弦波、方波、三角波、锯齿波以及用户自己编辑的特定波形; (2)输出信号的频率范围为 100hz200khz,且输出频率可以调节; (3)具有显示输出波形、频率的功能。 2.1.22.1.2 设计目的:设计目的: 1) 掌握使用 eda 工具设计信号发生器系统的设计思路和设计方法,体会使用 eda 综合过程中 电路设计方法和设计思路的不同,理解层次化设计理念。 2) 熟悉在 quartus ii 环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌
7、握使用这两种方式相结合的 eda 设计思路。 3) 通过这一部分的学习,对 vhdl 语言的设计方法进行进一步的学习,对其相关语言设计规范 进行更深层次的掌握,能够更加熟练的做一些编程设计。 3 设计过程设计过程 3.13.1 系统顶层框图系统顶层框图 3.1.13.1.1 信号发生器结构图信号发生器结构图 由于 fpga/cpld 只能直接输出数字信号,而多功能信号发生器输出的各种波形均为模拟信号, 因此设计信号发生器时,需将 fpga/cpld 输出的信号通过 d/a 转换电路将数字信号转换成模拟信 号。多功能信号发生器可由信号产生电路,波形选择电路和 d/a 转换电路构成,如下图所示:
8、时钟信号信号产生电路波形选择电路d/a 转换 波形输出 选择信号 3.1.23.1.2 信号发生器的内部构成信号发生器的内部构成 数控分频 器 三角波 波形数 据 正弦波 波形数 据 方波波 形数据 任意波 形数据 数据选择器 波形选择关 时钟 预置分 频数 (0- 255) 复位信号 8 位数据 out f 图 1 原理框图 在原理框图中,正(余)弦查找表由 rom 构成,内部存有一个完整周期正(余)弦波的数字幅 度信息,每个查找表的地址对应正(余)弦波幅度信号,同时输出到数模转换器(dac)输入端, dac 输出的模拟信号经过低通滤波器(lpf) ,可以得到一个频谱纯净的正(余)弦波。 3
9、.1.33.1.3 系统流程图系统流程图 当输入端有时钟信号输入时,各个信号发生器模块独立运行,独立存在,发出各种信号,这些 信号作为数据选择器的输入信号,在数据选择器的作用下,波形切换到相应的模块输出,再通过数 模转换器(d/a) ,将通过示波器显示出相应的波形图,其程序流程图如下图所示: 输入信号 各个信号发生器模块 开始 输出信号 数模转换器 (d/a) 四选一数据选择器 复位 3.23.2 设计步骤设计步骤 用 vhdl 语言结合原理图设计实现一个函数信号发生器,输出正弦波、方波和三角波三种波形。 将频率控制、分频、三角波、正弦波、方波发生邓各个模块分别用 vhdl 语言编程为一个子程
10、序,并 把每一个模块转换成图形文件,然后在原理图编辑框调用这些图形模块,连接电路如上图系统顶层框 图所示。通过按键 1 到按键 8 控制频率调节 f7.0,用按键 6、按键 7、按键 8 控制 dlt、sin、sqr 波形选通,最后把八位输出接 dac0832 通过 d/a 转换,从示波器上就能看到波形输出。 按下不同的按键输出不同的波形及频率。 3.33.3 系统设计系统设计 (1)数控分频器模块 在时钟的作用下,通过预置分频数 din,来改变输出频率。假如分频系数为 n,波形存储模块存 储一个周期的波形,实验里按照一个周期波形采样 64 个点存储在波形存储模块里。则输出频率 n f f c
11、lk out .64 (2)数据存储模块 (存储波形数据) 数据存储模块主要存的是正弦波、三角波、锯齿波等一个周期的采样点。 三角波模块可设计一个可逆计数器实现,设计时设置一变量作为工作状态标志,在此变量为 0 时,当检测到时钟的上升沿进行加同一个数操作;为 1 时,进行减同一个数操作。da 转换采用的 da0832,输入有 8 个数据端,范围是 0 到 255;而且设置 64 个时钟周期为一个三角波周期,所有每 次加、减为 1。 锯齿波的存储数据与三角波类似。 方波可以通过交替输出全 0 和全 1,并给以 32 个周期的延时来实现。 正弦波可以通过波形变换实现把 asin 变换成 5.127
12、*)1(cosa 的形式进行采样,然后变换成 8 位二进制码,存储在波形存储器里。 (3)数据选择器模块 在波形开关的控制下,选择相应的波形输出。可以用 3 个按键来控制波形选择 4 代码及仿真结果代码及仿真结果 4.14.1 各个模块的实现各个模块的实现 4.1.14.1.1 数控分频器的实现数控分频器的实现 其 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 dow
13、nto 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 cnt8: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;
14、 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; end if; end if; end process p_div; end behav; 频率为 1mhz 的分频波形图: 其生成元器件如图 2 所示: 图 2 数控分频器器件生成图 4.1.24.1.2 方波的实现方波的实现 产生方波,是通过交替送出全 0 和全 1 实现,每 32 个
15、时钟翻转一次。其 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 one of square is signal a:bit:=0; begin process(clk,clr) variable cnt:integer range 0 to 31; begin if clr=0 then a=0; elsif clkevent and
16、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 then if a=1 then q=255; else q=0; end if; end if; end process; end one; 其仿真波形如图 3 所示: 图 3 方 波仿真图 其生成元器件如图 4 所示: 图 4 方波元器件生成图 4.1.34.1.3 三角波的实现三角波的实现 该模块产生的三角波以 64 个时钟为一个
17、周期,输出 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 downto 0); end delta; architecture delta_arc of delta is begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); v
18、ariable 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 if 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
19、所示: 图 5 三角波仿真图 其生成元器件如图 6 所示: 图 6 三角波元器件生成图 4.1.44.1.4 正弦波的实现正弦波的实现 该模块产生以 64 个时钟为一个周期的正弦波。其 vhdl 代码如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sin is port(clk,clr:in std_logic; d:out integer range 0 to 255); end sin; architecture sin_arc of sin is begin pr
20、ocess(clk,clr) variable tmp:integer range 0 to 63; begin if clr=0 then dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; end case; end if; end process; end sin_arc; 其仿真波形如图 7 所示: 图 7 正弦波仿真图 其生成元器件如图 8 所示: 图 8 正弦波元器件生成图 4.1.54.1.5 锯齿波的实现锯齿波的实现 改变该模块递增的常数,可以改变锯齿的个数。其 vhdl 代码如下: li
21、brary ieee; use ieee.std_logic_1164.all; use 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 ladder is begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); begin if reset=0 then tmp:=
22、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); wen2: square port map(clr=resel,clk= square, q= d0); wen3: delta port map(resel =resel,clk= delta, q
23、= 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 图 4.2.34.2.3 整体仿真图整体仿真图 整体多波形信号发生器仿真如图 14 所示: 图 14 整体多波形信号发生器仿真图 其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年4月20日四川省雅安市事业单位招聘医护类工作人员《职业能力倾向测验》试题真题试卷答案解析
- 辽阳市 2023 年高中阶段学校招生方案
- 模具设计中的知识输出与分享试题及答案
- 水土资源优化农业工程可行性研究报告
- 燃气管道等老化更新改造项目可行性研究报告
- 铝精深加工产业园项目可行性研究报告(模板范文)
- 农作物种子繁育员考试资料与试题及答案
- 风能发电项目建设可行性研究报告(仅供参考)
- 救生员常见救援案例与试题及答案
- 模具设计师考试及其影响力试题及答案
- 关于加快专门学校建设和专门教育工作的实施方案
- YY/T 0331-2024脱脂棉纱布、脱脂棉粘胶混纺纱布的性能要求和试验方法
- (高清版)TDT 1056-2019 县级国土资源调查生产成本定额
- 人工智能科普讲解
- 第5课《平安校园靠大家》课件
- 国企统战工作总结汇报
- 《含能材料与应用》课件
- 土地管理法实施条例考试试题
- 真实的PBL真实的挑战:项目式学习设计指南
- 水果批发市场项目商业计划书
- 前庭大腺囊肿护理查房课件
评论
0/150
提交评论