DSP應用系統(tǒng)綜合設計_第1頁
DSP應用系統(tǒng)綜合設計_第2頁
DSP應用系統(tǒng)綜合設計_第3頁
DSP應用系統(tǒng)綜合設計_第4頁
DSP應用系統(tǒng)綜合設計_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章DSP應用系統(tǒng)綜合設計第4章DSP應用系統(tǒng)綜合設計教學提示本章以TMS320C54X數(shù)字信號處理器為對象,講述了DSP系統(tǒng)綜合設計中將涉及的主要問題和解決辦生理解和掌握DSP應用系統(tǒng)綜合設計的一般過程和方法。重點讓學生學會針對不同的應用系統(tǒng),應根據(jù)不同的具體要求,合理地、靈活地應用相關的知識來解決問題。建議在教學中結合相應的實驗,全面理解以DSP為核心的應用系統(tǒng)綜合設計方法。第4章DSP應用系統(tǒng)綜合設計4.1DSP應用系統(tǒng)概述4.2TMS320C54X應用系統(tǒng)的硬件設計4.3匯編語言程序設計4.1DSP應用系統(tǒng)概述本節(jié)主要講述了DSP應用系統(tǒng)綜合設計中將涉及的幾個問題:DSP應用系統(tǒng)的特點、DSP的分類及選擇和DSP應用系統(tǒng)設計的一般步驟。4.1.1DSP應用系統(tǒng)的特點數(shù)字信號處理系統(tǒng)是以數(shù)字信號處理為根底,因此具有數(shù)字處理的全部特點:(1)接口方便。DSP系統(tǒng)與其他以現(xiàn)代數(shù)字技術為根底的系統(tǒng)或設備都相互兼容,用這樣的系統(tǒng)接口來實現(xiàn)某種功能要比模擬系統(tǒng)與這些系統(tǒng)接口要容易的多。(2)編程方便。DSP系統(tǒng)中的可編程DSP芯片可使設計人員在開發(fā)過程中靈活方便地對軟件進行修改和升級。(3)穩(wěn)定性好。DSP系統(tǒng)以數(shù)字處理為根底,受環(huán)境溫度以及噪聲的影響較小,可靠性高。4.1.1DSP應用系統(tǒng)的特點(4)精度高。16位數(shù)字系統(tǒng)可以到達的精度。(5)可重復性好。模擬系統(tǒng)的性能受元器件參數(shù)性能變化比較大,而數(shù)字系統(tǒng)根本上不受影響,因此數(shù)字系統(tǒng)便于測試,調(diào)試和大規(guī)模生產(chǎn)。(6)集成方便。DSP系統(tǒng)中的數(shù)字部件有高度的標準性,便于大規(guī)模集成。4.1.2DSP芯片的分類及選擇1.按數(shù)據(jù)格式分類根據(jù)DSP芯片工作的數(shù)據(jù)格式,可以分為定點DSP芯片和浮點DSP芯片。數(shù)據(jù)以定點格式工作的DSP芯片稱之為定點DSP芯片,以浮點格式工作的稱為浮點DSP芯片。不同的浮點DSP芯片所采用的浮點格式不完全一樣,有的DSP芯片采用自定義的浮點格式,有的DSP芯片那么采用IEEE的標準浮點格式。4.1.2DSP芯片的分類及選擇2.按用途分類按照DSP芯片的用途來分,可分為通用型DSP芯片和專用型DSP芯片。通用型DSP芯片適合普通的DSP應用,如TI公司的TMS320系列DSP芯片。專用型DSP芯片是為特定的DSP運算而設計的,更適合特殊的運算,如數(shù)字濾波,卷積和FFT(快速傅里時變換)等。4.1.2DSP芯片的分類及選擇設計DSP應用系統(tǒng),選擇DSP芯片是非常重要的一個環(huán)節(jié)。只有選定了DSP芯片才能進一步設計其外圍電路和系統(tǒng)的其它電路。一般來說,DSP芯片的選擇應根據(jù)實際的應用系統(tǒng)需要而確定,主要考慮的因素如下。(1)

