




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、fpga原理及應用結課論文題目基于vhdl的2fsk的信號發生器 專業名稱通信工程班級學號學生姓名提交時間2012年12月13日設計題目:基于vhdl的2fsk的信號發生器一、設計實驗條件quartus ii開發環境二、設計目標1. 通過練習,能夠較為熟練的運用quartus ii軟件,同時對vhdl語言掌握更加熟悉;2. 基于quartus ii開發環境,利用vhdl硬件描述語言,自上而下地逐層完成相應的描述、綜合、優化、仿真與驗證,直到生成器件2fsk信號發生器;三、設計報告的內容1. 前言(緒論)(設計的目的、意義等)2. 設計主體(原理、步驟、程序或原理圖、結果等)3. 對仿真結果進行
2、分析4. 參考資料一前言在通信領域中,為了傳送信息,一般都將原始的信號進行某種變換變成適合于通信傳輸的信號形式。在數字通信系統中,一般將原始信號(圖像、聲音等)經過量化編碼變成二進制碼流,稱為基帶信號。 但數字基帶信號一般不適合于直接傳輸。例如,通過公共電話網絡傳輸數字信號時,由于電話網絡的帶寬為4 khz以下,因此數字信號不能直接在其上傳輸。此時可將數字信號進行調制,2fsk即為一種常用的數字調制方式。2fsk,即二進制頻移鍵控方法簡單,易于實現,解調不需恢復本地載波,支持異步傳輸,抗噪聲和抗衰落性能也較強。因此2fsk調制技術在通信行業得到了廣泛的應用,并且主要適用于低、中速數據傳輸。由于
3、微電子技術的迅猛發展,使得vhdl的性能指標,例如規模、功能、時間等性能也越來越好。vhdl在數字系統設計中占據了越來越重要的位置。而隨著器件的發展,開發環境也進一步得到優化。vhdl程序的設計可用altera公司的quartus ii軟件開發系統來實現,它為用戶提供了良好的開發環境,包含有豐富的庫資源,很容易實現各種電路設計,它支持多種輸入方式,并有極強的仿真系統。故利用fpga 這一新的技術手段來研究數字調制技術有重要的現實意義。設計采用fpga現場可編程技術, 運用自頂向下的設計思想設計2fsk信號發生器。避免了硬件電路的焊接與調試, 而且由于fpga 的i/ o 端口豐富, 內部邏輯可
4、隨意更改, 使得2fsk信號發生器的實現較為方便。二設計主體1、2fsk信號產生原理數字頻率調制又稱頻移鍵控(fsk),二進制頻移鍵控記作2fsk。數字頻移鍵控是用載波的頻率來傳送數字消息,即用所傳送的數字消息控制載波的頻率。2fsk信號便是符號“1”對應于載頻,而符號“0”對應于載頻(與不同的另一載頻)的已調波形,而且與之間的改變是瞬間完成的。2fsk調制的波形如圖1示。從原理上講,數字調頻可用模擬調頻法來實現,也可用鍵控法來實現。模擬調頻法是利用一個矩形脈沖序列對一個載波進行調頻,是頻移鍵控通信方式早期采用的實現方法。2fsk鍵控法則是利用受矩形脈沖序列控制的開關電路對兩個不同的獨立頻率源
5、進行選通。鍵控法的特點是轉換速度快、波形好、穩定度高且易于實現,故應用廣泛。2fsk信號的產生方法如圖1所示。圖中為代表信息的二進制矩形脈沖序列,即使2fsk信號。s(t) 模擬調頻器 s(t) 0 1 0 0 1 0圖1 2fsk產生方法2、設計原理及原理圖由于fsk為模擬信號,而fpga只能產生數字信號,因此需對正弦信號采樣并經模數變換來得到所需的fsk信號。本例由fpga產生正弦信號的采樣值。fsk信號發生器框圖如圖2所示,整個系統共分為分頻器、m序列產生器、跳變檢測、2:1數據選擇器、正弦波信號產生器和dac數模變換器等6部分,其中前5部分由fpga器件完成。圖2 2fsk調制信號發生
6、器框圖(1)分頻器本實例中數據速率為1.2 khz,要求產生1.2 khz和2.4 khz兩個正弦信號。對正弦信號每周期取100個采樣點,因此要求能產生3個時鐘信號:1.2 khz(數據速率)、120 khz(產生1.2 khz正弦信號的輸入時鐘)和240 khz(產生2.4 khz正弦信號的輸入時鐘)?;鶞蕰r鐘由一個12 mhz的晶振提供。設計中要求一個50分頻(產生240 khz信號),再2分頻(產生120 khz信號)和100分頻(產生1.2 khz信號),共有三個分頻值。(2)m序列產生器m序列是偽隨機序列的一種,它的顯著特點是:隨機特性,預先可確定性,循環特性。正因為這些特性,使得m
7、序列產生器在通信領域得到了廣泛的應用。這里用一種帶有兩個反饋抽頭的3級反饋移位寄存器,得到一串“1110010”循環序列,并采取措施防止進入全“0”狀態。通過更換時鐘頻率可以方便地改變輸入碼元的速率。m序列產生器的電路結構如圖3所示。圖3 m序列產生器m序列產生器電路結構(3)跳變檢測將跳變檢測引入正弦波的產生中,可以使每次基帶碼元上升沿或下降沿到來時,對應輸出波形位于正弦波形的sin0處。引入跳變檢測主要是為了便于觀察,確保示波器上顯示為一個連續的波形。基帶信號的跳變檢測可以有很多方法,圖4為一種便于在可編程邏輯器件中實現的方案。圖4 信號跳變檢測電路(4)2:1數據選擇器2:1數據選擇器用
8、于選擇正弦波產生器的兩個輸入時鐘。一個時鐘的頻率為120 khz,此時正弦波產生器產生一個1.2 khz的正弦波,代表數字信號“0”;另一個時鐘的頻率為240 khz,此時產生一個2.4 khz的正弦波信號,代表數字信號“1”。(5)正弦信號的產生用數字電路和dac變換器可以產生要求的模擬信號。根據抽樣定理可知,當用模擬信號最大頻率兩倍以上的速率對該模擬信號采樣時,便可將原模擬信號不失真地恢復出來。本例要求得到的是兩個不同頻率的正弦信號,實驗中對正弦波每個周期采樣100個點,即采樣速率為原正弦信號頻率的100倍,因此完全可以在接收端將原正弦信號不失真地恢復出來,從而可以在接收端對fsk信號正確
9、地解調。經dac轉換后,可以在示波器上觀察到比較理想的波形。本設計中每個采樣點采用8位量化編碼,即8位分辨率。采樣點的個數與分辨率的大小主要取決于cpld/fpga器件的容量,其中分辨率的高低還與dac的位數有關。實驗表明,采用8位分辨率和每周期100個采樣點可以達到相當不錯的效果。具體的正弦信號產生器可以用狀態機來實現。按前面的設計思路,本實現方案共需100個狀態,分別為s1s100。同時設計一個異步復位端,保證當每個“1”或“0”到來時其調制信號正好位于坐標原點,即sin0處。狀態機共有8位輸出(q7q0),經dac變換為模擬信號輸出。為得到一個純正弦波形,應在dac的輸出端加上一個低通濾
10、波器,由于本設計僅觀察fsk信號,因此省去了低通濾波器。本設計中,數字基帶信號與fsk調制信號的對應關系為“0”對應1.2 khz,“1”對應2.4 khz,此二載波的頻率可以方便地通過軟件修改。3、對仿真結果進行分析2fsk的總體波形如圖5所示,其中clock為正弦波發生器時鐘mode表示0:2fsk;1:2psk,clk120為用于產生一個1.2khz的正弦波信號,clk240為用于產生一個2.4khz的正弦波信號,value為正弦波的采樣點峰值,m_mode為輸出m序列。圖5 2fsk仿真波形圖下圖6所示為產生的2fsk波形,可以明顯地看到在m_mode跳變前后value的碼元寬度相差一
11、倍,實現了2fsk的頻率變化來傳遞數字信息,即120khz表示信號“0”,240khz表示信號“1”。圖6 2fsk仿真波形圖下圖3-6可以看出傳遞信號“1”的波形密度明顯比傳遞信號“0”的波形密度高。 圖7 2fsk仿真波形圖2fsk的信號傳遞頻率從下圖8中可以看出為240khz,信號“1”和“0”的跳變是通過相位的改變來實現的。圖8 2fsk仿真波形圖4、具體程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity pskfsk
12、 isport(clock:in std_logic; -正弦波發生器時鐘 mode:in std_logic; -0:fsk;1:psk clk240: buffer std_logic; -用于產生一個2.4khz的正弦波信號 clk120: buffer std_logic; -用于產生一個1.2khz的正弦波信號 value: out std_logic_vector (7 downto 0); -正弦波的采樣點峰值 m_code:buffer std_logic); -輸出m序列end pskfsk;architecture pskfsk_arch of pskfsk is sign
13、al count100:integer range 0 to 99; -記錄100個狀態 signal count50: integer range 0 to 49; -記錄50個狀態 signal count: integer range 1 to 10; -記錄10個狀態,實現12m分頻到240khz得到clk240時鐘信號 signal sinclk,coderate: std_logic; -正弦波信號的頻率以及隨機序列的編碼速率 signal temp,jump_high,jump_low: std_logic; -0,1跳變標志 signal m: std_logic_vector
14、 (2 downto 0); -m序列beginprocess(clock) -分頻為240khz的clk240信號 begin if (clock'event and clock = '1') then if (count = 10) then count<=1; -計數滿時計數回復初值 clk240<=not clk240; -輸出時鐘翻轉一次 elsif (count=5) then count<=count+1; clk240 <= not clk240;-輸出時鐘翻轉一次 else count<=count+1; end if;
15、end if;end process;process(clk240) -分頻為120khz的clk120信號 begin if (clk240'event and clk240 = '1') then clk120<=not clk120; end if;end process;process(clk120) -load_clk1 100分頻得到coderate碼元速率1.2khzbegin if (clk120'event and clk120= '1') then if(count50=49) then count50<=0; c
16、oderate<=not coderate; else count50<=count50+1; end if; end if;end process;m_sequence_form: -產生"1110010"m序列process(coderate)begin if(coderate'event and coderate= '1') then m(0)<=m(1); -實現移位功能 m(1)<=m(2); end if;end process;process(coderate)begin if(coderate'even
17、t and coderate= '1') then m(2)<=(m(1) xor m(0) or (not (m(0) or m(1) or m(2); -邏輯表達式跟上面的移位功能產生m的隨機序列“1110010” end if;end process;m_code<=m(0);process(mode,clk240,clk120,m_code)begin if (mode='0' and m_code='0') then sinclk<=clk120; else sinclk<=clk240; -選擇正弦信號波產生器
18、的時鐘頻率 end if;end process;jump_high<=(not temp) and m_code; -0到1跳變jump_low<=(not m_code) and temp; -1到0跳變process(sinclk) -2fsk與2psk對跳變的不同處理begin if(sinclk'event and sinclk= '1') then temp<=m_code; if(count100=99) or (jump_high='1') then count100<=0; -波形輸出 elsif(jump_lo
19、w='1') and (mode='1') then count100<=50; else count100<=count100+1; end if; end if;end process;process(count100) -產生sin周期波形的1個周期內的100個樣點值begin case count100 is when 0=>value<="01111111" when 1=>value<="10000111" when 2=>value<="1000111
20、1" when 3=>value<="10010111" when 4=>value<="10011111" when 5=>value<="10100110" when 6=>value<="10101110" when 7=>value<="10110101" when 8=>value<="10111100" when 9=>value<="11000011"
21、; when 10=>value<="11001010" when 11=>value<="11010000" when 12=>value<="11010110" when 13=>value<="11011100" when 14=>value<="11100001" when 15=>value<="11100110" when 16=>value<="11101011&quo
22、t; when 17=>value<="11101111" when 18=>value<="11110010" when 19=>value<="11110110" when 20=>value<="11111000" when 21=>value<="11111010" when 22=>value<="11111100" when 23=>value<="11111101&qu
23、ot; when 24=>value<="11111110" when 25=>value<="11111111" when 26=>value<="11111110" when 27=>value<="11111101" when 28=>value<="11111100" when 29=>value<="11111010" when 30=>value<="11111000&q
24、uot; when 31=>value<="11110110" when 32=>value<="11110010" when 33=>value<="11101111" when 34=>value<="11101011" when 35=>value<="11100110" when 36=>value<="11100001" when 37=>value<="11011100&
25、quot; when 38=>value<="11010110" when 39=>value<="11010000" when 40=>value<="11001010" when 41=>value<="11000011" when 42=>value<="10111100" when 43=>value<="10110101" when 44=>value<="10101110
26、" when 45=>value<="10100110" when 46=>value<="10011111" when 47=>value<="10010111" when 48=>value<="10001111" when 49=>value<="10000111" when 50=>value<="01111111" when 51=>value<="0111011
27、1" when 52=>value<="01101111" when 53=>value<="01100111" when 54=>value<="01011111" when 55=>value<="01011000" when 56=>value<="01010000" when 57=>value<="01001001" when 58=>value<="010000
28、10" when 59=>value<="00111011" when 60=>value<="00110100" when 61=>value<="00101110" when 62=>value<="00101000" when 63=>value<="00100010" when 64=>value<="00011101" when 65=>value<="00011
29、000" when 66=>value<="00010011" when 67=>value<="00001111" when 68=>value<="00001100" when 69=>value<="00001000" when 70=>value<="00000110" when 71=>value<="00000100" when 72=>value<="00000010" when 73=>value<="00000001" when 74=>value<="00000000" when 75=>value<="00000000" when 76=>value<="00000000" when 77=>value<="00000001" when 78=>value<="00000010" when 79=&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論