直接數字頻率器DDS設計

2022-11-24 06:36:05 字數 5000 閱讀 7603

數字邏輯系統課程設計報告

設計題目: 直接數字頻率器dds設計

班級: 1211

姓名學號35

日期: 2014.12.8~2014.12.12

目錄1. 設計任務與要求 1

1.1 設計任務 1

1.2 設計要求 1

2. 整體電路工作原理 1

3. 模組設計過程與** 3

4. 整體設計與分析 10

5. **與除錯 12

6. 結論與心得 15

7. 參考文獻 15

設計任務與要求

設計任務

直接數字頻率綜合技術,即dds技術,是一種新型的頻率合成技術和訊號產生方法。利用eda技術和fpga實現直接數字頻率合成器dds的設計。

設計要求

掌握直接數字頻率合成器的原理;

掌握直接數字頻率合成器的設計方法;

學習嵌入式邏輯分析儀signaltab ii的使用方法;

通過實驗箱上的開關輸入dds的頻率控制字,並能用示波器觀察加以驗證;

dds中的波形儲存器模組用altera公司的cycloneⅱ系列fpga晶元中的rom實現。

整體電路工作原理

乙個數字頻率合成器由相位累加器、加法器、波形儲存rom、d/a轉換器、低通濾波器(lpf)構成。dds原理框圖如圖2-1所示。

圖 2-1 dds原理框圖

其中,f為頻率控制字,控制輸出波形頻率;n為相位取值精度,即將乙個週期的波形分為2n個點,每個點對應相應的波形資料和相位,相位步進為(2π)/2n;p為相位控制字,控制輸出波形相位;w為波形控制字,控制輸出波形是正弦波還是方波等;s(n)為儲存器rom的位址線寬,即rom內一共有2s(n)個儲存單元用於儲存幾種波形各乙個週期的波形資料,如果只儲存一種波形資料,則儲存單元數2s(n)=2n,如果儲存兩種波形資料,則2s(n)=2×2n,即每種波形需要2n個儲存單元,與相位取值精度n將乙個週期的波形分為2n個點對應起來;rom內每個單元儲存波形資料的寬度為m。

頻率控制字f和相位累加器。在系統時鐘clk控制下,rom儲存的波形資料將不斷被讀取。假設系統時鐘頻率是fc,則讀完乙個週期的波形資料需要的時間t=(1/fc)×2n,即輸出波形頻率f0=1/t=fc/2n。

頻率控制字f又稱為相位增量。它的含義是每次讀數時,將上一次rom的位址增加f,即每隔f個點讀取一次,如圖2-2所示,這時相位增加f×(2π/2n)。因為讀完乙個週期(即乙個圓周)的波形資料,要比每隔乙個點讀取一次快f倍,所以通過頻率控制字f後輸出波形的頻率變為f0=f×(fc/2n)。

當f=1時,dds輸出最低頻率fc/2n;而dds的最大輸出頻率是fc/2,即f=2n-1,由nyquist取樣定理決定。只要n足夠大,dds就可以得到很細的頻率間隔,即足夠精度的頻率解析度fc/2n。當然在f越大,取樣點越少,頻率越高的同時,波形越粗糙。

圖 2-2 相位累加器輸出

相位控制字p和加法器。把相位累加器的輸出與相位控制字p相加,相當於將需要取值的位址向後移動p個,則波形相位變化p×(2π/2n)。

波形控制字w和加法器。在波形儲存器rom中的波形資料是分塊儲存的。當波形控制字w改變時,波形儲存器的位址輸入為改變相位後的位址輸出加上波形控制字w(不同波形儲存的位址)。

如果相位精度n=8,則每種波形需要256個儲存空間,兩種波形需要512個儲存空間。設計者可以將正弦訊號儲存在0~255這256個儲存空間中,而將方波訊號儲存在256~511這256個空間中。那麼可以設定控制訊號wctl,當wctl=『1』時,w=0,指向正弦訊號;當wctl=『0』時,w=256,指向方波訊號。

d/a轉換器。d/a轉換器的作用是把從rom中取出的波形資料轉換為模擬量。d/a轉換也有一定的精度要求。

lpf。d/a輸出的波形為階梯型,除了主頻外,還存在非諧波分量,需要通過低通濾波器(lpf)取出主頻,得到光滑的波形。

模組設計過程與**

頻率控制模組,如圖3-1所示。該模組通過撥擋開關產生不同的頻率控制字f,以便得到不同的輸出頻率的波形。

圖 3-1 頻率控制模組

源程式:

library ieee;

useuseentity fct1 is

