【正文】
數(shù)多分辨率也就越高。 ( 2)轉(zhuǎn)換時間 : 指數(shù)字量輸入到完成轉(zhuǎn)換,輸出達到最終值并穩(wěn)定為止所需的時間。電流型 D/A轉(zhuǎn)換較快,一般在幾 ns到幾百 ns之間。電壓型 D/A轉(zhuǎn)換較慢,取決于運算放大器的響應時間。 ( 3)精度 : 指 D/A轉(zhuǎn)換器實際輸出電壓與理論值之間的誤差,一般采用數(shù)字量的最低有效位作為衡量單位。 ( 4)線性度 : 當數(shù)字量變化時, D/A轉(zhuǎn)換器輸出的模擬量按比例關(guān)系變化的程度。理想的 D/A轉(zhuǎn)換器是線性的,但是實際上是有誤差 的,模擬輸出偏離理想輸出的最大值稱為線性誤差。 目前, D/A轉(zhuǎn)換器芯片種類較多,對于一般的使用者而言,只需掌握 DAC芯片性能及其與計算機之間接口的基本要求,就可根據(jù)應用系統(tǒng)的要求合理選用 DAC芯片,并配置適當?shù)慕涌陔娐贰? 濾波及放大電路 在由數(shù)字信號至模擬信號這一過程轉(zhuǎn)換好以后,得出的信號仍然是在時間上離散的點,需要將其用低通濾波器進行平滑處理,濾除高次頻率的雜波,得到平滑標準的正弦波。 結(jié)束語 隨著信息技術(shù)高速發(fā)展,集成電路的大規(guī)模使用,電子系統(tǒng)已經(jīng)進入了一個高速發(fā)展的全新時段 。 特別是 EDA 技術(shù)的日趨成熟的今天,通過計算機輔助設(shè)計,可以很好地完成電子設(shè)計的自動化。 在設(shè)計過程中,可根據(jù)需要隨時改變器件的內(nèi)部邏輯功能和管腳的信號方式, EDA 技術(shù) 借助于大規(guī)模集成的 FPGA/CPLD 和高效的設(shè)計軟件,用戶不僅可通過直接對芯片結(jié)構(gòu)的設(shè)計實行多種數(shù)字邏輯系統(tǒng)功能,而且由于管腳定義的靈活性,大大減輕了電路圖設(shè)計和電路板設(shè)計的工作量及難度,同時,這種基于可編程芯片的設(shè)計大大減少了系統(tǒng)芯片的數(shù)量,縮小了系統(tǒng)的體積,提高了系統(tǒng)的可靠性。 基于 DDS 的信號發(fā)生器是最為理想的信號產(chǎn)生模型, DDS 系統(tǒng)有著其他信號發(fā)生器所無法比擬的優(yōu)勢。今天 DDS 廣泛用于接受機本振、信號發(fā)生器、儀器、通信系統(tǒng)、雷達系統(tǒng)等,尤其適合跳頻無線電通信系統(tǒng)。 基于 FPGA 的正弦信號發(fā)生器結(jié)合了的 EDA 技術(shù)和 DDS 理論,在 EDA 技術(shù)高速、高效、高可靠性的前提下得到了更優(yōu)的設(shè)計效果。但是系統(tǒng)的功能還沒有得到完全利用,由于 DDS 技術(shù)是利用查表法來產(chǎn)生波形的,則在基于 FPGA 設(shè)計時只要把 ROM 改成 RAM 變可實現(xiàn)任意波形的產(chǎn)生。 參考文獻 [1] 張玉興 . DDS 高穩(wěn)高純頻譜頻率源技術(shù) [J]. 系統(tǒng)工程與電子技術(shù) . 1997( 2)2428 [2] 馮 程 . 用直接數(shù)字頻率合成器產(chǎn)生正弦波 [J]. 華中科技大學本科生論文 . 2020. 727 [3] 周國富 . 利用 FPGA實現(xiàn) DDS專用集成電路 [J]. 電子技術(shù)應用 . . 1820 波形截圖: 50Hz100Hz 150Hz 200Hz 程序 vhdl 代碼: 頂層模塊 library IEEE。 use 。 use 。 use 。 entity sin256 is port(clk : in std_logic。 rst : in std_logic。 set : in std_logic_vector(1 downto 0)。設(shè)置頻率 q : out std_logic_vector(7 downto 0) )。 end sin256。 architecture Behavioral of sin256 is ponent adder port(a,b : in std_logic_vector(23 downto 0)。 c : out std_logic_vector(23 downto 0) )。 end ponent。 ponent D port(clk : in std_logic。 rst : in std_logic。 d : in std_logic_vector(23 downto 0)。 q : out std_logic_vector(23 downto 0) )。 end ponent。 ponent sin_rom8_8 PORT(ADDER:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 DAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 end ponent。 ponent setkp port(set : in std_logic_vector(1 downto 0)。 k : out std_logic_vector(23 downto 0)。 p : out std_logic_vector(23 downto 0) )。 end ponent。 signal k,p : std_logic_vector(23 downto 0)。 signal tmp1,tmp2,tmp3 : std_logic_vector(23 downto 0)。 begin setk : setkp port map(set,k,p)。 add1: adder port map(k,tmp2,tmp1)。 d1 : D port map(clk,rst,tmp1,tmp2)。 add2: adder port map(tmp2,p,tmp3)。 sin_rom: sin_rom8_8 port map(tmp3(23 downto 16),q)。 end Behavioral。 頻率控制模塊 library IEEE。 use 。 use 。 use 。 entity setkp is port(set : in std_logic_vector(1 downto 0)。 k : out std_logic_vector(23 downto 0)。 p : out std_logic_vector(23 downto 0) )。 end setkp。 architecture Behavioral of setkp is begin process(set) begin case set is when 00=k=000000000000000000010101。50Hz時 k 的值 when 01=k=000000000000000000101010。1000Hz時 k 的值 when 10=k=000000000000000000111111。150Hz時 k 的值 when 11=k=000000000000000001010100。2020Hz時 k 的值 when others=k=000000000000000000010101。 end case。 end process。 p=000000000000000000000000。 end Behavioral。 相位累加模塊,由加法器和 D觸發(fā)器組成 加法器 library IEEE。 use 。 use 。 use 。 entity adder is port(a,b : in std_logic_vector(23 downto 0)。 c : out std_logic_vector(23 downto 0) )。 end adder。 architecture Behavioral of adder is begin c=a+b。 end Behavioral。 D 觸 發(fā)器 library IEEE。 use 。 use 。 use 。 entity D is port(clk : in std_logic。 rst : in std_logic。 d : in std_logic_vector(23 downto 0)。 q : out std_logic_vector(23 downto 0) )。 end D。 architecture Behavioral of D is begin process(clk,rst) begin if rst=39。139。 then q=(others=39。039。)。 elsif clk39。event and clk=39。139。 then q=d。 end if。 end process。 end Behavioral。 sin 量化 rom library IEEE。 use 。 use 。 use 。 entity sin_rom8_8 is PORT(ADDER:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 DAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 end sin_rom8_8。 architecture Behavioral of sin_rom8_8 is begin PROCESS(ADDER) IS BEGIN CASE ADDER IS when00000000=DAOUT=10000000。 when00000001=DAOUT=10000011。 when00000010=DAOUT=10000110。 when00000011=DAOUT=10001001。