DDS數(shù)字頻率計(jì)設(shè)計(jì)_第1頁(yè)
DDS數(shù)字頻率計(jì)設(shè)計(jì)_第2頁(yè)
DDS數(shù)字頻率計(jì)設(shè)計(jì)_第3頁(yè)
DDS數(shù)字頻率計(jì)設(shè)計(jì)_第4頁(yè)
DDS數(shù)字頻率計(jì)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、dds設(shè)計(jì)一、 基本原理直接數(shù)字頻率合成器(dds)是通信系統(tǒng)中常用到的部件,利用dds可以制成很有用的信號(hào)源。與模擬式的頻率鎖相環(huán)pll相比,它有許多優(yōu)點(diǎn),突出為(1)頻率的切換迅速;(2)頻率穩(wěn)定度高。一個(gè)直接數(shù)字頻率合成器由相位累加器、波形rom、d/a轉(zhuǎn)換器和低通濾波器構(gòu)成。dds的原理框圖如下所示:其中k為頻率控制字, fc為時(shí)鐘頻率,n為相位累加器的字長(zhǎng),d為rom數(shù)據(jù)位及d/a轉(zhuǎn)換器的字長(zhǎng)。相位累加器在時(shí)鐘 fc的控制下以步長(zhǎng)k作為累加,輸出n位二進(jìn)制碼作為波形rom的地址,對(duì)波形rom進(jìn)行尋址,波形rom輸出的幅碼s(n)經(jīng)d/a轉(zhuǎn)換器變成梯形波s(t),再經(jīng)低通濾波器平滑后就

2、可以得到合成的信號(hào)波形了。合成的信號(hào)波形形狀取決于波形rom中存放的幅碼,因此用dds可以產(chǎn)生任意波形。本設(shè)計(jì)中直接利用d/a轉(zhuǎn)換器得到輸出波形,省略了低通濾波器這一環(huán)節(jié)。1、 頻率預(yù)置與調(diào)節(jié)電路不變量k被稱為相位增量,也叫頻率控制字。dds方程為:f0= fc k/2n,f0為輸出頻率,fc為時(shí)鐘頻率。當(dāng)k=1時(shí),dds輸出最低頻率(也既頻率分辯率)為fc /2ndds的最大輸出頻率由 nyguist 采樣定理決定,即fc /2,也就是說(shuō)k的最大值為2n-1.因此,只要n足夠大,dds可以得到很細(xì)的頻率間隔。要改變dds的輸出頻率,只要改變頻率控制字k即可。2、 累加器相位累加器的原理圖如下

3、圖相位累加器由n為加法器與n位寄存器級(jí)聯(lián)構(gòu)成。每來(lái)一個(gè)時(shí)鐘脈沖fc,加法器將頻率控制字與寄存器輸出的累加相位數(shù)據(jù)相加,再把相加后的結(jié)果送至寄存器的數(shù)據(jù)輸入端,寄存器將加法器在上一個(gè)時(shí)鐘作用后所產(chǎn)生的下數(shù)據(jù)反饋到加法器的輸入端;以使加法器在下一個(gè)時(shí)鐘作用下繼續(xù)頻率控制字進(jìn)行相加。這樣,相位累加器在時(shí)鐘的作用下,進(jìn)行相位累加,當(dāng)相位累加器累加滿量時(shí),就產(chǎn)生一次溢出,完成一個(gè)周期性的動(dòng)作,這個(gè)周期應(yīng)為 uk= 2n / gcd(2n ;k),其中g(shù)cd表示最大公約數(shù)。3、波形存儲(chǔ)器用相位累加器輸出的數(shù)據(jù)作為波形存儲(chǔ)器的取樣地址進(jìn)行波形的相位幅值轉(zhuǎn)換,即可在給定的時(shí)間上確定輸出的波形的抽樣幅值。n位的

