【正文】
的最大值稱為線性誤差。 濾波及放大電路 在由數字信號至模擬信號這一過程轉換好以后,得出的信號仍然是在時間上離散的點,需要將其用低通濾波器進行平滑處理,濾除高次頻率的雜波,得到平滑標準的正弦波。 特別是 EDA 技術的日趨成熟的今天,通過計算機輔助設計,可以很好地完成電子設計的自動化。 基于 DDS 的信號發(fā)生器是最為理想的信號產生模型, DDS 系統(tǒng)有著其他信號發(fā)生器所無法比擬的優(yōu)勢。 基于 FPGA 的正弦信號發(fā)生器結合了的 EDA 技術和 DDS 理論,在 EDA 技術高速、高效、高可靠性的前提下得到了更優(yōu)的設計效果。 參考文獻 [1] 張玉興 . DDS 高穩(wěn)高純頻譜頻率源技術 [J]. 系統(tǒng)工程與電子技術 . 1997( 2)2428 [2] 馮 程 . 用直接數字頻率合成器產生正弦波 [J]. 華中科技大學本科生論文 . 2020. 727 [3] 周國富 . 利用 FPGA實現(xiàn) DDS專用集成電路 [J]. 電子技術應用 . . 1820 波形截圖: 50Hz100Hz 150Hz 200Hz 程序 vhdl 代碼: 頂層模塊 library IEEE。 use 。 entity sin256 is port(clk : in std_logic。 set : in std_logic_vector(1 downto 0)。 end sin256。 c : out std_logic_vector(23 downto 0) )。 ponent D port(clk : in std_logic。 d : in std_logic_vector(23 downto 0)。 end ponent。 DAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 ponent setkp port(set : in std_logic_vector(1 downto 0)。 p : out std_logic_vector(23 downto 0) )。 signal k,p : std_logic_vector(23 downto 0)。 begin setk : setkp port map(set,k,p)。 d1 : D port map(clk,rst,tmp1,tmp2)。 sin_rom: sin_rom8_8 port map(tmp3(23 downto 16),q)。 頻率控制模塊 library IEEE。 use 。 entity setkp is port(set : in std_logic_vector(1 downto 0)。 p : out std_logic_vector(23 downto 0) )。 architecture Behavioral of setkp is begin process(set) begin case set is when 00=k=000000000000000000010101。1000Hz時 k 的值 when 10=k=000000000000000000111111。2020Hz時 k 的值 when others=k=000000000000000000010101。 end process。 end Behavioral。 use 。 use 。 c : out std_logic_vector(23 downto 0) )。 architecture Behavioral of adder is begin c=a+b。 D 觸 發(fā)器 library IEEE。 use 。 entity D is port(clk : in std_logic。 d : in std_logic_vector(23 downto 0)。 end D。139。039。 elsif clk39。139。 end if。 end Behavioral。 use 。 use 。 DAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 architecture Behavioral of sin_rom8_8 is begin PROCESS(ADDER) IS BEGIN CASE ADDER IS when00000000=DAOUT=10000000。 when00000010=DAOUT=10000110。 when00000100=DAOUT=10001101。 when00000110=DAOUT=10010011。 when00001000=DAOUT=10011001。 when00001010=DAOUT=10011111。 when00001100=DAOUT=10100101。 when00001110=DAOUT=10101011。 when00010000=DAOUT=10110001。 when00010010=DAOUT=10110111。 when00010100=DAOUT=10111100。 when00010110=DAOUT=11000010。 when00011000=DAOUT=11000111。 when00011010=DAOUT=11001100。 when00011100=DAOUT=11010001。 when00011110=DAOUT=11010110。 when00100000=DAOUT=11011011。 when00100010=DAOUT=11011111。 when00100100=DAOUT=11100011。 when00100110=DAOUT=11100111。 when00101000=DAOUT=11101010。 when00101010=DAOUT=11101110。 when00101100=DAOUT=11110001。 when00101110=DAOUT=11110100。 when00110000=DAOUT=11110110。 when00110010=DAOUT=11111001。 when00110100=DAOUT=11111010。 when00110110=DAOUT=11111100。 when00111000=DAOUT=11111110。 when00111010=DAOUT=11111111。 when00111100=DAOUT=11111111。 when00111110=DAOUT=11111111。 when01000000=DAOUT=11111111。 when01000010=DAOUT=11111111。 when01000100=DAOUT=11111111。 when01000110=DAOUT=11111111。 when01001000=DAOUT=11111110。 when01001010=DAOUT=11111100。 when01001100=DAOUT=11111010。 when01001110=DAOUT=11111001。 when01010000=DAOUT=11110110。 when01010010=DAOUT=11110100。 when01010100=DAOUT=11110001。 when01010110=DAOUT=11101110。 when01011000=DA