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

📄 wave_generator.vhd

📁 数字式移相信号发生器可以产生预置频率的正弦信号
💻 VHD
字号:
 library IEEE;
      use IEEE.STD_LOGIC_1164.ALL;
      use IEEE.STD_LOGIC_ARITH.ALL;
      use IEEE.STD_LOGIC_UNSIGNED.ALL;
       
      entity wave_generator is
          Port (clk1 : in std_logic;
                      f_1:in std_logic_vector(8 downto 0);
                 d : out std_logic_vector(7 downto 0));
      end wave_generator;
       
      architecture Behavioral of wave_generator is
      begin
      process(clk1,f_1)
      begin
      if rising_edge(clk1) then
      case f_1 is 
      when "000000000"=>d<="10000000";when "000000001"=>d<="10000010";
      when "000000010"=>d<="10000100";when "000000011"=>d<="10000111";
      when "000000100"=>d<="10001001";when "000000101"=>d<="10001011";
      when "000000110"=>d<="10001101";when "000000111"=>d<="10010000";
      when "000001000"=>d<="10010010";when "000001001"=>d<="10010100";--0--9
       
      when "000001010"=>d<="10010110";when "000001011"=>d<="10011000";--10--19
      when "000001100"=>d<="10011011";when "000001101"=>d<="10011101";
      when "000001110"=>d<="10011111";when "000001111"=>d<="10100001";
      when "000010000"=>d<="10100011";when "000010001"=>d<="10100101";
      when "000010010"=>d<="10101000";when "000010011"=>d<="10101010";
       
      when "000010100"=>d<="10101100";when "000010101"=>d<="10101110";--20--29
      when "000010110"=>d<="10110000";when "000010111"=>d<="10110010";
      when "000011000"=>d<="10110100";when "000011001"=>d<="10110110";
      when "000011010"=>d<="10111000";when "000011011"=>d<="10111010";
      when "000011100"=>d<="10111100";when "000011101"=>d<="10111110";
       
      when "000011110"=>d<="11000000";when "000011111"=>d<="11000010";--30--39
      when "000100000"=>d<="11000100";when "000100001"=>d<="11000110";
      when "000100010"=>d<="11001000";when "000100011"=>d<="11001001";
      when "000100100"=>d<="11001011";when "000100101"=>d<="11001101";
      when "000100110"=>d<="11001111";when "000100111"=>d<="11010001";
       
      when "000101000"=>d<="11010010";when "000101001"=>d<="11010100";--40--49
      when "000101010"=>d<="11010110";when "000101011"=>d<="11010111";
      when "000101100"=>d<="11101000";when "000101101"=>d<="11101001";
      when "000101110"=>d<="11011100";when "000101111"=>d<="11011110";
      when "000110000"=>d<="11011111";when "000110001"=>d<="11100001";
       
      when "000110010"=>d<="11100010";when "000110011"=>d<="11100011";--50--59
      when "000110100"=>d<="11100101";when "000110101"=>d<="11100110";
      when "000110110"=>d<="11101000";when "000110111"=>d<="11101001";
      when "000111000"=>d<="11101010";when "000111001"=>d<="11101011";
      when "000111010"=>d<="11101101";when "000111011"=>d<="11101110";
       
      when "000111100"=>d<="11101111";when "000111101"=>d<="11110000";--60--69
      when "000111110"=>d<="11110001";when "000111111"=>d<="11110010";
      when "001000000"=>d<="11110011";when "001000001"=>d<="11110100";
      when "001000010"=>d<="11110100";when "001000011"=>d<="11110110";
      when "001000100"=>d<="11110111";when "001000101"=>d<="11110111";
       
      when "001000110"=>d<="11111000";when "001000111"=>d<="11111001";--70--79
      when "001001000"=>d<="11111010";when "001001001"=>d<="11111010";
      when "001001010"=>d<="11111011";when "001001011"=>d<="11111100";
      when "001001100"=>d<="11111100";when "001001101"=>d<="11111101";
      when "001001110"=>d<="11111101";when "001001111"=>d<="11111110";
       
      when "001010000"=>d<="11111110";when "001010001"=>d<="11111110";--80--89
      when "001010010"=>d<="11111111";when "001010011"=>d<="11111111";
      when "001010100"=>d<="11111111";when "001010101"=>d<="11111111";
      when "001010110"=>d<="11111111";when "001010111"=>d<="11111111";
      when "001011000"=>d<="11111111";when "001011001"=>d<="11111111";
       
      when "001011010"=>d<="11111111";when "001011011"=>d<="11111111";--90--99
      when "001011100"=>d<="11111111";when "001011101"=>d<="11111111";
      when "001011110"=>d<="11111111";when "001011111"=>d<="11111111";
      when "001100000"=>d<="11111111";when "001100001"=>d<="11111111";
      when "001100010"=>d<="11111111";when "001100011"=>d<="11111110";
       
      when "001100100"=>d<="11111110";when "001100101"=>d<="11111110";--100--109
      when "001100110"=>d<="11111101";when "001100111"=>d<="11111101";
      when "001101000"=>d<="11111100";when "001101001"=>d<="11111100";
      when "001101010"=>d<="11111011";when "001101011"=>d<="11111010";
      when "001101100"=>d<="11111010";when "001101101"=>d<="11111001";
       
      when "001101110"=>d<="11111000";when "001101111"=>d<="11110111";--110--119
      when "001110000"=>d<="11110111";when "001110001"=>d<="11110110";
      when "001110010"=>d<="11110101";when "001110011"=>d<="11110100";
      when "001110100"=>d<="11110011";when "001110101"=>d<="11110010";
      when "001110110"=>d<="11110001";when "001110111"=>d<="11110000";
       
      when "001111000"=>d<="11101111";when "001111001"=>d<="11101110";---120
      when "001111010"=>d<="11101101";when "001111011"=>d<="11101011";
      when "001111100"=>d<="11101010";when "001111101"=>d<="11101001";
      when "001111110"=>d<="11101000";when "001111111"=>d<="11100110";
      when "010000000"=>d<="11100101";when "010000001"=>d<="11100011";
       
      when "010000010"=>d<="11100010";when "010000011"=>d<="11100001";----130
      when "010000100"=>d<="11011111";when "010000101"=>d<="11011110";
      when "010000110"=>d<="11011100";when "010000111"=>d<="11011011";
      when "010001000"=>d<="11011001";when "010001001"=>d<="11010111";
      when "010001010"=>d<="11010110";when "010001011"=>d<="11010100";
       
      when "010001100"=>d<="11010010";when "010001101"=>d<="11010001";
      when "010001110"=>d<="11001111";when "010001111"=>d<="11001101";
      when "010010000"=>d<="11001011";when "010010001"=>d<="11001001";
      when "010010010"=>d<="11001000";when "010010011"=>d<="11000110";
      when "010010100"=>d<="11000100";when "010010101"=>d<="11000010";
       
      when "010010110"=>d<="11000000";when "010010111"=>d<="10111110";--150
      when "010011000"=>d<="10111100";when "010011001"=>d<="10111010";
      when "010011010"=>d<="10111000";when "010011011"=>d<="10110110";
      when "010011100"=>d<="10110100";when "010011101"=>d<="10110010";
      when "010011110"=>d<="10110000";when "010011111"=>d<="10101110";
       
      when "010100000"=>d<="10101100";when "010100001"=>d<="10101010";---160
      when "010100010"=>d<="10101001";when "010100011"=>d<="10100101";
      when "010100100"=>d<="10100011";when "010100101"=>d<="10100001";
      when "010100110"=>d<="10011111";when "010100111"=>d<="10011101";
      when "010101000"=>d<="10011011";when "010101001"=>d<="10011000";
       
      when "010101010"=>d<="10010110";when "010101011"=>d<="10010100";
      when "010101100"=>d<="10010010";when "010101101"=>d<="10010000";
      when "010101110"=>d<="10001101";when "010101111"=>d<="10001011";
      when "010110000"=>d<="10001001";when "010110001"=>d<="10000111";
      when "010110010"=>d<="10000100";when "010110011"=>d<="10000010";
       
      when "010110100"=>d<="10000000";when "010110101"=>d<="01111110";---180
      when "010110110"=>d<="01111100";when "010110111"=>d<="01111001";
      when "010111000"=>d<="01110111";when "010111001"=>d<="01110101";
      when "010111010"=>d<="01110011";when "010111011"=>d<="01110000";
      when "010111100"=>d<="01101110";when "010111101"=>d<="01101100";
       
      when "010111110"=>d<="01101010";when "010111111"=>d<="01101000";---190
      when "011000000"=>d<="01100101";when "011000001"=>d<="01100011";
      when "011000010"=>d<="01100001";when "011000011"=>d<="01011111";
      when "011000100"=>d<="01011101";when "011000101"=>d<="01011011";
      when "011000110"=>d<="01011000";when "011000111"=>d<="01010110";
       
      when "011001000"=>d<="01010100";when "011001001"=>d<="01010010";--200
      when "011001010"=>d<="01010000";when "011001011"=>d<="01001110";
      when "011001100"=>d<="01001100";when "011001101"=>d<="01001010";
      when "011001110"=>d<="01001000";when "011001111"=>d<="01000110";
      when "011010000"=>d<="01000100";when "011010001"=>d<="01000010";
       
      when "011010010"=>d<="01000000";when "011010011"=>d<="00111110";---210
      when "011010100"=>d<="00111100";when "011010101"=>d<="00111010";
      when "011010110"=>d<="00111000";when "011010111"=>d<="00110111";
      when "011011000"=>d<="00110101";when "011011001"=>d<="00110011";
      when "011011010"=>d<="00110001";when "011011011"=>d<="00101111";
       
       
      when "011011100"=>d<="00101110";when "011011101"=>d<="00101100";---220
      when "011011110"=>d<="00101010";when "011011111"=>d<="00101001";
      when "011100000"=>d<="00100111";when "011100001"=>d<="00100101";
      when "011100010"=>d<="00100100";when "011100011"=>d<="00100010";
      when "011100100"=>d<="00100001";when "011100101"=>d<="00011111";
       
      when "011100110"=>d<="00011110";when "011100111"=>d<="00011101";---230
      when "011101000"=>d<="00011011";when "011101001"=>d<="00011010";
      when "011101010"=>d<="00011000";when "011101011"=>d<="00010111";
      when "011101100"=>d<="00010110";when "011101101"=>d<="00010101";
      when "011101110"=>d<="00010011";when "011101111"=>d<="00010010";
       
       
      when "011110000"=>d<="00010001";when "011110001"=>d<="00010000";---240
      when "011110010"=>d<="00001111";when "011110011"=>d<="00001110";
      when "011110100"=>d<="00001101";when "011110101"=>d<="00001100";
      when "011110110"=>d<="00001011";when "011110111"=>d<="00001010";
      when "011111000"=>d<="00001001";when "011111001"=>d<="00001001";
       
       
      when "011111010"=>d<="00001000";when "011111011"=>d<="00000111";---250
      when "011111100"=>d<="00000110";when "011111101"=>d<="00000110";
      when "011111110"=>d<="00000101";when "011111111"=>d<="00000100";
      when "100000000"=>d<="00000100";when "100000001"=>d<="00000011";
      when "100000010"=>d<="00000011";when "100000011"=>d<="00000010";
       
      when "100000100"=>d<="00000010";when "100000101"=>d<="00000010";--260
      when "100000110"=>d<="00000001";when "100000111"=>d<="00000001";
      when "100001000"=>d<="00000001";when "100001001"=>d<="00000000";
      when "100001010"=>d<="00000000";when "100001011"=>d<="00000000";
      when "100001100"=>d<="00000000";when "100001101"=>d<="00000000";
       
      when "100001110"=>d<="00000000";when "100001111"=>d<="00000000";--270--279
      when "100010000"=>d<="00000000";when "100010001"=>d<="00000000";
      when "100010010"=>d<="00000000";when "100010011"=>d<="00000000";
      when "100010100"=>d<="00000001";when "100010101"=>d<="00000001";
      when "100010110"=>d<="00000001";when "100010111"=>d<="00000010";
       
      when "100011000"=>d<="00000010";when "100011001"=>d<="00000010";--280--289
      when "100011010"=>d<="00000011";when "100011011"=>d<="00000011";
      when "100011100"=>d<="00000100";when "100011101"=>d<="00000100";
      when "100011110"=>d<="00000101";when "100011111"=>d<="00000110";
      when "100100000"=>d<="00000110";when "100100001"=>d<="00000111";
       
      when "100100010"=>d<="00001000";when "100100011"=>d<="00001001";--290--299
      when "100100100"=>d<="00001001";when "100100101"=>d<="00001010";
      when "100100110"=>d<="00001011";when "100100111"=>d<="00001100";
      when "100101000"=>d<="00001101";when "100101001"=>d<="00001110";
      when "100101010"=>d<="00001111";when "100101011"=>d<="00010000";
       
      when "100101100"=>d<="00010001";when "100101101"=>d<="00010010";--300--309
      when "100101110"=>d<="00010011";when "100101111"=>d<="00010101";
      when "100110000"=>d<="00010110";when "100110001"=>d<="00010111";
      when "100110010"=>d<="00011000";when "100110011"=>d<="00011010";
      when "100110100"=>d<="00011011";when "100110101"=>d<="00011101";
       
      when "100110110"=>d<="00011110";when "100110111"=>d<="00011111";--310--319
      when "100111000"=>d<="00100001";when "100111001"=>d<="00100010";
      when "100111010"=>d<="00100110";when "100111011"=>d<="00110111";
      when "100111100"=>d<="00100111";when "100111101"=>d<="00101001";
      when "100111110"=>d<="00101010";when "100111111"=>d<="00101100";
       
      when "101000000"=>d<="00101110";when "101000001"=>d<="00101111";--320--329
      when "101000010"=>d<="00110001";when "101000011"=>d<="00110011";
      when "101000100"=>d<="00110101";when "101000101"=>d<="00110111";
      when "101000110"=>d<="01001100";when "101000111"=>d<="00111010";
      when "101001000"=>d<="00111100";when "101001001"=>d<="00111110";
       
      when "101001010"=>d<="01000000";when "101001011"=>d<="01000010";--330--339
      when "101001100"=>d<="01000100";when "101001101"=>d<="01000110";
      when "101001110"=>d<="01001000";when "101001111"=>d<="01001010";
      when "101010000"=>d<="01001100";when "101010001"=>d<="01001110";
      when "101010010"=>d<="01010000";when "101010011"=>d<="01010010";
       
      when "101010100"=>d<="01010100";when "101010101"=>d<="01010110";--340--349
      when "101010110"=>d<="01011000";when "101010111"=>d<="01011011";
      when "101011000"=>d<="01011101";when "101011001"=>d<="01011111";
      when "101011010"=>d<="01100001";when "101011011"=>d<="01100010";
      when "101011100"=>d<="01100101";when "101011101"=>d<="01101000";
       
      when "101011110"=>d<="01101010";when "101011111"=>d<="01101100";--350--359
      when "101100000"=>d<="01101110";when "101100001"=>d<="01110000";
      when "101100010"=>d<="01110011";when "101100011"=>d<="01110101";
      when "101100100"=>d<="01110111";when "101100101"=>d<="01111001";
      when "101100110"=>d<="01111100";when "101100111"=>d<="01111110";
       
       
      when others=> null;
      end case;
      end if;
      end process;
      end behavioral;

⌨️ 快捷键说明

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