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

📄 sinewave.vhd

📁 sinewave程序是一个正弦波发生器程序。256点查表法
💻 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 + -