DSP芯片的運算速度:運算速度是DSP芯片的一個最重要的性能指標,也是選擇DSP芯片時所需要考慮的一個主要因素。4.1.2DSP芯片的分類及選擇(2)DSP芯片的硬件資源。(3)DSP芯片的開發(fā)工具。(4)DSP芯片的功耗。(5)DSP芯片的價格。(6)其他的因素,如封裝的形式、生命周期等。4.1.3DSP應用系統(tǒng)設計的一般步驟綜合起來,DSP應用系統(tǒng)綜合設計的步驟大致可分為以下幾個階段:1.確定設計任務書,分析系統(tǒng)功能指標,擬定系統(tǒng)總體設計方案2.算法仿真和系統(tǒng)模擬、DSP芯片及外圍電路的選擇3.硬件設計、軟件設計及調(diào)試4.系統(tǒng)聯(lián)調(diào),性能測試5.編制設計文件4.2TMS320C54X應用系統(tǒng)的硬件設計一個典型的DSP最小應用系統(tǒng),其硬件設計主要涉及如下幾個局部:(1)電源設計;(2)復位電路設計;(3)時鐘電路設計;(4)外部存儲器與并行I/O接口電路;(5)3.3V和5V混合邏輯設計;(6)BOOT設計。對于DSP的主從應用系統(tǒng),那么還要考慮主從微處理器之間的通信接口問題。本節(jié)將以這幾局部為主介紹DSP應用系統(tǒng)的設計。4.2.1TMS320C54X應用系統(tǒng)硬件接口TMS320C54X應用系統(tǒng)硬件接口如下圖4.2.2電源設計為了降低芯片功耗,TMS320C54X系列芯片大局部都采用低電壓設計,并且采用雙電源供電C54X系列DSP芯片具有低功耗模式,是低功耗高速DSP芯片,主要應用于便攜式產(chǎn)品。它們的電源一般有兩種:內(nèi)核電源采用3.3V、2.5V或1.8V等,而I/O接口電平采用3.3V等。4.2.2電源設計一般在設計時,為考慮系統(tǒng)中其他器件的電源設計,多數(shù)采用5V電源來提供以上電源。這種由5V電源轉(zhuǎn)換成3.3V、2.5V或1.8V電源的器件較多。如TI公司的TPS73XX系列、凌特公司(LinearTechnology)的相應穩(wěn)壓器系列、Maxim公司的相應穩(wěn)壓器等。這些器件分為線性電源和開關電源兩種,在設計時需根據(jù)實際的需要來選擇。一般來說,線性電源的紋波較小,對系統(tǒng)的干擾較小,使用較為簡單,缺點是效率不高。開關電源的優(yōu)點是效率高,但開關電源的紋波比線性電源的大,而且它的振蕩頻率在幾千赫茲到幾十萬赫茲,可能會對DSP應用系統(tǒng)產(chǎn)生干擾。如果系統(tǒng)對功耗要求不高,可以選用線性電源;如果對功耗要求較高,可考慮選用開關電源。一般需要在相應的電源電路中參加濾波電路,以減小紋波和對系統(tǒng)的干擾。4.2.3復位電路設計TMS320C54X復位有三種方式:加電復位、手動復位和軟件復位。這里講的是加電復位和手動復位。為使芯片初始化正確,一般應保證為低電平至少持續(xù)五個CLKOUT周期,即當速度為25ns時約為125ns。但是,由于在加電后,系統(tǒng)的晶體振蕩器往往需要幾百毫秒的穩(wěn)定時間,所以,為低的時間主要由系統(tǒng)的穩(wěn)定時間確定,一般為100ms~200ms。4.2.3復位電路設計4.2.3復位電路設計由于DSP系統(tǒng)的時鐘頻率較高,在運行時難以防止發(fā)生干擾和被干擾的現(xiàn)象。嚴重時系統(tǒng)會出現(xiàn)死機或程序“跑飛〞現(xiàn)象。為了克服這種情況,除了在軟件上作一些保護措施外,硬件上也必須作相應的處理。硬件上最有效的保護措施就是采用把關定時器(俗稱“看門狗〞,Watchdog)電路。把關定時器電路就是具有監(jiān)視功能的自動復位電路。這種電路除了具有加電復位功能外,還具有監(jiān)視系統(tǒng)運行并在系統(tǒng)發(fā)生故障或死機時再次進行復位的能力。4.2.3復位電路設計具有看門狗功能的復位電路4.2.4時鐘電路設計為DSP提供時鐘的最簡單、常用的方法是利用DSP芯片內(nèi)部提供的時鐘振蕩電路。即在DSP芯片的引腳Xl和X2/CLKIN之間接入一枚晶體和相應容值的電容(如圖4.4所示),即可為DSP產(chǎn)生穩(wěn)定的時鐘信號。但應該注意的是,時鐘電路的走線應盡量地短,盡量靠近DSP芯片的引腳Xl和X2/CLKIN,以防止引入高頻輻射干擾。4.2.4時鐘電路設計另一種更簡單可靠的方法是采用成品的晶體振蕩器電路。這是一種厚膜電路,其內(nèi)部已封裝好晶體和電容以及相應的電路,只需要加上電源,在其輸出端就可以得到所需的時鐘。用于DSP系統(tǒng)時,從引腳X2/CLKIN輸入時鐘信號,引腳X1懸空即可。電路如圖4.5

