欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    多功能信号发生器的设计.docx

    • 资源ID:96721466       资源大小:937.96KB        全文页数:36页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    多功能信号发生器的设计.docx

    多功能信号发生器的设计目 录0 引言错误!未定义书签。1 设计意义错误!未定义书签。2 设计说明22.1 设计任务.22.1.1 设计要求22.1.2 设计目的:23 设计过程43.1 系统顶层框图43.1.1 信号发生器构造图43.1.2 信号发生器的内部构成43.1.3 系统流程图63.2 设计步骤.73.3 系统设计.74 代码及仿真结果94.1 各个模块的实现94.2 顶层模块.245 小结及体会306 参考文献32计。同时我也增加了对分模块设计电路的应用。 对我以后的电路设计生涯都是有所帮助的!函数信号发生器是应用了 VHDL 语言,通过数模转换来显示波形,实现了数模转换的应用。在工作中,我们常常会用到信号发生器,它是使 用频度很高的电子仪器。信号发生器是指产生所需参数的电测试信号的仪器。按信号波形可分为正弦信 号、函数波形信号、脉冲信号和随机信号发生器 等四大类。信号发生器又称信号源或振荡器,在生产 实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形, 如三角波、锯齿波、矩形波含方波、正弦波的电路被称为函数信号发生器。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。但凡产生测试信号的仪器,统称为信号源,也称为信号发生器,它用于产生被测电路所需特定参数的电测试信号。信号源主要给被测电路供给所需要的信号各种波形,然后用其它仪表测量感兴趣的参数。可见信号源在电子试验和测试处理中,并不测量任何参数,而是依据使用者的要求,仿真各种测试信号,供给应被测电路,以到达测试的需要。它能够产生多种波形,如三角波、矩形波含方波、正弦波等,在电路试验和设备检测中具有格外广泛的用途。例如在通信、播送、电视系统中,都需要射频高频放射,这里的射频波就是载波,把音频低频、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、 生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。 本设计承受 EDA 来设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、锯齿波等波形。2 设计说明2.1 设计任务2.1.1 设计要求:基于VHDL 语言,通过给定的仪器EDA6000 试验箱设计一个多功能信号发生器,(1) 能产生周期性正弦波、方波、三角波、锯齿波以及用户自己编辑的特定波形;(2) 输出信号的频率范围为 100Hz200KHz,且输出频率可以调整;(3) 具有显示输出波形、频率的功能。2.1.2 设计目的:1) 把握使用 EDA 工具设计信号发生器系统的设计思路和设计方法,体会使用 EDA 综合过程中电路设计方法和设计思路的不同,理解层次化设计理 念。2) 生疏在 Quartus II 环境中,用文本输入方式与原理图输入方式完成电路的设计,同时把握使2用这两种方式相结合的 EDA 设计思路。3) 通过这一局部的学习,对 VHDL 语言的设计方法进展进一步的学习,对其相关语言设计标准进展更 深层次的把握,能够更加娴熟的做一些编程设计。3 设计过程3.1 系统顶层框图3.1.1 信号发生器构造图由于 FPGA/CPLD 只能直接输出数字信号,而多功能信号发生器输出的各种波形均为模拟信号,因此 设计信号发生器时,需将 FPGA/CPLD 输出的信号通过 D/A 转换电路将数字信号转换成模拟信号。多功能信号发生器可由信号产生电路,波形选择电路和D/A 转换电路构成,如以下图所示:时 钟信号产波形选D/A 转选 择波形3.1.2 信号发生器的内部构成时三角8 位预置分数控分频数 据 选择器频 数0-25正弦方波4fout图 1 原理框图在原理框图中,正余弦查找表由 ROM 构成,内部存有一个完整周期正余弦波的数字幅度信息, 每个查找表的地址对应正余弦波幅度信号,同时输出到数模转换器DAC输入端,DAC 输出的模拟信号经过低通滤波器LPF,可以得到一个频谱纯洁的10正余弦波。3.1.3 系统流程图当输入端有时钟信号输入时,各个信号发生器模块独立运行,独立存在,发出各种信号,这些信号作 为数据选择器的输入信号,在数据选择器的作用下, 波形切换到相应的模块输出,再通过数模转换器D/A,将通过示波器显示出相应的波形图,其程序流程图如以下图所示:开头输入信号复位各个信号发生器模块四选一数据选择器数模转换器D/A输出信号3.2 设计步骤用 VHDL 语言结合原理图设计实现一个函数信号发生器,输出正弦波、方波和三角波三种波形。将频率掌握、分频、三角波、正弦波、方波发生邓各个模 块分别用VHDL 语言编程为一个子程序,并把每一个模块转换成图形文件,然后在原理图编辑框调用这些图形模块,连接电路如上图系统顶层框图所示。通过按键 1 到按键 8 掌握频率调整 f7.0,用按键 6、按键 7、按键 8 掌握 dlt、sin、sqr 波形选通,最终把八位输出接 DAC0832 通过 D/A 转换,从示波器上就能看到波形输出。按下不同的按键输出不同的波形及频率。3.3 系统设计(1) 数控分频器模块在时钟的作用下,通过预置分频数 DIN,来转变输出频率。假设分频系数为 N,波形存储模块存储一个周期的波形,试验里依据一个周期波形采样 64 个点存储在波形存储模块里。则输出频率ff clkout64 . N(2) 数据存储模块 存储波形数据数据存储模块主要存的是正弦波、三角波、锯齿 波等一个周期的采样点。三角波模块可设计一个可逆计数器实现,设计时设置一变量作为工作状态标志,在此变量为 0 时,当检测到时钟的上升沿进展加同一个数操作;为 1 时, 进展减同一个数操作。DA 转换承受的 DA0832,输入有 8 个数据端,范围是 0 到 255;而且设置 64 个时钟周期为一个三角波周期,全部每次加、减为 1。锯齿波的存储数据与三角波类似。方波可以通过交替输出全 0 和全 1,并给以 32 个周期的延时来实现。正弦波可以通过波形变换实现把sin a变换成(cos a1) * 127 .5 的形式进展采样,然后变换成 8 位二进制码,存储在波形存储器里。(3) 数据选择器模块在波形开关的掌握下,选择相应的波形输出。可 以用 3 个按键来掌握波形选择4代码及仿真结果4.1 各个模块的实现4.1.1 数控分频器的实现其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(d_mode:indownto 0);std_logic_vector(3clk:in std_logic; d_out:out std_logic);end fenpin;architecture behav of fenpin is signal full:std_logic; beginp_reg: process(clk)variable downto 0);begincnt8:std_logic_vector(3if clk”event and clk=”1” then if cnt8=“1111“ thencnt8:=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;beginifull”event and full=”1” then cnt2:=not cnt2;icfnt2=”1” then d_out<=”1” ; else d_out<=”0”;end if; end if;end process p_div; end behav;频率为 1MHz 的分频波形图:其生成元器件如图 2 所示:4.1.2 方波的实现图 2 数控分频器器件生成图产生方波,是通过交替送出全 0 和全 1 实现,每32 个时钟翻转一次。其 VHDL 代码如下:library ieee;11use ieee.std_logic_1164.all; entity square isport(clk,clr:in std_logic;q:out integer range 0 to 255); end square;architecture one of square is signal a:bit:=”0”;beginprocess(clk,clr)variable cnt:integer range 0 to 31; beginif clr=”0” then a<=”0”;elsif clk”event and clk=”1” then if cnt<31 thencnt:=cnt+1; elsecnt:=0; a<=not a;end if; end if;end process; process(clk,a)12beginif clk”event and clk=”1” then if a=”1” thenq<=255;elseq<=0;end if; end if;end process; end one;其仿真波形如图 3 所示:图 3 方波仿真图其生成元器件如图 4 所示:图 4 方波元器件生成图134.1.3 三角波的实现该模块产生的三角波以 64 个时钟为一个周期, 输出 q 每次加减 8。其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity delta isport(clk,reset:in std_logic;14q:out downto 0);end delta;std_logic_vector(7architecture delta_arc of delta is beginprocess(clk,reset)variable downto 0);tmp:std_logic_vector(7variable a:std_logic; beginif reset=”0” then tmp:=“00000000“;elsif clk”event and clk=”1” then if a=”0” thenif tmp=“11111110“ then tmp:=“11111111“; a:=”1”;elsetmp:=tmp+”1”; end if;elseif tmp=“00000001“ then tmp:=“00000000“; a:=”0”;elsetmp:=tmp-”1”; end if;end if; end if;q<=tmp; end process; end delta_arc;其仿真波形如图 5 所示:图 5 三角波仿真图其生成元器件如图 6 所示:图 6 三角波元器件生成图4.1.4 正弦波的实现该模块产生以 64 个时钟为一个周期的正弦波。其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity sin isport(clk,clr:in std_logic;d:out integer range 0 to 255);16end sin;architecture sin_arc of sin is beginprocess(clk,clr)variable tmp:integer range 0 to 63; beginif clr=”0” then d<=0;elsif clk”event and clk=”1” then if tmp=63 thentmp:=0; elsetmp:=tmp+1; end if;case tmp iswhen 00=>d<=255; when 01=>d<=254; when 02=>d<=252;when 03=>d<=249; when 04=>d<=245; when 05=>d<=239;when 06=>d<=233; when 07=>d<=225; when 08=>d<=217;when 09=>d<=207; when 10=>d<=197; when 11=>d<=186;when 12=>d<=174; when 13=>d<=162;17when 14=>d<=150;when 15=>d<=137; when 16=>d<=124; when 17=>d<=112;when 18=>d<=99;when 19=>d<=87; when 20=>d<=75;when 21=>d<=64;when 23=>d<=43; when 24=>d<=34;when 26=>d<=19;when 27=>d<=13; when 29=>d<=4;when 30=>d<=1; when 32=>d<=0;when 33=>d<=1; when 35=>d<=8;when 36=>d<=13; when 38=>d<=26;when 39=>d<=34; when 41=>d<=53;when 42=>d<=64; when 44=>d<=87;when 22=>d<=53;when 25=>d<=26; when 28=>d<=8; when 31=>d<=0; when 34=>d<=4; when 37=>d<=19; when 40=>d<=43; when 43=>d<=75;when 45=>d<=99; whenwhen 47=>d<=124;46=>d<=112;when 48=>d<=137; when 49=>d<=150; when 50=>d<=162;when 51=>d<=174; when 52=>d<=186; when 53=>d<=197;when 54=>d<=207; when 55=>d<=217; when 56=>d<=225;when 57=>d<=233; whenwhen 59=>d<=245;when 60=>d<=249; when when 62=>d<=254;when 63=>d<=255; when others=>null; end case;end if;end process; end sin_arc;其仿真波形如图 7 所示:58=>d<=239;61=>d<=252;图 7 正弦波仿真图其生成元器件如图 8 所示:4.1.5 锯齿波的实现图 8 正弦波元器件生成图转变该模块递增的常数,可以转变锯齿的个数。 其 VHDL 代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity ladder isport(clk,reset:in std_logic;q:outstd_logic_vector(720downto 0);end ladder;architecture ladder_arc of ladder is beginprocess(clk,reset)variable downto 0);begintmp:std_logic_vector(7if reset=”0” then tmp:=“00000000“;elsif clk”event and clk=”1” then if tmp=“11111111“ thentmp:=“00000000“;else tmp:=tmp+16; -锯齿常数为 16,可修改end if; end if; q<=tmp;end process;end ladder_arc;其仿真波形如图 9 所示:21图9 锯齿波仿真图其生成元器件如图 10 所示:图 10 锯齿波元器件生成图4.1.6 四选一输出波形选择模块的实现依据外部的开关状态可以选择输出的波形。其VHDL 代码如下:library ieee;use ieee.std_logic_1164.all; entity select4_1 isport(sel:in std_logic_vector(1 downto 0);d0,d1,d2,d3:in22std_logic_vector(7 downto 0);q:out std_logic_vector(7 downto0);end select4_1;architecture one of select4_1 is beginprocess(sel) begincase sel iswhen “00“=>q<=d0; when “01“=>q<=d1; when “10“=>q<=d2; when “11“=>q<=d3; end case;end process;end one;其波形仿真如图 11 所示:图 11 四选一信号选择仿真图其生成元器件如图 12 所示:23图 12 4 选 1 信号选择元器件生成图4.2 顶层模块4.2.1 代码实现VHDL 代码如下,利用元件例化实现:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity li isport(d_mode:in downto 0);std_logic_vector(30);q:out std_logic_vector(7 downtoclk:in std_logic; resel:out std_logic);end li;architecture behav of li is component fenpin isport(d_mode:instd_logic_vector(324downto 0);clk:in std_logic; d_out:out std_logic);end component fenpin; component square isport(clk,clr:in std_logic;q:out integer range 0 to 255); end component square;component delta is port(clk,reset:in std_logic;q:out std_logic_vector(7 downto0);end component delta; component sin isport(clk,clr:in std_logic;d:out integer range 0 to 255); end component sin;component ladder is port(clk,reset:in std_logic;q:out std_logic_vector(7 downto0);end component ladder; component select4_1 is25port(sel:in std_logic_vector(1 downto 0);d0,d1,d2,d3:in std_logic_vector(7 downto 0);q:out std_logic_vector(7 downto0);end component select4_1; signal square :std_logic; signal delta :std_logic; signal sin :std_logic; signal ladder :std_logic;signal d0 :std_logic_vector(7 downto 0);signal d1 :std_logic_vector(7 downto 0); signal d2 :std_logic_vector(7 downto 0); signal d3 :std_logic_vector(7 downto 0);beginwen1:fenpinport map(d_mode=>d_mo de,clk=>clk, d_out=>square,d_out=> d_out=>delta,sin,d_out=> ladder);wen2:squareportmap(clr=>resel,clk=> square, q=> d0);wen3:deltaportmap(resel=>resel,clk=> delta, q=> d1);wen4: sin port map(clr=>resel,clk=> sin, q=> d2);wen5:ladderportmap(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.2 生成整体 RTL:建一工程,加载上述模块,利用顶层模块法生成整体多波形信号发生器。整体 RTL 图如图 13 所示:图 13 整体多波形信号发生器 RTL 图4.2.3 整体仿真图整体多波形信号发生器仿真如图 14 所示:28图 14 整体多波形信号发生器仿真图其中,d_mode【3.0】为数控分频输入端,接四个开关用来产生预制分频数,分频后得到不同频率的脉冲,sel【1.0】为数据选择器的选择输入端,接两个开关,输入不同数据,选择四种波形中的一种输 出,clk 是原始脉冲输入端,reset 为复位端,接一按键,按下时产生复位,回到初始状态;q【7.0】是数据选择器的输出端,输出被选中的波形送至 DA 转换器。295小结及体会通过这次课程设计,我全面生疏、把握 VHDL 语言的根本学问,把握利用 VHDL 语言对信号发生器的编程和时序规律电路编程,把编程和实际结合起来, 生疏编制和调试程序的技巧,把握分析结果的假设干有效方法,进一步提高动手力量,培育使用设计综合电 路的力量,养成供给文档资料的习惯和标准编程的思想。同时通过此次试验,使我对 Quartus II 软件的使用有了更深刻的了解。在设计的过程中,也遇到了很多问题,在同学和指导教师的帮助下,都一一得到了解决。从选题到定稿, 从了解到生疏,用了或许一个星期的时间,在这段时间内,苦恼、思考、喜悦、收获,感受颇多。固然此次设计也表达出我寻常学习中有很多缺乏和欠缺之 处,此后需通过学习来查漏补缺。306参考文献1 李翠华. 信号发生器的设计J. 科技广场, 20232 申彦春, 王欢, 梁延贵. 基于FPGA 的信号发生器的设计J. 唐山学院学报, 20233 刘皖, 何道军, 谭明. FPGA 设计与应用M. 北京清华大学出版社, 20234 赵雅兴. FPGA 原理设计与应用M. 天津大学出版社, 19995 余勇, 郑小林.基于 FPGA 的 DDS 正弦信号发生器的设计与实现J.电子器件, 20236 田耘,徐文波. Xilinx FPGA 开发有用教程M. 北京: 清华大学出版社, 2023

    注意事项

    本文(多功能信号发生器的设计.docx)为本站会员(1564****060)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开