集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1010|回复: 0

额 高手帮下忙

[复制链接]
lichenhui12 发表于 2012-4-4 10:58:43 | 显示全部楼层 |阅读模式
要做个课设 基于FPGA的直接数字合成频率计
输出可调的正弦信号就行  有没有高手有的  发下邮箱466108954@qq.com  3Q
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
LIBRARY LPM;
USE LPM.LPM_COMPONENTS.ALL;
ENTITY ddsc IS
  GENERIC(FREQ_WIDTH:INTEGER:=32;
        PHASE_WIDTH:INTEGER:=12;
        ADDER_WIDTH:INTEGER:=32;
        ROMAD_WIDTH:INTEGER:=10;
        ROM_D_WIDTH:INTEGER:=10
       );
PORT(CLK:IN STD_LOGIC;
FREQIN:IN STD_LOGIC_VECTOR(FREQ_WIDTH-1 DOWNTO 0);
PHASEIN:IN STD_LOGIC_VECTOR(PHASE_WIDTH-1 DOWNTO0);
DDSOUT:OUT STD_LOGIC_VECTOR(ROM_D_WIDTH-1 DOWNTO0));
END ENTITY ddsc;
ARCHITECTURE BEHAVE OF ddsc IS
  SIGNAL ACC:STD_LOGIC_VECTOR(ADDER_WIDTH-1 DAOWNTO0);
  SIGNAL PHASEEADD:STD_LOGIC_VECTOR(PHASE_WIDTH-1 DAOWNTO0);
  SIGNAL ROMADDER:STD_LOGIC_VECTOR(ROMAD_WIDTH-1 DAOWNTO0);
  SIGNAL FREQW:STD_LOGIC_VECTOR(FREQ_WIDTH-1 DAOWNTO0);
SIGNAL PHASEW:STD_LOGIC_VECTOR(PHASE_WIDTH-1 DAOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IF (CLK'EVENT AND CLK='1')THEN
FQERQ<=FREQIN;
PHASEW<=PHASEIN;
ACC<=ACC+FREQW;
END IF;
END PROCESS;
PHASEADD<=ACC(ADDER_WIDTH-1 DOWNTO ADDER_WIDTH-PHASE_WIDTH)+PHASEW;
ROMADDR<=PHASEADD(PHASE_WIDTH-1 DOWNTO PHASE_WIDTH-ROMAD_WIDTH);
--SIN-ROM
i_ROMPM_ROM
GENERIC MAP(LPM_WIDTH=>ROM_D_WIDTH,
        LPM_WIDTHAD=>ROM_WIDTH,
LPM_ADDRESS_CONTROL=>"UNREGISTERED",
LPM_OUTDATA=>"SIN_ROM.MIF")
PORT MAP(OUTCLOCK=>CLK,
ADDRESS=>ROMADDER,
Q=>DDSOUT);
END ACHITECTURE BEHAVE;
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-6-16 22:26 , Processed in 0.059470 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表