新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种基于Spartan3E的DDS优化设计

一种基于Spartan3E的DDS优化设计

作者:时间:2011-09-15来源:网络收藏

  在使用DDS时,需要为其提供频率控制字K的值,一般通过中央控制单元MCU来完成,其以数据总线及写时钟信号的方式与内的DDS实体进行通讯,同时DDS在内部又是在本地时钟fc驱动下运行。由于MCU的写时钟和内的本地时钟异步,两者之间进行通讯难免存在数据不稳等问题,特别是在通讯速度较高时,这一异步接口问题会更加突出。为了实现异步接口的同步化,本文提出了如图3所示的接口同步电路。

  

异步接口同步处理电路

3 硬件实现及仿真结果

  本文使用VHDL 语言对各个模块及DDS系统进行描述。顶层文件如下所示:

  Entity dds is

  Port(reset:in std_logic;--全局复位信号

  fre:in std_logic_vector(7 downto 0);

  --频率控制字输入

  clk:in std_logic;

  --系统时钟

  fwwrn:in std_logic;      --频率控制字写信号

  gen:in std_logic_vector(0 downto 0);--波形控制字

  amp_out:out std_logic_vector(9 downto 0));

  --正弦波幅度输出

  end dds;

  architecture Behavioral of dds is

  component fcwld--接口同步模块

  Port(reset:in std_logic;

  clk:in std_logic;

  fre:in std_logic_vector(7 downto 0);

  fwwrn:in std_logic;

  syncfreq:out std_logic_vector(31 downto 0));

  --合成频率控制字

  end component;

  component accumulator        --流水线累加器块

  Port(reset:in STD_LOGIC;

  clk:in STD_LOGIC;

  syncfreq:in STD_LOGIC_VECTOR(31 downto 0);

  phase:out STD_LOGIC_VECTOR(7 downto 0));

  --相位高八位输出

  end component;

  component rom--波形存储器模块

  Port(phase:in STD_LOGIC_VECTOR(7 downto 0);

  gen:in STD_LOGIC_VECTOR(0 downto 0);

  amp_out:out STD_LOGIC_VECTOR(9 downto 0));

  end component;

  为了对DDS进行评估,将以上设计在Xilinx公司的开发软件中进行了设计及优化,目标器件为其最新的90nm工艺器件Spartan3E中最小器件XC3S100E-4VQ100C,该设计所占用的FPGA资源如表2所示。

  

一种基于Spartan3E的DDS优化设计

  由表2可以看出,本文给出的DDS设计占用资源很少,由于XC3S100E的市场价格在2美金左右,故本设计所占的硬件成本可以缩减到0.2美金左右。同时在ISE8.2中该设计的系统时钟最大达到159.6MHz。以上的设计性能几乎和现有的专用芯片相当,但成本下降很多。

  为了进一步验证本文给出的DDS设计系统在功能和时序上的正确性,对其进行了时序仿真,使用的仿真软件为Modelsim6.1。仿真结果表明,该DDS系统可以运行在较高的工作频率下。

  本文在对DDS的基本原理进行深入理解的基础上,通过采用三种优化与设计技术:(1)使用流水线累加器在不过多增加门数的条件下,大幅提高了芯片的工作速度;(2)压缩成正弦查找表,在保证芯片使用精度的情况下减少了近3/4面积,大大节约了ROM的容量。(3)采用同步接口电路设计方案,消除了系统的接口不稳定性。同时使用VHDL语言实现了优化,并把该设计适配到Xilinx公司的最新90nm工艺的Spartan3E系列的FPGA中,实际结果表明了本文给出的DDS设计方案在硬件开销方面的优势。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

关键词: FPGA IP 嵌入式 PLD CPLD SoC 数字信号处理 消费电子 FPGA

评论


相关推荐

技术专区

关闭