DDS波形发生器VHDL源码_第1页
DDS波形发生器VHDL源码_第2页
DDS波形发生器VHDL源码_第3页
DDS波形发生器VHDL源码_第4页
DDS波形发生器VHDL源码_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-DDS波形发生器 (Synplify pro 编译通过-输出频率 Fout = Fclk*2M/2N-分辨率 Fclk/2N-最大输出频率 Fout = Fclk*50%(理论值,抽样定理-版本1.0    2004/9/29   by JJJ entity DDS is generic(ACCWidth : Integer := 16;     -相位累加器的长度2N (2ACCWidth port (    CLK:  in st

2、d_logic;         -系统时钟 FClk STEP: in std_logic_vector(ACCWidth-1 downto 0;  -步进,即相位累加器的累加增量,控制输出频率 2M 频率控制字 CHOICE:  in std_logic_vector(1 downto 0;   -波形选择信号  "00":正弦;  "01":三角波; 

3、 "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 issignal ACC:std_logic_vector(ACC

4、Width-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 &

5、#160;case CHOICE is   when "00"=>   -正弦    case ACC(ACCWidth-1 downto ACCWidth-8 is                    when "00000000" => DAOUT <=

6、"10000000"                    when "00000001" => DAOUT <= "10000011"                 

7、;   when "00000010" => DAOUT <= "10000110"                    when "00000011" => DAOUT <= "10001001"       &

8、#160;            when "00000100" => DAOUT <= "10001101"                    when "00000101" => DAOUT <= "

9、;10010000"                    when "00000110" => DAOUT <= "10010011"                 

10、0;  when "00000111" => DAOUT <= "10010110"                    when "00001000" => DAOUT <= "10011001"        

11、            when "00001001" => DAOUT <= "10011100"                    when "00001010" => DAOUT <= "1001

12、1111"                    when "00001011" => DAOUT <= "10100010"                  

13、60; when "00001100" => DAOUT <= "10100101"                    when "00001101" => DAOUT <= "10101000"         

14、;           when "00001110" => DAOUT <= "10101011"                    when "00001111" => DAOUT <= "10101110&

15、quot;                    when "00010000" => DAOUT <= "10110001"                    w

16、hen "00010001" => DAOUT <= "10110100"                    when "00010010" => DAOUT <= "10110111"         

17、0;          when "00010011" => DAOUT <= "10111010"                    when "00010100" => DAOUT <= "10111100"

18、                    when "00010101" => DAOUT <= "10111111"                    when &

19、quot;00010110" => DAOUT <= "11000010"                    when "00010111" => DAOUT <= "11000100"          

20、60;         when "00011000" => DAOUT <= "11000111"                    when "00011001" => DAOUT <= "11001010" 

21、;                   when "00011010" => DAOUT <= "11001100"                    when "

22、00011011" => DAOUT <= "11001111"                    when "00011100" => DAOUT <= "11010001"           &#

23、160;        when "00011101" => DAOUT <= "11010100"                    when "00011110" => DAOUT <= "11010110" 

24、0;                  when "00011111" => DAOUT <= "11011000"                    when "00100

25、000" => DAOUT <= "11011011"                    when "00100001" => DAOUT <= "11011101"            &

26、#160;       when "00100010" => DAOUT <= "11011111"                    when "00100011" => DAOUT <= "11100001"  

27、60;                 when "00100100" => DAOUT <= "11100011"                    when "00100101&q

28、uot; => DAOUT <= "11100101"                    when "00100110" => DAOUT <= "11100111"             

29、       when "00100111" => DAOUT <= "11101001"                    when "00101000" => DAOUT <= "11101010"   &#

30、160;                when "00101001" => DAOUT <= "11101100"                    when "00101010"

31、=> DAOUT <= "11101110"                    when "00101011" => DAOUT <= "11101111"              

32、;      when "00101100" => DAOUT <= "11110001"                    when "00101101" => DAOUT <= "11110010"    &

33、#160;               when "00101110" => DAOUT <= "11110100"                    when "00101111" =>

34、 DAOUT <= "11110101"                    when "00110000" => DAOUT <= "11110110"              

35、0;     when "00110001" => DAOUT <= "11110111"                    when "00110010" => DAOUT <= "11111001"     

36、               when "00110011" => DAOUT <= "11111010"                    when "00110100" => DAOU

37、T <= "11111010"                    when "00110101" => DAOUT <= "11111011"               

38、60;    when "00110110" => DAOUT <= "11111100"                    when "00110111" => DAOUT <= "11111101"      

39、;              when "00111000" => DAOUT <= "11111110"                    when "00111001" => DAOUT <

40、;= "11111110"                    when "00111010" => DAOUT <= "11111111"                &#

41、160;   when "00111011" => DAOUT <= "11111111"                    when "00111100" => DAOUT <= "11111111"      

42、0;             when "00111101" => DAOUT <= "11111111"                    when "00111110" => DAOUT <= &q

43、uot;11111111"                    when "00111111" => DAOUT <= "11111111"                 &

44、#160;  when "01000000" => DAOUT <= "11111111"                    when "01000001" => DAOUT <= "11111111"       

45、60;            when "01000010" => DAOUT <= "11111111"                    when "01000011" => DAOUT <= "1

46、1111111"                    when "01000100" => DAOUT <= "11111111"                  

47、  when "01000101" => DAOUT <= "11111111"                    when "01000110" => DAOUT <= "11111111"        &#

48、160;           when "01000111" => DAOUT <= "11111110"                    when "01001000" => DAOUT <= "111111

49、10"                    when "01001001" => DAOUT <= "11111101"                   

50、; when "01001010" => DAOUT <= "11111100"                    when "01001011" => DAOUT <= "11111011"         &

51、#160;          when "01001100" => DAOUT <= "11111010"                    when "01001101" => DAOUT <= "11111010&qu

52、ot;                    when "01001110" => DAOUT <= "11111001"                    whe

53、n "01001111" => DAOUT <= "11110111"                    when "01010000" => DAOUT <= "11110110"          

54、          when "01010001" => DAOUT <= "11110101"                    when "01010010" => DAOUT <= "11110100"&#

55、160;                   when "01010011" => DAOUT <= "11110010"                    when &qu

56、ot;01010100" => DAOUT <= "11110001"                    when "01010101" => DAOUT <= "11101111"           

57、;         when "01010110" => DAOUT <= "11101110"                    when "01010111" => DAOUT <= "11101100" &

58、#160;                  when "01011000" => DAOUT <= "11101010"                    when "01

59、011001" => DAOUT <= "11101001"                    when "01011010" => DAOUT <= "11100111"           

60、0;        when "01011011" => DAOUT <= "11100101"                    when "01011100" => DAOUT <= "11100011"  

61、                  when "01011101" => DAOUT <= "11100001"                    when "0101111

62、0" => DAOUT <= "11011111"                    when "01011111" => DAOUT <= "11011101"            

63、60;       when "01100000" => DAOUT <= "11011011"                    when "01100001" => DAOUT <= "11011000"   

64、;                 when "01100010" => DAOUT <= "11010110"                    when "01100011&quo

65、t; => DAOUT <= "11010100"                    when "01100100" => DAOUT <= "11010001"             &#

66、160;      when "01100101" => DAOUT <= "11001111"                    when "01100110" => DAOUT <= "11001100"   

67、0;                when "01100111" => DAOUT <= "11001010"                    when "01101000" =&

68、gt; DAOUT <= "11000111"                    when "01101001" => DAOUT <= "11000100"              &

69、#160;     when "01101010" => DAOUT <= "11000010"                    when "01101011" => DAOUT <= "10111111"    

70、60;               when "01101100" => DAOUT <= "10111100"                    when "01101101" => D

71、AOUT <= "10111010"                    when "01101110" => DAOUT <= "10110111"               

72、     when "01101111" => DAOUT <= "10110100"                    when "01110000" => DAOUT <= "10110001"     &#

73、160;              when "01110001" => DAOUT <= "10101110"                    when "01110010" => DAOUT

74、<= "10101011"                    when "01110011" => DAOUT <= "10101000"                

75、;    when "01110100" => DAOUT <= "10100101"                    when "01110101" => DAOUT <= "10100010"      &

76、#160;             when "01110110" => DAOUT <= "10011111"                    when "01110111" => DAOUT <=

77、 "10011100"                    when "01111000" => DAOUT <= "10011001"                

78、0;   when "01111001" => DAOUT <= "10010110"                    when "01111010" => DAOUT <= "10010011"       

79、             when "01111011" => DAOUT <= "10010000"                    when "01111100" => DAOUT <= &quo

80、t;10001101"                    when "01111101" => DAOUT <= "10001001"                 

81、60;  when "01111110" => DAOUT <= "10000110"                    when "01111111" => DAOUT <= "10000011"        

82、;            when "10000000" => DAOUT <= "10000000"                    when "10000001" => DAOUT <= "011

83、11101"                    when "10000010" => DAOUT <= "01111010"                  &#

84、160; when "10000011" => DAOUT <= "01110111"                    when "10000100" => DAOUT <= "01110011"        

85、0;           when "10000101" => DAOUT <= "01110000"                    when "10000110" => DAOUT <= "01101101

86、"                    when "10000111" => DAOUT <= "01101010"                   

87、when "10001000" => DAOUT <= "01100111"                    when "10001001" => DAOUT <= "01100100"         

88、60;          when "10001010" => DAOUT <= "01100001"                    when "10001011" => DAOUT <= "01011110"

89、;                    when "10001100" => DAOUT <= "01011011"                    when

90、"10001101" => DAOUT <= "01011000"                    when "10001110" => DAOUT <= "01010101"          &#

91、160;         when "10001111" => DAOUT <= "01010010"                    when "10010000" => DAOUT <= "01001111"

92、0;                   when "10010001" => DAOUT <= "01001100"                    when "

93、;10010010" => DAOUT <= "01001001"                    when "10010011" => DAOUT <= "01000110"           &

94、#160;        when "10010100" => DAOUT <= "01000100"                    when "10010101" => DAOUT <= "01000001" 

95、60;                  when "10010110" => DAOUT <= "00111110"                    when "1001

96、0111" => DAOUT <= "00111100"                    when "10011000" => DAOUT <= "00111001"            

97、        when "10011001" => DAOUT <= "00110110"                    when "10011010" => DAOUT <= "00110100"  &#

98、160;                 when "10011011" => DAOUT <= "00110001"                    when "10011100&

99、quot; => DAOUT <= "00101111"                    when "10011101" => DAOUT <= "00101100"             

100、;       when "10011110" => DAOUT <= "00101010"                    when "10011111" => DAOUT <= "00101000"   &

101、#160;                when "10100000" => DAOUT <= "00100101"                    when "10100001"

102、 => DAOUT <= "00100011"                    when "10100010" => DAOUT <= "00100001"             

103、0;      when "10100011" => DAOUT <= "00011111"                    when "10100100" => DAOUT <= "00011101"    

104、                when "10100101" => DAOUT <= "00011011"                    when "10100110" =>

105、; DAOUT <= "00011001"                    when "10100111" => DAOUT <= "00010111"              

106、60;     when "10101000" => DAOUT <= "00010110"                    when "10101001" => DAOUT <= "00010100"     

107、;               when "10101010" => DAOUT <= "00010010"                    when "10101011" => DAO

108、UT <= "00010001"                    when "10101100" => DAOUT <= "00001111"               &#

109、160;    when "10101101" => DAOUT <= "00001110"                    when "10101110" => DAOUT <= "00001100"     

110、0;              when "10101111" => DAOUT <= "00001011"                    when "10110000" => DAOUT &l

111、t;= "00001010"                    when "10110001" => DAOUT <= "00001001"                &

112、#160;   when "10110010" => DAOUT <= "00000111"                    when "10110011" => DAOUT <= "00000110"      

113、60;             when "10110100" => DAOUT <= "00000110"                    when "10110101" => DAOUT <= &

114、quot;00000101"                    when "10110110" => DAOUT <= "00000100"                 

115、   when "10110111" => DAOUT <= "00000011"                    when "10111000" => DAOUT <= "00000010"       &#

116、160;            when "10111001" => DAOUT <= "00000010"                    when "10111010" => DAOUT <= "

117、00000001"                    when "10111011" => DAOUT <= "00000001"                  

118、;  when "10111100" => DAOUT <= "00000001"                    when "10111101" => DAOUT <= "00000000"        &

119、#160;           when "10111110" => DAOUT <= "00000000"                    when "10111111" => DAOUT <= "00000

120、000"                    when "11000000" => DAOUT <= "00000000"                  

121、0; when "11000001" => DAOUT <= "00000000"                    when "11000010" => DAOUT <= "00000000"         

122、           when "11000011" => DAOUT <= "00000000"                    when "11000100" => DAOUT <= "00000001&q

123、uot;                    when "11000101" => DAOUT <= "00000001"                    wh

124、en "11000110" => DAOUT <= "00000001"                    when "11000111" => DAOUT <= "00000010"          

125、;          when "11001000" => DAOUT <= "00000010"                    when "11001001" => DAOUT <= "00000011"&

126、#160;                   when "11001010" => DAOUT <= "00000100"                    when &q

127、uot;11001011" => DAOUT <= "00000101"                    when "11001100" => DAOUT <= "00000110"          

128、0;         when "11001101" => DAOUT <= "00000110"                    when "11001110" => DAOUT <= "00000111" 

129、                   when "11001111" => DAOUT <= "00001001"                    when "1

130、1010000" => DAOUT <= "00001010"                    when "11010001" => DAOUT <= "00001011"           

131、60;        when "11010010" => DAOUT <= "00001100"                    when "11010011" => DAOUT <= "00001110"  

132、;                  when "11010100" => DAOUT <= "00001111"                    when "110101

133、01" => DAOUT <= "00010001"                    when "11010110" => DAOUT <= "00010010"            &#

134、160;       when "11010111" => DAOUT <= "00010100"                    when "11011000" => DAOUT <= "00010110"  

135、0;                 when "11011001" => DAOUT <= "00010111"                    when "11011010&qu

136、ot; => DAOUT <= "00011001"                    when "11011011" => DAOUT <= "00011011"             &

137、#160;      when "11011100" => DAOUT <= "00011101"                    when "11011101" => DAOUT <= "00011111"   

138、60;                when "11011110" => DAOUT <= "00100001"                    when "11011111" =

139、> DAOUT <= "00100011"                    when "11100000" => DAOUT <= "00100101"              

140、      when "11100001" => DAOUT <= "00101000"                    when "11100010" => DAOUT <= "00101010"    &#

141、160;               when "11100011" => DAOUT <= "00101100"                    when "11100100" =>

142、DAOUT <= "00101111"                    when "11100101" => DAOUT <= "00110001"               

143、;     when "11100110" => DAOUT <= "00110100"                    when "11100111" => DAOUT <= "00110110"     &

144、#160;              when "11101000" => DAOUT <= "00111001"                    when "11101001" => DAOUT

145、 <= "00111100"                    when "11101010" => DAOUT <= "00111110"                    when "11101011" => DAOUT <= "0100

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论