⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dds 程序.txt

📁 用VHDL实现的DDS逻辑
💻 TXT
📖 第 1 页 / 共 2 页
字号:
--DDS波形发生器 (Synplify pro 编译通过)
--输出频率 Fout = Fclk*2^M/2^N
--分辨率 Fclk/2^N
--最大输出频率 Fout = Fclk*50%(理论值,抽样定理)

--版本1.0    2004/9/29   by JJJ 

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity DDS is
 generic(ACCWidth : Integer := 16);     --相位累加器的长度2^N (2^ACCWidth)
 port (   
 CLK:  in std_logic;         --系统时钟 FClk
 STEP: in std_logic_vector(ACCWidth-1 downto 0);  --步进,即相位累加器的累加增量,控制输出频率 2^M 频率控制字
 CHOICE:  in std_logic_vector(1 downto 0);   --波形选择信号  "00":正弦;  "01":三角波;  "10":方波;  "11":不输出(恒为低电平)
-- DAOUT : out std_logic_vector(7 downto 0);   --8位DA输出模拟信号,直通方式,如需时钟控制则要修改
 DAOUTX: out std_logic_vector(7 downto 0);
 DAOUTY: out std_logic_vector(7 downto 0)
 );
end;

architecture DDS of DDS is
signal ACC:std_logic_vector(ACCWidth-1 downto 0):=(others =>'0');
signal DAOUT:std_logic_vector(7 downto 0);

