专利名称:一种改进型dds信号发生器及其信号发生方法
技术领域:
本发明属于仪器仪表领域,涉及一种改进型DDS信号发生器及其信号发生方法。
背景技术:
DDS信号发生器,即直接数字式频率合成器,与传统的频率合成器相比,DDS信号发生器具有低成本、高分辨率和快速转换时间等优点,广泛使用在典型与电子仪器领域。当前的DDS信号发生器相位累加器输出数据直接送入存储器地址输入,导致所需要的波形存储器容量大,且频率步进值大,不容易调节。
发明内容
本发明的目的在于,针对传统的DDS信号发生器,提出一种改进型DDS信号发生器及其信号发生方法,旨在减小频率步进值,节省存储空间。一种改进型DDS信号发生器,包括晶振、FPGA、SRAM和D/A转换器。FPGA接收晶振输入的时钟信号和外部输入的频率字,FPGA进行处理后输入至SRAM,SRAM的输出与D/A转换器信号连接。所述的FPGA由锁相环、相位累加器和除法器组成;锁相环接收晶振输入的时钟信号,锁相环输出的信号作为相位累加器的时钟,相位累加器接收外部输入的频率字,相位累加器的输出作为除法器的输入,除法器输出信号作为FPGA的输出。利用上述的DDS信号发生器产生DDS信号的方法包括以下步骤
步骤Al 将输入到FPGA频率为/x的时钟输入,经锁相环,输出产生频率为/。lk&CLK_ DIV信号,其中/。lk频率为/x频率的十分之一。步骤A2 =FPGA将外部输入的频率字存入FPGA内建的REG_FW步长寄存器中,将输入的相位初始值存入FPGA内建的REG_PHASE相位寄存器中。步骤A3 在FPGA中内建相位累加寄存器REG_ACC,设定相位累加器寄存器REG_ ACC的初始值为REG_PHASE相位寄存器所保存的数值。步骤A4 相位累加器寄存器REG_ACC在CLK_DIV信号的上升沿时,以REG_FW步长寄存器中的数值为步长自增,并将相位累加器寄存器REG_ACC对累加器模值取模,即数值 M_MAX取模,并将所得的数值存入相位累加器寄存器REG_ACC。步骤A5 取出相位累加器寄存器REG_ACC中的数值,将相位累加器寄存器REG_ ACC的数值乘以36000,再整除累加器模值M_MAX后赋值给正弦ROM存储表地址寄存器R0M_ ADDR ;所述的正弦ROM存储表存储在SRAM中。步骤A6 将正弦ROM存储表内地址为R0M_ADDR中存储的数据输出到D/A转换器的输入端,D/A转换器的输出即为DDS信号。所述的相位累加器寄存器REG_ACC的取模运算实现方法具体是
步骤Bl 判断相位累加器寄存器REG_ACC中的数值是否大于累加器模值11_嫩乂,如果是则执行步骤B2,否则执行步骤B3。
步骤B2 将相位累加器寄存器REG_ACC中的数值减去累加器模值M_MAX后赋值给相位累加器寄存器REG_ACC。步骤B3 相位累加器寄存器REG_ACC中的数值保持不变。进一步说,/x时钟输入频率为36MHz。进一步说,累加器模值M_MAX为36000000,是36000的整数倍。进一步说,正弦ROM存储表地址寄存器R0M_ADDR数值的整除运算使用14级流水线除法器实现。与现有的技术相比,本发明的有益效果是减小了波形存储器的容量,降低了频率步进值。
图1是本发明的硬件框图; 图2是本发明的方法实现框图。
具体实施例方式以下结合附图对本发明作进一步说明。如图1所示,改进型DDS信号发生器包括晶振、FPGA、SRAM、D/A转换器;FPGA接收晶振输入的时钟信号和外部输入的数据,FPGA将输入处理之后输出给SRAM地址输入端, SRAM数据输出端输出数据给D/A转换器,D/A转换器输出的信号就是所需要的信号;其中 FPGA包括锁相环、相位累加器和除法器,锁相环接收FPGA接收的晶振输入的时钟信号,锁相环输出的信号作为相位累加器的时钟,相位累加器的输出作为除法器的输入,除法器输出信号直接送出FPGA。如图2所示,上述信号发生器产生DDS信号的具体步骤
步骤Al 将输入到FPGA频率为36MHz的时钟输入,经锁相环,输出产生频率为360KHz 的CLK_DIV信号。步骤A2 =FPGA将外部输入的频率字存入FPGA内建的REG_FW步长寄存器中,将输入的相位初始值存入FPGA内建的REG_PHASE相位寄存器中,其中REG_FW步长寄存器是用于调节输出信号频率。步骤A3 在FPGA中内建相位累加寄存器REG_ACC,设定相位累加器寄存器REG_ ACC的初始值为REG_PHASE相位寄存器所保存的数值,其中REG_PHASE相位寄存器是用来调整输出信号相位。步骤A4 相位累加器寄存器REG_ACC在CLK_DIV信号的上升沿时,以REG_FW步长寄存器中的数值为步长自增,并将相位累加器寄存器REG_ACC对累加器模值即数值 36000000取模,并将所得的数值存入相位累加器寄存器REG_ACC。步骤A5 取出相位累加器寄存器REG_ACC中的数值,SRAM地址寄存器R0M_ADDR的数值等于相位累加器寄存器REG_ACC的数值乘以36000,再整除累加器模值36000000,其中除法采用了 14级流水线除法器实现。步骤A6 将SRAM内地址为R0M_ADDR中存储的数据输出到D/A的输入端,D/A的输
出端就得到了所需要的信号。
相位累加器寄存器REG_ACC的取模运算是这样实现的
步骤Bl 判断相位累加器寄存器REG_ACC中的数值是否大于累加器模值11_嫩乂,如果是则执行步骤B2,否则执行步骤B3。步骤B2 相位累加器寄存器REG_ACC中的数值等于相位累加器寄存器REG_ACC中的数值减去累加器模值M_MAX。步骤B3 相位累加器寄存器REG_ACC中的数值不变。
权利要求
1.一种改进型DDS信号发生器,包括晶振、FPGA、SRAM和D/A转换器,其特征在于FPGA 接收晶振输入的时钟信号和外部输入的频率字,FPGA进行处理后输入至SRAM,SRAM的输出与D/A转换器信号连接;所述的FPGA由锁相环、相位累加器和除法器组成;锁相环接收晶振输入的时钟信号, 锁相环输出的信号作为相位累加器的时钟,相位累加器接收外部输入的频率字,相位累加器的输出作为除法器的输入,除法器输出信号作为FPGA的输出。
2.利用权利要求1所述的DDS信号发生器产生DDS信号的方法,其特征在于该方法包括以下步骤步骤Al 将输入到FPGA频率为人的时钟输入,经锁相环,输出产生频率为/。lk&CLK_ DIV信号,其中/。lk频率为/x频率的十分之一;步骤A2 =FPGA将外部输入的频率字存入FPGA内建的REG_FW步长寄存器中,将输入的相位初始值存入FPGA内建的REG_PHASE相位寄存器中;步骤A3 在FPGA中内建相位累加寄存器REG_ACC,设定相位累加器寄存器REG_ACC的初始值为REG_PHASE相位寄存器所保存的数值;步骤M 相位累加器寄存器REG_ACC在CLK_DIV信号的上升沿时,以REG_FW步长寄存器中的数值为步长自增,并将相位累加器寄存器REG_ACC对累加器模值取模,即数值M_MAX 取模,并将所得的数值存入相位累加器寄存器REG_ACC ;步骤A5 取出相位累加器寄存器REG_ACC中的数值,将相位累加器寄存器REG_ACC的数值乘以36000,再整除累加器模值M_MAX后赋值给正弦ROM存储表地址寄存器R0M_ADDR ; 所述的正弦ROM存储表存储在SRAM中;步骤A6 将正弦ROM存储表内地址为R0M_ADDR中存储的数据输出到D/A转换器的输入端,D/A转换器的输出即为DDS信号。
3.根据权利要求2所述的方法,其特征在于步骤4中相位累加器寄存器REG_ACC的取模运算实现方法具体是步骤Bl 判断相位累加器寄存器REG_ACC中的数值是否大于累加器模值11_嫩乂,如果是则执行步骤B2,否则执行步骤B3 ;步骤B2 将相位累加器寄存器REG_ACC中的数值减去累加器模值M_MAX后赋值给相位累加器寄存器REG_ACC ;步骤B3 相位累加器寄存器REG_ACC中的数值保持不变。
4.根据权利要求2所述的方法,其特征在于/x时钟输入频率为36MHz。
5.根据权利要求2所述的方法,其特征在于累加器模值M_MAX为36000000,是36000 的整数倍。
6.根据权利要求2所述的方法,其特征在于步骤B5中正弦ROM存储表地址寄存器 R0M_ADDR数值的整除运算使用14级流水线除法器实现。
全文摘要
本发明公布了一种改进型DDS信号发生器及其信号发生方法。目前DDS信号发生器要产生低频频率信号和实现低频率步进,需要使用很大的存储空间。本发明中DDS信号发生器包括晶振、FPGA、SRAM和D/A转换器。FPGA接收晶振输入的时钟信号和外部输入的频率字,FPGA进行处理后输入至SRAM,SRAM的输出与D/A转换器信号连接。FPGA由锁相环、相位累加器和除法器组成;锁相环接收晶振输入的时钟信号,锁相环输出的信号作为相位累加器的时钟,相位累加器接收外部输入的频率字,相位累加器的输出作为除法器的输入,除法器输出信号作为FPGA的输出。本发明减小了波形存储器的容量,降低了频率步进值。
文档编号H03L7/18GK102497205SQ20111038420
公开日2012年6月13日 申请日期2011年11月28日 优先权日2011年11月28日
发明者何志伟, 邹宏, 高明煜, 黄健, 黄继业 申请人:杭州电子科技大学