版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEPAGE3數字信號課程設計課題:基于DSP的數字信號發(fā)生器學校:閩江學院系別:計算機與科學系專業(yè)年級:12通信工程組長:指導老師:實驗時間:2015年1月5日至2015年1月9日目錄摘要 3引言 3一、課程設計的任務 4二、課程設計原理 42.1設計原理 42.2波形的實現 5三、課程設計過程 73.1GUI界面的設計 73.2MATLAB編程 8四、課程設計實驗結果及存在問題 94.1輸出波形 94.2存在問題 11五、課程設計心得 125.1小組總結 125.2組員總結 13附錄: 14參考文獻 18摘要數字信號處理器(DSP)是在模擬信號變成數字信號以后進行高速實時處理的專業(yè)處理器,是一種基于軟硬件結合實現的函數波形產生儀器,它在工程分析和實驗教學中有著廣泛應用。MATLAB是一個數據分析和處理功能十分強大的工程實用軟件,它的數據采集工具箱為實現數據的輸入和輸出提供了十分方便的函數和命令。針對設計,采用了一種以MATLAB軟件制作GUI界面為仿真平臺的實驗,本課程設計介紹了周期性正弦波、方波、三角波、鋸齒波、脈沖信號產生的算法。首先介紹了信號的產生原理,接著詳細闡述系統(tǒng)的設計,最后通過實驗生成波形。結合原理,應用MATLAB軟件編程完成了這些信號發(fā)生器的設計。引言隨著現代科學技術的發(fā)展,工程中越來越多的工作需要借助計算機來實現,信號發(fā)生器原本是模擬電子技術發(fā)展的產物,到后來的數字信號發(fā)生器可以通過軟件來實現,本課程設計將給出通過計算機軟件仿真技術實現數字信號發(fā)生器的功能。信號發(fā)生器是一種常用的信號源,廣泛應用于電子技術實驗、自控系統(tǒng)和科學研究等領域。然而以Matlab為代表的軟件的出現,輕松地用軟件仿真技術解決了這些問題。一、課程設計的任務課程設計題目:基于DSP的數字信號發(fā)生器主要內容:設計數字信號發(fā)生器,能夠根據需要產生一定頻率范圍,一定振幅,相位可調節(jié)的特定信號波形,并顯示及保存。設計要求:1、能產生周期性正弦波、方波、三角波、鋸齒波以及用戶自己編輯的特定波形;2、輸出信號的頻率范圍為100Hz~200Hz,且輸出頻率可以調節(jié);3、輸出振幅和相位可以調節(jié);4、(提高部分)波形能保存,能實時調節(jié)顯示;5、編制DUI用戶界面;6、(提高部分)其他功能自由發(fā)揮;7、按要求完成設計報告。主要儀器設備:計算機,MATLAB仿真軟件二、課程設計原理2.1設計原理通常的數字信號發(fā)生器一般可產生正弦信號、方波信號、三角波信號、鋸齒波信號等。此時的數字信號又可稱為離散信號,即時間為離散變量的信號。它只在離散時間上給出函數值,是時間上不連續(xù)的“序列”。離散時間的間隔是均勻的,以Δt表示。Δt的值有信號的采樣率fs決定。為保證采樣后信號能真實的保留原始模擬信號信息,信號采樣頻率必須至少為原信號中最高頻率成分的2倍。這是采樣的基本法則,稱為采樣定理。MATLAB程序提供了常用的各種基本信號的生成函數。我們設計模擬的信號自己使用了MATLAB提供的函數,為了模擬信號發(fā)生器的設置,設計也將常用的信號的副職、頻率、相位設計成可調節(jié)的。2.2波形的實現(1)正弦信號的實現正弦波信號的數字表達式如下所示:(1)其中:A為幅值;f為頻率;為相位。在MATLAB中,將時間變量離散化并構成一個意味數組,如下式所示:(2)其中:fs為采樣頻率。相應的正弦波信號的而數字信號表達式如下表示:(3)幅值、頻率、相位參數可以由用戶界面上的滑動條或編輯框輸入。在分別得到t和y的離散值后,用plot作圖函數即可獲得波形顯示。(2)方波信號的實現在MATLAB中,可以用square函數自己生成一個方波信號,其函數原型為y=square(t,duty),該函數可生成一個周期為2π,峰值為±1,占空比為duty的方波,duty的默認值為50%。利用該函數,可得到幅值、頻率、相位可調的方波信號函數如下:(4)(3)三角波信號的實現在MATLAB中,可以用sawtooth函數直接生成一個三角波信號,其函數原型為y=sawtooth(t,width),該函數可生成一個周期為2π,峰值為±1,最大值出現在2π×width位置的三角波。利用該函數,可得到幅值、頻率、相位可調的三角波信號函數如下:(5)(4)鋸齒波信號的實現將式(3)中sawtooth函數中的width參數值設為1,即可得到鋸齒波。利用該函數得到的幅值、頻率、相位可調的鋸齒波信號函數如下:(6)(5)脈沖信號的實現考慮到脈沖信號與方波信號波形相似,所以以方波信號函數square函數為基礎,將y=square(t,duty)函數值加1,即可得到最大值為2,最小值為0的脈沖波形,原函數的duty參數可以用來調節(jié)脈沖的寬度。利用該函數,得到的幅值、頻率、相位可調的脈沖信號函數如下:
y=A(square(2πft+φ,1)+1)/2(7)三、課程設計過程3.1GUI界面的設計首先打開MATLAB,在命令窗口中輸入guide命令進入GUI圖形設計界面。再新建一個空白的圖形界面文件,添加如下的控制鍵并設計題目的布局。(1)添加1個axes控件,用于顯示波形;(2)添加4個statictext控件,用于窗口及其他控件的說明和使用;(3)添加3個panel控件,將一組相關的控件框放在一起;(4)添加3個slider控件,用于輸入信號的幅值、頻率、相位參數值;(5)添加3個edittext控件,用于顯示slider滾動出的幅值、頻率、相位的參數值;(6)添加6個pushbutton控件,5個用于控制輸出的5種相應波形,1個用于控制開關的按鈕。雙擊各個控件,打開其屬性編輯窗,根據自己的需求可修改其名稱、顏色、大小、初始值及位置等屬性。最終編輯好的界面如下圖:3.2MATLAB編程當界面控件及布局創(chuàng)建完成以后,點擊運行即可自動生成包含各控件回調函數在內的文件。MATLAB對于輸入框,按鈕及滑動條等控件的響應都是通過自動調用相應的回調函數來實現的?;卣{函數是在一定的操作下自動執(zhí)行的指令代碼。信號發(fā)生器相關的控件有幅值、頻率和相位的輸入控件,滑動條和編輯框,顯示對應波形的按鈕以及放大和縮小顯示圖形的按鈕。以下是5種波形發(fā)生器的編程,程序見附錄。四、課程設計實驗結果及存在問題4.1輸出波形(1)正弦波(2)方波(3)三角波(4)鋸齒波(5)脈沖信號4.2存在問題由于之前只用過C和C++語言進行程序設計,對MATLAB比較陌生。這次是初次使用MATLAB中的GUI模塊,在用MATLAB語言進行程序設計的過程中遇到很多問題,查閱了很多資料后,得到解決。設計過程中遇到的主要問題有:(1)對MATLAB中的GUI界面不熟悉,造成了一些錯誤。比如:運行后滾動條消失,經查閱資料后,找到原因所在,初值設置應從0開始。(2)由于對MATLAB的語法及其函數不熟悉,導致我們的一些編程無法用MATLAB語言實現,只好換一種思路,應用MATLAB語言,加入波形計算公式進行調試,才得出波形。(3)在進行GUI界面設計時,由于安裝MATLAB的版本不同,導致很多按鍵找不到,花費了很多時間。(4)輸出三角波失真:由于輸出波形的坐標沒有隨頻率的變化而變化,導致在頻率變化時波形失真。經過小組討論出其解決方法是:在編程時,公式時間t處加入頻率f,使得t隨頻率變化而變化。(5)一開始沒有做實時調節(jié)的功能,需要每次通過按鈕才能改變波形。后來通過按鈕設置全局變量作為標記,然后通過滑動滾動條來獲取標記,再根據IF語句判斷標記,識別不同波形,根據不同波形的公式進而調節(jié)波形。因此實現了實時調節(jié)的功能。就可以直接通過滾動條來調節(jié)波形的變化。五、課程設計心得5.1小組總結一周的課程設計結束了,這一周對于我們來說收獲真的不少。運用DSP進行簡單的數字信號處理,老師給了我們任務,按照題目要求,查閱資料,每一步開始一點一滴做起。一開始進度很慢,因為在沒有復習的情況下自己了解的東西太少,于是我們開始有重點的學習,在腦中形成對于DSP德整個體系,學習GUI界面制作,逐個擊破。我們還利用課余時間趕進度,發(fā)現當有目標的時候學習東西真的很快,原本什么都不會,經過一個星期的課程設計,大家都可以清晰地知道各個的流程及原理,并會自己編寫一些效果出來,雖然還有一些細節(jié)需要改進??粗黄鸬某晒谠O計過程中每一次面對困難又解決的而快樂。不管時怎么樣的結果,至少自己真正努力過,就不會一遺憾,一周,我們一直抱著這樣的信念堅持到最后一刻。一分耕耘一分收獲,這是一個亙古不變的道理,努力總會有收獲。然而這次課程設計也讓我們深刻的體會到了書到用時方恨少,平時不用功,關鍵時刻才來后悔平時沒有好好念書。所以在今后的學習和生活中,一定要多學、多問,然后總結出自己的一套學習方法。此外,在設計過程中,由于我們組員對MATLAB軟件不熟悉,同學和老師給予了我們指導,在此一并感謝。5.2組員總結劉羽:這次的課程設計結束了,在這次的課程設計中不僅檢驗了我所學習的知識,也培養(yǎng)了我們如何去把握一件事情,如何去動手做一件事情,又如何思考并完成一件事情。在設計過程中,與同學分工設計,和同學們相互探討,相互學習,相互監(jiān)督。學會了合作,學會了寬容,學會了理解,也學會了做人與處世的道理。體會到了團結的力量。趙銳銳:課程設計是我們專業(yè)課程知識綜合應用的實踐訓練,也是我們邁向社會,從事職業(yè)工作前一個必不少的過程.“千里之行始于足下”,通過這次課程設計,我深深體會到這句千古名言的真正含義.我今天認真的進行課程設計,學會腳踏實地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實的基礎。王可可:通過這次的課程設計,明白自己本身還存在很多的不足。比如對matlab仿真的掌握不熟悉,一些基本操作有的不會,剛開始運行出錯找不到在哪,隨著多次的修改運行,最后對這個matlab的仿真軟件了解的比以前更多一些?,F在能找錯在哪,并加以改正。還有就是從小組的討論中收獲到了很多,因為大家掌握的側重點不一樣,想到的解決方法也就不一樣,可以供小組成員參考,彼此之間可以取長補短。我覺得自己在加強基礎知識的同時,還要多動手去實踐,在實踐中發(fā)現問題并解決問題。這也為以后的課程設計及畢業(yè)設計打好堅實的基礎。林鑫:這次課程設計我們培養(yǎng)了團隊精神,一起實驗一起討論。在課程設計過程中,我們不斷發(fā)現錯誤,不斷改正,感到了解決問題后的高興。使我們懂得了理論與實踐結合的重要性,在實踐中認識到自己的不足,不斷學習和進步。吳敏棟:通過這次課程設計,我體會到了實踐是檢驗真理的唯一標準。在實驗中,我從一無所知到懵懵懂懂再到大概了解,讓我明白了在學習中成長,在學習中學習。學習就要去嘗試,不要總覺得自己不會自己不懂。陳寶強:這次的課程設計將要結束了。在這次的學習中,我學到了很多,也找到了自己身上的不足,感受良多,獲益匪淺,同時也深深的體會到了團隊合作的重要性,正所謂獨木不成舟,獨樹不成林。附錄:波形程序(1)正弦波%Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)a=get(handles.slider3,'value');f=get(handles.slider7,'value');q=get(handles.slider5,'value');t=0:1/44100:0.05;y=a*sin(2*pi*(f*t+q/360));axes(handles.axes1);plot(t,y);(2)方波%Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)a=get(handles.slider3,'value');f=get(handles.slider7,'value');q=get(handles.slider5,'value');t=0:1/25000:0.05;y=a*square(2*pi*(f*t+q/360));axes(handles.axes1);plot(t,y);(3)三角波%Executesonbuttonpressinpushbutton3.functionpushbutton3_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)a=get(handles.slider3,'value');f=get(handles.slider7,'value');q=get(handles.slider5,'value');t=0:0.001/f:5/f;y=a*sawtooth(2*pi*f*(t+q/360),0.5);axes(handles.axes1);plot(t,y);(4)鋸齒波%Executesonbuttonpressinpushbutton4.functionpushbutton4_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)a=get(handles.slider3,'value');f=get(handles.slider7,'value');q=get(handles.slider5,'value');t=0:0.1/f:3/f;y=a*sawtooth(2*pi*f*(t+q/360),1);axes(handles.axes1);plot(t,y);(5)脈沖信號%Executesonbuttonpressinpushbutton6.functionpushbutton6_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton6(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)a=get(handles.slider3,'value');f=get(handles.slider7,'value');q=get(handles.slider5,'value');t=0:1/25000:0.05;y=a/2*(square(2*pi*f*t+2*pi*360/q,1)+1);axes(handles.axes1);plot(t,y);改進后程序:圖像根據滾動條進而動態(tài)改變,并且為方波加入占空比functionslider7_Callback(hObject,eventdata,handles)%hObjecthandletoslider7(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofslidervs=get(handles.slider7,'value
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技企業(yè)研發(fā)實驗室建設規(guī)劃與實施
- 現代農業(yè)技術革新與商業(yè)價值挖掘
- 技術領域中的人際關系與團隊協作技巧培訓
- 教育創(chuàng)新實踐以科技為媒介的家校合作提升兒童情感能力
- 個人資金借給公司合同范本(2024版)一
- 2025版新能源汽車充電站臨時用電安全保障協議4篇
- 個人與個體老板用工合同范本完整版3篇
- 2025版事業(yè)單位圖書館管理員轉正聘用合同3篇
- 2025年汽車維修服務質押合同示范文本4篇
- 2025版綠色建筑門窗系統(tǒng)安裝與節(jié)能檢測合同3篇
- 加強教師隊伍建設教師領域學習二十屆三中全會精神專題課
- 2024-2025學年人教版數學七年級上冊期末復習卷(含答案)
- 四年級數學上冊人教版24秋《小學學霸單元期末標準卷》考前專項沖刺訓練
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- 2024年全國卷1高考理綜試題及答案
- (完整版)金融市場基礎知識知識點歸納-圖文
- 五年級數學(小數乘除法)計算題專項練習及答案
- 小學數學知識結構化教學
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請范本
- 飯店管理基礎知識(第三版)中職PPT完整全套教學課件
評論
0/150
提交評論