begin
 process(CLK,STEP)
 begin  
  if(CLK'event and CLK='1') then
   ACC<=ACC+STEP;
  end if;
 end process;

 process(CHOICE,ACC)
 begin
  case CHOICE is
   when "00"=>   --正弦
    case ACC(ACCWidth-1 downto ACCWidth-8) is
                    when "00000000" => DAOUT <= "10000000";
                    when "00000001" => DAOUT <= "10000011";
                    when "00000010" => DAOUT <= "10000110";
                    when "00000011" => DAOUT <= "10001001";
                    when "00000100" => DAOUT <= "10001101";
                    when "00000101" => DAOUT <= "10010000";
                    when "00000110" => DAOUT <= "10010011";
                    when "00000111" => DAOUT <= "10010110";
                    when "00001000" => DAOUT <= "10011001";
                    when "00001001" => DAOUT <= "10011100";
                    when "00001010" => DAOUT <= "10011111";
                    when "00001011" => DAOUT <= "10100010";
                    when "00001100" => DAOUT <= "10100101";
                    when "00001101" => DAOUT <= "10101000";
                    when "00001110" => DAOUT <= "10101011";
                    when "00001111" => DAOUT <= "10101110";
                    when "00010000" => DAOUT <= "10110001";
                    when "00010001" => DAOUT <= "10110100";
                    when "00010010" => DAOUT <= "10110111";
                    when "00010011" => DAOUT <= "10111010";
                    when "00010100" => DAOUT <= "10111100";
                    when "00010101" => DAOUT <= "10111111";
                    when "00010110" => DAOUT <= "11000010";
                    when "00010111" => DAOUT <= "11000100";
                    when "00011000" => DAOUT <= "11000111";
                    when "00011001" => DAOUT <= "11001010";
                    when "00011010" => DAOUT <= "11001100";
                    when "00011011" => DAOUT <= "11001111";
                    when "00011100" => DAOUT <= "11010001";
                    when "00011101" => DAOUT <= "11010100";
                    when "00011110" => DAOUT <= "11010110";
                    when "00011111" => DAOUT <= "11011000";
                    when "00100000" => DAOUT <= "11011011";
                    when "00100001" => DAOUT <= "11011101";
                    when "00100010" => DAOUT <= "11011111";
                    when "00100011" => DAOUT <= "11100001";
                    when "00100100" => DAOUT <= "11100011";
                    when "00100101" => DAOUT <= "11100101";
                    when "00100110" => DAOUT <= "11100111";
                    when "00100111" => DAOUT <= "11101001";
                    when "00101000" => DAOUT <= "11101010";
                    when "00101001" => DAOUT <= "11101100";
                    when "00101010" => DAOUT <= "11101110";
                    when "00101011" => DAOUT <= "11101111";
                    when "00101100" => DAOUT <= "11110001";
                    when "00101101" => DAOUT <= "11110010";
                    when "00101110" => DAOUT <= "11110100";
                    when "00101111" => DAOUT <= "11110101";
                    when "00110000" => DAOUT <= "11110110";
                    when "00110001" => DAOUT <= "11110111";
                    when "00110010" => DAOUT <= "11111001";
                    when "00110011" => DAOUT <= "11111010";
                    when "00110100" => DAOUT <= "11111010";
                    when "00110101" => DAOUT <= "11111011";
                    when "00110110" => DAOUT <= "11111100";
                    when "00110111" => DAOUT <= "11111101";
                    when "00111000" => DAOUT <= "11111110";
                    when "00111001" => DAOUT <= "11111110";
                    when "00111010" => DAOUT <= "11111111";
                    when "00111011" => DAOUT <= "11111111";
                    when "00111100" => DAOUT <= "11111111";
                    when "00111101" => DAOUT <= "11111111";
                    when "00111110" => DAOUT <= "11111111";
                    when "00111111" => DAOUT <= "11111111";
                    when "01000000" => DAOUT <= "11111111";
                    when "01000001" => DAOUT <= "11111111";
                    when "01000010" => DAOUT <= "11111111";
                    when "01000011" => DAOUT <= "11111111";
                    when "01000100" => DAOUT <= "11111111";
                    when "01000101" => DAOUT <= "11111111";
                    when "01000110" => DAOUT <= "11111111";
                    when "01000111" => DAOUT <= "11111110";
                    when "01001000" => DAOUT <= "11111110";
                    when "01001001" => DAOUT <= "11111101";
                    when "01001010" => DAOUT <= "11111100";
                    when "01001011" => DAOUT <= "11111011";
                    when "01001100" => DAOUT <= "11111010";
                    when "01001101" => DAOUT <= "11111010";
                    when "01001110" => DAOUT <= "11111001";
                    when "01001111" => DAOUT <= "11110111";
                    when "01010000" => DAOUT <= "11110110";
                    when "01010001" => DAOUT <= "11110101";
                    when "01010010" => DAOUT <= "11110100";
                    when "01010011" => DAOUT <= "11110010";
                    when "01010100" => DAOUT <= "11110001";
                    when "01010101" => DAOUT <= "11101111";
                    when "01010110" => DAOUT <= "11101110";
                    when "01010111" => DAOUT <= "11101100";
                    when "01011000" => DAOUT <= "11101010";
                    when "01011001" => DAOUT <= "11101001";
                    when "01011010" => DAOUT <= "11100111";
                    when "01011011" => DAOUT <= "11100101";
                    when "01011100" => DAOUT <= "11100011";
                    when "01011101" => DAOUT <= "11100001";
                    when "01011110" => DAOUT <= "11011111";
                    when "01011111" => DAOUT <= "11011101";
                    when "01100000" => DAOUT <= "11011011";
                    when "01100001" => DAOUT <= "11011000";
                    when "01100010" => DAOUT <= "11010110";
                    when "01100011" => DAOUT <= "11010100";
                    when "01100100" => DAOUT <= "11010001";
                    when "01100101" => DAOUT <= "11001111";
                    when "01100110" => DAOUT <= "11001100";
                    when "01100111" => DAOUT <= "11001010";
                    when "01101000" => DAOUT <= "11000111";
                    when "01101001" => DAOUT <= "11000100";
                    when "01101010" => DAOUT <= "11000010";
                    when "01101011" => DAOUT <= "10111111";
                    when "01101100" => DAOUT <= "10111100";
                    when "01101101" => DAOUT <= "10111010";
                    when "01101110" => DAOUT <= "10110111";
                    when "01101111" => DAOUT <= "10110100";
                    when "01110000" => DAOUT <= "10110001";
                    when "01110001" => DAOUT <= "10101110";
                    when "01110010" => DAOUT <= "10101011";
                    when "01110011" => DAOUT <= "10101000";
                    when "01110100" => DAOUT <= "10100101";
                    when "01110101" => DAOUT <= "10100010";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -