📄 sinewave.vhd
字号:
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
entity SINEWAVE is
port (clk : in std_logic;
data : out std_logic_vector(7 downto 0);
-- prd : in std_logic_vector(7 downto 0);
DSP_RESET : out std_logic;
CS : out std_logic;
wr : out std_logic;
busopen,dir : out std_logic
);
end SINEWAVE;
architecture RTL of SINEWAVE is
signal count_out : std_logic_vector(7 downto 0);
signal count_clk : std_logic_vector(7 downto 0);
signal clk_temp : std_logic;
signal prd_reg : std_logic_vector(7 downto 0);
signal data_reg : std_logic_vector(7 downto 0);
begin
DSP_RESET<='0';
CS<='0';
wr<='0';
busopen<='0';
dir<='1';
--prd_reg<=prd;
prd_reg<="00000001";
data<=data_reg;
-----分频----
process(clk,count_clk,clk_temp,prd_reg)
begin
if (clk'event and clk='1') then
if (count_clk<prd_reg) then
count_clk<=count_clk+'1';
clk_temp<=clk_temp;
elsif (count_clk=prd_reg) then
clk_temp<=not clk_temp;
count_clk<=(others => '0');
else
count_clk<=(others => '0');
clk_temp<=clk_temp;
end if;
end if;
end process;
---- 输出计数--
process (clk_temp,count_out)
begin
if (clk_temp'event and clk_temp='1') then
count_out<=count_out+'1';
end if;
end process;
-----输出----
process(clk_temp,count_out,data_reg)
begin
if (clk_temp'event and clk_temp='1') then
case(count_out) is
when X"00" => data_reg<=X"7f";
when X"01" => data_reg<=X"82";
when X"02" => data_reg<=X"85";
when X"03" => data_reg<=X"88";
when X"04" => data_reg<=X"8b";
when X"05" => data_reg<=X"8f";
when X"06" => data_reg<=X"92";
when X"07" => data_reg<=X"95";
when X"08" => data_reg<=X"98";
when X"09" => data_reg<=X"9b";
when X"0a" => data_reg<=X"9e";
when X"0b" => data_reg<=X"a1";
when X"0c" => data_reg<=X"a4";
when X"0d" => data_reg<=X"a7";
when X"0e" => data_reg<=X"aa";
when X"0f" => data_reg<=X"ad";
when X"10" => data_reg<=X"b0";
when X"11" => data_reg<=X"b3";
when X"12" => data_reg<=X"b6";
when X"13" => data_reg<=X"b8";
when X"14" => data_reg<=X"bb";
when X"15" => data_reg<=X"be";
when X"16" => data_reg<=X"c1";
when X"17" => data_reg<=X"c3";
when X"18" => data_reg<=X"c6";
when X"19" => data_reg<=X"c8";
when X"1a" => data_reg<=X"cb";
when X"1b" => data_reg<=X"cd";
when X"1c" => data_reg<=X"d0";
when X"1d" => data_reg<=X"d2";
when X"1e" => data_reg<=X"d5";
when X"1f" => data_reg<=X"d7";
when X"20" => data_reg<=X"d9";
when X"21" => data_reg<=X"db";
when X"22" => data_reg<=X"dd";
when X"23" => data_reg<=X"e0";
when X"24" => data_reg<=X"e2";
when X"25" => data_reg<=X"e4";
when X"26" => data_reg<=X"e5";
when X"27" => data_reg<=X"e7";
when X"28" => data_reg<=X"e9";
when X"29" => data_reg<=X"eb";
when X"2a" => data_reg<=X"ec";
when X"2b" => data_reg<=X"ee";
when X"2c" => data_reg<=X"ef";
when X"2d" => data_reg<=X"f1";
when X"2e" => data_reg<=X"f2";
when X"2f" => data_reg<=X"f4";
when X"30" => data_reg<=X"f5";
when X"31" => data_reg<=X"f6";
when X"32" => data_reg<=X"f7";
when X"33" => data_reg<=X"f8";
when X"34" => data_reg<=X"f9";
when X"35" => data_reg<=X"fa";
when X"36" => data_reg<=X"fb";
when X"37" => data_reg<=X"fb";
when X"38" => data_reg<=X"fc";
when X"39" => data_reg<=X"fd";
when X"3a" => data_reg<=X"fd";
when X"3b" => data_reg<=X"fe";
when X"3c" => data_reg<=X"fe";
when X"3d" => data_reg<=X"fe";
when X"3e" => data_reg<=X"fe";
when X"3f" => data_reg<=X"fe";
when X"40" => data_reg<=X"fe";
when X"41" => data_reg<=X"fe";
when X"42" => data_reg<=X"fe";
when X"43" => data_reg<=X"fe";
when X"44" => data_reg<=X"fe";
when X"45" => data_reg<=X"fe";
when X"46" => data_reg<=X"fd";
when X"47" => data_reg<=X"fd";
when X"48" => data_reg<=X"fc";
when X"49" => data_reg<=X"fb";
when X"4a" => data_reg<=X"fb";
when X"4b" => data_reg<=X"fa";
when X"4c" => data_reg<=X"f9";
when X"4d" => data_reg<=X"f8";
when X"4e" => data_reg<=X"f7";
when X"4f" => data_reg<=X"f6";
when X"50" => data_reg<=X"f5";
when X"51" => data_reg<=X"f4";
when X"52" => data_reg<=X"f2";
when X"53" => data_reg<=X"f1";
when X"54" => data_reg<=X"ef";
when X"55" => data_reg<=X"ee";
when X"56" => data_reg<=X"ec";
when X"57" => data_reg<=X"eb";
when X"58" => data_reg<=X"e9";
when X"59" => data_reg<=X"e7";
when X"5a" => data_reg<=X"e5";
when X"5b" => data_reg<=X"e4";
when X"5c" => data_reg<=X"e2";
when X"5d" => data_reg<=X"e0";
when X"5e" => data_reg<=X"dd";
when X"5f" => data_reg<=X"db";
when X"60" => data_reg<=X"d9";
when X"61" => data_reg<=X"d7";
when X"62" => data_reg<=X"d5";
when X"63" => data_reg<=X"d2";
when X"64" => data_reg<=X"d0";
when X"65" => data_reg<=X"cd";
when X"66" => data_reg<=X"cb";
when X"67" => data_reg<=X"c8";
when X"68" => data_reg<=X"c6";
when X"69" => data_reg<=X"c3";
when X"6a" => data_reg<=X"c1";
when X"6b" => data_reg<=X"be";
when X"6c" => data_reg<=X"bb";
when X"6d" => data_reg<=X"b8";
when X"6e" => data_reg<=X"b6";
when X"6f" => data_reg<=X"b3";
when X"70" => data_reg<=X"b0";
when X"71" => data_reg<=X"ad";
when X"72" => data_reg<=X"aa";
when X"73" => data_reg<=X"a7";
when X"74" => data_reg<=X"a4";
when X"75" => data_reg<=X"a1";
when X"76" => data_reg<=X"9e";
when X"77" => data_reg<=X"9b";
when X"78" => data_reg<=X"98";
when X"79" => data_reg<=X"95";
when X"7a" => data_reg<=X"92";
when X"7b" => data_reg<=X"8f";
when X"7c" => data_reg<=X"8b";
when X"7d" => data_reg<=X"88";
when X"7e" => data_reg<=X"85";
when X"7f" => data_reg<=X"82";
when X"80" => data_reg<=X"7f";
when X"81" => data_reg<=X"7c";
when X"82" => data_reg<=X"79";
when X"83" => data_reg<=X"76";
when X"84" => data_reg<=X"73";
when X"85" => data_reg<=X"6f";
when X"86" => data_reg<=X"6c";
when X"87" => data_reg<=X"69";
when X"88" => data_reg<=X"66";
when X"89" => data_reg<=X"63";
when X"8a" => data_reg<=X"60";
when X"8b" => data_reg<=X"5d";
when X"8c" => data_reg<=X"5a";
when X"8d" => data_reg<=X"57";
when X"8e" => data_reg<=X"54";
when X"8f" => data_reg<=X"51";
when X"90" => data_reg<=X"4e";
when X"91" => data_reg<=X"4b";
when X"92" => data_reg<=X"48";
when X"93" => data_reg<=X"46";
when X"94" => data_reg<=X"43";
when X"95" => data_reg<=X"40";
when X"96" => data_reg<=X"3d";
when X"97" => data_reg<=X"3b";
when X"98" => data_reg<=X"38";
when X"99" => data_reg<=X"36";
when X"9a" => data_reg<=X"33";
when X"9b" => data_reg<=X"31";
when X"9c" => data_reg<=X"2e";
when X"9d" => data_reg<=X"2c";
when X"9e" => data_reg<=X"29";
when X"9f" => data_reg<=X"27";
when X"a0" => data_reg<=X"25";
when X"a1" => data_reg<=X"23";
when X"a2" => data_reg<=X"21";
when X"a3" => data_reg<=X"1e";
when X"a4" => data_reg<=X"1c";
when X"a5" => data_reg<=X"1a";
when X"a6" => data_reg<=X"19";
when X"a7" => data_reg<=X"17";
when X"a8" => data_reg<=X"15";
when X"a9" => data_reg<=X"13";
when X"aa" => data_reg<=X"12";
when X"ab" => data_reg<=X"10";
when X"ac" => data_reg<=X"0f";
when X"ad" => data_reg<=X"0d";
when X"ae" => data_reg<=X"0c";
when X"af" => data_reg<=X"0a";
when X"b0" => data_reg<=X"09";
when X"b1" => data_reg<=X"08";
when X"b2" => data_reg<=X"07";
when X"b3" => data_reg<=X"06";
when X"b4" => data_reg<=X"05";
when X"b5" => data_reg<=X"04";
when X"b6" => data_reg<=X"03";
when X"b7" => data_reg<=X"03";
when X"b8" => data_reg<=X"02";
when X"b9" => data_reg<=X"01";
when X"ba" => data_reg<=X"01";
when X"bb" => data_reg<=X"00";
when X"bc" => data_reg<=X"00";
when X"bd" => data_reg<=X"00";
when X"be" => data_reg<=X"00";
when X"bf" => data_reg<=X"00";
when X"c0" => data_reg<=X"00";
when X"c1" => data_reg<=X"00";
when X"c2" => data_reg<=X"00";
when X"c3" => data_reg<=X"00";
when X"c4" => data_reg<=X"00";
when X"c5" => data_reg<=X"00";
when X"c6" => data_reg<=X"01";
when X"c7" => data_reg<=X"01";
when X"c8" => data_reg<=X"02";
when X"c9" => data_reg<=X"03";
when X"ca" => data_reg<=X"03";
when X"cb" => data_reg<=X"04";
when X"cc" => data_reg<=X"05";
when X"cd" => data_reg<=X"06";
when X"ce" => data_reg<=X"07";
when X"cf" => data_reg<=X"08";
when X"d0" => data_reg<=X"09";
when X"d1" => data_reg<=X"0a";
when X"d2" => data_reg<=X"0c";
when X"d3" => data_reg<=X"0d";
when X"d4" => data_reg<=X"0f";
when X"d5" => data_reg<=X"10";
when X"d6" => data_reg<=X"12";
when X"d7" => data_reg<=X"13";
when X"d8" => data_reg<=X"15";
when X"d9" => data_reg<=X"17";
when X"da" => data_reg<=X"19";
when X"db" => data_reg<=X"1a";
when X"dc" => data_reg<=X"1c";
when X"dd" => data_reg<=X"1e";
when X"de" => data_reg<=X"21";
when X"df" => data_reg<=X"23";
when X"e0" => data_reg<=X"25";
when X"e1" => data_reg<=X"27";
when X"e2" => data_reg<=X"29";
when X"e3" => data_reg<=X"2c";
when X"e4" => data_reg<=X"2e";
when X"e5" => data_reg<=X"31";
when X"e6" => data_reg<=X"33";
when X"e7" => data_reg<=X"36";
when X"e8" => data_reg<=X"38";
when X"e9" => data_reg<=X"3b";
when X"ea" => data_reg<=X"3d";
when X"eb" => data_reg<=X"40";
when X"ec" => data_reg<=X"43";
when X"ed" => data_reg<=X"46";
when X"ee" => data_reg<=X"48";
when X"ef" => data_reg<=X"4b";
when X"f0" => data_reg<=X"4e";
when X"f1" => data_reg<=X"51";
when X"f2" => data_reg<=X"54";
when X"f3" => data_reg<=X"57";
when X"f4" => data_reg<=X"5a";
when X"f5" => data_reg<=X"5d";
when X"f6" => data_reg<=X"60";
when X"f7" => data_reg<=X"63";
when X"f8" => data_reg<=X"66";
when X"f9" => data_reg<=X"69";
when X"fa" => data_reg<=X"6c";
when X"fb" => data_reg<=X"6f";
when X"fc" => data_reg<=X"73";
when X"fd" => data_reg<=X"76";
when X"fe" => data_reg<=X"79";
when X"ff" => data_reg<=X"7c";
end case;
else data_reg<=data_reg;
end if;
end process;
end RTL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -