收藏 分销(赏)

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

上传人:pc****0 文档编号:8988496 上传时间:2025-03-10 格式:DOCX 页数:11 大小:256.77KB
下载 相关 举报
基于Quartus2组件DSP_builder设计DDS信号发生器.docx_第1页
第1页 / 共11页
基于Quartus2组件DSP_builder设计DDS信号发生器.docx_第2页
第2页 / 共11页
点击查看更多>>
资源描述
基于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模型 2.Simulink下的仿真如图所示: 3.RTL级仿真(modelsim仿真): 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' -- .reset_n ); 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 ( aclr : in std_logic := 'X'; -- clk clock : in std_logic := 'X'; -- clk ena : in std_logic := 'X'; -- wire input : in std_logic_vector(width-1 downto 0) := (others => 'X'); -- wire output : out std_logic_vector(width-1 downto 0); -- wire sclr : in std_logic := 'X' -- wire ); end component alt_dspbuilder_delay_GN53FGQEY3; component alt_dspbuilder_inc_dec_GNM4UTC62W is generic ( lpm : natural := 0; MaskValue : string := "1"; direction : natural := 0; Unsigned : natural := 0; StartValue : string := "00000000"; OutputWidth : integer := 8 ); port ( aclr : in std_logic := 'X'; -- clk clock : in std_logic := 'X'; -- clk ena : in std_logic := 'X'; -- wire result : out std_logic_vector(OutputWidth-1 downto 0); -- wire sclr : in std_logic := 'X' -- wire ); end component alt_dspbuilder_inc_dec_GNM4UTC62W; component alt_dspbuilder_port_GNA5S4SQDN is port ( input : in std_logic_vector(7 downto 0) := (others => 'X'); -- wire output : out std_logic_vector(7 downto 0) -- wire ); end component alt_dspbuilder_port_GNA5S4SQDN; component alt_dspbuilder_cast_GNQDULLOC6 is generic ( saturate : natural := 0; round : natural := 0 ); port ( input : in std_logic_vector(0 downto 0) := (others => 'X'); -- wire output : out std_logic_vector(7 downto 0) -- wire ); end component alt_dspbuilder_cast_GNQDULLOC6; component alt_dspbuilder_cast_GNXB66IQUO is generic ( saturate : natural := 0; round : natural := 0 ); port ( input : in std_logic_vector(15 downto 0) := (others => 'X'); -- wire output : out std_logic_vector(7 downto 0) -- wire ); end component alt_dspbuilder_cast_GNXB66IQUO; component alt_dspbuilder_cast_GNA72OVCRC is generic ( saturate : natural := 0; round : natural := 0 ); port ( input : in std_logic_vector(5 downto 0) := (others => 'X'); -- wire output : out std_logic_vector(5 downto 0) -- wire ); end component alt_dspbuilder_cast_GNA72OVCRC; signal sin_lutsclrgnd_output_wire : std_logic; -- Sin_LUTsclrGND:output -> Sin_LUT:sclr signal sin_lutenavcc_output_wire : std_logic; -- Sin_LUTenaVCC:output -> Sin_LUT:ena signal productuser_aclrgnd_output_wire : std_logic; -- Productuser_aclrGND:output -> Product:user_aclr signal productenavcc_output_wire : std_logic; -- ProductenaVCC:output -> Product:ena signal delaysclrgnd_output_wire : std_logic; -- DelaysclrGND:output -> Delay:sclr signal delayenavcc_output_wire : std_logic; -- DelayenaVCC:output -> Delay:ena signal inccountsclrgnd_output_wire : std_logic; -- IncCountsclrGND:output -> IncCount:sclr signal inccountenavcc_output_wire : std_logic; -- IncCountenaVCC:output -> IncCount:ena signal delay_output_wire : std_logic_vector(7 downto 0); -- Delay:output -> Product:dataa signal sin_lut_output_wire : std_logic_vector(7 downto 0); -- Sin_LUT:Output -> Delay:input signal input_0_output_wire : std_logic_vector(0 downto 0); -- Input_0:output -> cast0:input signal cast0_output_wire : std_logic_vector(7 downto 0); -- cast0:output -> Product:datab signal product_result_wire : std_logic_vector(15 downto 0); -- Product:result -> cast1:input signal cast1_output_wire : std_logic_vector(7 downto 0); -- cast1:output -> Output_0:input signal inccount_result_wire : std_logic_vector(5 downto 0); -- IncCount:result -> cast2:input signal cast2_output_wire : std_logic_vector(5 downto 0); -- cast2:output -> Sin_LUT:Input signal clock_0_clock_output_reset : std_logic; -- Clock_0:aclr_out -> [Delay:aclr, IncCount:aclr, Product:aclr, Sin_LUT:aclr] signal clock_0_clock_output_clk : std_logic; -- Clock_0:clock_out -> [Delay:clock, IncCount:clock, Product:clock, Sin_LUT:clock] begin clock_0 : component alt_dspbuilder_clock_GNF343OQUJ port map ( clock_out => clock_0_clock_output_clk, -- clock_output.clk aclr_out => clock_0_clock_output_reset, -- .reset clock => Clock, -- clock.clk aclr_n => aclr -- .reset_n ); input_0 : component alt_dspbuilder_port_GNXAOKDYKC port map ( input => Input, -- input.wire output => input_0_output_wire -- output.wire ); sin_lut : component alt_dspbuilder_lut_GNV7OH7CRC generic map ( use_lpm => 1, reg_addr => 1, reg_data => 0, family => "Cyclone II", ADDRWIDTH => 6, DATAWIDTH => 8, RAMTYPE => "AUTO" ) port map ( clock => clock_0_clock_output_clk, -- clock_aclr.clk aclr => clock_0_clock_output_reset, -- .reset Input => cast2_output_wire, -- Input.wire Output => sin_lut_output_wire, -- Output.wire sclr => sin_lutsclrgnd_output_wire, -- sclr.wire ena => sin_lutenavcc_output_wire -- ena.wire ); sin_lutsclrgnd : component alt_dspbuilder_gnd_GN port map ( output => sin_lutsclrgnd_output_wire -- output.wire ); sin_lutenavcc : component alt_dspbuilder_vcc_GN port map ( output => sin_lutenavcc_output_wire -- output.wire ); product : component alt_dspbuilder_product_GNSX3UCWXH generic map ( pipeline => 0, UseDedicatedMult => 0, lpm => 0, MaskValue => "1", Signed => 1, width => 8 ) port map ( clock => clock_0_clock_output_clk, -- clock_aclr.clk aclr => clock_0_clock_output_reset, -- .reset dataa => delay_output_wire, -- dataa.wire datab => cast0_output_wire, -- datab.wire result => product_result_wire, -- result.wire user_aclr => productuser_aclrgnd_output_wire, -- user_aclr.wire ena => productenavcc_output_wire -- ena.wire ); productuser_aclrgnd : component alt_dspbuilder_gnd_GN port map ( output => productuser_aclrgnd_output_wire -- output.wire ); productenavcc : component alt_dspbuilder_vcc_GN port map ( output => productenavcc_output_wire -- output.wire ); delay : component alt_dspbuilder_delay_GN53FGQEY3 generic map ( width => 8, delay => 1, ClockPhase => "1", use_init => 0, BitPattern => "00000001" ) port map ( input => sin_lut_output_wire, -- input.wire clock => clock_0_clock_output_clk, -- clock_aclr.clk aclr => clock_0_clock_output_reset, -- .reset output => delay_output_wire, -- output.wire sclr => delaysclrgnd_output_wire, -- sclr.wire ena => delayenavcc_output_wire -- ena.wire ); delaysclrgnd : component alt_dspbuilder_gnd_GN port map ( output => delaysclrgnd_output_wire -- output.wire ); delayenavcc : component alt_dspbuilder_vcc_GN port map ( output => delayenavcc_output_wire -- output.wire ); inccount : component alt_dspbuilder_inc_dec_GNM4UTC62W generic map ( lpm => 0, MaskValue => "1", direction => 0, Unsigned => 0, StartValue => "000000", OutputWidth => 6 ) port map ( clock => clock_0_clock_output_clk, -- clock_aclr.clk aclr => clock_0_clock_output_reset, -- .reset result => inccount_result_wire, -- result.wire sclr => inccountsclrgnd_output_wire, -- sclr.wire ena => inccountenavcc_output_wire -- ena.wire ); inccountsclrgnd : component alt_dspbuilder_gnd_GN port map ( output => inccountsclrgnd_output_wire -- output.wire ); inccountenavcc : component alt_dspbuilder_vcc_GN port map ( output => inccountenavcc_output_wire -- output.wire ); output_0 : component alt_dspbuilder_port_GNA5S4SQDN port map ( input => cast1_output_wire, -- input.wire output => Output -- output.wire ); cast0 : component alt_dspbuilder_cast_GNQDULLOC6 generic map ( saturate => 0, round => 0 ) port map ( input => input_0_output_wire, -- input.wire output => cast0_output_wire -- output.wire ); cast1 : component alt_dspbuilder_cast_GNXB66IQUO generic map ( saturate => 0, round => 0 ) port map ( input => product_result_wire, -- input.wire output => cast1_output_wire -- output.wire ); cast2 : component alt_dspbuilder_cast_GNA72OVCRC generic map ( saturate => 0, round => 0 ) port map ( input => inccount_result_wire, -- input.wire output => cast2_output_wire -- output.wire ); end architecture rtl; -- of sinwafe_GN
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服