[畢業(yè)設(shè)計精品]基于DSP系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計A_第1頁
[畢業(yè)設(shè)計精品]基于DSP系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計A_第2頁
[畢業(yè)設(shè)計精品]基于DSP系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計A_第3頁
[畢業(yè)設(shè)計精品]基于DSP系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計A_第4頁
[畢業(yè)設(shè)計精品]基于DSP系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計A_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 dspdsp 嵌入式通信系統(tǒng)嵌入式通信系統(tǒng) 課程設(shè)計報告課程設(shè)計報告題目:題目:基于基于 dspdsp 系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計 學(xué)院:學(xué)院: 專業(yè):專業(yè): 通信工程通信工程 班級:班級: 通信通信 0815208152 學(xué)號:學(xué)號: 姓名:姓名: 指導(dǎo)老師:指導(dǎo)老師: 20122012 年年 1 1 月月 2 2 日日 課課 程程 設(shè)設(shè) 計計 任任 務(wù)務(wù) 書書分院(系) 專業(yè)通信工程學(xué)生姓名學(xué)號 設(shè)計題目 基于 dsp 系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計內(nèi)容及要求:內(nèi)容及要求:1. 使用 dsp 芯片設(shè)計計時器 2. 使用數(shù)碼管顯示時間 3. 使用鍵盤修改時間進度安排:

2、進度安排:2011 年 12 月 28 日 選題、查閱資料及編寫軟件程序(或硬件原理圖設(shè)計) 。2011 年 12 月 29 日 課外上機調(diào)試程序及仿真。2011 年 12 月 31 日 調(diào)試出結(jié)果、調(diào)試結(jié)果驗收并寫報告。2011 年 01 月 01-02 日 修改報告及提交報告電子版(修改之后) 。2012 年 01 月 04 日 正式提交報告(打印版)及參加第一次答辯。目目 錄錄摘 要 .11 基于 dsp 系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計相關(guān)知識 .21.1 tms320c55x開發(fā)環(huán)境.21.2 計時器.21.3 中斷.32.基于 dsp 系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計原理.42.1 計時器計時

3、程序.42.2 計時器輸出程序.42.3 按鍵輸入程序.42.4 程序流程圖.53.基于 dsp 系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計編程及注釋.63.1 計時器計時程序.63.2 計時器輸出程序.103.3 按鍵輸入程序.113.4 sdram 初始化程序.133.5 命令文件.154. ccs、ads、matlab 系統(tǒng)仿真、波形分析附圖.165.總 結(jié).19致 謝 .20參考文獻 .210摘摘 要要dsp 芯片既具有高速數(shù)字信號處理功能又具有實時性強、功耗低、集成度高等嵌入式微計算機的特點,所以隨著科技的發(fā)展,dsp 技術(shù)在機電控制領(lǐng)域的應(yīng)用愈加廣泛。led 數(shù)碼管顯示清晰美觀、功耗低,現(xiàn)在已成為

4、電子產(chǎn)品中應(yīng)用最廣泛的顯示方式。本次課程設(shè)計就是通過對 dsp 芯片和數(shù)碼管的分析研究,利用 dspc55x 構(gòu)建一個時間顯示系統(tǒng),采用數(shù)碼管顯示時間,用按鍵調(diào)整時間。該時鐘系統(tǒng)包括計時、時鐘輸出、按鍵輸入三個設(shè)計部分。并給出了各部分匯編程序。關(guān)鍵字關(guān)鍵字:dsp 芯片;數(shù)碼管;按鍵;匯編程序11.1. 基于基于 dspdsp 系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計相關(guān)知識系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計相關(guān)知識1.1.1 1 tms320c55xtms320c55x 開發(fā)開發(fā)環(huán)境環(huán)境c55x 編程可以采用匯編語言,也可以采用 c/c+語言,本次編程主要采用匯編語言完成,所以執(zhí)行效率高。c55x 的軟件開發(fā)環(huán)境

5、是 ccs v3.1(code composer studio) ,是 it 公司推出的用于開發(fā) dsp芯片的集成環(huán)境,它集編輯、編譯、鏈接、軟件仿真、硬件調(diào)試、以及實時跟蹤功能于一體。1.21.2 計時器計時器tms320vc5509 dsp 有兩個獨立的 20 bit 軟件可編程通用減數(shù)計數(shù)定時器,它們可用于向 cpu提供周期性的中斷信號,或者給 dma 控制器發(fā)送中期同步事件,也可以用于給外部設(shè)備提供周期信號,還可以用于外部事件計數(shù)。定時器的工作始終可以來自 dsp 內(nèi)部的 cpu 時鐘,也可以來自引腳 tin/tout。利用定時器控制寄存器(tcr)中的字段 func 可以確定輸入時鐘