4、尋址rom相當(dāng)于把00- 3600 的正弦信號(hào)離散成具有2n 樣值的序列,若波形rom有d位數(shù)據(jù)位,則2n個(gè)樣值的幅值以d位二進(jìn)制數(shù)值固化在rom 中,按照地址的不同可以輸出相宜相位的正弦信號(hào)的幅值。相位-幅值變換原理圖如下所示。4、d/a轉(zhuǎn)換器d/a轉(zhuǎn)換器的作用是把已經(jīng)合成的正弦波的數(shù)字量轉(zhuǎn)換成模擬量,正弦幅度量化序列s(n)經(jīng)d/a轉(zhuǎn)換后變成了包絡(luò)為正弦波的階梯波s(t),s(t)的周期為t=uk*tc.。需要注意的是,頻率合成器對(duì)d/a轉(zhuǎn)換器的分辨率有一定的要求,d/a轉(zhuǎn)換器的分辨率越高,合成的正弦波s(t)臺(tái)階數(shù)就越多,輸出 波形的精度也就越高。二、 整體的設(shè)計(jì)原理圖三、 各個(gè)模塊的實(shí)

5、現(xiàn)1頻率預(yù)置模塊 通過(guò)“freq_in”可以產(chǎn)生頻率控制字。在“frep_in”的上升沿來(lái)的時(shí)候,頻率控制字加1。 輸出寬度為4位的頻率控制字,范圍為116。2相位累加器 相位累加器實(shí)現(xiàn)的功能是:(1)設(shè)置dds的初始相位。(2)波形rom地址發(fā)生器。(3)dds工作狀況顯示。(1)、通過(guò)xiang_en,set_up,set_ok設(shè)置初始相位。初始相位的調(diào)節(jié)范圍可以是0度到360度。(2)、system_clk為系統(tǒng)時(shí)鐘的輸入端。count_clk 為地址發(fā)生器的工作時(shí)鐘輸入端。frep_in為頻率控制字輸入端。(3)、load_data9.0為波形rom的地址發(fā)生器地址輸出端,led_ou

6、t2.0為系統(tǒng)工作狀態(tài)顯示。3波形rom.address9.0為波形rom的地址輸入端,寬度為10位,可尋址空間為1k。clock為地址鎖存信號(hào)輸入端。.q7.0為相應(yīng)地址存儲(chǔ)的波形信號(hào)數(shù)據(jù)輸出端。4輸出波形控制器sel_in1sel_in2輸出數(shù)據(jù)00正弦波信號(hào)01三角波信號(hào)10方波信號(hào)11方波信號(hào)5d/a控制 六、附件/*-set360.vhd-*/ 相位與頻率設(shè)置模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all ;entity se