port(

clk : in std_logic系統時鐘clk,頻率fc=1.5mhz

din : in std_logic_vector(3 downto 04位撥擋開關

add : out std_logic_vector(7 downto 0)); --256個波形點對應資料

end;

architecture one of fct1 is

signal a : std_logic_vector(7 downto 0);

signal f : integer range 0 to 8頻率控制符

begin

p0:process(clk)

begin

if rising_edge(clk) then

a<=a+f;

end if;

end process p0;

p1:process(din)

begin

case din is

when "1110"=>f<=2;

when "1101"=>f<=4;

when "1011"=>f<=6;

when "0111"=>f<=8;

when others=>f<=1;

end case;

end process p1;

add<=a;

end one;

波形**,如圖3-1.1所示。

圖 3-1.1 頻率控制字波形**

波形控制模組,如圖3-2.1所示。該模組用來控制輸出波形是方波還是正弦波。

圖 3-2.1 波形控制模組

源程式:

library ieee;

useuseentity wct1 is

port(

a_in : in std_logic_vector(7 downto 0);

width : in std_logic;

a_out : out std_logic_vector(8 downto 0));

end;

architecture one of wct1 is

signal w : integer range 0 to 256;--波形選擇

begin

process(width)

begin

if width='1' then

w<=0;

else

w<=256;

end if;

end process;

a_out<='0'&a_in+w;

end one;

波形**,如圖3-2.2所示。

圖 3-2.2 波形控制字波形**

波形資料儲存模組,如圖3-3.1所示。該模組是用來儲存正弦波和方波的資料。

圖 3-3.1 波形資料儲存模組

配置波形資料檔案。file→new→memory file→hexadecimal intel formal file。設定512個儲存空間,8位word size,具體資料如圖3-3.

2所示。波形資料可有matlab/dsp builder或者c語言程式設計生成,以正弦訊號為例,其計算公式如下:

上式中,i表示第i個點,2n表示乙個週期內的取樣個數,本實驗是256;m代表資料位寬,本實驗是8,即資料值最大是255。

圖 3-3.2 波形配置檔案具體配置資料

新增的ipm_rom巨集模組。設定512個儲存空間,8位資料輸出,新增3-3.2的資料檔案。

數模轉換模組,如圖3-4.1所示。該模組是把ipm_rom中輸出的波形資料轉換為模擬量。

圖 3-4.1 數模轉換模組

源程式:

library ieee;

useuseuseentity dac is

port(

dac_clk : in std_logic;

chan_sel : in std_logic_vector(1 downto 0);

rng : in std_logic;

data_in : in std_logic_vector(7 downto 0);

da_clk : out std_logic;

da_ldac,da_load,da_data : out std_logic);

end;

architecture one of dac is

signal cnt_load : std_logic_vector(2 downto 0);

signal cnt_da_clk : std_logic_vector(3 downto 0);

signal data_reg : std_logic_vector(11 downto 0);

signal da_clk_r,da_load_r : std_logic;

type states is(st0,st1,st2,st3);

signal c_state,n_state : states;

begin

da_clk<=da_clk_r;

da_load<=da_load_r;

da_data<=data_reg(11);

da_ldac<='0';

process(dac_clk)

begin

if rising_edge(dac_clk) then

c_state<=n_state;

end if;

end process;

process(dac_clk,da_load_r)

begin

if da_load_r='1' then

cnt_load<="000";

elsif falling_edge(dac_clk) then

if cnt_load<"111" then

cnt_load<=cnt_load+1;

else

cnt_load<=cnt_load;

直接數字頻率合成訊號的軟體設計

第 卷第 期 電子設計工程 年 月 直接數字頻率合成訊號的軟體設計 李靜,徐豔 長安大學資訊工程學院,陝西西安 摘要 為了實現直接數字頻率合成訊號的產生,文中基於直接數字頻率合成器的工作原理 基本結構 特性分析 輸出頻譜,採用了 語言進行程式設計,結合互動式圖形使用者介面 簡稱 調整引數可以產生 任...

數字頻率計

實驗報告 課程名稱 電子電路綜合設計指導老師 沈紅成績 實驗名稱 數字頻率計實驗型別同組學生姓名 一 設計任務 設計並製作乙個簡易數字頻率計電路。分三個頻段 1 10hz 100hz 99hz 2 100hz 1khz 999hz 3 1khz 10khz 9.9khz 當訊號頻率超過規定頻段的上限...

VHDL數字頻率計設計報告

電子科技大學 學生姓名 學號 指導教師 一 實驗室名稱 二 實驗專案名稱 數字及頻率計的設計及實現 三 實驗原理 1 測頻原理 若某一訊號在t秒時間裡重複變化了n 次,則根據頻率的定義可知該訊號的頻率fs 為 fs n t 通常測量時間t取1秒或它的十進位制時間。頻率計方框圖如下 1 時基t 產生電...