6、源和 tin/tout 引腳功能。在定時器中,預(yù)定標記計數(shù)寄存器(psc)由輸入時鐘驅(qū)動,psc 在每個輸入時鐘周期減 1。當其減到 0 時,tim 減 1,當 tim 減到 0 時,定時器向 cpu 發(fā)出一個中斷請求(tint)或者向 dma 控制器發(fā)送同步事件。定時器發(fā)送中斷信號或同步事件信號的頻率可用下公式計算,即tint 頻率=輸入時鐘頻率/【(tddt+1)*(prd+1) 】定時器初始化步驟如下:(1)停止定時器(tss=1) ,定時器裝載時能(tlb=1) ,定時器控制寄存器 tcr 的其他位設(shè)置成對應(yīng)數(shù)值。(2)裝載欲分頻計數(shù)周期寄存器 prsc。(3)裝載主周期寄存器 prd

7、。(4)關(guān)閉定時器裝載(tlb=0) ,啟動定時器(tss=0) 。 dsp 復(fù)位(1)停止定時(tss=1)(2)預(yù)定標計數(shù)器值為 0(3)住計數(shù)器值為 ffffh(4)定時器不進行自動重裝(arb=0)2(5)idle 指示不能使定時器進入省電模式(6)仿真時遇到軟件斷點定時器立即停止工作(7)tin/tout 為高電阻,時鐘源是內(nèi)部時鐘(func=00b)1.31.3 中斷中斷中斷是由硬件或軟件驅(qū)動的信號,使 dsp 將當前的程序掛起,執(zhí)行另外一個稱為中斷服務(wù)子程序(isr)的任務(wù)。c5x 支持 32 個 isr。中斷可以分成可屏蔽中斷和不可屏蔽中斷兩類。可屏蔽中斷可以通過軟件來加以屏蔽

8、,不可屏蔽中斷則不能被屏蔽。所有的軟件中斷都是不可屏蔽中斷。dsp 處理中斷的步驟如下:(1)接收中斷請求。軟件和硬件都要求 dsp 將當前程序掛起。(2)相應(yīng)中斷。cpu 必須響應(yīng)中斷。如果是可屏蔽中斷,響應(yīng)必須滿足某些條件;如果是不可屏蔽中斷,則 cpu 立即響應(yīng)。(3)準備進去中斷服務(wù)子程序。cpu 要執(zhí)行的主要任務(wù)有:完成當前指令的執(zhí)行,并沖掉流水線上還未解碼的指令。自動將某些必要的寄存器的值保存到數(shù)據(jù)堆棧和系統(tǒng)堆棧。從用戶事先設(shè)置好的向量地址獲取中斷向量,該中斷向量指向中斷服務(wù)子程序。(4)執(zhí)行中斷服務(wù)子程序。cpu 執(zhí)行用戶編寫的 isr。isr 以一條中斷返回指令結(jié)束,自動回復(fù)步

9、驟(3)中自動保存的寄存器值。注意:外部中斷只能發(fā)生在 cpu 退出復(fù)位后的至少 3 個周期后,否則無效。在硬件復(fù)位后,不論 intm 位的設(shè)置和寄存器 ier0、ier1 的值如何,所有的中斷都被禁止,直到通過軟件初始化堆棧后才開放中斷。32.2. 基于基于 dspdsp 系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計原理系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計原理數(shù)字時鐘除基本的計時功能外還要可以通過按鍵設(shè)定時間,所以除了主循環(huán)程序和輸出程序外還要有按鍵判斷程序,來設(shè)定時間。程序設(shè)計為三大部分:時鐘計時程序是程序、時鐘輸出程序、按鍵輸入程序,除此外還有 sdram 初始化程序和命令文件。2.12.1 計時器計時器計時程序計

10、時程序時鐘計時程序是主程序,由 cup 提供輸入時鐘信號,再由 dsp 的片上外設(shè)通用定時器完成計時功能,其中可以通過中斷次數(shù)來計數(shù)。設(shè)定寄存器 ar1、ar2、ar3 分別保存時鐘的秒、分、時。設(shè)cpu 時鐘為 144mhz,當 psc=15;tim=59999 可以計算出中斷頻率是 1/150hz,所以用 ar0 做計數(shù)器,每 150 次中斷時鐘的秒(ar1)自動加 1,并判斷是否等于 60,等于 60 則時鐘的分(ar2)自動加1,時鐘的秒(ar1)清零;不等于 60 跳轉(zhuǎn)到等待中斷程序,再次計數(shù) 150 次中斷。其中時鐘的分(ar2)加 1 時也要判斷是否滿 60,而時鐘的時加 1 時

