- 相關(guān)推薦
基于dsp的正弦波信號發(fā)生器課程設(shè)計(jì)
目錄
第1章 緒論 ............................................. 1 1 DSP簡介 ............................................... 1 第2章 總體方案的分析和設(shè)計(jì) ............................. 2 2.1 總體方案設(shè)計(jì) ......................................... 2 2.2正弦波信號發(fā)生器 ...................................... 2 第3章 硬件設(shè)計(jì) ......................................... 3 3.1硬件組成 ............................................. 3 3.2控制器部分 ........................................... 4 3.4人機(jī)接口部分 ......................................... 5 第4章 軟件設(shè)計(jì) ......................................... 6 4.1流程圖 ............................................... 6 4.2 正弦信號發(fā)生器程序清單 .............................. 7 第5章 總結(jié) ............................................ 12 參考文獻(xiàn) ............................................... 12
第1章 緒論
1 DSP簡介
數(shù)字信號處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。20世紀(jì)60年代以來,隨著計(jì)算機(jī)和信息技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)應(yīng)運(yùn)而生并得到迅速的發(fā)展。數(shù)字信號處理是一種通過使用數(shù)學(xué)技巧執(zhí)行轉(zhuǎn)換或提取信息,來處理現(xiàn)實(shí)信號的方法,這些信號由數(shù)字序列表示。在過去的二十多年時(shí)間里,信號處理已經(jīng)在通信等領(lǐng)域得到極為廣泛的應(yīng)用。
圖一是數(shù)字信號處理系統(tǒng)的簡化框圖。此系統(tǒng)先將模擬信號轉(zhuǎn)換為數(shù)字信號,經(jīng)數(shù)字信號處理后,再轉(zhuǎn)換成模擬信號輸出。其中抗混疊濾波器的作用是將輸入信號x(t)中高于折疊頻率的分量濾除,以防止信號頻譜的混疊。隨后,信號經(jīng)采樣和A/D轉(zhuǎn)換后,變成數(shù)字信號x(n)。數(shù)字信號處理器對x(n)進(jìn)行處理,得到輸出數(shù)字信號y(n),經(jīng)D/A轉(zhuǎn)換器變成模擬信號。此信號經(jīng)低通濾波器,濾除不需要的高頻分量,最后輸出平滑的模擬信號y(t)。
圖1.1 數(shù)字信號處理系統(tǒng)簡化框圖
數(shù)字信號處理是以眾多學(xué)科為理論基礎(chǔ)的,它所涉及的范圍極其廣泛。例如,在數(shù)學(xué)領(lǐng)域,微積分、概率統(tǒng)計(jì)、隨機(jī)過程、數(shù)值分析等都是數(shù)字信號處理的基本工具,與網(wǎng)絡(luò)理論、信號與系統(tǒng)、控制論、通信理論、故障診斷等也密切相關(guān)。近來新興的一些學(xué)科,如人工智能、模式識別、神經(jīng)網(wǎng)絡(luò)等,都與數(shù)字信號處理密不可分。可以說,數(shù)字信號處理是把許多經(jīng)典的理論體系作為自己的理論基礎(chǔ),同時(shí)又使自己成為一系列新興學(xué)科的理論基礎(chǔ)。
第2章 總體方案的分析和設(shè)計(jì)
2.1 總體方案設(shè)計(jì)
1.基于DSP的特點(diǎn),本設(shè)計(jì)采用TMS320C54X系列的DSP作為正弦信號發(fā)生器的核心控制芯片。
2.用泰勒級數(shù)展開法實(shí)現(xiàn)正弦波信號。
3.設(shè)置波形時(shí)域觀察窗口,得到其濾波前后波形變化圖; 4.設(shè)置頻域觀察窗口,得到其濾波前后頻譜變化圖。
2.2正弦波信號發(fā)生器
正弦波信號發(fā)生器已被廣泛地應(yīng)用于通信、儀器儀表和工業(yè)控制等領(lǐng)域的信號處理系統(tǒng)中。
通常有兩種方法可以產(chǎn)生正弦波,分別為查表法和泰勒級數(shù)展開法。 查表法是通過查表的方式來實(shí)現(xiàn)正弦波,主要用于對精度要求不很高的場合。 泰勒級數(shù)展開法是根據(jù)泰勒展開式進(jìn)行計(jì)算來實(shí)現(xiàn)正弦信號,它能精確地計(jì)算出一個(gè)角度的正弦和余弦值,且只需要較小的存儲空間。 本次主要用泰勒級數(shù)展開法來實(shí)現(xiàn)正弦波信號。
產(chǎn)生正弦波的算法正弦函數(shù)和余弦函數(shù)可以展開成泰勒級數(shù),其表達(dá)式:
x3x5x7x9
sin(x)?x??????
3!5!7!9!x2x4x6x8
cos(x)?1??????
2!4!6!8!
取泰勒級數(shù)的前5項(xiàng),得近似計(jì)算式:
x3x5x7x9
sin(x)?x????
3!5!7!9!x2x2x2x2
?x(1?(1?(1?(1?))))
2?34?56?78?9
x2x4x6x8
cos(x)?1????
2!4!6!8!x2x2x2x2
?1?(1?(1?(1?)))
23?45?67?8sin(nx) = 2cos(x)sin[(n-1)x]-sin[(n-2)x] cos(nx) = 2cos(x)sin[(n-1)x]-cos[(n-2)x]
遞推公式:
由遞推公式可以看出,在計(jì)算正弦和余弦值時(shí),需要已知cos(x)、sin(n-1)x、sin(n-
2)x和cos(n-2)x。
第3章 硬件設(shè)計(jì)
3.1硬件組成
基于DSP的信號發(fā)生器的硬件結(jié)構(gòu)圖如圖3.1所示,它主要由DSP主控制器,輸出D/A通道和人機(jī)界面等幾個(gè)主要部分組成。
圖3.1 基于DSP的信號發(fā)生器系統(tǒng)框圖
3.2控制器部分
本系統(tǒng)采用TI公司的TMS320LF2407 DSP處理器,該器件具有外設(shè)集成度高,程序存儲器容量大,A/D轉(zhuǎn)換精度高,運(yùn)算速度高,I/O口資源豐富等特點(diǎn),芯片內(nèi)部集成有32KB的FLASH程序存儲器、2KB的數(shù)據(jù)/程序RAM,兩個(gè)事件管理器模塊(EVE和EVB)、16通道A/D轉(zhuǎn)換器、看門狗定時(shí)器模塊、16位的串行外設(shè)接口(SPI)模塊、40個(gè)可單獨(dú)編程或復(fù)用的通用輸入輸出引腳(GPIO)以及5個(gè)外部中斷和系統(tǒng)監(jiān)視模塊。
TMS320LF2407芯片中的事件管理模塊(EV)是一個(gè)非常重要的組成部分。SPWM波形的產(chǎn)生和輸出就是由這一部分完成的,它由兩個(gè)完全相同的模塊(EVA和EVB)組成,每個(gè)模塊都含有2個(gè)通用定時(shí)器、3個(gè)比較器、6至8個(gè)PWM發(fā)生器、3個(gè)捕獲單元和2個(gè)正交脈沖編碼電路(QEP)。由于TMS320LF2407有544字的雙口RAM(DARAM)和2K字的單口RAM(SARAM);而本系統(tǒng)的程序僅有幾KB,且所用RAM也不多,因此不用考慮存儲器的擴(kuò)展問題,而對于TMS320LF2407的I/O擴(kuò)展問題,由于TMS320LF2407器件有多達(dá)40個(gè)通用、雙向的數(shù)字I/O(GPIO)引腳,且其中大多數(shù)的基本功能和一般I/O復(fù)用的引腳,而實(shí)際上,本系統(tǒng)只需要17路I/O信號,這樣,就可以為系統(tǒng)剩余50%多的I/O資源,因此可以說,該方案既不算浪費(fèi)系統(tǒng)資源,也為系統(tǒng)今后的升級留有余地。
3.3微輸出D/A通道部分
本系統(tǒng)的輸出通道部分主要負(fù)責(zé)實(shí)現(xiàn)波形的輸出,此通道的入口為TMS320LF2407的PWM8口,可輸出SPWM等幅脈沖波形,出口為系統(tǒng)的輸出端,這樣,經(jīng)過一系列的中間環(huán)節(jié),便可將PWM脈沖波轉(zhuǎn)化為交流正弦波形,從而實(shí)現(xiàn)正弦波的輸出,其原理框圖如圖3.2所示。
圖3.2 輸出通道的原理結(jié)構(gòu)
圖3.2中的緩沖電路的作用是對PWM口輸出的數(shù)字量進(jìn)行緩沖,并將電壓拉高
到5V左右,以供后級模擬電路濾波使用。這一部分電路由兩個(gè)芯片組成。一片用三態(tài)緩沖器,由于PWM口的輸出為3.3V的TTL電平,這樣,在設(shè)計(jì)時(shí)就應(yīng)當(dāng)選用輸入具有5V的TTL輸入,CMOS輸出電平的轉(zhuǎn)換芯片(如TI公司的74HCT04);另一片則可選用TOSHIBA公司出品的光電耦合器6N137;輸出端連接的5V精密穩(wěn)壓電源可選用BURR-BROWN公司生產(chǎn)的REF02型精密穩(wěn)壓電源,以輸出標(biāo)準(zhǔn)的5V電壓。
系統(tǒng)中的減法電路的主要作用是把0-10V直流脈動信號的轉(zhuǎn)換成-5~+5V的正弦交流信號,并使其電壓增益為1。設(shè)計(jì)使可利用差分式電路來實(shí)現(xiàn)其功能,為了簡化電路,可以選用較為常用的AD公司的AD524,并將AD524接成電壓跟隨器的形式,同時(shí)適當(dāng)?shù)倪x取電阻以滿足要求,此外,為了使產(chǎn)生的正弦波信號具有2-5mA的驅(qū)動能力,可選用AD624來構(gòu)成末級的信號放大電路。AD624是高精度低噪聲儀用放大器,若外接一只增益電阻,即可得到1-1000之間的任意增益值,其誤差小于1%。由于AD624的建立時(shí)間只有15μs,所以它非常適宜在高速數(shù)據(jù)采集系統(tǒng)中使用。
3.4人機(jī)接口部分
3.4.1 驅(qū)動器設(shè)計(jì)
位驅(qū)動器電路由兩片集成電路組成,即由位驅(qū)動的CMOS芯片和將TTL電平轉(zhuǎn)換成CMOS電平的電平轉(zhuǎn)換芯片組成,電平轉(zhuǎn)換芯片可以和輸出通道的電平轉(zhuǎn)換芯片共用一片74HCT244(本部分使用4路,輸出通道使用3路),其主要作用是對DSP輸出的3.3V TTL電平與5V CMOS電平進(jìn)行匹配,從而帶動具有CMOS電平的位驅(qū)動器,根據(jù)動態(tài)掃描顯示的要求,位驅(qū)動器需要選用每路輸出吸收電流都要大于200mA的芯片,因此,本設(shè)計(jì)選用了TI公司的74LS06來做LED的大電流驅(qū)動器件。
3.4.2 鍵盤設(shè)計(jì)
本系統(tǒng)選用四個(gè)獨(dú)立式按鍵,分別接入PF3-PF6口,并使用四個(gè)220Ω上拉電阻接VCC。所謂獨(dú)立式,就是將每一個(gè)獨(dú)立鍵按一對一地直接接到I/O輸入線上,而在讀鍵值時(shí),直接讀I/O口,每一個(gè)鍵的狀態(tài)通過讀入鍵值的一位(二進(jìn)制位)來反應(yīng),所以這種方式也稱為一維直讀方式,這種方式的查鍵軟件比較簡單,但占用I/O線較多,一般在鍵的數(shù)量較少時(shí)采用,不過,由于DSP芯片有足夠的I/O接口可供使用,因而可大大方便設(shè)計(jì),設(shè)計(jì)時(shí)可以充分利用這一特點(diǎn)來連接硬件,至于按鍵的削抖動措施,則可在軟件中完成。
第4章 軟件設(shè)計(jì)
4.1流程圖
本系統(tǒng)軟件可以按照模塊化設(shè)計(jì)思想來編寫,包括主程序、常數(shù)計(jì)算程序、占空比計(jì)算程序和相應(yīng)的一些功能子程序,主程序用于調(diào)用各功能子程序、初始化變量、查詢鍵盤、判斷顯示數(shù)據(jù)是否需要刷新、同時(shí)判斷一個(gè)脈沖是否完成發(fā)送等工作,具體方案見圖4.1所示的流程圖。
圖4.1 主程序流程圖
在程序中,應(yīng)在第N-1個(gè)脈沖周期里計(jì)算占空比,并在第N個(gè)脈沖周期里輸出波形,這就要求在設(shè)計(jì)時(shí)要在一個(gè)脈沖周期內(nèi)完成計(jì)算,如果選用20MHz的晶振,那么,在一倍頻下,執(zhí)行一條執(zhí)行只需50ns,若輸出400Hz的正弦波,即每一個(gè)周期(即2.5ms)要輸出200個(gè)脈沖,這樣,也就是說,一個(gè)脈沖需要12.5μs(相當(dāng)于12500/50=250條指令)。而執(zhí)行一個(gè)占空比的計(jì)算程序只需要幾十條指令,這種算法從軟件開銷上考慮是可以實(shí)現(xiàn)的。
4.2 正弦信號發(fā)生器程序清單
;This function generates the sine wave of angle using the Taylor expansion
;sin(theta)=x(1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9)))) ;cos(theta)=1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9))) ;sin(2*theta)=2*sin(theta)*cos(theta) .title "sin.asm" .mmregs
.def _c_int00
.ref sinx,d_xs,d_sinx,cosx,d_xc,d_cosx sin_x: .usect "sin_x",360 STACK: .usect "STACK",10 k_theta .set 286 PA0 .set 0 _c_int00
.text
STM #STACK+10,SP STM k_theta,AR0 STM 0,AR1 STM #sin_x,AR6 STM #90,BRC RPTB loop1-1 LDM AR1,A
series
LD #d_xs,DP STL A,@d_xs STL A,@d_xc CALL sinx CALL cosx LD #d_sinx,DP LD @d_sinx,16,A loop1:
loop2: loop3: loop4: sinx:
MPYA STH MAR STM STM RPTB LD STL STM STM RPTB LD NEG STL STM STM STM PORTW B .def .data
@d_cosx B,1,*AR6+ *AR1+0 #sin_x+89,AR7 #88,BRC loop2-1 *AR7-,A A,*AR6+ #179,BRC #sin_x,AR7 loop3-1 *AR7+,A A A,*AR6+ #sin_x,AR6 #1,AR0 #360,bk *AR6+0%,PA0 loop4 d_xs,d_sinx
table_s .word 01c7h .word 030bh .word 0666h .word 1556h d_coef_s .usect "coef_s",4 d_xs .usect "sin_vars",1 d_squr_xs .usect "sin_vars",1 d_temp_s .usect "sin_vars",1 d_sinx .usect "sin_vars",1 c_l_s .usect "sin_vars",1 .text
SSBX FRCT STM #d_coef_s,AR5 RPT #3
MVPD #table_s,*AR5+ STM #d_coef_s,AR3 STM #d_xs,AR2 STM #c_l_s,AR4 ST #7FFFh,c_l_s SQUR *AR2+,A ST A,*AR2 ||LD *AR4,B
MASR *AR2+,*AR3+,B,A MPYA A STH A,*AR2
MASR *AR2-,*AR3+,B,A MPYA *AR2+ ST B,*AR2 ||LD *AR4,B
MASR *AR2-,*AR3+,B,A MPYA *AR2+
ST B,*AR2
||LD *AR4,B
MASR *AR2-,*AR3+,B,A
MPYA d_xs
STH B,d_sinx
RET
cosx:
.def d_xc,d_cosx
d_coef_c .usect "coef_c",4
.data
table_c .word 0249h
.word 0444h
.word 0aabh
.word 4000h
d_xc .usect "cos_vars",1
d_squr_xc .usect "cos_vars",1
d_temp_c .usect "cos_vars",1
d_cosx .usect "cos_vars",1
c_l_c .usect "cos_vars",1
.text
SSBX FRCT
STM #d_coef_c,AR5
RPT #3
MVPD #table_c,*AR5+
STM #d_coef_c,AR3
STM #d_xc,AR2
STM #c_l_c,AR4
ST #7FFFh,c_l_c
SQUR *AR2+,A
ST A,*AR2
||LD *AR4,B
MASR *AR2+,*AR3+,B,A
MPYA A
STH A,*AR2
MASR *AR2-,*AR3+,B,A
MPYA *AR2+
ST B,*AR2
||LD *AR4,B
MASR *AR2-,*AR3+,B,A
SFTA A,-1,A
NEG A
MPYA *AR2+
MAR *AR2+
RETD
ADD *AR4,16,B
STH B,*AR2
RET
.end
MEMORY
{
PAGE 0:
EPROM: org=0E000h, len=1000h
VECS: org=0FF80h, len=0080h
PAGE 1:
SPRAM: org=0060h, len=0020h
DARAM1: org=0080h, len=0010h
DARAM2: org=0090h, len=0010h
DARAM3: org=0200h, len=0200h
}
SECTIONS
{
.text :>EPROM PAGE 0
.data :>EPROM PAGE 0
STACK :>SPRAM PAGE 1
sin_vars :>DARAM1 PAGE 1
coef_s :>DARAM1 PAGE 1
cos_vars :>DARAM2 PAGE 1
coef_c :>DARAM2 PAGE 1
sin_x : align(512){ } > DARAM3 PAGE 1
.vectors :>VECS PAGE 0
}
.title "sin_v.asm"
.ref _c_int00
.sect ".vectors"
B _c_int00
.end
第5章 總結(jié)
本次課程設(shè)計(jì)中遇到一些課堂中從未有過的問題,通過網(wǎng)絡(luò)查找和同學(xué)交流,大大促進(jìn)了設(shè)計(jì)進(jìn)程。并在過程中進(jìn)一步提高自身的創(chuàng)作、創(chuàng)新水平,扎實(shí)基礎(chǔ),擴(kuò)展所學(xué)。并且此次課程設(shè)計(jì),基于課程理論知識和網(wǎng)上資料,使我對數(shù)字信號處理課程有了更深一步的了解和掌握,對利用CCS軟件編程的數(shù)字信號處理方法有了進(jìn)一步的了解。在理論課的基礎(chǔ)上進(jìn)行實(shí)驗(yàn)實(shí)習(xí),是對本門課程的深入學(xué)習(xí)和掌握,在以后的工作學(xué)習(xí)中,數(shù)字信號的處理都是采用計(jì)算機(jī)仿真的方法進(jìn)行測試,因此,掌握基于計(jì)算機(jī)的數(shù)字信號處理方法對以后的工作和學(xué)習(xí)有很大的幫助。這樣一個(gè)課程設(shè)計(jì)對我們的發(fā)展有著極大的幫助!
參考文獻(xiàn)
[1] 戴明幀.數(shù)字信號處理的硬件實(shí)現(xiàn)[M].北京:航空工業(yè)出版社,1988
[2] 張偉雄,陳亮,徐光輝.DSP集成開發(fā)與應(yīng)用實(shí)例[M]。北京:電子工業(yè)出版社
[3] 劉湘濤、江世民.單片機(jī)原理與應(yīng)用[M].電子工業(yè)出版社, 2006.
[4] 戴明楨,周建江.TMS320C54XDSP結(jié)構(gòu),原理及應(yīng)運(yùn)[M]北京航空航天出版社
[5] 趙紅怡.DSP技術(shù)與應(yīng)用實(shí)例.西安:電子工業(yè)出版社,2009
【基于dsp的正弦波信號發(fā)生器課程設(shè)計(jì)】相關(guān)文章:
基于DSP和FPGA的筆劃字符發(fā)生器設(shè)計(jì)04-26
基于DSP測量組合導(dǎo)航系統(tǒng)設(shè)計(jì)05-02
基于DSP的微型飛行器磁羅盤04-30
模擬電感與集成化混沌信號發(fā)生器實(shí)現(xiàn)研究04-29
基于DSP的GPS/DR組合定位系統(tǒng)的設(shè)計(jì)04-29
基于多DSP的干涉超光譜復(fù)原系統(tǒng)設(shè)計(jì)04-28
基于RTW電控旋翼控制律的DSP實(shí)現(xiàn)04-26
基于路面激勵的汽車振動信號處理04-26
基于HLA雷達(dá)信號建模仿真04-26