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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多功能信号发生器的设计11

摘要 波形发生器在生产实践和科技领域中有着广泛的应用。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。 本设计是基于FPGA设计一个信号发生器。实现波形的产生以及对波形的频率和幅值的控制。 一.设计任务 基于VHDL语言,通过给定的仪器(杭州康芯硬件结构可配置型EDA+SOPC试验箱、北京达盛公司全开式EDA+SOPC试验箱、北京达盛MAX7128试验箱)设计一个多功能信号发生器,要求: (1).能产生周期性正弦波、方波、三角波和锯齿波波形。 (2).输出信号的幅度和频率可以调节。 二.设计分析与整体构思 多功能信号发生器:多功能体现在它能 三.多功能信号发生器各模块的设计 由系统需求分析可知,可分成 正弦波模块、三角波模块、方波模块和锯齿波模块共四大模块。 3.1正弦波模块 正弦波模块用来产生频率和幅值都可调的正弦波。此模块应包含频率控制模块、幅值控制模块和正弦波波形产生模块。 3.1.1频率控制模块 library ieee; --4分频模块的代码 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;--打开所用的软件包 entity ffenpin is --定义一个实体 port(clk,reset:in std_logic; --定义实体中的输入端口 qf:out std_logic); --定义实体中的输出端口 end ffenpin; architecture a of ffenpin is --定义相应的结构体 begin process(clk,reset) --开始一个进程语句 variable tmp:std_logic; variable cnt:std_logic_vector(1 downto 0);--定义一个变量相当于一个临时的数据存储单元 begin if reset=1 then tmp:=0; else if clkevent and clk=1 then --当开始工作时,对变量的值进行判断 if cnt=01 then tmp:=not tmp; --发生电平的跳变 cnt:=00; --变量值进行初始化 else cnt:=cnt+1; tmp:=tmp; end if; end if; end if; qf=tmp; --对实体的输出端口进行赋值 end process; end a; 在此模块的设计中使用了进程语句和变量,进程语句包含了一个代表着设计实体中部分逻辑行为的、独立的顺序语句描述。与并行语句的同时执行方式不同,顺序语句可以根据设计者的要求,利用顺序可控的语句完成逐条执行的功能。但必须注意,在VHDL中,所谓顺序仅仅是指语句按序执行上的顺序性,但这并不意味着Process语句结构在综合后所对应的硬件逻辑行为也具有相同的顺序性。 另外,在VHDL语法规则中,变量是一个局部量,只能在进程和子程序中使用。变量不能将信息带出对它作出定义的当前结构中。变量的赋值是一种理想化的数据传输,是立即发生的,不存在任何延时的行为。变量的主要作用是在进程中作为临时的数据存储单元。 对于分频得到的频率,到底由哪个送给波形产生模块。还取决于频率选择模块。其实,此模块本质上就是一个4选1的多路选择器。其原理就是根据控制信号来最终决定把哪一路输入送给输出端口。 此模块的核心代码如下: library ieee;--多路选择器模块 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;--打开所需的包 entity mux41 is --定义一个实体 port(a,b,c,d:in std_logic_vector(7 downto 0);--定义实体的输入端口 ss:in std_logic_vector(1 downto 0);--同上 q:out std_logic_vector(7 downto 0));--定义实体的输出端口 end mux41; architecture a of mux41 is --定义一个结构

文档评论(0)

yurixiang1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档