11、要判斷是否滿 12。2.22.2 計時器計時器輸出程序輸出程序時鐘輸出程序,是將時鐘的秒、分、時,輸出到外設(shè)數(shù)碼管上。設(shè):時鐘秒的個位十位、分的個位十位、時的個位十位對應(yīng)的數(shù)碼管地址分別為是0100h、0101h、0102h、0103h、0104h、0105h。想將時鐘計時程序中的秒、分、時的個位十位提取出,只需除以數(shù)字 10,商為十位,余數(shù)是個位,分別輸出至數(shù)碼管即可。2.32.3 按鍵輸入程序按鍵輸入程序按鍵輸入程序的功能是,通過外部按鍵設(shè)置時鐘的分、時。設(shè)按鍵 s1、s2、s3、地址分別為:0200、0201、0202。定為當 s1 按下時進去時鐘輸入程序,讓 cpu 隨時讀取按鍵 s1

12、 的地址,判斷是否置一(設(shè)按鍵按下為高電平) ,置一則進入時鐘輸入程序,程序開頭設(shè)定一個延時子程序,防止電子顫抖,進入時鐘輸入程序后,再讀取 s2、s3 的地址是否置一,分別讓 ar3、ar2 加 1(加 1 后判斷是否溢出),當 s1、s2、s3 都為 0 時退出時鐘輸入程序回到時鐘計時程序。42.42.4 程序流程圖程序流程圖圖 3.1 程序流程圖53.3. 基于基于 dspdsp 系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計編程及注釋系統(tǒng)計時器系統(tǒng)的嵌入式設(shè)計編程及注釋3.13.1 計時器計時器計時程序計時程序 .title shizhong.asm .mmregs .def _c_int00 ;程序入口

13、 .def _timer0 ;timer0 中斷服務(wù)程序入口 .ref shuchu ;引用外部變量,時鐘輸出程序入口 .ref key ;引用外部變量,按鍵輸入程序入口 .ref sdram_init ;引用外部變量 sdram 初始化程序入口led .set 400001htim0 .set 0 x1000prd0 .set 0 x1001tcr0 .set 0 x1002prsc0 .set 0 x1003sysr .set 0 x07fd clkmd .set 0 x1c00 ;時鐘模塊寄存器地址 pdp_timer0 .set tim0/128stack .usect .stack,

14、200h ;分配堆棧空間sysstack .usect .sysstack,200h .dataled_i .word 1,2,4,8,4,2 .sect .vectorsrsv: b _c_int00 nop .align 8nmi: .loop 8 nop.endloop6int0: .loop 8 nop.endloopint2: .loop 8 nop.endlooptint0: b _timer0 nop.align 8;=;主程序;= .text_c_int00: amov #0h,xar1 ;初始化時鐘的秒 amov #0h,xar2 ;初始化時鐘的分 amov #0h,xar3

15、 ;初始化時鐘的時 amov #0,xdp amov #stack+200h,xsp amov #sysstack+200h,xsspinterupt: ;初始化中斷 bset intm mov #1,ivpd mov #1,ivph mov #10h,ier0 mov #10h,dbier0 mov #0,ier1 mov #0ffffh,ifr0 mov #0ffffh,ifr1 call sdram_init ;調(diào)用 sdram 初始化程序7 call shuchu ;調(diào)用時鐘輸出子程序;=;初始化定時器并啟動計時器;= mov #pdp_timer0,pdp mov #149,ar0

16、mov #0438h,port(#tcr0) mov #15,port(#prsc0) mov #59999,port(#prd0) and #0fbefh,port(#tcr0) ;停止從周期寄存器裝入并啟動定時器 bclr intm ;使能全局中斷bset ar5lc amov #led,xar4 mov #6,bk03 amov #led_i,xar5 mov #led_i,bsa23 mov #0,ar5loop: nop b loop ;等待中斷 ;= ;中斷服務(wù)程序;=_timer0: mov *ar5,*ar4 bcc next1,ar0!=#0h ;判斷是否中斷 150 次 m

17、ov #149,ar0 ;重新裝載計數(shù)器重新計數(shù) amar *ar1+ ;時鐘秒自動加 1 call shuchu bcc fen,ar1 =#3ch ;判斷 ar1 是否滿 60 b next28fen: mov #0,ar1 amar *ar2+ call shuchu bcc shi,ar2 =#3ch b next2shi: mov #0,ar2 amar *ar3+ call shuchu bcc loop1,ar3 =#0ch b next2loop1: mov #0,ar3 b next2next1: amar *ar0-next2: mov port(#0200),ar6 ;讀

18、取 s1 按鍵裝載到 ar4 bcc loop2,ar6!=#1h call key ;當按鍵 s1 按下時調(diào)用按鍵子程序 loop2: reti ;中斷返回 .end93.23.2 計時器計時器輸出程序輸出程序 .def shuchu .data .text shuchu: bclr sxmd ;清零 sxmd(關(guān)閉符號擴展) mov #10,ar6 ;設(shè)置除數(shù)為 10 mov ar1,ac0 ;把被除數(shù)(秒)放入 ac0 rpt #15 ;執(zhí)行 subc16 次 subc ar6,ac0,ac0 ;條件減法 mov ac0,port(#0101h) ;將商輸出到秒的十位 mov hi(ac

