微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 如何用dds 产生频率可调的方波

如何用dds 产生频率可调的方波

时间:10-02 整理:3721RD 点击:

想用ise的 dds ip做一个方波信号源。
频率变化从1M到40M左右,最好是以步长(比如1M)通过旋钮调节可以连续变化。

比如,dds时钟用100M,相位累加器位宽设为18位,这时频率分辨率大概是381Hz。

现在问题是如果取相位累加器最高位作为输出信号,当2^18不是△cita的整数倍时,或是初始相位设置不当时,由于每次溢出的相位累加器的值不一致,
得到的方波不是周期信号。

不知道这个问题怎么解决?
请给位大神指点下~谢谢了

取相位累加器最高位作为输出信号,这尼玛 截断的也太多了些吧……高8位差不多

期待大牛回答…



    你的意思用高8位做个运算(比如与)然后输出一个信号?
    这还是有误差啊~  关键是我要的信号频率很大的时候,比如二三十M~

You use the MSB of phase accumulator to get a squarewave and hope it will generate the same frequency go through LUT and DAC. For the phase jump over the 1st /4th quadrant and 2th/3rd quadrant, it will change the squarewave's polarity( 1 to 0 and 0 to 1). Maybe we can do some kind of "smooth" action over the edge.



   你是直接把累加器输出的最高位作为方波信号了?那应该没问题啊,输出方波的最小频率应该是时钟频率的2^18分之一,你要连续可调的话,只要调节输入频率字K的大小就可以



    问题是当K很大时(要使所得方波频率为10M多或20M多时,远小于clk频率100M的一半),相位累加器最高位并不是每次经过N个clk周期变化一次,有时比N多1,有时少1,
相邻两次 高电平和低电平时间也不一样,这次高电平多一个clk,下次可能少一个,即占空比不一样,使所得信号有很大抖动~

而且即使当K较小时,也是有抖动发生,抖动的出现与否和抖动大小与k的具体取值有关,这个示波器是观察的到的~如何解决呢



    “phase jump over the 1st /4th quadrant and 2th/3rd quadrant”
具体在什么情况下发生? 也就说 squarewave's polarity 出错的几率 跟△cita的具体取值有关了?
再个如何对出错的地方 "smooth"?

一定要顶!

DDS频率调整本来就和位数相关,你输入常数为K每变化1频率变化为381hz
在调整输入常数的过程中肯定有频率不是方波的情况。
另外,输出截位太高了吧,一般18位要留个8位10位的
截断后对输入常数变化就更不敏感了,你要连续的变化,反应快
要么累加位数高截断输出也要高位数
要么别用DDS
你如果频率值间隔大的话,不如直接选择分频呢。
dds也是一种分频器,就是分频比选择的多而已

你用100M产生40M的方波,相当于40M的每个周期只有2.5个点,也就是说连续两个周期的40M信号有5个点,及第一个周期是2个点,第二个周期是3个点;换句话说,第一个周期是50M的信号,第二个周期是33.3M的信号。这样每个方波周期不等,用示波器产看抖动非常大。只有能整除的频率才没有抖动。
利用这种方法不管怎么做,都会有一些频率是抖动的。
可以解决的办法:
1,使用正弦通过DAC输出,将输出的正弦通过电压比较器比较输出方波。这样任何频率都比较稳定,不会抖动。
2,在每个周期的上升沿和下降沿插值,当然每个沿插值不一样,不让方波从0到1突然变化。相当于是每个周期是不规则的T形波输出,通过DAC输出后,再通过LPF就能得到稳定的方波波形输出。这种方法比较复杂。因为正对不同的频率都有不同的插值。

高速DA数模转换模块(DAC900E),很适合用FPGA控制产生任意波:
http://item.taobao.com/item.htm?id=25736860907



   那是不是插入一个点就尅有了呢? 我尝试了一下,插入一个点后,有点效果,但是效果不大

为什么非要用IP核

Ok, good information

期待个鞥深入地讨论,谢谢/。

谢谢分享,好好学习下。

已经按照小编方法搞定方波,谢谢了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top