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

    高清晰AD9854中文资料附带51程序.doc

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

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

    高清晰AD9854中文资料附带51程序.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date高清晰AD9854中文资料附带51程序AD9852的引脚说明:DDS模块设计DDS模块的设计是本系统的重点,也是本章阐述的重点。DDS模块主要是围绕芯片AD9854进行设计的,设计要求既要满足性能指标,还要求优化电路,减小电路面积,否则13路DDS共同存在会使系统体积显得较大。下面先介绍AD9854的基本特性。4.2.1 AD9854介绍图4-2 AD9854功能结构框图chart4-2 AD9854 function and structure 如图4-2所示,AD9854内部包括一个具有48位相位累加器、一个可编程时钟倍频器、一个反sinc滤波器、两个12位300MHz DAC,一个高速模拟比较器以及接口逻辑电路。其主要性能特点如下:1. 高达300MHz的系统时钟;2. 能输出一般调制信号,FSK,BPSK,PSK,CHIRP,AM等;3. 100MHz时具有80dB的信噪比;4. 内部有4*到20*的可编程时钟倍频器;5. 两个48位频率控制字寄存器,能够实现很高的频率分辨率。6. 两个14位相位偏置寄存器,提供初始相位设置。7. 带有100MHz的8位并行数据传输口或10MHz的串行数据传输口。AD9854的芯片封装图如下:图4-3 AD9854芯片封装图chart4-3 AD9854 chip encapsulationAD9854有40个程序寄存器,对AD9854的控制就是对这些程序寄存器写数据实现的。表4-1 AD9854并行接口寄存器功能Table 4-1 AD9854 parallel interface registers function 并行地址寄存器功能默认值0x000x01相位寄存器#1<13:8>(15,14位无效)相位寄存器#1<7:0>0x000x000x020x03相位寄存器#2<13:8>(15,14位无效)相位寄存器#2<7:0>0x000x000x040x050x060x070x080x09频率转换字#1<47:40>频率转换字#1<39:32>频率转换字#1<31:24>频率转换字#1<23:16>频率转换字#1<15:8>频率转换字#1<7:0>0x000x000x000x000x000x000x0A0x0B0x0C0x0D0x0E0x0F频率转换字#1<47:40>频率转换字#1<39:32>频率转换字#1<31:24>频率转换字#1<23:16>频率转换字#1<15:8>频率转换字#1<7:0>0x000x000x000x000x000x000x100x110x120x130x140x15三角频率字<47:40>三角频率字<39:32>三角频率字<31:24>三角频率字<23:16>三角频率字<15:8>三角频率字<7:0>0x000x000x000x000x000x000x160x170x180x19更新时钟计数器<31:24>更新时钟计数器<23:16>更新时钟计数器<15:8>更新时钟计数器<7:0>0x000x000x000x400x1A0x1B0x1C边沿速率计数器<19:16>(23,22,21,20不起作用)边沿速率计数器<15:8>边沿速率计数器<7:0>0x000x000x000x1D0x1E0x1F0x20节电控制时钟倍频控制器DDS模式控制与累加器清零控制传输模式,和OSK控制0x000x640x200x200x210x22输出幅度乘法器I<11:8>(15,14,13,12不起作用)输出幅度乘法器I<7:0>0x000x000x230x24输出幅度乘法器Q<11:8>(15,14,13,12不起作用)输出幅度乘法器Q<7:0>0x000x000x25输出边沿变化率控制器<7:0>0x800x260x27QDAC,Q通道D/A输入<11:8>QDAC,Q通道D/A输入<7:0>0x000x00表4-2 AD9854控制寄存器功能Table 5-2 AD9854 control registers function 地址默认值0x1D N NN比较器0控制DACI通道DAC数字部分0x00 0x1E NPLL范围PLL低通倍频位倍频位倍频位倍频位倍频位0x64 0x1F ACC1清零ACC清零Triangle N模式位 2模式位 2模式位 2 内部更新0x01 0x20 N开输出滤波OSK使能OSK模式 NN串行地位字节优先SDO有效0x20 通过并行总线将数据写入程序寄存器时,实际上只是暂存在I/O缓冲区中,只有提供更新信号,这些数据才会更新到程序寄存器。AD9854提供两种更新方式,内部更新和外部更新。内部更新通过更新时钟计数器完成,当计数器计自减为零后会产生一个内部更新信号;外部更新需要在外部更新管脚上给与一个高电平脉冲。默认的更新模式为内部更新,可以通过设置控制寄存器0x1F的0位进行修改。4.4.2 多AD9854应用原理与方法多路相位可控信号源的设计关键是实现多路DDS模块的相位的同步控制。要实现多路DDS相位同步,只需要在各DDS设置完成相位偏置后,提供一个使各路DDS同步工作的外部更新信号。根据这样的工作原理,以AD9854为例,给出多路相位可控信号源的基本结构。 图4-4 多路DDS组成相位可控信号原理图chart4-4 mult-DDS constitution and principium 图4-4中左半部分是一个正确多路DDS的结构,由一个统一时钟源提供参考时钟,相位偏置通过并行或串行总线设置,其值保存于各路AD9854的缓冲寄存器中。通过统一的外部更新信号启动各路DDS同步工作,从而实现了各路DDS信号之间以固定的相位差同步工作。参考时钟的连线方式很重要,图4-4右半部分给出了种错误的连接方式。参考时钟到各DDS的距离不等,这就会引起各路DDS的参考时钟不同步,从而也无法保证各路DDS的同步。此外外部更新信号Update虽然没有必要严格的等长,但最好要与参考时钟保证正确的时序,因为Update信号送入AD9854后会在内部系统时钟(由外部时钟倍频和锁相得到)的上升沿触发更新。各路DDS的Update信号与内部系统时钟有可能出现一个时钟周期的抖动,在这个系统时钟的前后两个时间点产生更新。Update信号与系统时钟的时序要求如下:图4-5a 单端外部参考时钟输入模式下更新信号时序chart 4-5a Update scheduling in single refer clock mode 图4.5b 差分外部参考时钟输入模式时序更新信号时序chart 4-5a Update scheduling in differnece refer clock mode对于AD9854而言,其真正的相位值,是相位偏置值和相位累加器的输出值的和,在对相位偏置值更新时,一定要保证相位累加器的值是确定的。最简单的方法是在设置相位前,将所有AD9854通过Master Reset信号重置,此时AD9854的寄存器恢复到默认值(见表4-1)。下面步骤可完成对多个AD9854实现相位可控同步输出:1,上电后给所有AD9854的复位信号管脚MasterRest提供一个长达10个系统时钟的复位信号,此时所有AD9854的程序寄存器都恢复为默认值。2,使用并行总线设置AD9854的特殊功能寄存器:a,更新模式设置为外部信号更新模式,且DDS工作在Single模式下,即寄存器0x1F=0x00;b,参考时钟为30MHz,这里要获得210MHz的系统时钟,所以倍频数设置为,由于超过200MHz,要开PLL低通,即寄存器0x1e=0x3d;c,电源只打开I通道DAC和数字部分,寄存器0x1D=0x14;d,开输出滤波,不用OSK功能,寄存器0x20=0x40;设置内部更新时钟,也可以不设置。3,所有的AD9854完成模式设置后,内部更新时钟寄存器计数到0时,步骤2的设置才真正更新。此时由于频率控制字为0,因此相位累加器不工作,始终为0。4,按以上步骤完成所有AD9854的初始设置后,使用并行传输向各AD9854写入频率转换字#1和相位偏置寄存器#1。5,完成所有AD9854的频率和相位设置后,给一个全局的外部更新信号Update,此时各路AD9854就开始同步工作。注意Update信号的时序要求非常严格,最好满足图4.5的时序。完成各路AD9854的初次同步输出后,若改变频率控制字,就不能在保证相位的正确设置了,此时可以设置特殊寄存器位ACC0(0x1F的6,7位)强制清零,然后再同步恢复的方式实现相位累加器输出的同步。/=/ AD9854 驱动程序设计/硬件连接: P0 Data; / P2 Adr; / RESET P37; / UDCLK P36; / WR P3.5; / RD p3.4; / FDATA P33; / OSK P32; / VDD-逻辑电源(3.3V)/ VSS-GND(0V) /AD9854.c/writer:谷雨 2008年8月22日24日于EDA实验室/说明:本程序基于硬件的外接晶振为20MHZ/=#include <STC89C51RC.h> /STC单片机头文件#include <intrins.h> #define uint unsigned int#define uchar unsigned char#define ulong unsigned longuchar FreqWord6; /6个字节频率控制字/*以下为系统时钟以及其相关变量设置*/* 此处根据自己的需要设置系统时钟以及与其相关的因子,一次需且只需开启一个 CLK_Set为时钟倍频设置,可设置420倍倍频,但最大不能超过300MHZ Freq_mult_ulong和Freq_mult_doulle均为2的48次方除以系统时钟,一个为长整形,一个为双精度型*/*#define CLK_Set 4const ulong Freq_mult_ulong = 3518437;const double Freq_mult_doulle = 3518437.2088832;*/*#define CLK_Set 5const ulong Freq_mult_ulong = 2814750;const double Freq_mult_doulle = 2814749.76710656;*/#define CLK_Set 6const ulong Freq_mult_ulong = 2345625;const double Freq_mult_doulle = 2345624.80592213;/*#define CLK_Set 7const ulong Freq_mult_ulong = 2010536;const double Freq_mult_doulle = 2010535.54793326;*/*#define CLK_Set 8const ulong Freq_mult_ulong = 1759219;const double Freq_mult_doulle = 1759218.6044416;*/*#define CLK_Set 9const ulong Freq_mult_ulong = 1563750;const double Freq_mult_doulle = 1563749.87061476;*/*#define CLK_Set 10const ulong Freq_mult_ulong = 1407375;const double Freq_mult_doulle = 1407374.88355328;*/*#define CLK_Set 11const ulong Freq_mult_ulong = 1279432;const double Freq_mult_doulle = 1279431.712321164;*/*#define CLK_Set 12const ulong Freq_mult_ulong = 1172812;const double Freq_mult_doulle = 1172812.402961067;*/*#define CLK_Set 13const ulong Freq_mult_ulong = 1082596;const double Freq_mult_doulle = 1082596.064271754;*/*#define CLK_Set 14const ulong Freq_mult_ulong = 1005268;const double Freq_mult_doulle = 1005267.773966629;*/*#define CLK_Set 15const ulong Freq_mult_ulong = 938250;const double Freq_mult_doulle = 938249.9223688533;*/*修改硬件时要修改的部分*#define AD9854_DataBus P0#define AD9854_AdrBus P2sbit AD9854_RST = P37; /AD9854复位端口sbit AD9854_UDCLK = P36; /AD9854更新时钟sbit AD9854_WR = P35; /AD9854写使能,低有效sbit AD9854_RD = P34; /AD9854读使能,低有效sbit AD9854_FDATA = P33; /AD9854 FSK,PSK控制sbit AD9854_OSK = P32; /AD9854 OSK控制端/*以下部分为函数定义*static void AD9854_WR_Byte(uchar addr,uchar dat); extern void AD9854_Init(void); static void Freq_convert(long Freq); extern void AD9854_SetSine(ulong Freq,uint Shape); static void Freq_double_convert(double Freq); extern void AD9854_SetSine_double(double Freq,uint Shape);extern void AD9854_InitFSK(void);extern void AD9854_SetFSK(ulong Freq1,ulong Freq2); extern void AD9854_InitBPSK(void); extern void AD9854_SetBPSK(uint Phase1,uint Phase2);extern void AD9854_InitOSK(void); extern void AD9854_SetOSK(uchar RateShape); extern void AD9854_InitAM(void); extern void AD9854_SetAM(uint Shape);extern void AD9854_InitRFSK(void); extern void AD9854_SetRFSK(ulong Freq_Low,ulong Freq_High,ulong Freq_Up_Down,ulong FreRate);static void delay (uint us);/=/函数名称:void AD9854_WR_Byte(uchar addr,uchar dat)/函数功能:AD9854并行口写入数据/入口参数:addr 6位地址/ dat 写入的数据/出口参数:无/=void AD9854_WR_Byte(uchar addr,uchar dat)AD9854_AdrBus = (addr&0x3f) | (P2&0xc0);AD9854_DataBus = dat;AD9854_WR = 0;AD9854_WR = 1;/=/函数名称:void AD9854_Init(void)/函数功能:AD9854初始化/入口参数:无/出口参数:无/=void AD9854_Init(void)AD9854_WR=1;/将读、写控制端口设为无效 AD9854_RD=1; AD9854_UDCLK=0; AD9854_RST=1; /复位AD9854 AD9854_RST=0;AD9854_WR_Byte(0x1d,0x10); /关闭比较器AD9854_WR_Byte(0x1e,CLK_Set); /设置系统时钟倍频 AD9854_WR_Byte(0x1f,0x00); /设置系统为模式0,由外部更新AD9854_WR_Byte(0x20,0x60); /设置为可调节幅度,取消插值补偿AD9854_UDCLK=1; /更新AD9854输出 AD9854_UDCLK=0;/=/函数名称:void Freq_convert(long Freq)/函数功能:正弦信号频率数据转换/入口参数:Freq 需要转换的频率,取值从0SYSCLK/2/出口参数:无 但是影响全局变量FreqWord6的值/说明: 该算法位多字节相乘算法,有公式FTW = (Desired Output Frequency × 2N)/SYSCLK/ 得到该算法,其中N=48,Desired Output Frequency 为所需要的频率,即Freq,SYSCLK/ 为可编程的系统时钟,FTW为48Bit的频率控制字,即FreqWord6/=void Freq_convert(long Freq) ulong FreqBuf; ulong Temp=Freq_mult_ulong; uchar Array_Freq4; /将输入频率因子分为四个字节Array_Freq0=(uchar)Freq;Array_Freq1=(uchar)(Freq>>8);Array_Freq2=(uchar)(Freq>>16);Array_Freq3=(uchar)(Freq>>24);FreqBuf=Temp*Array_Freq0; FreqWord0=FreqBuf; FreqBuf>>=8; FreqBuf+=(Temp*Array_Freq1); FreqWord1=FreqBuf; FreqBuf>>=8; FreqBuf+=(Temp*Array_Freq2); FreqWord2=FreqBuf; FreqBuf>>=8;FreqBuf+=(Temp*Array_Freq3); FreqWord3=FreqBuf; FreqBuf>>=8; FreqWord4=FreqBuf; FreqWord5=FreqBuf>>8; /=/函数名称:void AD9854_SetSine(ulong Freq,uint Shape)/函数功能:AD9854正弦波产生程序/入口参数:Freq 频率设置,取值范围为0(1/2)*SYSCLK/ Shape 幅度设置. 为12 Bit,取值范围为(04095) ,取值越大,幅度越大 /出口参数:无/=void AD9854_SetSine(ulong Freq,uint Shape)uchar count;uchar Adress;Adress = 0x04; /选择频率控制字地址的初值Freq_convert(Freq); /频率转换for(count=6;count>0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress+,FreqWord-count); AD9854_WR_Byte(0x21,Shape>>8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape>>8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff);AD9854_UDCLK=1; /更新AD9854输出 AD9854_UDCLK=0;/=/函数名称:void Freq_doublt_convert(double Freq)/函数功能:正弦信号频率数据转换/入口参数:Freq 需要转换的频率,取值从0SYSCLK/2/出口参数:无 但是影响全局变量FreqWord6的值/说明: 有公式FTW = (Desired Output Frequency × 2N)/SYSCLK得到该函数,/ 其中N=48,Desired Output Frequency 为所需要的频率,即Freq,SYSCLK/ 为可编程的系统时钟,FTW为48Bit的频率控制字,即FreqWord6/注意: 该函数与上面函数的区别为该函数的入口参数为double,可使信号的频率更精确/ 谷雨建议在100HZ以下用本函数,在高于100HZ的情况下用函数void Freq_convert(long Freq)/=void Freq_double_convert(double Freq) ulong Low32;uint High16; double Temp=Freq_mult_doulle; /23ca99为2的48次方除以120MFreq*=(double)(Temp);/1 0000 0000 0000 0000 0000 0000 0000 0000 = 4294967295High16 = (int)(Freq/4294967295); /232 = 4294967295Freq -= (double)High16*4294967295;Low32 = (ulong)Freq; FreqWord0=Low32; FreqWord1=Low32>>8; FreqWord2=Low32>>16; FreqWord3=Low32>>24; FreqWord4=High16; FreqWord5=High16>>8; /=/函数名称:void AD9854_SetSine_double(double Freq,uint Shape)/函数功能:AD9854正弦波产生程序/入口参数:Freq 频率设置,取值范围为01/2*SYSCLK/ Shape 幅度设置. 为12 Bit,取值范围为(04095) /出口参数:无/=void AD9854_SetSine_double(double Freq,uint Shape)uchar count=0;uchar Adress;Adress=0x04; /选择频率控制字1地址的初值Freq_double_convert(Freq); /频率转换 for(count=6;count>0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress+,FreqWord-count); AD9854_WR_Byte(0x21,Shape>>8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape>>8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff);AD9854_UDCLK=1; /更新AD9854输出 AD9854_UDCLK=0;/=/函数名称:void AD9854_InitFSK(void)/函数功能:AD9854的FSK初始化/入口参数:无/出口参数:无/=void AD9854_InitFSK(void)AD9854_WR=1; /将读、写控制端口设为无效 AD9854_RD=1; AD9854_UDCLK=0; AD9854_RST=1; /复位AD9854 AD9854_RST=0;AD9854_WR_Byte(0x1d,0x10); /关闭比较器AD9854_WR_Byte(0x1e,CLK_Set); /设置系统时钟倍频AD9854_WR_Byte(0x1f,0x02); /设置系统为模式1,由外部更新AD9854_WR_Byte(0x20,0x60); /设置为可调节幅度,取消插值补偿AD9854_UDCLK=1; /更新AD9854输出 AD9854_UDCLK=0;/=/函数名称:void AD9854_SetFSK(ulong Freq1,ulong Freq2)/函数功能:AD9854的FSK设置/入口参数:Freq1 FSK频率1 / Freq2 FSK频率2/出口参数:无/=void AD9854_SetFSK(ulong Freq1,ulong Freq2) uchar count=6;uchar Adress1,Adress2;const uint Shape=4000; /幅度设置. 为12 Bit,取值范围为(04095)Adress1=0x04; /选择频率控制字1地址的初值Adress2=0x0a; /选择频率控制字2地址的初值Freq_convert(Freq1); /频率转换1for(count=6;count>0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress1+,FreqWord-count); Freq_convert(Fr

    注意事项

    本文(高清晰AD9854中文资料附带51程序.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




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

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

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

    收起
    展开