19、0),port(#0100h) ;將余數(shù)輸出到秒的個位 mov ar2,ac0 ;把被除數(shù)(分)放入 ac0 rpt #0fh ;執(zhí)行 subc16 次 subc ar6,ac0,ac0 mov ac0,port(#0103h) ;將商輸出到分的十位 mov hi(ac0),port(#0102h) ;將余數(shù)輸出到分的個位 mov ar3,ac0 ;把被除數(shù)(時)放入 ac0 rpt #0fh ;執(zhí)行 subc16 次 subc ar6,ac0,ac0 mov ac0,port(#0105h) ;將商輸出到時的十位 mov hi(ac0),port(#0104h) ;將余數(shù)輸出到時的個位 re

20、t .end103.33.3 按鍵輸入程序按鍵輸入程序 .def key .ref shuchu .textkey:;=;延時;= mov #500,ar5l1: amar *ar5- mov #10,ar4l2: amar *ar4- bcc l2,ar4!=#0h bcc l1,ar5!=#0h mov port(#0200h),ar6 bcc l, ar6=#0h ;按鍵 s1 電平消失跳轉(zhuǎn)到 l 退出程序 mov port(#0201h),ar6 bcc shi,ar6!=#0h ;按鍵 s2 按下(高電平)跳轉(zhuǎn) mov port(#0202h),ar6 bcc fen,ar6!=#0

21、h ;按鍵 s3 按下(高電平)跳轉(zhuǎn)shi: amar *ar3+ bcc yichu1,ar3 =#0ch ;判斷是否溢出 call shuchu ;調(diào)用時鐘輸出子程序 b keyyichu1: mov #0,ar3 call shuchu ;調(diào)用時鐘輸出子程序 b key fen: amar *ar2+ bcc yichu2,ar2 =#3ch11 call shuchu ;調(diào)用時鐘輸出子程序 b keyyichu2: mov #0,ar3 call shuchu ;調(diào)用時鐘輸出子程序 b keyl: ret .end 123.43.4 sdramsdram 初始化程序初始化程序 .def

22、 sdram_initebsr .set 0 x6c00egcr .set 0 x800emirst .set 0 x801emibe .set 0 x802ce01 .set 0 x803ce02 .set 0 x804ce03 .set 0 x805ce11 .set 0 x806ce12 .set 0 x807ce13 .set 0 x808ce21 .set 0 x809ce22 .set 0 x80ace23 .set 0 x80bce31 .set 0 x80cce32 .set 0 x80dce33 .set 0 x80esdc1 .set 0 x80esdper .set 0

23、x810sdcnt .set 0 x811init .set 0 x812sdc2 .set 0 x813sdram_pdp .set egcr/128 .textsdram_init: mov #0 xa01,port(#ebsr) mov #sdram_pdp,pdp mov #0 x220,port(#egcr)13 mov #0 x3000,port(#ce01) mov #0 x1fff,port(#ce11) mov #0 x1fff,port(#ce21) mov #0 x1fff,port(#ce31) mov #0 x0,port(#emirst) mov #0 x5958,

24、port(#sdc1) mov #0 x38f,port(#sdc2) mov #0 x0,port(init) ret .end143.53.5 命令文件命令文件-stack 200h -sysstack 200hmemory page 0: mmr : origin = 0000000h, length = 00000c0h spram : origin = 00000c0h, length = 0000040h vecs :origin = 0000100h, length = 0000100h daram0 : origin = 0000200h, length = 0001e00h

25、daram1 : origin = 0002000h, length = 0002000h daram2 : origin = 0004000h, length = 0002000h daram3 : origin = 0006000h, length = 0002000h daram4 : origin = 0008000h, length = 0002000h daram5 : origin = 000a000h, length = 0002000hdaram6 : origin = 000c000h, length = 0002000h daram7 : origin = 000e000h, length = 0002000hsections.vectors : vecs page 0 .bss: daram0 page 0 .stack: daram1 page 0 .sysstack: daram1 page 0 .text : daram4 page 0 .data: daram5 page 015 4.4. ccsccs、adsads、matlabmatlab 系統(tǒng)仿真、波形分析附圖系統(tǒng)仿真、波形分析附圖165.5.總總 結(jié)結(jié)通過調(diào)試以上程序運行無誤,完成了時鐘設(shè)計要求,使用 dsp 芯片設(shè)計時鐘;使用數(shù)碼管顯示時間;使用鍵盤修改時間。通

溫馨提示

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

評論

0/150

提交評論