答辩-基于NiosII控制的DDS数字信号发生器.pptVIP

  • 25
  • 0
  • 约2.65千字
  • 约 16页
  • 2018-08-14 发布于浙江
  • 举报

答辩-基于NiosII控制的DDS数字信号发生器.ppt

基于NiosII的数字信号发生器 * DDS:直接数字频率合成 它具有频率切换速度快、很容易提高频率分辨率、 对硬件要求低且可编程全数字化方法便于单片集成、降低成本、 提高可靠性、容易生产等优点。 DDS在大部分操作中使用数字电路,提供了数字操作拥有的许多优势。 信号在最后一步转换成模拟的之前,一直保持数字化, 大大提高了函数发生器的稳定性,相对模拟电路也简化了很多。 2.采取的自行设计基于可编程逻辑器件的解决方案。 1.采用专用DDS芯片 * DDS原理图 用计数容量为2N的相位累加器,由DDS的数学模型可知,DDS的输出频率满足: 所以K=1时有最小输出频率,为K=1; 随着K的增大,输出频率也变大,但是根据采样定理,DDS理论上最大频率为 本设计中N位8位并对系统时钟(50MHz)进行了10分频,输出最小频率为19.5KHz, 通过调整N的位数和分频倍数,可进行调节。 而最大输出频率理论为2.5MHz,但是实际最大频率约为: 即1.66MHz(K=85时)。 * 累加器是由N位加法器和N位寄存器级联成的,每一个时钟 脉冲fc。加法器将频率控制字K与寄存器输出的累加相位 数据相加,把相加后的结果送至寄存器的数据输入端, 寄存器将加法器在上一个时钟作用所产生的相位数据反馈 到加法器输入端,使加法器在下一个时钟作用下进行相位 累加。当相位累加器累加满产生溢出,就完成一个周期 性的动作。 用相位累加器输出8位数据作为波形存储器的取样地址,进行相位到幅度的 转换。N位的寻址ROM相当于把一个周期的波形离散成具有2N个样值的序 列,若波形ROM有D位的数据位,则2N个样值的幅值以D位二进制数值固化 在ROM中,按照地址的不同可以输出相应的波形幅值。本设计采用8位二 进制数值存储波形幅值,波形存储器采用Altera公司提供的IP和建立。 * 基于NiosII的DDS数字信号发生器控制系统开发包括俩个部分, 硬件部分和软件部分。 硬件部分是由SOPC Builder开发工具搭建而成,本文在FPGA上实 现了适用于NiosII系统的Flash控制器、LCD控制器等组件,再结合 SOPC Builder中自带的标准控制器和外设,自己编写连接的DDS模 块,完成NiosII系统; 在软件方面,本文运用C语言编程,实现了波形可变、频率可调。 最后,系统通过了嵌入式逻辑分析仪的硬件测试,基本实现了数字 信号发生器的功能。 开发流程 采用环境: QuartusII 9.0(SopcBuilder)-硬件开发 NiosII IDE - 软件开发 理学院EL-EDA-VI实验箱 -硬件环境 * 添加CPU及外设 * 生成NiosII软核 * 分配管脚和引脚号 * 软件设计框图 * * else { if(box==0x02) box=0x00; else box++; } IOWR(PIO_KONGZHI_BASE,0, data);/* 写数据 */ IOWR(PIO_BOXING_BASE,0, box);/* 写数据 */ IOWR(PIO_BUTTON_BASE,3,0x00); /* 注册中断处理函数 */ n=sprintf(string,%s波,%dkHz ,s[box],(int)(19.5*((float)data))); LcmClearTXT() ; PutStr1(0,0,string); printf(%s波,频率是%dkHz\n,s[box],(int)(19.5*((float)data))); void button_isr(void *context, alt_u32 id) { unsigned char n ; char string[25]; alt_u8 flag; flag=IORD(PIO_BUTTON_BASE,3); if(flag0x01) {if(data==0x01) ; else data--;} else if(flag0x02) {if(data==0xff); else data++; } else if(flag0x04) {if(box==0x00) box=0x02

文档评论(0)

1亿VIP精品文档

相关文档