版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
大家在閱讀的時候使Word成折疊模式看著會更舒服些。
關(guān)于文檔里邊用到的中文參考資料,附F載地址:
http://bbs.21ic.com/icview-161578-1-1.html
刖B
DSP的本質(zhì)還是單片機(jī)-微機(jī),個人認(rèn)為,微機(jī)類芯片,不論是MCUARM還是DSP甚
至是PC上的處理器,我僅在學(xué)習(xí)這類芯片的使用時,首先要學(xué)習(xí)的便是這些芯片的CPU核,
存儲器組織和中斷系統(tǒng)。只有把這幾方面的內(nèi)容掌握之后,你才能說根據(jù)其特點(diǎn)來使用這塊
芯片,Debug時你心中才有數(shù)。至于片上外設(shè),與芯片本身其實(shí)并沒有太大關(guān)系,大可以要使
用時再去學(xué)習(xí),而且不同芯片的外設(shè)其實(shí)還都是相通的。基于此,我把我在學(xué)習(xí)這類芯片時
對于這幾塊的學(xué)習(xí)的筆記摘錄出來(這篇文檔中對是對Ti的TMS320c54x系列的學(xué)習(xí)筆記),
以供大家參考。
我的筆記雖然可能次序,排版,沒有市面上的書本組織得好,但我可以說,我決對是面
面向應(yīng)用來寫的,而不是為了出書來寫的。市面上的技術(shù)類的書,大多數(shù)其實(shí)只是簡單的把
官方的文檔翻譯過來而已、而且在翻譯的過程中還省略了很多細(xì)節(jié),這些細(xì)節(jié)其實(shí)對于我們
的理解和工程開發(fā)都是很重要的,另外很多翻譯還不準(zhǔn)確。在我的筆記中,中文資料我只是
作為一個參考,或者作為一種線索,真正有價值的信息都是來自于我對于官方文檔的學(xué)習(xí)。
每一部分的記錄都是以?個新手的態(tài)度來寫的,這些問題都是新手在學(xué)習(xí)過程中很可能會
遇到或想到的.雖然排版不好,但當(dāng)你遇到相關(guān)問題或想了解某一塊時,把我寫的這個Word
文檔下載下來,然后使用Word文檔的搜索功能搜索自己感興趣的內(nèi)容,相信一定會讓你得
到較為滿意的結(jié)果的。
不僅是DSP芯片方面的知識筆記,在我向信號處理工程師奮斗的路程上,我對我每一
天的學(xué)習(xí)都作了筆記記錄,這些筆記記錄都是面向新手,面向細(xì)節(jié),面向工程的,都是自己
用心的體會。當(dāng)有筆記成熟或自成一塊時,我會把這些筆記都陸續(xù)分享給大家,以供大家在
學(xué)習(xí)或開發(fā)過程的參考,希望能為大家節(jié)省點(diǎn)時間。附?張目前自己的筆記文件夾的圖。
幾十年之后,我的肉體可能已經(jīng)化為泥土或成為其它生物的一部分,所有我擁有的物質(zhì)
都是帶不走的,我能留給世人.后代子孫的也就是自己活著時的思想,精神。用心記錄下自
己活著時可能對后人有用的東西,不為物質(zhì)利益,把它上傳到云端,我想這應(yīng)該是我用心去
做的最有意義的事情之一。
在寫這些筆記的過程中,我和我的女友虹虹正處在非常困難的時間,說來話長,愿意幫
幫我的大俠請慢慢往下看,小弟先謝過了。
我現(xiàn)在(2012年9月到2013年7月,研一)在北京的電信科學(xué)技術(shù)研究院上研一,即
大唐大信集團(tuán),研二回成都跟著導(dǎo)師學(xué)習(xí)。導(dǎo)師招生的方向?qū)懙氖蔷W(wǎng)絡(luò)通信,但實(shí)際我跟了
他才知道是他要搞的是汽車電子,偏各種工業(yè)控制總線,并不是自己一直想從事的信號處理
的方向。導(dǎo)師給的任務(wù)也與信號處理沒多大關(guān)系,與電信科學(xué)技術(shù)研究院的特色一一通信專
業(yè)就更沒有關(guān)系了。我不是電信科學(xué)技術(shù)研究院的定向生,即以后大唐集團(tuán)沒有義務(wù)接I攵我,
以后還要拿著電信科學(xué)技術(shù)研究院的碩士學(xué)位證到社會上找工作,社會上對電信科學(xué)技術(shù)
研究院的承認(rèn)還在于通信方面,如果我只是按他的要求做,顯然自己在2015年找工作時是
完全處于劣勢的。
作為學(xué)生,導(dǎo)師交代什么任務(wù),我自然是會盡心去做,但這位導(dǎo)師手上真的沒什么資源,
他主要的工作在于當(dāng)A大學(xué)電子信息工程系的院長,沒什么工程資源可以給我用,自己在做
任務(wù)的過程什么都要靠自己墊錢買,自己家里本來就很困難,生活費(fèi)也緊張,我墊得很痛苦,
做起來也是各種資源沒有,
最初選導(dǎo)師時并也不是想選他作導(dǎo)師的,我本來是想選另外一位導(dǎo)師的,那位導(dǎo)師的方
向是自己喜歡的,也有自己的公司,手上資源多。但在可選學(xué)生中,我是復(fù)試中是表現(xiàn)最好
的,這位導(dǎo)師就把我選了,另外那位我想選的導(dǎo)師也不好拒絕我現(xiàn)在導(dǎo)師的要求,因?yàn)槲椰F(xiàn)
在的導(dǎo)師是院長,而我想選的那位導(dǎo)師只是A大學(xué)電子信息工程系的副院長。
這樣的情況促使我除了完成現(xiàn)在導(dǎo)師交給我的任務(wù),我還必須在信號處理,通信這些上
去發(fā)展,我現(xiàn)在除了每天不斷豐富自己在信號處理,通信方面的知識,也在積極尋求能讓自
己實(shí)踐的機(jī)會。導(dǎo)師那里是不能了,我只能到社會上去尋找。2013年3月份,我在網(wǎng)上遇到
了一位成都的工程師,他們公司在成都做無線通信方面的軍品,要用到很多信號處理和通信
方面的知識,他告知我,2013年6月I可成都可以過去面拭一下,感覺可以的話,就可以到他
們公司去兼職。我現(xiàn)在不要求什么報酬,也和那個工程師溝通得比較快樂,特別是技術(shù)方面,
所以去這家公司去做兼職問題也不大。
情況看來并不遭糕,但2013年出了一個變故讓情況有了很大的變化,我的女友,和我是
成都同一所大學(xué)電子信息工程系的同班同學(xué),2012年上當(dāng)年,即大四下期她在成都找到了一
份Layout的工作,就這樣一直在成都工作。
我2012年9月離開成都到北京的電信科學(xué)技術(shù)研究院上研一的理論課程,她一個人留
在了成都。雖然她一個人在成都很苦,但我們相信只要熬一年,研二我回成都就好了。我們
自認(rèn)為一年我們撐得過去,但我們顯然高估了女友耐一人人獨(dú)處的能力,女友從小都在她父
親和哥哥的保護(hù)下長大的,父親和哥哥都是很Men的那種,所以導(dǎo)致她自己一個人是相當(dāng)
不習(xí)慣一個人的獨(dú)處生活.一個人的時候她也極度缺乏安全感。
熬到今年(2013年)三月份,女友實(shí)在是熬不過去了,辭職了,到深圳去找實(shí)習(xí)單位,這
樣導(dǎo)致我們的情況發(fā)生了巨大的變化。
我2013年2月2()號過完寒假回到北京開始研一下半學(xué)期的學(xué)習(xí)。這段時間女友面臨者
三座大山:
①從2012年2月工作到2013年3月女友所在的公司都沒有一點(diǎn)加薪的動靜,其實(shí)女友
也不是那么看重錢的人,只是我的家庭條件實(shí)在不好,家里的錢在成都連給首付的錢都不帔,
所以也只能靠我們倆努力掙房錢,所以自然就希望工資高一點(diǎn)。
②不加薪就算了,2012年12月份還新引進(jìn)了一位大懂管理的管理者,用小學(xué)生式的管
理方法把公司管得一團(tuán)亂.女友感到工作很壓抑。
③2013年2月20號我離開成都到北京上學(xué)后的一段時間,女友是極度不適應(yīng)我不在的
日子,特別希望我問成都咯陪她,但我想我還一個月的時間都沒走到,就沒有坐火車從北京
回成都去陪她,現(xiàn)在真是后悔,如果當(dāng)時自己回去了陪陪她,女友后來也不會做出那樣沖動
的決定。
④我的兼職有著落的時候,女友還沒有做出后來的決定,但是我找的那份兼職工作在離
女友現(xiàn)在所做的公司很遠(yuǎn)、每天坐公交要坐很久。在女友工作的周圍找(高新西區(qū)),又很
難找到跟信號處理與通信有關(guān)的兼職。成都本來兼職實(shí)習(xí)機(jī)會就很少,方向?qū)诰秃懿蝗菀?/p>
了。所以到時候我回成都后,如果我們要想在一起,很有可能又會遇到很多麻煩,說不定又
要搬家,2012年我們在成都就已經(jīng)搬了兩次家,女人都是很討厭搬家這種事的。
以上四點(diǎn)壓在女友的心上,都快使得她崩潰了,在這種情況下,沒和我商量,她辭職了,
并且準(zhǔn)備到深圳去發(fā)展,他哥在深圳那邊工作了兩年,工資還漲的挺快的。
我聽說這個消息后,基于種種考慮,既然事情都已這樣,還是只能讓女友到深圳去工作
了。我想,她哥和嫂子在那邊,他們在一起的話,女友應(yīng)該不會害怕,也不會感到孤單。這兩
天,女友到了深圳,這兩天正在找Layout的工作(還沒找著,有機(jī)會的大俠聯(lián)系我下哈),才
發(fā)現(xiàn)她哥和嫂子每天也很忙,也沒時間照顧她。她現(xiàn)在明白了自己希望的生活也并不是和她
哥和嫂子一起生活,而是希望自己所愛的人和她一起在那邊租個小單間,一起工作,生活,
奮斗。同時也意識到兩年的時間在我們倆的感情她肯定是挺不過去的,她肯定會先放棄我們
這段感情,雖然我們現(xiàn)在都很愛對方,但她相信,兩年的時候,她對我的感情肯定會被磨滅,
這樣的結(jié)果也是她不想發(fā)生的,想到這一點(diǎn)她就非常痛苦。
雖然兩年的時候不會把我對她的感情磨滅,反而我會越來越愛她,但一個巴掌拍不響,
到時候別人乘虛而入,我也是無力回天。所以我現(xiàn)在就是特別想盡量保持住我們的感情。
現(xiàn)在的我要想保持住這份感情,想來想去,好點(diǎn)的辦法就是我在成都上研二,研三的時
候盡量多去深圳,多陪陪她。
我希望能在深圳找一份數(shù)字信號處理偏通信方向的兼職工作,按理說,在深圳,找這種
兼職很好找,但是我相信大家也看了我上面的情況,也肯定能想到我這份兼職工作肯定是有
特殊要求的。總結(jié)起來,這份兼職工作應(yīng)該有以下特點(diǎn)。
①能允許我將工作帶到成都去做,因?yàn)槲业膶?dǎo)師在成都,所以按理我也應(yīng)該呆在成都,
但我的導(dǎo)師很忙,我們也難得見一面,一般是1個月到2個月才見一面,但還是偶爾要見一
次才行吧!當(dāng)我呆在成都的時候,我也想盡心心力完成貴公司交給我的任務(wù),所以要允許我
將工作帶到成都去做。當(dāng)然當(dāng)工作確實(shí)需要在深圳的公司完成的時候,比如需要借助某些硬
件平臺或儀器調(diào)試測試的時候我也會到深圳來。
②我不要求報酬,也不要求什么福利,只希望公司能幫我報火車票的車費(fèi),我只坐硬坐,
所以還是不貴的,而且誰也不愿意整天坐火車成都-深圳的來回跑的,所以不到非要從深圳
到成都見導(dǎo)師面或從成都到深圳對實(shí)際的工作進(jìn)行測試,調(diào)試的時候,我不會輕易去花費(fèi)這
個火車費(fèi)的,這點(diǎn)請公司放心。
③平時的時間我一周花四天的時間在兼職上,花三天的時間在導(dǎo)師交給的任務(wù)上。
④放暑假和寒假我都是可以每天呆在深圳的,也不要求什么報酬.給點(diǎn)生活費(fèi)就可以
了。
⑤以后畢業(yè)之后我肯定會到深圳工作,所以請公司不用擔(dān)心我以后畢業(yè)不來深圳了。
有機(jī)會的大俠請幫幫我,我真的很想保護(hù)好我和女友的愛情,也真的很想在信號處理與
通信的方向上有長遠(yuǎn)的方展,如果這次能得到某位大俠的幫助,小弟感激不盡。
筆記記錄人:蘇文昊(大地知心)
電信科學(xué)技術(shù)研究院(CATT)2012屆研究生
聯(lián)系方式:
QQ=278742825
Tel:
13693G51619(北京)
1582859433。(成者Q
更多相關(guān)專業(yè)文章請訪問以下百度空間:
http://hi.baidu.com/dsp_suwenhao?page=l
必須知道這一點(diǎn):
DSP復(fù)位后,首先執(zhí)行FF80H的指令,而FF80~FFFFH是中斷矢量表。具體是這樣的:
在MP/MC管腳置低,這樣上電復(fù)位后,程序自動從內(nèi)部的FF80H(中斷矢量表的起始地址)
地址開始運(yùn)行。在FF80H處,有一條跳轉(zhuǎn)到BOOT程序的指令,開始運(yùn)行內(nèi)部的BOOT程
序。BOOT程序的作用就是把外部FLASH存儲器的程序搬移到RAM中去。
當(dāng)DSP復(fù)位時,若檢測到MP/荻管腳為低,則程序執(zhí)行片內(nèi)FF80h地址處的指令,
此地址處包含一個跳轉(zhuǎn)到F800h的指令,則CPU接著執(zhí)行F800B的引導(dǎo)程序.并將區(qū)分不
同的引導(dǎo)方式,把用戶程序代碼從外設(shè)讀來耕裝后放在用戶指定的地址,然后跳轉(zhuǎn)到用戶
指定的程序入口處,
意外的驚喜:
哇口塞,官方文檔上還有推薦的寄存器初始化順序:
7.5.1RecommendedInstructionsforAccessingMemory-MappedRegisters
Unprotectedpipelineconflictscanoccurwhenanyoneofthefollowing
memory-mappedregistersisaccessed:
□
□Auxiliaryregisters(ARO-AR7)
□Blocksizeregister(BK)
□Stackpointer(SP)
□Temporaryregister(T)
□Processormodestatusregister(PMST)
□Statusregisters(STOandST1)
□Block-repeatcounterregister(BRC)
Memory-mappedaccumulatorregisters(AG,AH,AL,BG,BH,BL)
關(guān)于指令集:
20:50:49為了方便不懂指令的查詢,我把《D5P的用系統(tǒng)設(shè)計實(shí)踐+鄭紅等編著.pdf》
末尾附的匯編指令表給做成txt文檔了(后來發(fā)現(xiàn)真的不如文檔:spiul72cTMS320C54xDSP
ReferenceSetVolume2MnemonicInstructionSet.pdf來得快啊,來得好啊),如下:指令集
C54x指令集.txt
一、54x系列CPU核
《DSP程序開發(fā):MATLAB調(diào)試及直接目標(biāo)代碼生成》30頁(非電子書頁數(shù))開始有
詳細(xì)敘述
2.1.2CPU核
先總體來看有哪些功能單元。
所有TMS320C54VC54xxDSP的CPU核都包含如下功能單元:40bit整術(shù)邏輯單元
(ALU),2個40bit嘉加器、桶形移位器、乘/加單元(包含一個17bitX17bit乘法器和一個
40bit加法器)、比較/選擇/存儲單元(CSSU)指數(shù)編碼舞、寄存器和地址產(chǎn)生單元(包含一個
數(shù)據(jù)地址產(chǎn)生單元和一個程序地址產(chǎn)生單元)。
首先來看ALU
ALU執(zhí)行基本的二進(jìn)制補(bǔ)碼港宣和毆邏輯操你ALU的輸入可以為:16bit立
即數(shù)、數(shù)據(jù)存儲器中的16bit字、宿后備豆器中的16bit寧、數(shù)據(jù)存儲器中的兩個16bit字、
數(shù)據(jù)存儲甥中的32bit字或累加器中的40bit字.
當(dāng)ALU的結(jié)果發(fā)生溢出時可以設(shè)置成飽和模式,由狀態(tài)寄存器ST1的OVM位段來設(shè)
?是否使能飽和模式,狀態(tài)寄存器ST0的OVA(結(jié)果放入累加器A中)和OVB(結(jié)果放入累
加器B中)位段對溢出結(jié)果設(shè)置標(biāo)志。
ALU單元有一個進(jìn)位位(C),此位可以被大多數(shù)ALU的算術(shù)指令影響,包括旃轉(zhuǎn)和A
位操作。進(jìn)位位C對擴(kuò)展精度算術(shù)操作的高效計算提供支持。兩個條件探作碼C和NC彳
用于條件跳轉(zhuǎn),調(diào)用、返回和條件計算,RSBX和于BX指令可以用來加載進(jìn)位位。
ALU單元還可以作為兩個16bitALU使用,能夠在單周期內(nèi)同時執(zhí)行兩個16bit操作。
狀態(tài)寄存器STI的C16位段用來設(shè)置此模式。
這里面我有幾個疑問:
1.飽和模式功能的效果和進(jìn)位位所產(chǎn)生的效果有何區(qū)別?
2.條件操作碼C和NC是怎么用的?
也許下面這段話能解釋第I個問題,但是又存在另外的問題~
累加器中的值在存入存儲器之前,還可以對其數(shù)值采取飽和處理,由PMST寄存器的
SST位段設(shè)置是否使能飽和處理.ST1寄存器的SXM設(shè)置館和處理模式,當(dāng)SXMM)時,
如果累加器的40bil數(shù)值超過FFFFFFFFh,則會飽和到FFFFFFFFh:當(dāng)SXM=1時,如果
累加器的40成數(shù)值超過7由1^^,則會飽和到7FFFFFFFh,如果累加器的40b"數(shù)值
小于80000000b,則會飽和到8000OOOOhe,最后存儲相應(yīng)的字(商位字、低位字或整個的
32bit字),而累加相中原來的值不會發(fā)生變化。
要注意,上面的數(shù)值都只有32位哈,還有8位是保護(hù)位的。
我的疑問是:
1.符號位哪去了?
答:當(dāng)SXM=0時,是沒有符號位的;當(dāng)SXM=1時,是有符號位的。
理解了這個,第2問就好理解了。
2.80000000h應(yīng)該是一個很大的數(shù)啊,怎么小于它的數(shù)還要飽和到它?哦,懂了,這個
是用補(bǔ)碼表示的最小負(fù)數(shù),那說明最高是符號位啦!
再來看累加器:
2.累加器A和B
累加器A和B月來存儲ALU或乘/加單元的輸出結(jié)果,它們也可以作為ALU單元的第
二個(Y)輸入數(shù)。累加器A還可以作為乘/加單元的輸入數(shù)。每一累加器都可分為如下三部分:
保護(hù)位(bit39?32)、高位字(bit31?16)和低位字(bitl5R),分別對應(yīng)寄存器AG(BG).AH(BH)
和AL(BL)o
這段話好明白。
利用STH、STL、STLM和SACCD指令或并行存儲指令在數(shù)據(jù)存儲器中保存累加器的
內(nèi)容。其中,STH、SACCD或并行存儲指令用來存儲累加器的高位字(AH或BH),STL指
令用來存儲累加器的低位字(AL或BL).
例假定累加器A的值為A=FF43211234h,則帶移位的累加器存儲結(jié)果為:
STHA,8JEMP;TEMP=2112h
STHA.-8.TEM?;TEMP?=FF43h
STLA,8.TEMP:TEMP=3400h
STLA,-8.TEMP;TEMP?=2112h
美鍵是要把這個例子為結(jié)果為什么是那么多搞清楚?
相關(guān)的指令我作的索引里也沒有,光有下STST也不帶中間的參數(shù),所以我弄不懂
這個簡單撒,全部轉(zhuǎn)化成二進(jìn)制就好看了。
FF43211234
?dec2bin(hex2dec('ff432l1234,))
ans=
1111111101000011001000010001001000110100
?dec2bin(hex2dec('2112,))
ans=
10000100010010
可見,取得是其中我用綠色標(biāo)出的那段,可是綠色前面的那段除去保護(hù)位還有10位啊!
這個就是問題的所在了!
再看第二條吧~
?dec2bin(hex2dec(,ff43'))
11111111010()(X)11
對比:
111111110100(X)11CO10(X)010001001(X)()II()1()0
還是不知道怎么移的、這個根本就沒移過啊!
強(qiáng)烈建議明天去下:
[5]9Pmi31TMS320c54xDSPReferenceSetVolumeLCPUandPyipherals
[6]sprul72一—TMS32OC54xDSPReferenceSetVolume2:MnemonicInstructionSet
?pru173一一TMS32OC54xDSPReferenceSetVolume41ApplicationsGuide
wsprul79一-TMS320C54xDSPReferenceSetVolume3:AlgebraicInstructionSet
[9]spru302一-TMS32OC54xDSPReferenceSetVolume5:EnhancedPeripherals
好了,今天就到這里,先睡了吧!
后來查到了,原來是這樣的:
Execution1:(src)?(-16)-*Smem
2:(src)?(ASM-16)-*Smem
3:(src)?(SHFT-16)-*Xmem
4:(src)?(SHIFT-16)-*Smem
這里是第3種情況,所以
STHA,8,TEMP:
中,移位量是8-16=-8即向右移8位,正數(shù)的情況下是向左移8位的。
知道了這個之后,我們再來對比:
?dec2bin(hex2dec('ff43211234,))
ans=
llllilll01000011001000010001001000110100
?dcc2bin(hcx2dcc('2112'))
ans=
1(X)()()10001(X)10
顯然情況還是不對的,這種情況顯然是向左移了10位的。這個該怎么辦?只好把這個
問題留在這里,等我能寫實(shí)際的匯編程序的時候再寫一個程序測試一下就OK了。
繼續(xù)昨天的,先去把上圖中的5個文檔都下載下來吧!
spru131172173179302
10:23:24下我完成了,也查到了。如下:
Syntax1:STHsrc,Smem
2:STHsrc,ASM,Smem
3:STHsrc,SHFT,Xmem
4:STHsrc[,SHIFT],Smem
Operandssrc:A(accumulatorAi
B(accumulatorB)
Smem:Singledata-memoryoperand
Xmem:Dualdata-memor/operand
0sSHFTs15
-16sSHIFTs15
Execution1:(src)?(-16)->Smem
2:(src)?(ASM-16)-*Smem
3:(src)?(SHFT-16)-*Xmem
4:(src)?(SHIFT-16)-*Smem
DescriptionThisinstructionstoresthehighpartofsrc(bits31-16)indata-memorylocation
Smem.Thesrcisshiftedleft(asspecifiedbyASM,SHFT,orSHIFT)and
bits31-16oftheshiftedvaluearestoredindatamemory(SmemorXmem).
IfSXM=0,bit39ofsrciscopiecintheMSBsofthedata-memorylocation.
IfSXM=1,thesign-extendedvaluewithbit39ofsrcisstoredintheMSBsof
thedata-memorylocationafterbeingright-shiftedbytheexceedingcuardbit
margin.Thesrcremainsunaffected.
SXM符號擴(kuò)展方式位
打綠顏色的意思是在SXM=I的情況下,最高位39位,即符號位的擴(kuò)展是在執(zhí)行一個操
作之后。這個操作是指超出32位到39位的保護(hù)位邊界的右移。???嗚嗚,自己分
析了半天也沒搞清楚是怎么回事?
后來我查了SXM,覺得應(yīng)該是這么回事,保護(hù)位里的數(shù)字是1還是0應(yīng)該與最高位的
39位一樣,進(jìn)行符號位的擴(kuò)展就是在0到31位最高的0位填符號位。既然保護(hù)位里的數(shù)字
是1還是。應(yīng)該與最高位的39位一樣,那么我進(jìn)很好辦了,我只需要保護(hù)位的數(shù)字跨過保護(hù)
位與有效位的界即可啦。這也是綠色顏中的數(shù)字所述的意思啦!
去查一下SXM吧!
哪里有呢?應(yīng)該是講CPU中的有吧!于是查:
spru131gTMS320C54xDSPReferenceSetVolume1CPUandPeripherals真心沒查到詳
細(xì)介紹。
再查:
spru172cTMS320C54xDSPReferenceSetVolume2MnemonicInstructionSet
和
spru179cTMS320C54xDSPReferenceSetVolume3AlgebraicInstructionSet
也是真心沒有詳細(xì)介紹!
折狂,難道還有其它資料?仔細(xì)一看《DSP應(yīng)用系統(tǒng)設(shè)計實(shí)踐-C54x》中的參考資料,也
沒有啊其它會有這個介紹的資料了。
于是靜下心再查"SetVolume1CPUandPeripherals”果然是第一次查的方法不對引起的,
查到了專門介紹這個的,在第93頁。
SXM1Sign-extensionmode.SXMdetermineswhethersignextensionisperformed:
SXM=0Signextensionissuppressed.
SXM=1DataissignextendedbeforebeingusedbytheALU.
SXMdoesnotaffectthedefinitionsofcertaininstructions:theADDS,LDU,MAC,
andSUBSinstructionssuppresssignextensionregardlessofSXMvalue.The
SSBXandRSBXinstructionssetandresetSXM,respectively.
其實(shí)還是沒說清楚。但是單從這個SXM的功能來說,我的確是知道的,但是結(jié)合具體
的STH我就不太清楚了。哦,我猜大概是這個意思啦。詳見一號書簽
好,我們再回歸我要解決的這條指令執(zhí)行后為什么是那么多的問題。
但是在看這條指令的介紹時,我又發(fā)現(xiàn)了新的問題?即ASM與SHFT有何關(guān)系?我
需要查下ASM。ASM不是指匯編文件的后綴嗎?在這種情況下是何意思呢?
查到了,意思如下:
ASM5-bitaccumulatorshiftmodefieldinSTI(-16ASM15)
可見,它是被存儲在STI寄存器中的偏移量。好了,現(xiàn)在我們回到昨晚問題的記錄處吧!
詳見:二號書簽
Syntax1:STHsre,Smem
2:STHsre,ASM,Smem
3:STHsre,SHFT,Xmem
4:STHsrc[,SHIFT],Smem
Operandssre:A(accumulatorAi
B(accumulatorB)
Smem:Singledata-memoryoperand
Xmem:Dualdata-memor/operand
0sSHFTs15
-16sSHIFTs15
這幅圖中,我還有疑問?Smem和Xmem是怎么回事?這里說的也不清楚啊
-operand
是運(yùn)算域的意思。從字面意思來講,Smcm是在單數(shù)據(jù)域的操作。而Xmcm是雙數(shù)據(jù)域
的操作?這兩個有何區(qū)另J呢?
查了三個官方文檔都沒查到,都是直接用而已,具體在哪里出現(xiàn)的,看來我只有百度
了。
百度上查了,一個結(jié)果都沒有,但是谷歌一下,卻很多結(jié)果,我在一個PPT上找到了我
要的結(jié)果。
與Ti的DSP芯片相關(guān)的資料'網(wǎng)上所下資料'第3章TMS320c54x的數(shù)據(jù)尋址方式.PPT
這個PPT的第3頁有詳細(xì)介紹,如下:
縮寫符號含義
Smem16位單數(shù)據(jù)存儲器操作數(shù)
Xmem在雙操作數(shù)指令及某些單操作數(shù)指令中所用的16位雙數(shù)據(jù)存儲
器操作數(shù),從DB總線上讀出
Ymem在雙操作數(shù)指令中所用的16位雙數(shù)據(jù)存儲器操作數(shù),從CB總線
上讀出;在讀同時并行寫的指令口表示寫操作數(shù)
dmad16位立即數(shù)一數(shù)據(jù)存儲器地址(。?65535)
pmad16位立即數(shù)一程序存儲器地址(0~65535)
PA16位立即數(shù)——I/。口地址(0-65535)
sre源累加器(堿8)
dst目的累加器(A或B)
Ik16位長立即數(shù)
由此,我總結(jié)如下,Ti的DSP芯片的匯編指令從操作數(shù)上可分為單操作數(shù)指令和雙操作
數(shù)指令。Smem就是針對單操作數(shù)指令的。而Xmem和Ymem則是針對雙操作指令,其中
Xmemj是在雙操作數(shù)指令及某些單操作數(shù)指令中所用的16位雙數(shù)據(jù)存儲器操作數(shù),從DB
總線上讀出,而Ymem則是在雙操作數(shù)指令中所用的16位雙數(shù)據(jù)存儲器操作數(shù),從CB總
線上讀出;在讀同時并行寫的指令中表示寫操作數(shù)
繼續(xù)看書,關(guān)于54系列DSP的介紹。
31頁說到桶形移位器中有一句話:
桶形移位器的輸出連接到某一ALU的輸入或EB數(shù)據(jù)總線上。為什么是EB數(shù)據(jù)總線
上?
27頁說C50(X)有三套數(shù)據(jù)總線,即CB,DB和EB,前兩個知道是什么東東,EB數(shù)據(jù)總
線是什么東東?
查官方資料,找到了:
54x系列資料\spn1131gTMS320C54xDSPReferenceSetVolume1CPUand
Peripherals.pdf
44頁:
■TheCBandDBcarrytheoperandsthatarereadfromdatamemory.
■TheEBcarriesthedatatobewrittentomemory.
看到了沒有,一個是讀,一個是寫,哈哈!
31頁再來看乘/加單元吧
乘/加單元可以在單周期內(nèi)執(zhí)行一個17bitX17bit二進(jìn)制補(bǔ)碼乘法和一個40bit累加運(yùn)
算。乘/加單元包含如下幾個功能塊:??個乘法器、一個加法器、無符號/符號輸入數(shù)控制邏
輯、分?jǐn)?shù)控制邏輯、零檢測器、取整器、溢山/飽和一輯和一個16bit折存罌J
乘法器具有兩個輸入數(shù):X源操作數(shù)可以選擇暫存器T、數(shù)據(jù)存儲器(DB數(shù)據(jù)總線)或
累加器A(32?16);Y源操作數(shù)可以選擇程序存儲器(PB程序總線)、數(shù)據(jù)存儲器(DB數(shù)據(jù)總
線或CB數(shù)據(jù)總線)、累加器A(32?16)或立即數(shù)。
加法器的一個輸入數(shù)來自乘法器的輸出結(jié)果,另一個來自累加器A或B.
乘/加單元和ALU單元可以并行執(zhí)行I在單周期內(nèi)完成乘/累加(MAC)和ALU操作.
注意,乘法器的兩個瑜入法的數(shù)據(jù)來源是有點(diǎn)差別的,X源操作數(shù)不能用程序存儲器,
而Y源操作數(shù)是可以的。
31頁再來看CSSU比較/選擇/存儲單元吧
CSSU是專用于實(shí)現(xiàn)Viterbi蝶形運(yùn)算的硬件單元,完記住這個就可以了。
31頁再來看指數(shù)編碼器
指數(shù)編碼器是用于專門實(shí)現(xiàn)EXP指令的硬件迎元.指數(shù)編碼器可以在單周期內(nèi)執(zhí)行
EXP指令。EXP指令把累加器中數(shù)據(jù)頭的冗余符號批數(shù)(減8去除保護(hù)忖)放到暫存器T中.
NORM指令再根據(jù)T中的值對累加器進(jìn)行移位,以去除冗余的符號位,即可完成對累加器
中的值進(jìn)行歸一化操作。
由作者的介紹我可以作出這樣的推測:指數(shù)編碼器這個硬件單元還并不是就鳧成美廠
指數(shù)化的過程,只是其中的一步而已,這一步具體的操作就是圖中的綠線部分。
32頁接下來是寄存器的映射,當(dāng)然,我認(rèn)為最好的處理方式是到網(wǎng)上去下一張表,方
便以后搜索即可。當(dāng)然也要知道官方文檔這部分在哪里。
官方文檔的這部分在:
54x系列資料\DatasheeiTMS320vc5402.pdf的27頁
0TMR中斷屏蔽寄存器
1IFR中斷標(biāo)志寄存器
2-5—測試保留
6STO狀態(tài)寄存器0
7STI狀態(tài)寄存器1
8AL累加器A低字(15—0比特)
9AH累加器A高字(31-16比特)
AAG累加器A保護(hù)位(39—32比特)
BBL累加器B低字(15—0比特)
CBH累加器B高字(31-16比特)
DBG累加器B保護(hù)位(39-32比特)
ET乘法寄存器
FTRN傳送寄存器
10-17AR0-AR7箱助寄存器ARnn=0?7
18SP堆棧指針
19BK循環(huán)緩存區(qū)大小寄存器
1ABRC塊重復(fù)計數(shù)器
IBRSA塊重復(fù)開始地址
ICREA塊重復(fù)結(jié)束地址
IDPMST狀態(tài)寄存器
IEXPCPC擴(kuò)展寄存器
1E-1F—保留
20BDRRO帶緩存串口0數(shù)據(jù)接收寄存器
21BDXRO帶緩存串口。數(shù)據(jù)發(fā)送寄存器
22BSPCO帶緩存串口0控制寄存器
23BSPCEO帶緩存串口。控制擴(kuò)展寄存器
24TIM定時器計數(shù)器
25PRD定時器周期寄存器
26TCR定時器控制寄存器
27—保留
28SWWSR等待狀態(tài)產(chǎn)生寄存器
29BSCRBank-switching控制寄存器
2A—保留
2BXSWR擴(kuò)展等待狀態(tài)寄存器
2CHPIC主機(jī)接口控制寄存器
2D-2F—保留
30TRCNTDM串口數(shù)據(jù)接收寄存器
31TDXRTDM串口數(shù)據(jù)發(fā)送寄存器
32TSPCTDM串口控制寄存器
33TCSRTDM串口通道選擇寄存器
34TRTATDM串口接收發(fā)送寄存器
35TRADTDM串口接收地址寄存器
36-37—保留
38AXROABUO發(fā)送地址寄存器
39BKXOABUO發(fā)送緩沖大小寄存器
3AARROABUO接收地址寄存器
3BBKROAEUO接收緩沖大小寄存器
3CAXR1ABU1發(fā)送地址寄存器
3DBKX1ABU1發(fā)送緩沖大小寄存器
3EARR1ABU1接收地址寄存器
3FBKR1ABU1接收緩沖大小寄存器
40BDRR1帶緩存串口1數(shù)據(jù)接收寄存器
41BDXR1帶緩存串口1數(shù)據(jù)發(fā)送寄存器
42BSPC1帶緩存串口1控制寄存器
43BSPCE1帶緩存串口1控制擴(kuò)展寄存器
44-57—保留
58CLKMD時鐘方式寄存器
59-5F—保留
33頁接下來,終于到重點(diǎn)了,也是我為什么寫這個文檔的原因,那就是對狀態(tài)寄存器
STO和ST1的研窕。
首先我要講算出它們各自的復(fù)位值。
?dcc2bin(hex2dec('l800'))
ans=
0001100000000000這是ST0的復(fù)位值
?dec2bin(hex2dec(*29OO'))
ans=
1O1(M)IOO(X)(X)()()這是STI的復(fù)位值
好,我們來具體看每一位進(jìn)行了怎樣的設(shè)置。
0()011000(X)()0000()這是STO的復(fù)位值
STO的0到8位:DPData-memorypagepointer.
數(shù)據(jù)存儲器頁指針,保存數(shù)據(jù)存儲器正贏就9bit地址,與指令中的低7bit操作
散聯(lián)合形成一個16bit地址,以進(jìn)行直接尋址,LD指令可以加載DP位段
ST0中0到8位的默認(rèn)值都是0,說明基地址是0同時這個說明也告訴我們,數(shù)據(jù)存儲
器的地址生成是9位+7位的生成方式。
注意,是否用DP作為基指勺二還二位有關(guān),即ST1的第14位:
Compilermode.CPLindicateswhichpointerisusedinrelativedirectaddressing:
CPL=0Therelativedirect-addressingmodeusingthedatapagepointer
(DP)isselected.
CPL=1Therelativedirect-addressingmodeusingthestackpointer(SP)is
selected.
再看第9位和第10OVAOVB
復(fù)位值顯然是兩個0,也是符號正常情況的、
要注意,溢出標(biāo)志位和進(jìn)位標(biāo)志位是不一樣的。
再看第11位進(jìn)位標(biāo)志位C這一位書上講得嚴(yán)重不清楚。所以我還是決定到官方資料
上去查看一下到底怎么回事。
復(fù)位置是1,這個1值應(yīng)該對初始化沒有什么影響的
官方是這樣說的:
spru131gTMS320C54xDSPReferenceSetVolume1CPUandPeripherals
Carryissetto1iftheresultofanadditiongeneratesacarry;itisclearedto0ifthe
resul.o..subtractio.generate..borrow.Othcrwise.i.i.rese.afte.a.additio.and
i.i.se.afte..subtraction.excepJb.a.AD.o.SU.wit..l6-bi.shift.I.these
cases,theADDcanonlysetandtheSUBonlyresetthecarrybit,buttheycannot
affec.i.o(herwise.Cair.an.borro.ar.deflne.a.th.32n.bi.positio.an.are
operate.a.th.AL.leve.only.Th.shif.an.rotat.instruction.(ROR.ROL.SFTA,
andSFTL),andtheMIN,MAX,ABS,andNEGinstructionsalsoaffectthisbit.
我把其中的重點(diǎn)抽出來,這個C和我們以前接觸到的C是有差別的。具體來說是如下
的情況:
一、加法的情況下
1.加法如果產(chǎn)生了進(jìn)位,其值為1
2.如果加法沒有產(chǎn)生進(jìn)位,其值為0
可見,每做一次都要進(jìn)行一次更新,不需要你手動清楚
二、減法的情況下
1.減法如果產(chǎn)生了借位,其值為0
2.如果減法沒有產(chǎn)生借位,其值為1
可見,和以前接觸到的C位的不同在于,以以前接觸到的C位不管是進(jìn)位和加位都被
置為1,而這里不同,這里是根據(jù)加法還是減法來確定的
在移位的情況下,不管怎樣,若是加法,是必將其值置為1;若是減法,必然其值置為0,
其實(shí)這是顯然的,移位必然伴隨著進(jìn)位或借位嘛
再來看第12位TCTest/controlflag位復(fù)位值為1
就是根據(jù)其狀態(tài)來控制程序的走向的
Test/contro.flag.T.store.th.result.o.th.arithmeti.logi.uni.(ALU.tes.bi.op-
erations.T.i.affecte.b.th.BIT.BITEBITT.CMPM.CMPR.CMPS.an.SFTC
instructions.Th.statu.(se.o.cleared.o.T.determine.i.th.conditiona.branch.
call,execute,andreturninstructionsexecute.
TC=1ifthefollowingconditionsaretrue:
AbittestedbyBITorBITTisa1.
AcompareconditiontestedbyCMPM,CMPR,orCMPSexistsbetweenadata-
incmoryvalueandanimmediateoperand,AROandanotherauxiliaryregister,oran
accumulatorhighwordandanaccumulatorlowword.
Bit31andbit30ofanaccumulatortestedbySFTChavedifferentvaluesfrom
eachother.
再來看13位到15位ARPAuxiliaryregisterpointer復(fù)位值為000
Auxiliar.registe.pointer.T-
patibilitymodeofindirectsingle-operandaddressing(seesection5.5,IndirectAd-
dressing.pag.5-IO).AR.mus.alway.b.se.l.zei*.whe.lh.D5.i.i.slandard
mode(CMPT=0).
具體是這樣的,DSP芯片有兩種工作模式,一種是兼容模式;另一種是正常模式。模式
的不同導(dǎo)致可以使用的輔助寄存器有所不同。在正常模式下只能使用000號輔助寄存器。在
兼容模式下則能使用0號到7號輔助寄存器。
再去查下輔助寄存器auxiliaryregister有關(guān)的知識吧~
33.4.6AuxiliaryRegisters(AR0-AR7)
Theeight16-bitauxiliaiyregisters(AR0-AR7)canbeaccessedbytheCPU
an.modifie.b.th.auxiliar.registe.arithineti.unit.(ARAUs).Th.primary
functionoftheauxiliarj;registersistogenerate16-bitaddressesfordata
space.However.thes.register.ca.als.ac.a.general-purpos.register.or
counters.Frmatio.abou.lh.rol.lh.auxiliar.register.pla.i.data-
memoryaddressing,seesection5.5,IndirectAddressing,on10.
終于把TO寄存器看完了,再來看T1寄存器吧!
首先是0到4位ASM(Accumulatorshiftmode.)位復(fù)位值為0000
在上邊的問題中我已經(jīng)見識過它的用處「這里就不多說「需要詳細(xì)了解時去查幫助
文檔即可。
其次是第5位,CMPT值(Compatibilitymode.)復(fù)位值為0這個在上邊ST0的ARP中
已經(jīng)見識過了~
其次是第6位FRCT復(fù)位值為0一般初始化時都要把這一位置為I,原因見下面的詳述
ractiona.mode.Whe.FRC.i.l.th.multiplie.outpu.i.left-shifte.b.on.bi.to
compensateforanextrasignbit
我想不同的是為什么乘法器的結(jié)果左移一位才是補(bǔ)足符號位?為什么不是右移一
位?
仔細(xì)一想,哦,我知道了,乘法的結(jié)果最高兩位實(shí)際上都是符號位產(chǎn)生的結(jié)果,比如二
進(jìn)制的101*101(乘數(shù)和被乘數(shù)的最高位都為1,說明是負(fù)數(shù)與負(fù)數(shù)相乘)結(jié)果為11001,而
真正的結(jié)果應(yīng)該為01吧!左移一位,結(jié)果為1001,怎么成-1了呢?這里面的懸機(jī)是怎樣
的?我覺得我該上網(wǎng)查一查這個問題。
查到了,在谷歌上查到的:
與Ti的DSP芯片相關(guān)的資料、定點(diǎn)數(shù),浮點(diǎn)數(shù)專題\DSP_FIXED_POINT(重點(diǎn)講解FRCT
的作用).pdf
TMS320C5509A是16位定點(diǎn)數(shù)處理器,其累加器是32位/40位的。在定點(diǎn)處理器中
處
理浮點(diǎn)數(shù)需要對定點(diǎn)數(shù)進(jìn)行定標(biāo)。下面所說的定點(diǎn)數(shù)都是指有符號數(shù)。
通常采用的定標(biāo)有Q15和Q31,分別表示小數(shù)點(diǎn)后有二進(jìn)制15位和二進(jìn)制16位。
因
此16位Q15最大能表示的數(shù)是1-225,32位Q31最大能表示的數(shù)是1-2人(-31)。定
標(biāo)不同的數(shù)可以直接相乘.例如Q13*Q15=Q28o兩個定標(biāo)不同的數(shù)不能直接相加,比如
Q13+Q15,通常要將Q15右移兩位,轉(zhuǎn)換為Q13后再相加,當(dāng)然這樣損失了兩位的精度。
好,下面就是真正的原因了:
雖然DSP的乘法器有17位,但是它的乘操作的乘數(shù)和被乘數(shù)都是Q15的數(shù).這樣結(jié)果
為Q30,存儲在
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州全方案活動策劃(3篇)
- 公益地攤活動方案策劃(3篇)
- 小吃打折活動策劃方案(3篇)
- 實(shí)體電器活動策劃方案(3篇)
- 中秋促銷活動方案策劃(3篇)
- 什么是生活常規(guī)管理制度(3篇)
- 策劃全城美食活動方案(3篇)
- 生鮮配送企業(yè)采購管理制度(3篇)
- 品質(zhì)會務(wù)活動策劃方案(3篇)
- 機(jī)關(guān)疫情期間管理制度內(nèi)容(3篇)
- 2025黑龍江大興安嶺地區(qū)韓家園林業(yè)局工勤崗位人員招聘40人參考筆試試題及答案解析
- 2025年婦產(chǎn)科考試試題(含答案)
- 2026年湖南中醫(yī)藥高等??茖W(xué)校單招職業(yè)技能考試題庫附答案
- 興國縣2025年招聘城市社區(qū)專職網(wǎng)格員【23人】考試歷年真題匯編帶答案解析
- 2025四川產(chǎn)業(yè)振興基金投資集團(tuán)有限公司下半年員工招聘筆試考試參考試題及答案解析
- 2025下半年廣東珠海市紀(jì)委監(jiān)委招聘所屬事業(yè)單位工作人員12人考試筆試備考試題及答案解析
- 2025年中職物理(物理基礎(chǔ)知識)試題及答案
- “現(xiàn)代控制理論”教學(xué)改革與創(chuàng)新實(shí)踐
- (新教材)部編人教版三年級上冊語文全冊核心素養(yǎng)教案(教學(xué)反思無內(nèi)容+二次備課版)
- 能源轉(zhuǎn)型新探索-國網(wǎng)江蘇電力氣候行動解決方案
- 2025年榆林神木市信息產(chǎn)業(yè)發(fā)展集團(tuán)招聘備考題庫(35人)附答案詳解(綜合題)
評論
0/150
提交評論