所示。

4.2.5外部存儲器與并行I/O接口電路設計外部存儲器分為ROM和RAM兩類。ROM包括PROM、EPROM、EEPROM和FLASHMEMORY。這一類存儲器主要用于系統(tǒng)存儲程序和常數(shù)表格,一般映射在程序存儲器空間。RAM主要是靜態(tài)RAM(SRAM),常常采用快速RAM,既可用于存儲程序,也可用于存儲數(shù)據(jù)。DSP在訪問存儲器時,是在控制信號MSTRB和R/控制下進行的;如果訪問程序存儲器空間,那么還有PS信號;如果是訪問數(shù)據(jù)存儲器空間,那么還有DS信號。而在訪問I/O口時,那么在控制信號IOSTRB和R/的作用下進行,R/信號控制訪問的方向。4.2.5外部存儲器與并行I/O接口電路設計在設計外部存儲器的接口時主要考慮兩個問題:一是速度問題,二是DMA(直接存儲器訪問)接口問題。對于快速的存儲器,即存取時間小于20ns的器件,可以直接與TMS320C54X系列DSP接口;而對于慢速存儲器器件,那么DSP在訪問時需要插入等待狀態(tài)。由于TMS320C54X系列具有內(nèi)部的可編程等待狀態(tài)發(fā)生器,所以不需要外接其他的邏輯電路便可與慢速存儲器接口??刂菩盘朒OLD和HOLDA用于DSP的DMA接口。DSP在接收到外設提出的DMA請求信號HOLD后,DSP交出數(shù)據(jù)總線和地址總線的控制權(使數(shù)據(jù)總線和地址總線為高阻態(tài)),再把HOLDA拉低,指示外設可以接管數(shù)據(jù)總線和地址總線,進行DMA操作。I/O接口的方法與外部存儲器的接口方法相同,只是采用控制信號IOSTRB代替MSTRB。4.2.63V和5V混合邏輯設計在DSP應用系統(tǒng)綜合設計中,無論是系統(tǒng)內(nèi)部電路,還是在系統(tǒng)間的接口電路,都將可能會使用到不同接口電平的器件,最常見的是3V和5V混合邏輯器件,必須考慮它們之間的電平匹配和接口驅(qū)動能力:既要滿足輸入轉(zhuǎn)換電平的要求,又不能超出輸入電壓限度。4.2.63V和5V混合邏輯設計在3V和5V混合邏輯設計中,必須考慮以下情況:(1)使用5VTTL或5VCMOS輸出驅(qū)動3V輸入,在驅(qū)動能力上是沒有問題的,但必須考慮3V器件的電壓容限。(2)3V輸出可以驅(qū)動5VTTL輸入,但3V輸出不能可靠地驅(qū)動5VCOMS輸入。在DSP應用系統(tǒng)綜合設計中,為解決3V和5V混合邏輯設計,一般采用電平轉(zhuǎn)換電路或?qū)S秒娖睫D(zhuǎn)換集成電路來完成混合電平的接口設計。目前使用較為廣泛的電平轉(zhuǎn)換集成電路有74LVC4245和74LVC07等。4.3匯編語言程序設計4.3.1CCS集成開發(fā)環(huán)境簡介CCS(CodeComposerStudio)是TI公司推出的用于開發(fā)TMS320系列DSP芯片的集成開發(fā)環(huán)境。CCS采用Windows風格界面,集環(huán)境配置、源文件編輯、編譯、鏈接、軟件仿真、硬件調(diào)試以及實時跟蹤和分析等功能于一體,極大地方便了DSP芯片的開發(fā)與設計,是目前使用最為廣泛的DSP開發(fā)軟件之一。CCS的功能十分強大,不但集成了代碼的編輯、編譯、鏈接和調(diào)試等諸多功能,而且支持C/C++和匯編的混合編程。4.3.1CCS集成開發(fā)環(huán)境簡介(1)具有集成可視化代碼編輯界面,用戶可通過其界面直接編寫C、匯編、d文件等;(2)含有集成代碼生成工具,包括匯編器、優(yōu)化C編譯器、鏈接器等,將代碼的編輯、編譯、鏈接和調(diào)試等諸多功能集成到一個軟件環(huán)境中;(3)高性能編輯器支持匯編文件的動態(tài)語法加亮顯示,使用戶很容易閱讀代碼,發(fā)現(xiàn)語法錯誤;(4)工程工程管理工具可對用戶程序?qū)嵭泄こ坦芾?。在生成目標程序和程序庫的過程中,建立不同程序的跟蹤信息,通過跟蹤信息對不同的程序進行分類管理;4.3.1CCS集成開發(fā)環(huán)境簡介(5)根本調(diào)試工具具有裝入執(zhí)行代碼、查看存放器、存儲器、反匯編、變量窗口等功能,并支持C源代碼級調(diào)試;(6)斷點工具能在調(diào)試程序的過程中,完成硬件斷點、軟件斷點和條件斷點的設置;(7)探測點工具可用于算法的仿真,數(shù)據(jù)的實時監(jiān)視等;(8)分析工具包括模擬器和仿真器分析,可用于模擬和監(jiān)視硬件的功能、評價代碼執(zhí)行的時鐘;(9)數(shù)據(jù)的圖形顯示工具可以將運算結果用圖形顯示,包括顯示時域/頻域波形、眼圖、星座圖、圖像等,并能進行自動刷新;4.3.1CCS集成開發(fā)環(huán)境簡介(10)提供GEL工具。利用GEL擴展語言,用戶可以編寫自己的控制面板/菜單,設置GEL菜單項選擇項,方便直觀地修改變量,配置參數(shù)等;(11)支持多DSP的調(diào)試;(12)支持RTDX技術,可在不中斷目標系統(tǒng)運行的情況下,實現(xiàn)DSP與其他應用程序的數(shù)據(jù)交換;(13)提供DSP/BIOS工具,增強對代碼的實時分析能力。4.3.1CCS集成開發(fā)環(huán)境簡介CCS有兩種工作模式,即軟件仿真器模式和硬件在線編程模式。軟件仿真器模式可以脫離DSP芯片,在PC上模擬DSP的指令集和工作機制,主要用于前期算法實現(xiàn)和調(diào)試。硬件在線編程模式可以實時運行在DSP芯片上,與硬件開發(fā)板相結合,實現(xiàn)在線編程和應用程序調(diào)試。4.3.2DSP匯編語言程序的編寫1.DSP匯編程序編寫的一般規(guī)那么(1)如果不用標號,那么第一列必須為空格、分號或星號(*)。指令和匯編命令都不能寫在第一列。(2)操作數(shù)之間必須用逗號“,〞分開。(3)注釋從分號“;〞開始,可以放在指令或匯編命令的后面,也可以放在單獨的一行或數(shù)行。注釋是任選項。如果注釋從第一列開始,也可以用“*〞表示注釋。(4)輸入字母一般要區(qū)分大小寫,除非加編譯參數(shù)忽略大小寫。(5)輸入的標點符號“,〞“;〞為中文全角字符,將導致編譯錯誤。4.3.2DSP匯編語言程序的編寫2.常用的匯編命令4.3.2DSP匯編語言程序的編寫2.常用的匯編命令4.3.2DSP匯編語言程序的編寫3.數(shù)據(jù)尋址方式4.3.2DSP匯編語言程序的編寫4.鏈接命令文件(*d)一個完整的DSP程序至少包含個局部:程序代碼、中斷向量表、鏈接命令文件(*d)。這里先介紹鏈接命令文件。鏈接命令文件用來為鏈接器提供鏈接信息,可將鏈接操作所需的信息放在一個文件(*d)中,這樣在屢次使用同樣的鏈接信息時,可以方便地調(diào)用。鏈接命令文件確定了程序鏈接成最終可執(zhí)行代碼時的選項,其中有很多條目,可實現(xiàn)不同方面的選項,其中最常用的有以下幾個局部:(1)輸入文件名,用來指定目標文件、存檔庫或其他命令文件;(2)輸出文件名;(3)鏈接器選項,如標明程序入口等;(4)指定目標存儲器的結構;(5)控制段的構成與地址分配;(6)賦值說明,用于給全局符號定義和賦值。4.3.2DSP匯編語言程序的編寫鏈接命令文件舉例。編寫鏈接命令文件exampd,鏈接file1.obj和fiel2.obj兩個目標文件,定義程序入口為MainStart,生成映像文件examp.map和可執(zhí)行文件examp.out。其中目標存儲器的配置如下:程序存儲器:32BROM,起始地址為0080h,取名為VECT;4KBROM,起始地址為0E000h,取名為PMROM。數(shù)據(jù)存儲器:32BRAM,起始地址為0060h,取名為SPRAM;512BRAM,起始地址為0100h,取名為DARAM。4.3.2DSP匯編語言程序的編寫鏈接命令文件exampd如下:file1.objfiel2.obj /*輸入目標文件名*/-eMainStart /*程序入口,必須在程序中定義相應的標號*/-oexamp.out /*指定輸出文件的選項*/-mexamp.map /*生成存儲器映射報告文件*/MEMORY{PAGE0:VECT :org=0080h len=80h /*中斷向量表*/PMROM :org=0E000h len=1000h /*代碼區(qū)*/PAGE1:SPRAM :org=0060h len=20h /*數(shù)據(jù)區(qū)*/DARAM :org=0100h len=200h /*數(shù)據(jù)區(qū)*/}〔未完〕4.3.2DSP匯編語言程序的編寫接上SECTIONS{.text :>PMROMPAGE0 /*將.text段定位到命名為PMROM的存儲區(qū)*/.vectors:>VECTPAGE0 /*將.vectors段定位到命名為VECT的存儲區(qū)*/.bss :>SPRAMPAGE1 /*將.bss段定位到命名為SPRAM的存儲區(qū)*/STACK:>DARAMPAGE1/*將STACK定位到命名為DARAM的存儲區(qū)*/.data :>DARAMPAGE1 /*將.data段定位到命名為DARAM的存儲區(qū)*/}4.3.2DSP匯編語言程序的編寫5.中斷向量表中斷向量表是DSP程序的重要組成局部,當有中斷發(fā)生并且處于允許狀態(tài)時,程序指針將跳轉(zhuǎn)到中斷向量表中對應的中斷地址。由于中斷效勞程序一般較長,通常中斷向量表存放的是一個跳轉(zhuǎn)指令,指向?qū)嶋H的中斷效勞程序。需使用的中斷向量一般用一條跳轉(zhuǎn)指令轉(zhuǎn)到相應中斷效勞子程序,其余空位用NOP填充,未使用的中斷向量直接用RETE返回。4.3.2DSP匯編語言程序的編寫MSC320C54X系列中不同型號DSP的中斷向量數(shù)量和在中斷向量表中的位置是不完全相同的,程序移植時需要查相應數(shù)據(jù)手冊。在DSP數(shù)據(jù)手冊均有相應的中斷向量表,本書不列出中斷向量表。中斷向量表并沒有強制的位置,可以放在內(nèi)部存儲器,也可以放在外部存儲器。但有一個規(guī)定:中斷向量表必須放在80H字長存儲塊的起始位置,即中斷向量表的首地址的低7位必須全為0。DSP的存放器PMST的高9位是中斷向量表的指針I(yè)PTR。其加電時默認是在FF80H處,這是為了運行固化在內(nèi)部ROM的加電加載程序。由于FF80H是只讀的,加載用戶自定義的中斷向量表時會報錯,因此需要重新設置IPTR的值。這里把它重定義到0080H。4.3.2DSP匯編語言程序的編寫改變中斷向量表位置的程序段如下:K_IPTR.set0080h;指向0080H,默認是FF80LDMPMST,AAND#7FH,A ;保存低7位,清掉高位OR#K_IPTR,A ;將新值傳到高9位STLMA,PMST ;修改PMST存放器由于這段代碼幾乎每個程序都需要,可以單獨存成一個文件,在程序需要的地方用.copy或.include指令參加該程序段。4.3.3應用程序設計舉例1.程序一——控制XF引腳電平周期性變化控制DSP輸出引腳XF的電平變化,然后用示波器測量引腳XF的輸出波形或觀察與之相連接的LED。該程序也常常用來測試DSP是否能正常工作。通過簡單的程序了解DSP程序的結構,熟悉CCS開發(fā)環(huán)境。本程序中的延時并不精確,需要精確定時可以采用定時器定時。本程序的延時時間t的近似計算公式為:t=4*(AR4+1)*(AR3+1)*時鐘周期。如當DSP工作頻率為50MHz(時鐘周期20ns),AR3=1999,AR4=4999時,總的延時時間約為800ms。1.程序一——控制XF引腳電平周期性變化**********************************************控制XF引腳電平周期性變化:xf_led.asm*循環(huán)對XF位置1和清0,用示波器可以在XF引腳檢測到電平上下周期性變化********************************************* .title“xf_led.asm〞 .mmregs ;將存儲映像存放器導入列表 .def MainStart ;定義程序入口標記 .text ;程序區(qū)MainStart: ;程序入口 SSBX XF ;XF置1 CALL Delay ;調(diào)用延時程序 RSBX XF ;XF清0程序一——控制XF引腳電平周期性變化CALL Delay ;調(diào)用延時程序 B MainStart ;跳轉(zhuǎn)到程序開頭循環(huán)執(zhí)行**********************************************************延時子程序:Delay*用兩級減一計數(shù)器來延時。調(diào)整AR1和AR2的大小LED閃爍的頻率不同*********************************************************Delay: STM #1999,AR3 ;循環(huán)次數(shù)2000LOOP1: STM #4999,AR4 ;循環(huán)次數(shù)5000LOOP2: BANZ LOOP2,*AR4- ;如果AR4不等于0,AR4減1,再判斷 BANZ LOOP1,*AR3- ;如果AR4不等于0,AR4減1,跳轉(zhuǎn)到LOOP1 RET .end

