基于TMS320C55X的DSP時(shí)鐘設(shè)計(jì)_第1頁
基于TMS320C55X的DSP時(shí)鐘設(shè)計(jì)_第2頁
基于TMS320C55X的DSP時(shí)鐘設(shè)計(jì)_第3頁
基于TMS320C55X的DSP時(shí)鐘設(shè)計(jì)_第4頁
基于TMS320C55X的DSP時(shí)鐘設(shè)計(jì)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

成績?cè)u(píng)定表學(xué)生姓名班級(jí)學(xué)號(hào)專業(yè)電子信息工程課程設(shè)計(jì)題目時(shí)鐘設(shè)計(jì)評(píng)語組長簽字:成績?nèi)掌?023年1月日課程設(shè)計(jì)任務(wù)書學(xué)院信息科學(xué)與工程學(xué)院專業(yè)電子信息工程學(xué)生姓名班級(jí)學(xué)號(hào)課程設(shè)計(jì)題目時(shí)鐘設(shè)計(jì)實(shí)踐教學(xué)要求與任務(wù):1.使用DSP芯片設(shè)計(jì)時(shí)鐘2.使用數(shù)碼管顯示時(shí)間3.使用鍵盤修改時(shí)間工作方案與進(jìn)度安排:2023年12月31日 選題、查閱資料及編寫軟件程序〔或硬件原理圖設(shè)計(jì)〕。2023年01月01-11日 課內(nèi)上機(jī)調(diào)試程序及仿真。2023年01月01-11日 課外上機(jī)調(diào)試程序及仿真。2023年01月01-11日 調(diào)試出結(jié)果、調(diào)試結(jié)果驗(yàn)收并寫報(bào)告。2023年01月01-11日修改報(bào)告及提交報(bào)告電子版〔修改之后〕。2023年01月01-11日正式提交報(bào)告〔打印版〕及參加第一次辯論。指導(dǎo)教師:2023年1月日專業(yè)負(fù)責(zé)人:2023年1月日學(xué)院教學(xué)副院長:2023年1月日摘要DSP芯片既具有高速數(shù)字信號(hào)處理功能又具有實(shí)時(shí)性強(qiáng)、功耗低、集成度高等嵌入式微計(jì)算機(jī)的特點(diǎn),所以隨著科技的開展,DSP技術(shù)在機(jī)電控制領(lǐng)域的應(yīng)用愈加廣泛。LED數(shù)碼管顯示清晰美觀、功耗低,現(xiàn)在已成為電子產(chǎn)品中應(yīng)用最廣泛的顯示方式。本次課程設(shè)計(jì)就是通過對(duì)DSP芯片和數(shù)碼管的分析研究,利用DSPC55x構(gòu)建一個(gè)時(shí)間顯示系統(tǒng),采用數(shù)碼管顯示時(shí)間,用按鍵調(diào)整時(shí)間。該時(shí)鐘系統(tǒng)包括計(jì)時(shí)、時(shí)鐘輸出、按鍵輸入三個(gè)設(shè)計(jì)局部。并給出了各局部匯編程序。關(guān)鍵字:DSP芯片;數(shù)碼管;按鍵;匯編程序目錄1緒論12相關(guān)知識(shí)22.1TMS320C55x開發(fā)環(huán)境22.2定時(shí)器22.3中斷33設(shè)計(jì)原理43.1時(shí)鐘計(jì)時(shí)程序43.2時(shí)鐘輸出程序43.3按鍵輸入程序43.4程序流程圖54設(shè)計(jì)編程及注釋64.1時(shí)鐘計(jì)時(shí)程序64.2時(shí)鐘輸出程序94.3按鍵輸入程序104.4SDRAM初始化程序114.5命令文件13總結(jié)15個(gè)人心得16參考文獻(xiàn)171緒論近年來數(shù)字化已成為現(xiàn)代信息技術(shù)的重要標(biāo)志,數(shù)字相機(jī)、數(shù)字電視、是自收音機(jī)、數(shù)字、數(shù)字學(xué)習(xí)機(jī)、數(shù)字游戲機(jī)已經(jīng)逐漸進(jìn)入人們?nèi)粘I詈凸ぷ髦?。在我國?shù)字已擁有數(shù)億用戶,MP3成為上億青年學(xué)生的寵兒,數(shù)字電視已開始進(jìn)入千家萬戶,這些產(chǎn)品均采用DSP對(duì)信號(hào)進(jìn)行處理。隨著DSP技術(shù)的迅速開展,其不僅使信號(hào)處理能力更加完善,而且使系統(tǒng)開發(fā)更加方便、程序編輯調(diào)試更加靈活,功耗也進(jìn)一步降低,本錢不斷下降。尤其是將各種通用外設(shè)集成到芯片上,從而大大提高了數(shù)字信號(hào)處理能力。DSP芯片不僅在通信、計(jì)算機(jī)領(lǐng)域得到廣發(fā)應(yīng)用,而且也逐漸滲透到人們的日常消費(fèi)領(lǐng)域中。這就迫切要求理工科大學(xué)生熟悉和掌握DSP芯片功能及其在實(shí)際中的應(yīng)用方法,除通過實(shí)驗(yàn)教學(xué)培養(yǎng)DSP的根本實(shí)驗(yàn)方法、分析問題和故障檢查方法以及雙蹤示波器等常用儀器使用方法等根本電路的根本實(shí)驗(yàn)技能外,還必須培養(yǎng)大學(xué)生工程設(shè)計(jì)和組織實(shí)驗(yàn)?zāi)芰?。本次課程設(shè)計(jì)的目的在于培養(yǎng)學(xué)生對(duì)根本DSP芯片功能的應(yīng)用和掌握,使學(xué)生在試驗(yàn)原理的指導(dǎo)下,初步具備根本程序的分析和設(shè)計(jì)能力,并掌握其應(yīng)用方法:自行擬定實(shí)驗(yàn)步驟檢查和排除故障、分析和處理實(shí)驗(yàn)結(jié)果及撰寫報(bào)告的能力。綜合實(shí)驗(yàn)的實(shí)際目的是培養(yǎng)學(xué)生初步掌握小型DSP系統(tǒng)的設(shè)計(jì)能力,提高實(shí)驗(yàn)技能的實(shí)踐。數(shù)字電子鐘是一種計(jì)時(shí)裝置,它具有時(shí)、分、秒計(jì)時(shí)功能和顯示時(shí)間功能;能夠通過按鍵調(diào)整時(shí)間。本次設(shè)計(jì)我查閱了大量的文獻(xiàn)資料,學(xué)習(xí)到了很過關(guān)于DSP定時(shí)器和中斷的知識(shí),并且更加穩(wěn)固和掌握了課堂上所學(xué)的課本知識(shí),是自己對(duì)DSP技術(shù)有了更進(jìn)一步的認(rèn)識(shí)和了解。2相關(guān)知識(shí)2.1TMS320C55x開發(fā)環(huán)境C55x編程可以采用匯編語言,也可以采用C/C++語言,本次編程主要采用匯編語言完成,所以執(zhí)行效率高。C55x的軟件開發(fā)環(huán)境是CCSv3.1〔CodeComposerStudio〕,是IT公司推出的用于開發(fā)DSP芯片的集成環(huán)境,它集編輯、編譯、鏈接、軟件仿真、硬件調(diào)試、以及實(shí)時(shí)跟蹤功能于一體。2.2定時(shí)器TMS320VC5509DSP有兩個(gè)獨(dú)立的20bit軟件可編程通用減數(shù)計(jì)數(shù)定時(shí)器,它們可用于向CPU提供周期性的中斷信號(hào),或者給DMA控制器發(fā)送中期同步事件,也可以用于給外部設(shè)備提供周期信號(hào),還可以用于外部事件計(jì)數(shù)。定時(shí)器的工作始終可以來自DSP內(nèi)部的CPU時(shí)鐘,也可以來自引腳TIN/TOUT。利用定時(shí)器控制存放器〔TCR〕中的字段FUNC可以確定輸入時(shí)鐘源和TIN/TOUT引腳功能。在定時(shí)器中,預(yù)定標(biāo)記計(jì)數(shù)存放器〔PSC〕由輸入時(shí)鐘驅(qū)動(dòng),PSC在每個(gè)輸入時(shí)鐘周期減1。當(dāng)其減到0時(shí),TIM減1,當(dāng)TIM減到0時(shí),定時(shí)器向CPU發(fā)出一個(gè)中斷請(qǐng)求〔TINT〕或者向DMA控制器發(fā)送同步事件。定時(shí)器發(fā)送中斷信號(hào)或同步事件信號(hào)的頻率可用下公式計(jì)算,即TINT頻率=輸入時(shí)鐘頻率/【〔TDDT+1〕*〔PRD+1〕】定時(shí)器初始化步驟如下:〔1〕停止定時(shí)器〔TSS=1〕,定時(shí)器裝載時(shí)能〔TLB=1〕,定時(shí)器控制存放器TCR的其他位設(shè)置成對(duì)應(yīng)數(shù)值。〔2〕裝載欲分頻計(jì)數(shù)周期存放器PRSC?!?〕裝載主周期存放器PRD?!?〕關(guān)閉定時(shí)器裝載〔TLB=0〕,啟動(dòng)定時(shí)器〔TSS=0〕。DSP復(fù)位〔1〕停止定時(shí)〔TSS=1〕〔2〕預(yù)定標(biāo)計(jì)數(shù)器值為0〔3〕住計(jì)數(shù)器值為FFFFh〔4〕定時(shí)器不進(jìn)行自動(dòng)重裝〔ARB=0〕〔5〕IDLE指示不能使定時(shí)器進(jìn)入省電模式〔6〕仿真時(shí)遇到軟件斷點(diǎn)定時(shí)器立即停止工作〔7〕TIN/TOUT為高電阻,時(shí)鐘源是內(nèi)部時(shí)鐘〔FUNC=00b〕2.3中斷中斷是由硬件或軟件驅(qū)動(dòng)的信號(hào),使DSP將當(dāng)前的程序掛起,執(zhí)行另外一個(gè)稱為中斷效勞子程序〔ISR〕的任務(wù)。C5x支持32個(gè)ISR。中斷可以分成可屏蔽中斷和不可屏蔽中斷兩類。可屏蔽中斷可以通過軟件來加以屏蔽,不可屏蔽中斷那么不能被屏蔽。所有的軟件中斷都是不可屏蔽中斷。DSP處理中斷的步驟如下:〔1〕接收中斷請(qǐng)求。軟件和硬件都要求DSP將當(dāng)前程序掛起。〔2〕相應(yīng)中斷。CPU必須響應(yīng)中斷。如果是可屏蔽中斷,響應(yīng)必須滿足某些條件;如果是不可屏蔽中斷,那么CPU立即響應(yīng)?!?〕準(zhǔn)備進(jìn)去中斷效勞子程序。CPU要執(zhí)行的主要任務(wù)有:完成當(dāng)前指令的執(zhí)行,并沖掉流水線上還未解碼的指令。自動(dòng)將某些必要的存放器的值保存到數(shù)據(jù)堆棧和系統(tǒng)堆棧。從用戶事先設(shè)置好的向量地址獲取中斷向量,該中斷向量指向中斷效勞子程序?!?〕執(zhí)行中斷效勞子程序。CPU執(zhí)行用戶編寫的ISR。ISR以一條中斷返回指令結(jié)束,自動(dòng)回復(fù)步驟〔3〕中自動(dòng)保存的存放器值。注意:外部中斷只能發(fā)生在CPU退出復(fù)位后的至少3個(gè)周期后,否那么無效。在硬件復(fù)位后,不管INTM位的設(shè)置和存放器IER0、IER1的值如何,所有的中斷都被禁止,直到通過軟件初始化堆棧后才開放中斷。3設(shè)計(jì)原理數(shù)字時(shí)鐘除根本的計(jì)時(shí)功能外還要可以通過按鍵設(shè)定時(shí)間,所以除了主循環(huán)程序和輸出程序外還要有按鍵判斷程序,來設(shè)定時(shí)間。程序設(shè)計(jì)為三大局部:時(shí)鐘計(jì)時(shí)程序是程序、時(shí)鐘輸出程序、按鍵輸入程序,除此外還有SDRAM初始化程序和命令文件。3.1時(shí)鐘計(jì)時(shí)程序時(shí)鐘計(jì)時(shí)程序是主程序,由CUP提供輸入時(shí)鐘信號(hào),再由DSP的片上外設(shè)通用定時(shí)器完成計(jì)時(shí)功能,其中可以通過中斷次數(shù)來計(jì)數(shù)。設(shè)定存放器AR1、AR2、AR3分別保存時(shí)鐘的秒、分、時(shí)。設(shè)CPU時(shí)鐘為144MHz,當(dāng)PSC=15;TIM=59999可以計(jì)算出中斷頻率是1/150Hz,所以用AR0做計(jì)數(shù)器,每150次中斷時(shí)鐘的秒〔AR1〕自動(dòng)加1,并判斷是否等于60,等于60那么時(shí)鐘的分〔AR2〕自動(dòng)加1,時(shí)鐘的秒〔AR1〕清零;不等于60跳轉(zhuǎn)到等待中斷程序,再次計(jì)數(shù)150次中斷。其中時(shí)鐘的分〔AR2〕加1時(shí)也要判斷是否滿60,而時(shí)鐘的時(shí)加1時(shí)要判斷是否滿12。3.2時(shí)鐘輸出程序時(shí)鐘輸出程序,是將時(shí)鐘的秒、分、時(shí),輸出到外設(shè)數(shù)碼管上。設(shè):時(shí)鐘秒的個(gè)位十位、分的個(gè)位十位、時(shí)的個(gè)位十位對(duì)應(yīng)的數(shù)碼管地址分別為是0100h、0101h、0102h、0103h、0104h、0105h。想將時(shí)鐘計(jì)時(shí)程序中的秒、分、時(shí)的個(gè)位十位提取出,只需除以數(shù)字10,商為十位,余數(shù)是個(gè)位,分別輸出至數(shù)碼管即可。3.3按鍵輸入程序按鍵輸入程序的功能是,通過外部按鍵設(shè)置時(shí)鐘的分、時(shí)。設(shè)按鍵S1、S2、S3、地址分別為:0200、0201、0202。定為當(dāng)S1按下時(shí)進(jìn)去時(shí)鐘輸入程序,讓CPU隨時(shí)讀取按鍵S1的地址,判斷是否置一〔設(shè)按鍵按下為高電平〕,置一那么進(jìn)入時(shí)鐘輸入程序,程序開頭設(shè)定一個(gè)延時(shí)子程序,防止電子顫抖,進(jìn)入時(shí)鐘輸入程序后,再讀取S2、S3的地址是否置一,分別讓AR3、AR2加1〔加1后判斷是否溢出〕,當(dāng)S1、S2、S3都為0時(shí)退出時(shí)鐘輸入程序回到時(shí)鐘計(jì)時(shí)程序。3.4程序流程圖圖3.1程序流程圖4設(shè)計(jì)編程及注釋4.1時(shí)鐘計(jì)時(shí)程序.title"shizhong.asm".mmregs.def_c_int00;程序入口.def_Timer0;Timer0中斷效勞程序入口.refshuchu;引用外部變量,時(shí)鐘輸出程序入口.refkey;引用外部變量,按鍵輸入程序入口.refsdram_init;引用外部變量SDRAM初始化程序入口LED.set400001hTIM0.set0x1000PRD0.set0x1001TCR0.set0x1002PRSC0.set0x1003SYSR.set0x07fdCLKMD.set0x1c00;時(shí)鐘模塊存放器地址PDP_Timer0.setTIM0/128STACK.usect".stack",200h;分配堆??臻gSYSSTACK.usect".sysstack",200h.dataLED_I.word1,2,4,8,4,2.sect".vectors"rsv:b_c_int00nop .align8nmi:.loop8nop .endloopint0:.loop8nop .endloopint2:.loop8nop .endlooptint0:b_Timer0nop .align8;=================================;主程序;=================================.text_c_int00:amov#0h,XAR1;初始化時(shí)鐘的秒amov#0h,XAR2;初始化時(shí)鐘的分amov#0h,XAR3;初始化時(shí)鐘的時(shí)amov#0,XDPamov#STACK+200h,XSPamov#SYSSTACK+200h,XSSPInterupt:;初始化中斷bsetintmmov#1,@IVPDmov#1,@IVPHmov#10h,@IER0mov#10h,@DBIER0mov#0,@IER1mov#0ffffh,@IFR0mov#0ffffh,@IFR1callsdram_init;調(diào)用SDRAM初始化程序callshuchu;調(diào)用時(shí)鐘輸出子程序;=================================;初始化定時(shí)器并啟動(dòng)計(jì)時(shí)器;=================================mov#PDP_Timer0,PDPmov#149,AR0mov#0438h,port(#TCR0)mov#15,port(#PRSC0)mov#59999,port(#PRD0)and#0fbefh,port(#TCR0);停止從周期存放器裝入并啟動(dòng)定時(shí)器bclrINTM;使能全局中斷bsetAR5LCamov#LED,XAR4mov#6,BK03amov#LED_I,XAR5mov#LED_I,BSA23mov#0,AR5loop:NOPbloop;等待中斷;=================================;中斷效勞程序;=================================_Timer0:mov*AR5,*AR4bccNext1,AR0!=#0h;判斷是否中斷150次mov#149,AR0;重新裝載計(jì)數(shù)器重新計(jì)數(shù)amar*AR1+;時(shí)鐘秒自動(dòng)加1 callshuchubccFen,AR1==#3ch;判斷AR1是否滿60bNext2Fen:mov#0,AR1amar*AR2+callshuchubccShi,AR2==#3chbNext2Shi:mov#0,AR2amar*AR3+callshuchubccLoop1,AR3==#0chbNext2Loop1:mov#0,AR3 bNext2Next1:amar*AR0-Next2:movport(#0200),AR6;讀取S1按鍵裝載到AR4bccloop2,AR6!=#1hcallkey;當(dāng)按鍵S1按下時(shí)調(diào)用按鍵子程序loop2:reti;中斷返回.end4.2時(shí)鐘輸出程序.defshuchu.data.textShuchu:bclrSXMD;清零SXMD〔關(guān)閉符號(hào)擴(kuò)展〕mov#10,AR6;設(shè)置除數(shù)為10movAR1,AC0;把被除數(shù)〔秒〕放入AC0rpt#15;執(zhí)行subc16次subcAR6,AC0,AC0;條件減法movAC0,port(#0101h);將商輸出到秒的十位movHI(AC0),port(#0100h);將余數(shù)輸出到秒的個(gè)位movAR2,AC0;把被除數(shù)〔分〕放入AC0rpt#0fh;執(zhí)行subc16次subcAR6,AC0,AC0movAC0,port(#0103h);將商輸出到分的十位movHI(AC0),port(#0102h);將余數(shù)輸出到分的個(gè)位movAR3,AC0;把被除數(shù)〔時(shí)〕放入AC0rpt#0fh;執(zhí)行subc16次subcAR6,AC0,AC0movAC0,port(#0105h);將商輸出到時(shí)的十位movHI(AC0),port(#0104h);將余數(shù)輸出到時(shí)的個(gè)位ret.end4.3按鍵輸入程序.defkey.refshuchu.textkey:;=============================;延時(shí);=============================mov#500,AR5L1:amar*ar5-mov#10,AR4L2:amar*ar4-bccL2,AR4!=#0hbccL1,AR5!=#0hmovport(#0200h),AR6bccL,AR6==#0h;按鍵S1電平消失跳轉(zhuǎn)到L退出程序movport(#0201h),AR6bccshi,AR6!=#0h;按鍵S2按下〔高電平〕跳轉(zhuǎn)movport(#0202h),AR6bccfen,AR6!=#0h;按鍵S3按下〔高電平〕跳轉(zhuǎn)shi:amar*AR3+bccyichu1,AR3==#0ch;判斷是否溢出callshuchu;調(diào)用時(shí)鐘輸出子程序bkeyyichu1:mov#0,AR3callshuchu;調(diào)用時(shí)鐘輸出子程序bkeyfen:amar*AR2+bccyichu2,AR2==#3chcallshuchu;調(diào)用時(shí)鐘輸出子程序bkeyyichu2:mov#0,AR3callshuchu;調(diào)用時(shí)鐘輸出子程序bkeyL:ret.end4.4SDRAM初始化程序.defsdram_initebsr.set0x6c00egcr.set0x800emirst.set0x801emibe.set0x802ce01.set0x803ce02.set0x804ce03.set0x805ce11.set0x806ce12.set0x807ce13.set0x808ce21.set0x809ce22.set0x80ace23.set0x80bce31.set0x80cce32.set0x80dce33.set0x80esdc1.set0x80esdper.set0x810sdcnt.set0x811init.set0x812sdc2.set0x813sdram_pdp.setegcr/128.textsdram_init:mov#0xa01,port(#ebsr)mov#sdram_pdp,pdpmov#0x220,port(#egcr)mov#0x3000,port(#ce01)mov#0x1fff,port(#ce11)mov#0x1fff,port(#ce21)mov#0x1fff,port(#ce31)mov#0x0,port(#emirst)mov#0x5958,port(#sdc1)mov#0x38f,port(#sdc2)mov#0x0,port(@init)ret.end4.5命令文件-stack200h-sysstack200hMEMORY{PAGE0:MMR: origin=0000000h, length=00000c0hSPRAM: origin=00000c0h, length=0000040hVECS: origin=0000100h, length=0000100hDARAM0: origin=0000200h, length=0001E00hDARAM1: origin=0002000h, length=0002000hDARAM2: origin=0004000h, length=0002000hDARAM3: origin=0006000h, length=0002000hDARAM4: origin=0008000h, length=0002000hDARAM5: origin=000a000h, length=0002000hDARAM6: origin=000c000h, length=0002000hDARAM7: origin=000e000h, length=0002000h }SECTIONS{ .vectors:> VECS PAGE0 .bss:

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論