打印

请教DDS问题

[复制链接]
1343|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hyg1984|  楼主 | 2008-7-15 01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先,我是用VHDL编写的,用DDS方法产生波形。

但是-----其中的道理不是很理解 ,特别是累加器,寄存器产生ROM地址那里,想不通!!

比如我产生一个正弦波形,主要有累加器、寄存器和ROM数据3个模块组成,ROM数据那里容易理解,
只需时钟和地址接入就可产生数据输出。

我是这样编写累加器和寄存器的-----:

1,累加器:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity add32 is
  port( a,b:in std_logic_vector(31 downto 0);
         s:out std_logic_vector(31 downto 0));-----送寄存器din端口
end add32;
architecture bhv2 of add32 is
  begin
     s<=a+b;
end bhv2;

2,寄存器
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt1024 is
  port(  clk:in std_logic;
         din:in std_logic_vector(31 downto 0);
          qa:out std_logic_vector(9 downto 0);--------送ROM地址
        bout:out std_logic_vector(31 downto 0));------反送到累加器b 端口,方便累加
end cnt1024;
  
architecture bhv1 of cnt1024 is
   begin  
     process(clk)
       begin
         if clk'event and clk='1' then
               bout<=din;
               q1<=din(31 downto 22);
         end if;
    end process;
  qa<=q1;
end bhv1;

输入有设clk=100MHZ,     a开始是a[31..8]=0,a[7..0]<=fb(fb是控制字)


按照我的理解是这样的,也不知道对不对,请指正:

如果fb=00000001,那么累加到s[22]='1'时,数据地址才加1,则查ROM表,取一个数据。

则最小分辨率是fclk/1024/2^22=0.0232HZ,也是最小频率,对吗?呵呵,是我自己的理解,不敢确定。

若a[21..0]=11111111------;a[31..22]<=fb;

假如每个周期只取32个数据,设fb=1024/32=32=00111111,则最高频率为fclk*32/1024=3.125MHZ

上面是我的理解,对不对请大家指出,共同讨论。

我的困惑是:怎么弄出个步进间隔为1HZ来,产生最小频率(最小分辨率)1HZ不难,只要减少累加器位数就行,

但是,每次我 fb加1的时候,输出频率就增大一倍而不是1HZ----

怎么控制呢,我想疯了想不明白-----

相关帖子

沙发
hyg1984|  楼主 | 2008-7-15 18:21 | 只看该作者

啊??没有人回答~~~

呵呵,

DDS不外呼注意,最大频率,最小频率,最小分辨率及步进间隔等,还有是如何调节控制字和

调节相位,望高手解答一下,这些控制怎么做到呢?

使用特权

评论回复
板凳
wjj145| | 2008-7-17 19:27 | 只看该作者

可以用一下xilinx's dds

xilinx的system generator不用写vhdl也可以使用dds core.不用这样累吧! 

使用特权

评论回复
地板
hyg1984|  楼主 | 2008-7-18 21:01 | 只看该作者

re

呵呵,我想学VHDL(DDS)这方面的知识,学无止境嘛---

使用特权

评论回复
5
chm269| | 2008-7-19 21:00 | 只看该作者

一年前研究过这个

去年大赛的时候研究过这个,好久没用忘的差不多了,上网看一下以前电子大赛的作品,应该会有

使用特权

评论回复
6
hyg1984|  楼主 | 2008-7-21 14:21 | 只看该作者

re

使用特权

评论回复
7
hyg1984|  楼主 | 2008-7-21 14:24 | 只看该作者

re

其实,网上有很多方法,可是讲得不太清楚,特别是

最大频率,最小频率,分辨率,步进 这一块,而且讲多,并没有VHDL实现

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

156

帖子

1

粉丝