2.程序二——實現(xiàn)8位LED燈循環(huán)閃爍********************************************實現(xiàn)8位LED燈循環(huán)閃爍:led8.asm*熟悉DSP匯編程序設計技巧,完善輸出功能*本程序中需要參加程序一中的延時子程序Delay******************************************* .title “l(fā)ed8.asm〞 .mmregs ;將存儲映像存放器導入列表STACK .usect "STACK",10h;給堆棧段分配空間 .bss y,1 .def start .dataPA0 .set 02.程序二——實現(xiàn)8位LED燈循環(huán)閃爍 .text start: STM #7000,SWWSR ;設等待位 STM #2,AR3 ;乘2,實現(xiàn)左移 STM #6,AR1 ;左移7次 STM #3,AR2 ;循環(huán)執(zhí)行4次 LD AR3,T ;將暫存器T設為2loop1: LD #1,A ;A=1 STL A,@y ;y=1 PORTW@y,PA0 ;將y地址內(nèi)的值輸出到輸出口PA0 CALL Delay ;調(diào)用延時程序2.程序二——實現(xiàn)8位LED燈循環(huán)閃爍loop2: MPY @y,A ;A=y(tǒng)*T STL A,@y ;將A的值存入y地址中 PORTW @y,PA0 ;輸出y地址值到輸出口 CALL Delay ;調(diào)用延時程序 BANZ loop2,*AR1- BANZ loop1,*AR2-end: B end .end 3.程序三編程目的:實現(xiàn)DSP循環(huán)輸入與輸出功能程序功能:令DSP反復執(zhí)行從輸入裝置讀取數(shù)據(jù),并將數(shù)據(jù)存入某一地址,再從該地址將數(shù)據(jù)輸出到輸出設備。源程序如下: .title"dspio2.asm" .mmregsPA0 .set 0PA1 .set 1STACK .usect "STACK",10h .bss y,1實現(xiàn)DSP循環(huán)輸入與輸出功能.textstart: STM #4000,AR1 ;AR1作循環(huán)計數(shù)器LOOP1: ;循環(huán)讀寫 PORTRPA1,@y ;循環(huán)讀寫 LD @y,A ;從I/O口讀入數(shù)據(jù)并儲存到y(tǒng)所在的地址 PORTW @y,PA0 ;將y中的數(shù)據(jù)寫入累加器A中 BANZ LOOP1,*AR1-;將y所在地址中的數(shù)據(jù)輸出到I/O口end: B end .end程序中將y中的數(shù)據(jù)寫入累加器A的語句“LD@y,A〞的目的在于通過查看累加器A的值,觀察y中數(shù)值的變化情況。4.程序四——乘累加編程目的:掌握TMS320C54x中小數(shù)的表示和處理方法。程序功能:完成如下計算,其中a1=0.1,a2=0.2,a3=-0.3,a4=0.2,x1=0.8,x2=0.6,x3=-0.4,x4=-0.24.程序四——乘累加實現(xiàn)原理:TMS320C54x采用2的補碼表示小數(shù),其最高位為符號位,數(shù)值范圍為(-1~+1)。一個十進制小數(shù)的絕對值乘以32768后,再將其十進制整數(shù)局部轉(zhuǎn)換成十六進制數(shù),就能得到這個十進制小數(shù)的2的補碼表示,例如:0.5乘以32768得16384,再轉(zhuǎn)換成十六進制就得到4000H,這就是0.5的補碼表示形式。在匯編語言程序中,由于不能直接寫入十進制小數(shù),因此如果要定義一個小數(shù)0.707,那么應該寫成word707*32768/1000,而不能寫成32768*0.707。在進行小數(shù)乘法時,應事先設置狀態(tài)存放器ST1中的小數(shù)方式位(FRCT位)為“1〞,這樣,在乘法器將結果傳送至累加器時就能自動地左移1位,從而自動消除兩個帶符號數(shù)相乘時產(chǎn)生的冗余符號位。使用的程序語句是:SSBX FRCT。4.程序四——乘累加源程序如下: .mmregs .global_c_int00

