基于MCUFPGA双系统架构下直接数字频率合成技术设计.docVIP

基于MCUFPGA双系统架构下直接数字频率合成技术设计.doc

  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文档。上传文档
查看更多
基于MCUFPGA双系统架构下直接数字频率合成技术设计

基于MCUFPGA双系统架构下直接数字频率合成技术设计   摘要:介绍了DDS技术在MCU+FPGA双系统的一种实现方法,重点介绍了MCU的控制系统设计与现场可编程逻辑门阵列FPGA实现直接数字频率合成的原理及其电路结构,并给出了利用ALTERA公司的Flex10K系列EPFIOK10LC84-4设计实现方案。   关键词:直接数字频率合成(DDS) MCU 现场可编程逻辑门阵列(FPGA)   中图分类号:TN741 文献标识码:B 文章编号:1002-2422(2008)01-0013-02      DDS技术在相对带宽、频率转换时间、相位连续性、高分辨率以及集成化等一系列性能指标方面已远远超过了传统频率合成技术。当DDS中的累加器的位数N很大时,最低输出频率可达Hz、mHz乃至μHz。如果fc为100MHz,那么当N为40位时,其分辨率可达90uHz。转换时间最快可达10ns的量级,这都是传统频率合成所不能比拟的。      1 DDS的基本原理和参数要求      DDS设计是以AT89C51和FPGA为核心,采用直接数字合成技术,通过一定的手段将正弦波波形的数字量表示的幅值存入存储器RAM(又称波形存储器)中,然后通过一个地址发生器对RAM寻址得到对应的幅值,用RAM的输出值来驱动DAC,然后经滤波即可转换成所需要的模拟正弦波形。因为它是在时域中进行频率合成,从而能够对输出频率进行快速而且精确的控制,并且这种控制全部都是数字控制,因此可以提供非常高的频率精度。DDS实现的基本原理框图如图1。      DDS技术在本质上实现了一个数字分频器的功能,它的频率精度是由N位相位累加器的比特数决定的,即输入的参考频率除以2N就决定了DDS所能够实现的频率精度。输出信号波形的频率及频率分辨率可以表示如下:   fout=Mfc/2N   fmin=fc/2N   式中:fout为输出信号频率;fmin为输出信号分辨率:M为频率控制字;N为相位累加器字长:fc为基准频率源。DDS输出信号的频率主要取决于频率控制字M,相位累加器字长N决定DDS的频率分辨率。当M增大时,fout可以不断的提高,由抽样定理,最高输出频率不得大于f/2,实际工作时输出频率小于f/3较为合适。      2 DDS的总体方案设计      系统采用MCU和FPGA两个系统进行设计,在很多系统设计中,经常会遇到多个控制系统共同协作完成整个系统的设计,解决多系统(包括双系统)共同协作互相通信的关键是要处理好系统之间通信的总线仲裁问题(即BUs_Contro1),只有解决了这个问题,才能保证整个系统的正常运转。设计中由MCU的P3.0作为总线控制,MCU主要进行键盘输入,显示单元及对RAM存储波形数据的控制。上电后,由MCU给予初始化,转而由FPGA来控制波形数据的读取,然后通过D/A控制及幅度控制单元,再经过一个低通滤波器,就可以得到所需的输出波形。      3 MCu控制系统模块的方案设计      系统上电后,MCU系统控制模块首先进行初始化工作,主要完成的功能是:系统初始化的工作,包括输出信号的频率、幅度、占空比以及波形类型的设置,然后进行键盘扫描并进行判断处理。输出500Hz,幅度为5V的正弦波。然后进入键盘扫描,对输入的键值进行操作。根据具体情况设置几种合法的键盘输入,假设设定如下:   (1)5个数字键加,‘A’键,用来设定频率。如设定500Hz的频率,按键次序是‘00500A’。   (2)2个数字键加‘B’键,用来设定信号幅度。如设定   2.4V的峰峰值,按键次序是‘24B’。   (3)1个数字键加‘C’键,用来设定输出信号类型。0、1、2分别指正弦波、三角波、方波。   (4)1个数字键加‘D’键,用来设定方波的占空比。如设定20%的占空比,按键次序是‘2D’。   (5)任何时候输入‘E’键,都表示清除前面的所有输入,回到初始状态。下面是C51程序的部分源程序:   void main()   {   unsigned int freq,now_freq:   unsigned char amp,zkb,wave_type,now_amp,now_zkb,now_type;   unsigned char key,key1,k,key_buffer[5];   bus_ctrl=1;sel_da=0;amp=50,zkb=5,wave_type=0,freq=500;   now_type=wave_type; now_zkb=zkb;now_amp=amp;nowfreq=freq;   write_dphase(freq);wrlte_wave amp(

文档评论(0)

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

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

1亿VIP精品文档

相关文档