基于Quartus2组件DSP_builder设计DDS信号发生器

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Quartus2组件DSP_builder 设计DDS 信号发生器

说明:Quartus2中DSP_builder 组件建立了Quartus2与Matlab 的无缝链接,这样极大的有利于FPGA 在信号处理中的应用,本次课题旨在通过建立一个信号发生器来说明DSP_builder 的强大之处。

传统的DDS 信号发生器的设计相对比较复杂(包括相位累加器,地址查找表,D/A ),通过传统的编程思想,会比较复杂,DSP_builder 则是通过simulink 中的Altera 库,直接构建DDS 模型,再通过signal complier 生成VHDL 语言以及仿真所用的测试脚本(testbench 文件),非常方便,并通过simulink 和FPGA 的仿真工具Modelsim_Atera 一起做了对比,两者吻合,达到了预期效果。

1.在Simulink 中构建DDS 模型

Signal Compiler

2.Simulink 下的仿真如图所示:

3.RTL 级仿真(modelsim 仿真):

-200

-150-100-50050100150200050100150200250300350400450500

-2

-1.5-1-0.500.511.52

4.RTL级视图

附:.vhl代码

-- sinwafe_GN.vhd

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.numeric_std.all;

entity sinwafe_GN is

port (

Output : out std_logic_vector(7 downto 0); -- Output.wire

Input : in std_logic_vector(0 downto 0) := (others => '0'); -- Input.wire

Clock : in std_logic := '0'; -- Clock.clk

aclr : in std_logic := '0'

);

end entity sinwafe_GN;

architecture rtl of sinwafe_GN is

component alt_dspbuilder_clock_GNF343OQUJ is

port (

aclr : in std_logic := 'X'; -- reset

aclr_n : in std_logic := 'X'; -- reset_n

aclr_out : out std_logic; -- reset

clock : in std_logic := 'X'; -- clk

clock_out : out std_logic -- clk

);

end component alt_dspbuilder_clock_GNF343OQUJ;

component alt_dspbuilder_port_GNXAOKDYKC is

port (

input : in std_logic_vector(0 downto 0) := (others => 'X'); -- wire

output : out std_logic_vector(0 downto 0) -- wire );

end component alt_dspbuilder_port_GNXAOKDYKC;

component alt_dspbuilder_lut_GNV7OH7CRC is

generic (

use_lpm : natural := 0;

reg_addr : natural := 0;

reg_data : natural := 0;

family : string := "STRATIX";

ADDRWIDTH : positive := 8;

DATAWIDTH : positive := 8;

RAMTYPE : string := "AUTO"

);

port (

aclr : in std_logic := 'X'; -- clk

clock : in std_logic := 'X'; -- clk

ena : in std_logic := 'X'; -- wire

Input : in std_logic_vector(ADDRWIDTH-1 downto 0) := (others => 'X'); -- wire

Output : out std_logic_vector(DATAWIDTH-1 downto 0); -- wire

sclr : in std_logic := 'X' -- wire

);

end component alt_dspbuilder_lut_GNV7OH7CRC;

component alt_dspbuilder_gnd_GN is

port (

output : out std_logic -- wire

);

end component alt_dspbuilder_gnd_GN;

component alt_dspbuilder_vcc_GN is

port (

output : out std_logic -- wire

);

end component alt_dspbuilder_vcc_GN;

component alt_dspbuilder_product_GNSX3UCWXH is

generic (

pipeline : natural := 0;

UseDedicatedMult : natural := 0;

lpm : natural := 0;

MaskValue : string := "1";

Signed : natural := 0;

width : natural := 8

);

port (

aclr : in std_logic := 'X'; -- clk

clock : in std_logic := 'X'; -- clk

dataa : in std_logic_vector(width-1 downto 0) := (others => 'X'); -- wire

datab : in std_logic_vector(width-1 downto 0) := (others => 'X'); -- wire

ena : in std_logic := 'X'; -- wire

result : out std_logic_vector(width*2-1 downto 0); -- wire

user_aclr : in std_logic := 'X' -- wire

);

end component alt_dspbuilder_product_GNSX3UCWXH;

component alt_dspbuilder_delay_GN53FGQEY3 is

generic (

width : positive := 8;

delay : positive := 1;

ClockPhase : string := "1";

use_init : natural := 0;

BitPattern : string := "00000001"

);

port (

相关文档
最新文档