7、t360 is port(set_up, set_ok, clk, clk1 : in std_logic ;en : in std_logic ;frep_in : in std_logic_vector(3 downto 0) ;led_out : out std_logic_vector(2 downto 0) ;load_data : out std_logic_vector(9 downto 0) ;end set360 ;architecture behav of set360 issignal static_pre, static_nex : std_logic_vector(1

8、 downto 0) ;signal time : integer range 0 to 1023 ;signal coun : std_logic_vector( 9 downto 0) ;signal cnt : integer range 0 to 100 ;signal load_en : std_logic ;signal cc : integer range 0 to 100 ;signal k0, k1 : std_logic_vector(1 downto 0) ;beginprocess(static_pre, k1)-variable time_v : integer ra

9、nge 0 to 359 ;begincase static_pre is when "00" => cnt <= 0 ;k0 <= "00" ;led_out <= "000" ;if k1 = "11" thenstatic_nex <= "01" ;else static_nex <= "00" ;end if ;when "01" => cnt <= 100 ;k0 <= "01&qu

10、ot; ;led_out <= "100" ;if k1 = "10" thenstatic_nex <= "10" ;else static_nex <= "01" ;end if ;when "10" => cnt <= 10 ;k0 <= "10" ;led_out <= "010" ;if k1 = "01" then static_nex <= "11" ;e

11、lse static_nex <= "10" ;end if ;when "11" => cnt <= 1 ;k0 <= "11" ;led_out <= "001" ;if k1 <= "00" thenstatic_nex <= "00" ;else static_nex <= "11" ;end if ;when others => null ;end case ;end process ;pro

12、cess(set_ok, k0)beginif set_ok 'event and set_ok = '1' thenif k0 = "00" thenk1 <= "11" ;elsif k0 = "01" thenk1 <= "10" ;elsif k0 = "10" thenk1 <= "01" ;elsif k0 = "11" thenk1 <= "00" ;end if ;end

13、if ;end process ;process(set_up, cnt)variable kk : integer range 0 to 1023 ;beginif set_up 'event and set_up = '1' thenkk := kk + cnt ;else kk := kk ;end if ;if kk > 1023 then kk := kk - 1023 ;else kk := kk ;end if ;time <= kk ;end process ; process(static_nex, clk, static_pre)begi

14、nif clk 'event and clk = '1' thenstatic_pre <= static_nex ;else static_pre <= static_pre ;end if ;end process ;process(clk, en, cc, clk1, coun, time)-variable cnt_k : std_logic_vector(9 downto 0) ;begin if en = '0' thencoun <= conv_std_logic_vector(time,10) ;elseif clk1

15、'event and clk1 = '1' thencoun <= coun + cc ;else coun <= coun ;end if ;end if ;load_data <= coun ;end process ;process(frep_in)begincase frep_in is when "0000" => cc <= 1 ;when "0001" => cc <= 2 ;when "0010" => cc <= 3 ;when "

16、;0011" => cc <= 4 ;when "0100" => cc <= 5 ;when "0101" => cc <= 6 ;when "0110" => cc <= 7 ;when "0111" => cc <= 8 ;when "1000" => cc <= 9 ;when "1001" => cc <= 10 ;when "1010" => c

17、c <= 11 ;when "1011" => cc <= 12 ;when "1100" => cc <= 13 ;when "1101" => cc <= 14 ;when "1110" => cc <= 15 ;when "1111" => cc <= 16 ;end case ;end process ;end behav ;/*-tri_s.vhd-*/ 二選一,選擇器library ieee;use ieee.std_

18、logic_1164.all ;entity tri_s isport(en : in std_logic ;dat_0, dat_1 : in std_logic_vector(7 downto 0) ;dat_out : out std_logic_vector(7 downto 0) );end tri_s ;architecture behav of tri_s is beginprocess(en, dat_0, dat_1)beginif en = '1' thendat_out <= dat_1 ;else dat_out <= dat_0 ;end

19、if ;end process ;end behav ;/*-ttt.vhd-*/ 頻率字控制模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ttt isport(clk : in std_logic ;dout : out std_logic_vector(3 downto 0);end ttt ;architecture kk of ttt isbeginprocess(clk)variable k0 : std_logic_vector(3 downto 0) ;begin

20、if clk 'event and clk = '1' thenk0 := k0 + 1 ;end if ;dout <= k0 ;end process ;end kk ;/*-dds.vhd-*/ 頂層文件library ieee;use ieee.std_logic_1164.all; library work;entity dds is port(xiang_set : in std_logic;count_clk : in std_logic;system_clk : in std_logic;set_ok : in std_logic;.set_up

21、: in std_logic;sel_in1 : in std_logic;frep_in : in std_logic;sel_in2 : in std_logic;cs : out std_logic;wr : out std_logic;data20832 : out std_logic_vector(7 downto 0);led_out : out std_logic_vector(2 downto 0);end dds;architecture bdf_type of dds is component set360port(set_up : in std_logic; set_ok

22、 : in std_logic; clk : in std_logic; clk1 : in std_logic; en : in std_logic; frep_in : in std_logic_vector(3 downto 0); led_out : out std_logic_vector(2 downto 0); load_data : out std_logic_vector(9 downto 0);end component;component sinport(clock : in std_logic; address : in std_logic_vector(9 downt

23、o 0); q : out std_logic_vector(7 downto 0);end component;component tri_sport(en : in std_logic; dat_0 : in std_logic_vector(7 downto 0); dat_1 : in std_logic_vector(7 downto 0); dat_out : out std_logic_vector(7 downto 0);end component;component fangport(clock : in std_logic; address : in std_logic_v

24、ector(9 downto 0); q : out std_logic_vector(7 downto 0);end component;component shanjiaoport(clock : in std_logic; address : in std_logic_vector(9 downto 0); q : out std_logic_vector(7 downto 0);end component;component tttport(clk : in std_logic; dout : out std_logic_vector(3 downto 0);end component

25、;signalsynthesized_wire_0 : std_logic_vector(3 downto 0);signalsynthesized_wire_9 : std_logic_vector(9 downto 0);signalsynthesized_wire_2 : std_logic_vector(7 downto 0);signalsynthesized_wire_3 : std_logic_vector(7 downto 0);signalsynthesized_wire_6 : std_logic_vector(7 downto 0);signalsynthesized_wire_7 : std_logic_vector(7 downto 0);signalsynthesized_wire_8 : std_logic;begin cs <= '0'wr <= '0'b2v_inst : set360port map(set_up => set_up, set_ok => set

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論