STACK .usect "STACK",10H .bss a,4 ;為未初始化的變量a1~a4保存四個存儲空間 .bss x,4 .bss y,1 .def start4.程序四——乘累加.datatable:.word1*32768/10;注意小數(shù)的表示方法 .word 2*32768/10 .word -3*32768/10 .word 4*32768/10 .word 8*32768/10 .word 6*32768/10 .word -4*32768/10 .word -2*32768/104.程序四——乘累加.text_c_int00: STM#STACK+10,SP B startstart: SSBX FRCT ;設置狀態(tài)存放器的小數(shù)方式位 STM #a,AR1 ;把a1的地址賦給AR1 RPT #7 ;重復下一條語句4+1次 MVPD table,*AR1+ ;裝入數(shù)據(jù) STM #x,AR2 STM #a,AR3 RPTZ A,#3 MAC *AR2+,*AR3+,A ;乘累加 STH A,*(y)end: B end .end5.程序五——浮點乘法編程目的:掌握TMS320C54X中浮點數(shù)的表示和處理方法。程序功能:編寫浮點乘法程序,完成x1*x2=()*0.6的運算。源程序中保存了十個存儲單元:x1(被乘數(shù)),x2(乘數(shù)),e1(被乘數(shù)的指數(shù)),m1(被乘數(shù)的尾數(shù)),e2(乘數(shù)的指數(shù)),m2(乘數(shù)的尾數(shù)),ep(乘積的指數(shù)),mp(乘積的尾數(shù)),product(乘積),temp(臨時單元)。5.程序五——浮點乘法實現(xiàn)原理:TMS320C54X通過3條指令可將一個定點數(shù)轉(zhuǎn)化成浮點數(shù)(設定點數(shù)存放在累加器A中)。這三條指令分別是“EXPA〞,“STT,EXPONENT〞和“NORMA〞。(1)“EXPA〞:這是一條提取指數(shù)的指令,指數(shù)保存在T存放器中。(2)“STT,EXPONENT〞:這條緊接在EXP后的指令是將保存在T存放器中的指數(shù)存放到數(shù)據(jù)存儲器的指定單元中。(3)“NORMA〞:這是一條按T存放器中的內(nèi)容對累加器A進行歸一化處理(左移或右移)的指令,T中指數(shù)為正數(shù)時左移,為負數(shù)時右移,移動的位數(shù)就是T中的指數(shù)值。但這條指令不能緊跟在EXP指令后面,因為此時EXP指令還沒有來得及把指數(shù)值送至T。5.程序五——浮點乘法源程序如

溫馨提示

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

評論

0/150

提交評論