DDS波形发生器VHDL源码.docx
- 文档编号:22779560
- 上传时间:2023-04-27
- 格式:DOCX
- 页数:9
- 大小:16.29KB
DDS波形发生器VHDL源码.docx
《DDS波形发生器VHDL源码.docx》由会员分享,可在线阅读,更多相关《DDS波形发生器VHDL源码.docx(9页珍藏版)》请在冰豆网上搜索。
DDS波形发生器VHDL源码
--DDS波形发生器(Synplifypro编译通过)
--输出频率Fout=Fclk*2^M/2^N
--分辨率Fclk/2^N
--最大输出频率Fout=Fclk*50%(理论值,抽样定理)
--版本1.0 2004/9/29 byJJJ
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityDDSis
generic(ACCWidth:
Integer:
=16); --相位累加器的长度2^N(2^ACCWidth)
port(
CLK:
instd_logic; --系统时钟FClk
STEP:
instd_logic_vector(ACCWidth-1downto0); --步进,即相位累加器的累加增量,控制输出频率2^M频率控制字
CHOICE:
instd_logic_vector(1downto0); --波形选择信号 "00":
正弦; "01":
三角波; "10":
方波; "11":
不输出(恒为低电平)
-- DAOUT:
outstd_logic_vector(7downto0); --8位DA输出模拟信号,直通方式,如需时钟控制则要修改
DAOUTX:
outstd_logic_vector(7downto0);
DAOUTY:
outstd_logic_vector(7downto0)
);
end;
architectureDDSofDDSis
signalACC:
std_logic_vector(ACCWidth-1downto0):
=(others=>'0');
signalDAOUT:
std_logic_vector(7downto0);
begin
process(CLK,STEP)
begin
if(CLK'eventandCLK='1')then
ACC<=ACC+STEP;
endif;
endprocess;
process(CHOICE,ACC)
begin
caseCHOICEis
when"00"=> --正弦
caseACC(ACCWidth-1downtoACCWidth-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";
when"01110110"=>DAOUT<="10011111";
when"01110111"=>DAOUT<="10011100";
when"01111000"=>DAOUT<="10011001";
when"01111001"=>DAOUT<="10010110";
when"01111010"=>DAOUT<="10010011";
when"01111011"=>DAOUT<="10010000";
when"01111100"=>DAOUT<="10001101";
when"01111101"=>DAOUT<="10001001";
when"01111110"=>DAOUT<="10000110";
when"01111111"=>DAOUT<="10000011";
when"10000000"=>DAOUT<="10000000";
when"10000001"=>DAOUT<="01111101";
when"10000010"=>DAOUT<="01111010";
when"10000011"=>DAOUT<="01110111";
when"10000100"=>DAOUT<="01110011";
when"10000101"=>DAOUT<="01110000";
when"10000110"=>DAOUT<="01101101";
when"10000111"=>DAOUT<="01101010";
when"10001000"=>DAOUT<="01100111";
when"10001001"=>DAOUT<="01100100";
when"10001010"=>DAOUT<="01100001";
when"10001011"=>DAOUT<="01011110";
when"10001100"=>DAOUT<="01011011";
when"10001101"=>DAOUT<="01011000";
when"10001110"=>DAOUT<="01010101";
when"10001111"=>DAOUT<="01010010";
when"10010000"=>DAOUT<="01001111";
when"10010001"=>DAOU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DDS 波形 发生器 VHDL 源码