第一篇:DSP調(diào)試總結(jié)
6416是定點(diǎn)型芯片,在項(xiàng)目中主要用來做下變頻后數(shù)據(jù)的譜計(jì)算。FPGA中對所采數(shù)據(jù)進(jìn)行下變頻后通過DSP的EMIF口(64bit)傳輸?shù)紻SP中進(jìn)行FFT運(yùn)算,算完的譜數(shù)據(jù)再通過EMIF口回傳至FPGA,再傳至上位機(jī)進(jìn)行頻譜圖的顯示。
在這個過程中,并沒有用DSP做多少事情,只是有一個FFT計(jì)算和EMIF口以及MCBSP口的數(shù)據(jù)與控制命令的傳輸,總體來說功能還是蠻簡單的。
1、首先,F(xiàn)FT運(yùn)算直接調(diào)用TI的C64XX的庫函數(shù)就可以完成。在這個調(diào)試過程中,首先使用的是simulater環(huán)境進(jìn)行軟件仿真計(jì)算,根據(jù)計(jì)算出來的譜圖發(fā)現(xiàn)結(jié)果是正確的,只是模擬數(shù)據(jù)和旋轉(zhuǎn)因子在軟仿真的時候耗費(fèi)的時間太長(32K點(diǎn))。可由MATLAB產(chǎn)生數(shù)據(jù),然后導(dǎo)入數(shù)組,直接進(jìn)行FFT驗(yàn)證之。
FFT消耗時間分析:在軟件中可以設(shè)置觀測FFT函數(shù)所消耗的時間,最后由兩種結(jié)果,Total cycle 和Cpu cycle,其根據(jù)600M主頻計(jì)算下來,做32K點(diǎn)時其耗時相差有100倍,即百毫秒與毫秒的差別,由于不確定時間應(yīng)采取哪種,所以進(jìn)而進(jìn)行了板級實(shí)驗(yàn)。
在板級實(shí)驗(yàn)過程中,發(fā)現(xiàn)程序“經(jīng)常偶爾”跑飛,一直也沒有找到原因。最后經(jīng)過多次試驗(yàn)用示波器檢測出來的時間與用Cpu cycle計(jì)算出來的相近。此時,我們假設(shè)Cpu cycle是正確的,那換算出來的主頻就只為400M。用示波器對分頻時鐘進(jìn)行測試,發(fā)現(xiàn)現(xiàn)在CPU確實(shí)只工作在400M的主頻,而不是最大600M的主頻。
由此說明,芯片的配置可能有問題,并且還可以證明可以用Cpu cycle來計(jì)算程序的運(yùn)行時間(當(dāng)然DSP主頻要確定)。
經(jīng)databook查詢,發(fā)現(xiàn)晶振的頻率與其設(shè)置的主頻選擇有誤,及用此晶振的頻率,要改變外圍電路配置才能達(dá)到最高頻率。當(dāng)然,也許maybe可能這個問題與DSP經(jīng)常跑飛有關(guān)聯(lián)。
改了之后發(fā)現(xiàn)其運(yùn)行在666M的狀態(tài),超了66M,不曉得對芯片有沒有影響,知道的大神可告知小弟,不勝感激...2、EMIF 與 MCBSP 的可按照自己的需要進(jìn)行配置初始化。
EMIF用到了64位,在傳輸64位數(shù)據(jù)上糾結(jié)了很久,C語言上long即為64位,可在此只為40位。經(jīng)一位大神提醒,使用long long類型搞定之,木有技術(shù)含量,發(fā)現(xiàn)自己基本功相當(dāng)之不扎實(shí)。
第二篇:DSP各種知識點(diǎn)總結(jié)
DSP芯片的特點(diǎn):(1).哈佛結(jié)構(gòu)(程序空間和數(shù)據(jù)空間分開)(2).多總線結(jié)構(gòu).(3)流水線結(jié)構(gòu)(取指、譯碼、譯碼、尋址、讀數(shù)、執(zhí)行)(4)多處理單元.(5)特殊的DSP指令(6).指令周期短.(7)運(yùn)算精度高.(8)硬件配置強(qiáng).(9)DSP最重要的特點(diǎn): 特殊的內(nèi)部結(jié)構(gòu)、強(qiáng)大的信息處理能力及較高的運(yùn)行速度。2 三類TMS320:(1)TMS320C2000適用于控制領(lǐng)域(2)TMS320C5000應(yīng)用于通信領(lǐng)域(3)TMS320C6000應(yīng)用于圖像處理 DSP總線結(jié)構(gòu): C54x片內(nèi)有8條16位主總線:4條程序/數(shù)據(jù)總線和4條對應(yīng)的地址總線。1條程序總線(PB):傳送自程序儲存器的指令代碼和立即操作數(shù)。3條數(shù)據(jù)總線(CB、DB、EB):CB和EB傳送從數(shù)據(jù)存儲器讀出的操作數(shù);EB傳送寫到存儲器中的數(shù)據(jù)。4條地址總線(PAB、CAB、DAB、EAB)傳送相應(yīng)指令所需要的代碼 4存儲器的分類: 64k字的程序存儲空間、64K字的數(shù)據(jù)存儲空間和64K字的I/O空間(執(zhí)行4次存儲器操作、1次取指、2次讀操作數(shù)和一次寫操作數(shù)。
5存儲器空間分配 片內(nèi)存儲器的形式有DARAM、SARAM、ROM。RAM安排到數(shù)據(jù)存儲空間、ROM構(gòu)成程序存儲空間。(1)程序空間:MP/MC=1
40000H~FFFFH 片外
MP/MC=0 4000H~EDDDH 片外
FF00H~FFFFH 片內(nèi) OVLY=1 0000H~007FH 保留
0080H~007FH 片內(nèi)
OVLY=0 0000H~3FFFH片外(2)數(shù)據(jù)空間:DROM=1 F000H~F3FFH 只讀空間 FF00H~FFFH保留
DROM=0 F000H~FEFFH 片外
6數(shù)據(jù)尋址方式
(1)立即尋址(2)絕對尋址<兩位>(3)累加器尋址(4)直接尋址@<包換數(shù)據(jù)存儲器地址的低7位>優(yōu)點(diǎn):每條指令只需一個字(5)間接尋址*按照存放某個輔助寄存器中的16位地址尋址的AR0~AR7(7)儲存器映像寄存器尋址(8)堆棧尋址
7尋址縮寫語 Smem:16位單尋址操作數(shù) Xmem Ymem 16位雙
dmad pmad PA16位立即數(shù)(0-65535)scr源累加器 dst目的累加器 lk 16位長立即數(shù)
8狀態(tài)寄存器ST0 15~13ARP輔助寄存器指針 12TC測試標(biāo)志位 11C進(jìn)位位 10累積起A的一出標(biāo)志位OVA 9OVB 8~0DP數(shù)據(jù)存儲器頁指針
9狀態(tài)寄存器ST1 CPL:直接尋址編輯方式
INTM =0開放全部可屏蔽中斷 =1關(guān)閉
C16 雙16位算數(shù)運(yùn)算方式
10定點(diǎn)DSP 浮點(diǎn)DSP:定點(diǎn)DSP能直接進(jìn)行浮點(diǎn)運(yùn)算,一次完成是用硬件完成的,而浮點(diǎn)需要程序輔助。
11重復(fù)操作:重復(fù)執(zhí)行單條指令,程序塊重復(fù)操作(可以響應(yīng)中斷)12復(fù)位操作:處理器從FF80h處取指 13中斷:兩大類:(1)可屏蔽:立即響應(yīng)(2)非屏蔽:(滿足下列條件才能響應(yīng))①優(yōu)先級別最高②狀態(tài)寄存器ST1中的INTM位為0③中斷屏蔽寄存器IMR中的相應(yīng)位為1 三個階段:(1)接受中斷請求(2)響應(yīng)中斷(3)執(zhí)行中斷服務(wù)程序
14復(fù)位的三種方式:上電復(fù)位,手動復(fù)位,軟件復(fù)位
15常用匯編命令:.bss為未初始化的變量保留空間;usect在一個未初始化的有命名的段中為變量保留空間;.data通常包含了初始化的數(shù)據(jù);.sect定義已初始化的帶命名段,其后的數(shù)據(jù)存入該段;.text該段包含了可執(zhí)行的代碼;title.接在后面的是程序名;int用來設(shè)置一個或多個16位無符號整型常數(shù);word用來設(shè)置一個或多個16位帶符號整型常數(shù) 16.DSP系統(tǒng)的特點(diǎn):(1)精度高、抗干擾能力強(qiáng),穩(wěn)定性好。(2)編程方便、易于實(shí)現(xiàn)復(fù)雜算法(含自適應(yīng)算法)。(3)可程控。(4)接口簡單。(5)集成方便。
17.CPU部分:①先進(jìn)的多總線結(jié)構(gòu)(1條程序總線、3條數(shù)據(jù)總線和4條地址總線)。②位算術(shù)邏輯運(yùn)算單元(ALU),包括1個40位桶形移位寄存器和2個獨(dú)立的40位累加器。③17×17位并行乘法器,與40位專用加法器相連,用于非流水線式單周期乘法/累加(MAC)運(yùn)算。④比較、選擇、存儲單元(CSSU):用于加法/比較選擇。⑤指數(shù)編碼器:可以在單個周期內(nèi)計(jì)算40位累加器中數(shù)值的指數(shù)。⑥雙地址生成器:包括8個輔助寄存器和2個輔助寄存器算術(shù)運(yùn)算單元(ARAU)存儲器空間
192 K字可尋址存儲空間:64 K字程序存儲空間、64 K字?jǐn)?shù)據(jù)存儲空間及64 K字I/O空間 ⑦功能結(jié)構(gòu)上分:運(yùn)算部件和控制部件 18.累加器:目的寄存器 用來存放從ALU或乘法器/加法器單元輸出的數(shù)據(jù)。19.桶形移位器:立即數(shù);asm,T低6位
20.TMS320C54X有兩個通用引腳bio監(jiān)視外部 xf 握手信號
21.COFF3.公共目標(biāo)文件格式——COFF COFF的核心概念:使用代碼塊(段)和數(shù)據(jù)塊(段)編程,而不是指令或數(shù)據(jù)簡單的順序編寫。段的定義:就是在編寫匯編語言源程序時,采用的代碼塊或數(shù)據(jù)塊,它占據(jù)存儲器的某個連續(xù)空間。21.COFF包含的三個缺省段 1text 2data 3bss 22.DSP指令系統(tǒng):助記符和代數(shù)
23.Dsp開發(fā)工具:代碼生成工具和代碼調(diào)節(jié)工具 24.Dsp按照用途分類:通用型和專用型
AR3+是加2或者減2 25.1狹義理解為數(shù)字信號處理器,廣義理解為數(shù)字信號處理方法
26.程序計(jì)數(shù)器的直可通過復(fù)位操作、順序執(zhí)行指令、分支轉(zhuǎn)移、累加器轉(zhuǎn)移、塊重復(fù)、子程序調(diào)用、從累加器調(diào)用子程序、中斷操作改變
27.MMR寫操作流水線沖突時,采用推薦指令和插入空操作指令
28.定時器: 3個16位存儲器映射寄存器組成:定時器寄存器(TIM)、定時器周期寄存器(PRD)、定時器控制寄存器(TCR)。
.title “example.asm”
;用雙引號括起的源程序名
.mmregs
;定義存儲器映射寄存器的替代符號
STACK
.usect “STACK”, 10h
;在數(shù)據(jù)存儲器中留出16個單元作為
;堆棧區(qū),名為STACK
.bss
a, 4
.bss
x, 4
;在數(shù)據(jù)存儲器中空出4個存儲單元存放
;變量x1,x2,x3和x4..bss
y, 1
.def
start
;在此模塊中定義,可為別的模塊引用
.data
;緊跟其后的是已初始化數(shù)據(jù)
table:
.word 1, 2, 3, 4
;在程序存儲器標(biāo)號為table開始的8個單
.word 8, 6, 4, 2
;元存放初始化數(shù)據(jù)
.text
;緊跟其后的是匯編語言程序正文
start:
STM
#0, SWWSR
;SWWSR置0,不插等待周期
S
STM
#STACK+10H,SP
;設(shè)置堆棧指針
STM
#a, AR1
;AR1指向a的首地址
RPT
#7
;從程序存儲器向數(shù)據(jù)存儲器
MVPD
table, *AR1+
;重復(fù)傳遞共8個數(shù)據(jù)
CALL
SUM
;調(diào)用懲罰累加子程序 end:
B
end
;循環(huán)等待
SUM:
STM
#a, AR3
;將洗漱的首地址附給AR3
STM
#x, AR4
;降變量x的首地址附給AR4
RPTZ
A, #3
;降累加器清零,重復(fù)執(zhí)行下條指令4次
MAC
*AR3+, *AR4+, A
;乘法累加運(yùn)算
STL
A, @y
;結(jié)果送往變量y的存儲單元
RET
.end
;結(jié)束匯編,匯編器將忽略
5.堆棧用法:
壓入操作:SP先減1,然后再將數(shù)據(jù)壓入棧頂。
彈出操作:數(shù)據(jù)彈出后,再將SP加1。堆棧設(shè)置: size
.set 100 stack.usect “STK”, size
;自定義一個名為STK的保留空間,共100個單元
STM
#stack+size, SP;將這個保留空間的高地址(#stack+size)賦給SP,作為棧底,【例4.14】 對數(shù)組x[5]中的每個元素加1。
.bss
x, 5 begin:
LD
#1, 16, B
STM
#4,BRC
;BRC賦值為4
STM
#x,AR4
RPTB
next-1
;next-1為循環(huán)結(jié)束地址
ADD
*AR4,16,B,A
STH
A,*AR4+ next:
LD
#0, B
…
用next-1作為結(jié)束地址是恰當(dāng)?shù)摹H绻醚h(huán)回路中最后一條指令(STH指令)的標(biāo)號作為結(jié)束地址,若最后一條指令是單字指令也可以,若是雙字指令,就不對了。
【例4.15】 編寫一段程序,首先對數(shù)組x[20]賦值,再將數(shù)據(jù)存儲器中的數(shù)組x[20]復(fù)制到數(shù)組y[20]。
.title “exp15.asm”
.mmregs
STACK
.usect “STACK”, 30h
.bss
x, 20
.bss
y, 20
.data
table:
.word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
.def start
.text Start:
STM
#x, AR1
RPT #19
MVPD
table, *AR1+;程序存儲器傳送到數(shù)據(jù)存儲器
STM #x, AR2
STM
#y, AR3
RPT
#19
MVDD *AR2+, *AR3+;數(shù)據(jù)存儲器傳送到數(shù)據(jù)存儲器 end:
B end
.end
計(jì)算 z=x+y-w LD @x,A ADD @y,A SUB @W, A STL A,@z 計(jì)算y=mx+b LD @m,T MPY @x,A ADD @b,A STL A,@y 計(jì)算 y=x1*a1+x2*a2 LD @x1,T MPY @a1,B LD @x2,T MAC @a2,B STL B,@y STH B, @y+1 找出最大值,并存放在累加器A中 STM #a,AR1 STM #x,AR2 STM #2, AR3 LD
*AR1+,T MPY *AR2+,A
;第一個成績累加器A中 Loop LD *AR1+.T
MPY *AR2+,B ;其他乘積在累加器B中
MAX A
;累加器A和B比較,選大的存在A中
BANZ loop,*AR3 ;此循環(huán)中共進(jìn)行三次乘法比較 數(shù)組 x【5】={1,2,3,4,5}初始化
.data TBL
.word
1,2,3,4,5
.bss
x,5
.text
STM
#x,AR5
RPT
#4
MVPD
TBL,*AR5+
第三篇:DSP理論課總結(jié)
GX_Joe 第一次課-----DSP概念 Q1:DSP的概念:
DSP可以代表數(shù)字信號處理技術(shù)(Digital Signal Processing),也可以代表數(shù)字信號處理器(Digital Signal Processor)。前者是理論和計(jì)算方法上的技術(shù),后者是指實(shí)現(xiàn)這些技術(shù)的通用或?qū)S每删幊涛⑻幚砥餍酒?/p>
數(shù)字信號處理包括兩個方面的內(nèi)容: 1.算法的研究
算法的研究是指如何以最小的運(yùn)算量和存儲器的使用量來完成指定的任務(wù)。諸如:語音與圖像的壓縮編碼、識別與鑒別,信號的調(diào)制與解調(diào)、加密和解密,信道的辨識與均衡,智能天線,頻譜分析等各種快速算法 2.?dāng)?shù)字信號處理的實(shí)現(xiàn)
數(shù)字信號處理的實(shí)現(xiàn)是用硬件、軟件或軟硬結(jié)合的方法來實(shí)現(xiàn)各種算法。它和單片機(jī)的主要區(qū)別在于數(shù)值處理和高速運(yùn)算。數(shù)字信號處理的實(shí)現(xiàn)一般有以下幾種方法:
基于軟件仿真的MATLAB,基于PC的應(yīng)用程序,單片機(jī),F(xiàn)PGA,DSP,ASIC
Q2:DSP結(jié)構(gòu)特點(diǎn):(手把手P1)
強(qiáng)調(diào)實(shí)時性;除了具備普通微處理器所強(qiáng)調(diào)的高速運(yùn)算和控制能力外,針對實(shí)時數(shù)字信號處理的特點(diǎn),在處理器的結(jié)構(gòu)、指令系統(tǒng)、指令流程上作了很大的改進(jìn),其主要特點(diǎn)如下:
(PS比較哈佛和馮諾依曼結(jié)構(gòu)的區(qū)別)
馮.諾依曼指出:程序只是一種(特殊)的數(shù)據(jù),它可以像數(shù)據(jù)一樣被處理,因此可以和數(shù)據(jù)一起被存儲在同一個存儲器中——這就是著名的馮.諾依曼原理。注意:數(shù)據(jù)總線和地址總線共用。
哈佛結(jié)構(gòu)是一種并行體系結(jié)構(gòu),它的主要特點(diǎn)是將程序和數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和數(shù)據(jù)存儲器是兩個獨(dú)立的存儲器,每個存儲器獨(dú)立編址、獨(dú)立訪問。
數(shù)據(jù)指令存儲區(qū)是分開的,但總線是分時復(fù)用得----改進(jìn)型的哈佛結(jié)構(gòu)
哈佛結(jié)構(gòu) Q3:DSP分類
Q4:選型(以TI公司為例)手把手P2-P3
Q5:DSP主要應(yīng)用
Q6:DSP技術(shù)的現(xiàn)狀和發(fā)展趨勢
Q7:DSP系統(tǒng)的構(gòu)成和工作過程 構(gòu)成:
一個典型的DSP系統(tǒng)應(yīng)包括抗混疊濾波器、數(shù)據(jù)采集A/D轉(zhuǎn)換器、數(shù)字信號處理器DSP、D/A轉(zhuǎn)換器和低通濾波器組成。
工作過程:
① 將輸入信號x(t)進(jìn)行抗混疊濾波,濾掉高于折疊頻率的分量,以防止信號頻譜的混疊;
② 經(jīng)采樣和A/D轉(zhuǎn)換器,將濾波后的信號轉(zhuǎn)換為數(shù)字信號x(n); ③ 數(shù)字信號處理器對x(n)進(jìn)行處理,得數(shù)字信號y(n); ④ 經(jīng)D/A轉(zhuǎn)換器,將y(n)轉(zhuǎn)換成模擬信號;
⑤ 經(jīng)低通濾波器,濾除高頻分量,得到平滑的模擬信號y(t)。Q8:什么是定點(diǎn)DSP和浮點(diǎn)DSP?
DSP數(shù)字信號處理器是一種特別適合于進(jìn)行數(shù)字信號處理的微處理器,主要用于實(shí)時快速地實(shí)現(xiàn)各種數(shù)字信號處理算法。定點(diǎn)運(yùn)算 DSP 在應(yīng)用中已取得了極大的成功,而且仍然是DSP應(yīng)用的主體。
和定點(diǎn)運(yùn)算 DSP 相比,浮點(diǎn)運(yùn)算 DSP 具有許多優(yōu)越性: 浮點(diǎn)運(yùn)算 DSP 比定點(diǎn)運(yùn)算 DSP 的動態(tài)范圍要大很多。定點(diǎn) DSP 的字長每增加 1bit,動態(tài)范圍擴(kuò)大 6dB。16bit 字長的動態(tài)范圍為 96dB。32bit 浮點(diǎn)運(yùn)算 DSP 的動態(tài)范圍可以作到 1536dB,這不僅大大擴(kuò)大了動態(tài)范圍,提高了運(yùn)算精度,還大大節(jié)省了運(yùn)算時間和存儲空間,因?yàn)榇蟠鬁p少了定標(biāo),移位和溢出檢查。
由于浮點(diǎn) DSP 的浮點(diǎn)運(yùn)算用硬件來實(shí)現(xiàn),可以在單周期內(nèi)完成,因而其處理速度大大高于定點(diǎn) DSP。這一優(yōu)點(diǎn)在實(shí)現(xiàn)高精度復(fù)雜算法時尤為突出,為復(fù)雜算法的實(shí)時處理提供了保證。32bit 浮點(diǎn) DSP 的總線寬度較定點(diǎn) DSP 寬得多,因而尋址空間也要大得多。這一方面為大型復(fù)雜算法提供了可能、因?yàn)槭〉?DSP 目標(biāo)子程序已使用到幾十MB 存儲器或更多;另一方面也為高級語言編譯器、DSP 操作系統(tǒng)等高級工具軟件的應(yīng)用提供了條件。DSP 的進(jìn)一步發(fā)展,必然是多處理器的應(yīng)用。新型的浮點(diǎn) DSP 已開始在通信口的設(shè)置和強(qiáng)化、資源共享等方面有所響應(yīng)。
第二次課-------閱讀TI文檔(可以在user guide中通過索引找到)Q1:引腳分布
TMS320C5515/14/05/04/VC05/VC04 DSP General-Purpose Input/Output User's Guide 手把手---2.3 Q2:54X和55X的區(qū)別
Q3:HPI的概念及適用情況
HPI是HOST PORT INTERFACE(主機(jī)接口總線)的簡稱。HPI是一個與主機(jī)通信的并行接口,主要用于DSP與其他總線或CPU進(jìn)行通信。信息可通過'C54x的片內(nèi)存儲器與主機(jī)進(jìn)行數(shù)據(jù)交換。
第三次課---------外設(shè)及軟件程序介紹 Q1:IIC總線及SPI總線比較 I2C VS SPI SPI是[單主設(shè)備(single-master)]通信協(xié)議(是一種高速的,全雙工,同步的通信總線,以主從方式工作,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,需要至少4根線,事實(shí)上3根也可以(單向傳輸時)),這意味著總線中的只有一支中心設(shè)備能發(fā)起通信。
IIC 是多主設(shè)備的總線(IIC是一種多向控制總線,也就是說多個芯片可以連接到同一總線結(jié)構(gòu)下,同時每個芯片都可以作為實(shí)時數(shù)據(jù)傳輸?shù)目刂圃矗琁IC沒有物理的芯片選擇信號線,沒有仲裁邏輯電路,只使用兩條信號線—— ‘serial data’(SDA)和 ‘serial clock’(SCL)。
第一總線拓?fù)浣Y(jié)構(gòu)/信號路由/硬件資源耗費(fèi)
IIC 只需兩根信號線,而標(biāo)準(zhǔn)SPI至少四根信號,如果有多個從設(shè)備,信號需要更多。一些SPI變種雖然只使用三根線——SCLK, SS和雙向的MISO/MOSI,但SS線還是要和從設(shè)備一對一根。另外,如果SPI要實(shí)現(xiàn)多主設(shè)備結(jié)構(gòu),總線系統(tǒng)需額外的邏輯和線路。用IIC 構(gòu)建系統(tǒng)總線唯一的問題是有限的7位地址空間,但這個問題新標(biāo)準(zhǔn)已經(jīng)解決——使用10位地址。從第一點(diǎn)上看,IIC是明顯的大贏家。
第二數(shù)據(jù)吞吐/傳輸速度
如果應(yīng)用中必須使用高速數(shù)據(jù)傳輸,那么SPI是必然的選擇。因?yàn)镾PI是全雙工,IIC 的不是。SPI沒有定義速度限制,一般的實(shí)現(xiàn)通常能達(dá)到甚至超過10 Mbps。IIC 最高的速度也就快速+模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式還需要額外的I/O緩沖區(qū),還并不是總是容易實(shí)現(xiàn)的。
Q2:多媒體卡控制器(只是簡介)作用:
多媒體卡控制器可以讀寫多媒體卡(MultiMediaCard,簡稱MMC卡)和數(shù)字存儲卡(Secure Digital Memory Card,簡稱SD卡)上的存儲器。該控制器有如下特點(diǎn):
支持MMC/SD協(xié)議和SPI協(xié)議;軟件支持未來的擴(kuò)展升級;MMC控制器的運(yùn)行頻率可以通過程序設(shè)置; MMC控制器與存儲卡之間控制傳輸速率的時鐘可以通過編程設(shè)置。
MMC控制器可以在存儲卡和CPU或DMA控制器之間傳輸數(shù)據(jù),也可以進(jìn)行卡對卡之間的傳輸。它們之間的通信可以按照MMC/SD協(xié)議也可以按照SPI協(xié)議進(jìn)行,在基于MMC/SD協(xié)議時使用一條雙向數(shù)據(jù)線(MMC卡)或4條雙向數(shù)據(jù)線(SD卡),基于SPI協(xié)議時則是用兩條串行數(shù)據(jù)線,一條向卡上存儲數(shù)據(jù),一條從卡上讀回?cái)?shù)據(jù)。下面是MMC控制器信號連接圖。
從圖中可以看到連接的信號有時鐘信號
(CLK),控制信號(CMD)和數(shù)據(jù)信號,當(dāng)連接的是MMC卡時,只
使用DAT0數(shù)據(jù)線,而連接的是SD卡時,則使用DAT0~3數(shù)據(jù)線。
應(yīng)用實(shí)時時鐘芯片支持庫函數(shù)首先需要在頭文件中包含csl_rtc.h文件。。。Q6:異步串口UART 1. 異步串口發(fā)送部分
異步串口發(fā)送部分包括一個發(fā)送保持寄存器(URTHR)和一個發(fā)送移位寄存器(URTSR),當(dāng)異步串口工作在FIFO模式下時,發(fā)送保持寄存器可以緩存16個字節(jié)。發(fā)送部分由異步串口線路控制寄存器(URLCR)控制,發(fā)送格式如下: 1個起始位5、6、7或者8個數(shù)據(jù)位 1個奇偶校驗(yàn)位(可選)
1、1.5或者2個停止位
如果串口發(fā)送保持寄存器從內(nèi)部數(shù)據(jù)總線接收到數(shù)據(jù),當(dāng)發(fā)送移位寄存器準(zhǔn)備好時,異步串口模塊將數(shù)據(jù)從送到保持寄存器發(fā)送到發(fā)送移位寄存器,發(fā)送移位寄存器通過TX引腳將串行數(shù)據(jù)發(fā)送出去。
在非FIFO模式下,當(dāng)發(fā)送保持寄存器沒有數(shù)據(jù)存儲時,如果中斷使能寄存器使能發(fā)送寄存器空中斷,則產(chǎn)生該中斷,而當(dāng)一個新的字節(jié)被裝入發(fā)送保持寄存器時這個中斷被清除;在FIFO模式下,發(fā)送FIFO為空時產(chǎn)生中斷,當(dāng)新的字節(jié)被裝入FIFO時中斷被清除。2. 異步串口接收部分
異步串口接收部分包括一個接收移位寄存器(URRSR)和一個接收緩沖寄存器(URRBR)。當(dāng)異步串口工作在FIFO模式下時,接收緩沖寄存器可以緩沖16個字節(jié)。接收部分的定時器由16倍接收時鐘提供,在異步串口控制寄存器的控制下,接收部分可以接收如下格式數(shù)據(jù): 1個起始位5、6、7或者8個數(shù)據(jù)位 1個奇偶校驗(yàn)位(可選)1個停止位
當(dāng)接收移位寄存器從RX引腳收到數(shù)據(jù)后,將組合好的數(shù)據(jù)送到接收緩沖寄存器或者接收FIFO,異步串口可以為每個收到的字節(jié)存儲3個錯誤狀態(tài)信息位,包括奇偶校驗(yàn)錯 誤、幀錯誤和接收間斷。
在非FIFO模式下時,如果一個字符被放到接收數(shù)據(jù)緩沖寄存器中,并且中斷使能時將產(chǎn)生中斷,該字符被讀走時中斷被清除;在FIFO模式下時,如果FIFO存儲的數(shù)據(jù)量達(dá)到FIFO控制寄存器(URFCR)設(shè)定的觸發(fā)值時將產(chǎn)生中斷,而當(dāng)FIFO存儲的數(shù)據(jù)量小于觸發(fā)值時中斷被清除。3. 波特率產(chǎn)生器
異步串行通信需要滿足各種不同通信速率的要求,模塊采用波特率產(chǎn)生器,通過對輸入時鐘分頻來適應(yīng)串口的通信速率。波特率產(chǎn)生器的分頻數(shù)可以從1到65535任意選擇,異步串口的工作時鐘BCLK應(yīng)為波特率的16倍,即每個輸入輸出的位都將持續(xù)16個工作時鐘,而如果串口工作在接收狀態(tài)下,將在第8個工作時鐘對該位采樣,下面給出分頻數(shù)的計(jì)算公式:
4.中斷申請和DMA。。。
Q7:尋址方式
當(dāng)硬件執(zhí)行指令時,尋找指令所指定的參與運(yùn)算的操作數(shù)的方法——尋址方式。
根據(jù)程序的要求采用不同的尋址方式,可以有效地縮短程序的運(yùn)行時間和提高代碼執(zhí)行效率。
C54x芯片的尋址方式可以分為兩類:
數(shù)據(jù)尋址
程序?qū)ぶ?/p>
Q8:指令表示方法
Q9:算術(shù)運(yùn)算指令---實(shí)現(xiàn)數(shù)學(xué)計(jì)算
Q10:數(shù)據(jù)傳送指令
Q11:邏輯運(yùn)算指令
Q12:程序控制指令
Q13:并行操作指令
Q14:重復(fù)操作指令
可以使緊隨其后的一條指令或程序塊重復(fù)執(zhí)行,分為單指令重復(fù)和程序塊重復(fù)。
Q17:探測點(diǎn)
探測點(diǎn)是一種設(shè)置在源文件某條語句上的特殊斷點(diǎn),主要用來與一個外部文件的讀/寫相關(guān)聯(lián)。
當(dāng)用戶程序運(yùn)行到探測點(diǎn)時,自動地從與該探測點(diǎn)連接的外部文件中讀入數(shù)據(jù)或?qū)⒂?jì)算的結(jié)果輸出給外部文件。完成數(shù)據(jù)的傳輸后,自動恢復(fù)程序的運(yùn)行。探測點(diǎn)在算法開發(fā)過程中是一個有用的工具,可用來與PC主機(jī)進(jìn)行數(shù)據(jù)通信。探測點(diǎn)可以進(jìn)行一下工作:
1從PC主機(jī)的文件中,傳輸輸入數(shù)據(jù)至目標(biāo)系統(tǒng)的緩沖區(qū),作為算法開發(fā)的模擬數(shù)據(jù);
2從目標(biāo)系統(tǒng)的緩沖區(qū)中,傳輸輸出數(shù)據(jù)至PC主機(jī)的文件中,以便進(jìn)行數(shù)據(jù)分析;
3更新窗口,例如圖形、數(shù)據(jù)等。
PS:Probe Point 和 Break Point比較-----手把手P64
Probe Point 的使用方法-----手把手P67(實(shí)驗(yàn)中有)Q18:數(shù)據(jù)觀察方法
圖形顯示:graph。。時域/頻率 手把手P62 第4課--------DSP+XXX:相關(guān)設(shè)計(jì)的架構(gòu)
第5課--------DSP硬件系統(tǒng)設(shè)計(jì):ADC Q1:ADC理論 采樣與編碼
Q3:分類
1.SAR(逐次逼近)型ADC:
逐次比較型AD由一個比較器和DA轉(zhuǎn)換器通過逐次比較邏輯構(gòu)成,從MSB開始,順序地對每一位將輸入電壓與內(nèi)置DA轉(zhuǎn)換器輸出進(jìn)行比較,經(jīng)n次比較而輸出數(shù)字值。其電路規(guī)模屬于中等。其優(yōu)點(diǎn)是速度較高、功耗低,在低分辯率(<12位)時價格便宜,但高精度(>12位)時價格很高。
TLC0831(德州儀器公司(TI)推出的TLC0831/2是廣泛應(yīng)用的8位A/D轉(zhuǎn)換器。)TLC0831可以外接高精度基準(zhǔn)以提高轉(zhuǎn)換精度,TLC0832的基準(zhǔn)輸入在片內(nèi)與VCC連接。TLC0831/2的操作非常類似TLC0834/8(更多輸入通道),為以后升級提供便利
2.Σ-Δ(Delta-Sigma)調(diào)制型 ADC:
Σ-Δ型AD由積分器、比較器、1位DA轉(zhuǎn)換器和數(shù)字濾波器等組成。原理上近似于積分型,將輸入電壓轉(zhuǎn)換成時間(脈沖寬度)信號,用數(shù)字濾波器處理后得到數(shù)字值。電路的數(shù)字部分基本上容易單片化,因此容易做到高分辨率。主要用于音頻和測量。
3.流水線ADC結(jié)構(gòu)適合于幾Msps到100Msps采樣速率,其復(fù)雜性隨分辨率的增加只是線性(而不是指數(shù))增加,具有高速、高精度和低功耗特性,適用于各種場合,特別是數(shù)字通訊領(lǐng)域,在這些領(lǐng)域中轉(zhuǎn)換器的動態(tài)性能經(jīng)常比微分非線性(DNL)和積分非線性等傳統(tǒng)的ADC特性更重要。在大多數(shù)的應(yīng)用中,流水線ADC的數(shù)據(jù)延遲都無關(guān)緊要。
PS:AD轉(zhuǎn)換器分類
下面簡要介紹常用的幾種類型的基本原理及特點(diǎn):積分型、逐次逼近型、并行比較型/串并行型、Σ-Δ調(diào)制型、電容陣列逐次比較型及壓頻變換型。
1)積分型(如TLC7135)
積分型AD工作原理是將輸入電壓轉(zhuǎn)換成時間(脈沖寬度信號)或頻率(脈沖頻率),然后由定時器/計(jì)數(shù)器獲得數(shù)字值。其優(yōu)點(diǎn)是用簡單電路就能獲得高分辨率,但缺點(diǎn)是由于轉(zhuǎn)換精度依賴于積分時間,因此轉(zhuǎn)換速率極低。初期的單片AD轉(zhuǎn)換器大多采用積分型,現(xiàn)在逐次比較型已逐步成為主流。2)逐次比較型(如TLC0831)
逐次比較型AD由一個比較器和DA轉(zhuǎn)換器通過逐次比較邏輯構(gòu)成,從MSB開始,順序地對每一位將輸入電壓與內(nèi)置DA轉(zhuǎn)換器輸出進(jìn)行比較,經(jīng)n次比較而輸出數(shù)字值。其電路規(guī)模屬于中等。其優(yōu)點(diǎn)是速度較高、功耗低,在低分辯率(<12位)時價格便宜,但高精度(>12位)時價格很高。3)并行比較型/串并行比較型(如TLC5510)
并行比較型AD采用多個比較器,僅作一次比較而實(shí)行轉(zhuǎn)換,又稱FLash(快速)型。由于轉(zhuǎn)換速率極高,n位的轉(zhuǎn)換需要2n-1個比較器,因此電路規(guī)模也極大,價格也高,只適用于視頻AD轉(zhuǎn)換器等速度特別高的領(lǐng)域。
串并行比較型AD結(jié)構(gòu)上介于并行型和逐次比較型之間,最典型的是由2個n/2位的并行型AD轉(zhuǎn)換器配合DA轉(zhuǎn)換器組成,用兩次比較實(shí)行轉(zhuǎn)換,所以稱為Half flash(半快速)型。還有分成三步或多步實(shí)現(xiàn)AD轉(zhuǎn)換的叫做分級(Multistep/Subrangling)型AD,而從轉(zhuǎn)換時序角度又可稱為流水線(Pipelined)型AD,現(xiàn)代的分級型AD中還加入了對多次轉(zhuǎn)換結(jié)果作數(shù)字運(yùn)算而修正特性等功能。這類AD速度比逐次比較型高,電路規(guī)模比并行型小。4)Σ-Δ(Sigma?/FONT>delta)調(diào)制型(如AD7705)
Σ-Δ型AD由積分器、比較器、1位DA轉(zhuǎn)換器和數(shù)字濾波器等組成。原理上近似于積分型,將輸入電壓轉(zhuǎn)換成時間(脈沖寬度)信號,用數(shù)字濾波器處理后得到數(shù)字值。電路的數(shù)字部分基本上容易單片化,因此容易做到高分辨率。主要用于音頻和測量。
5)電容陣列逐次比較型
電容陣列逐次比較型AD在內(nèi)置DA轉(zhuǎn)換器中采用電容矩陣方式,也可稱為電荷再分配型。一般的電阻陣列DA轉(zhuǎn)換器中多數(shù)電阻的值必須一致,在單芯片上生成高精度的電阻并不容易。如果用電容陣列取代電阻陣列,可以用低廉成本制成高精度單片AD轉(zhuǎn)換器。最近的逐次比較型AD轉(zhuǎn)換器大多為電容陣列式的。6)壓頻變換型(如AD650)壓頻變換型(Voltage-Frequency Converter)是通過間接轉(zhuǎn)換方式實(shí)現(xiàn)模數(shù)轉(zhuǎn)換的。其原理是首先將輸入的模擬信號轉(zhuǎn)換成頻率,然后用計(jì)數(shù)器將頻率轉(zhuǎn)換成數(shù)字量。從理論上講這種AD的分辨率幾乎可以無限增加,只要采樣的時間能夠滿足輸出頻率分辨率要求的累積脈沖個數(shù)的寬度。其優(yōu)點(diǎn)是分辯率高、功耗低、價格低,但是需要外部計(jì)數(shù)電路共同完成AD轉(zhuǎn)換。
第四篇:DSP錯誤總結(jié)!
1.warning: entry point symbol _c_int00 undefined 使用C寫DSP時,在rts.lib庫中定義了入口地址:_c_int00 而使用匯編語言編程,就不用包括rts.lib庫,所以入口地址及其標(biāo)號可以由人工指定。而使用C時,就不同了,必須從rts.lib定義的這個入口_c_int00入口,是約定的。
The –c and cr options cause the linker to use linking conventions that are required by the C compiler.”
其實(shí)在匯編語句中也可以不用_c_int00來定義程序入口,只要把編譯器選項(xiàng)-c去掉,用-e 選項(xiàng)來定義你想要的程序入口地址。這個可在CMD文件里加-c。
這個錯誤是沒有加庫文件,你可以project view 右鍵加入,也可以在project->build options->Linker->libraries中加入../../lib/cls/lib/(搜索路徑)還要加上庫名cslDM642.lib;rts6400.lib分號隔開。
2.Error: Illegal opcode at pc = 0x00000190
我第一次遇到這種錯誤,因?yàn)锽跳轉(zhuǎn)(分支)指令要有五個周期的延時,所以加上NOP 5就好了。
b.s2 b3;NOP 5
3.error: can't allocate.text, size 00006e40(page 0)in LP(avail: 00001000)>> error: errors in input'./Debug/MyAsmTest.out' not built
解決方法:1.是庫的問題 2.把你的匯編程序和C程序起不同的名字。
6.creating output section.const without SECTIONS specification >> warning: creating output section.switch without SECTIONS specification
>> warning: creating output section.sysmem without SECTIONS specification、Printf()需要上面的段.sysmem 段??
前十個參數(shù)將被從左到右依次放入寄存器A4、B4、A6、B6、A8、B8、A10、B10、A12和B12。返回值是整型或32位的浮點(diǎn)型,則放在寄存器A4中返回;假如返回值是雙精度或是長雙精度型,則放在A5:A4中返回;假如返回值是一個結(jié)構(gòu)類型,則將其結(jié)構(gòu)的地址放在A3中返回。
最近總是出現(xiàn)相同的錯誤!唉!
1.C運(yùn)行庫文件rtsXX.lib提供了C函數(shù),及初始化函數(shù)c_int00().程序?qū)戇M(jìn)EPROM上電后直接運(yùn)行,就必須包含Vectors.asm文件,必須被.cmd文件分配到0地址。
DSP復(fù)位后,跳轉(zhuǎn)到c_int00(),在它之中完成初始化堆棧和頁面指針,全局變量等,然后再調(diào)用main()函數(shù)。
2.連接器-c選項(xiàng)用于設(shè)置運(yùn)行時初始化全局變量(Run-time-autoinitalization),-cr選項(xiàng)用于設(shè)置在加載時初始化(Load-time initialization)。編譯器將C中的初始化的全局/靜態(tài)變量的初始化放在.cinit段中。但實(shí)際的全局/靜態(tài)變量占有的地址空間在.bss段。3.大數(shù)組far b[1024] 放在.far段,.bss放小變量。
4.restict 標(biāo)明一個指針是指向一個特定對象的惟一的指針。5.intrinsics定義內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)前面加_ 6.軟件流水:-o2,-o3時會使用軟件流水。
Prolog(軟件流水填充),epilog(軟件流水排空)
錯誤:undefined first referenced symbol in file
-------------------------_dopt C://CCStudio_v3.3//MyProjects//dianji//Debug//dianji.obj 改法一種是庫沒有加對,一種是匯編文件和C文件重名字了。
程序優(yōu)化: 3個階段,1.不考慮相關(guān)知識,直接寫C語言程序。2.利用C優(yōu)化方法優(yōu)化C程序。
3.從C中抽出對性能影響較大的程序段,改寫成匯編程序。
查看指令運(yùn)行時間,clock()函數(shù) #include
Clock_t start ,stop,overhead;Start = clock();Stop = clock();
Overhead = stop – start;
Start = clock();函數(shù)
Stop = clock();
Printf(%d,start-stop-overhead);
-g/-s :-g 使能符號和匯編調(diào)試;-s
第五篇:調(diào)試總結(jié)
調(diào)試總結(jié)
來到海南昌江項(xiàng)目部電氣隊(duì)已經(jīng)有50多天了,我有幸加入到調(diào)試隊(duì)。聽師傅們說:“調(diào)試現(xiàn)在改新模式了,我們是第一批加入進(jìn)來的,機(jī)會真是千載難逢,要我們務(wù)必抓住這次機(jī)會!”聽后我激動異常,暗暗下決心機(jī)會是留給有準(zhǔn)備的人的,現(xiàn)在機(jī)會就放在我面前,我若不抓住,豈不是白白浪費(fèi)?所以,努力與學(xué)習(xí)以及實(shí)踐與理論都將為此而進(jìn)行。
調(diào)試是一門技術(shù)活,彭師傅說過:“干調(diào)試要多問,多看,少動手。”說實(shí)話,剛聽到這我就想“不是應(yīng)該多動手嗎?這樣才能更加的熟練技能。”后來,我明白了“少動手”的意思是不要亂動、亂摸,調(diào)試不僅危險高壓電,而且一旦產(chǎn)生事故十分嚴(yán)重,那些儀器儀表十分昂貴。一定要熟悉弄懂后才按規(guī)定操作,這也就要坐到前面說的“多問、多看。”
最近我們干的活主要是環(huán)吊、門吊、半門吊,具體就是一些接線,打磨,放電纜、裝網(wǎng)架等等。在此過程中我深深明白四個字:眼高手低。這也是在學(xué)校時,實(shí)習(xí)老師常常教導(dǎo)我們的“干活最容易犯的是眼高手低,一個很簡單的活看起來很容易,一旦動手,你就發(fā)現(xiàn)不是那么回事。”現(xiàn)在回想起來,才明白老師的淳淳教導(dǎo)。就在前幾天,郭師傅跟牛師傅交給我一個任務(wù),讓我協(xié)助焊工把角鋼焊上,再把網(wǎng)架固定在上面,結(jié)果我沒把角鋼扶正,導(dǎo)致角鋼向兩邊偏了整整5cm。事后,牛師傅嚴(yán)厲的批評了我,我無言以對,默默的思索自己錯在了什么地方。最后,我用磨光機(jī)把角鋼切下來,重新再安裝上去。就是這一次,我真正懂得了“眼高手低。”當(dāng)然了,這段時間,我也發(fā)生了許多別的失誤。例如:常常忘記一些該辦的要緊事、有些方面操作不當(dāng)以及把螺絲弄丟等等。這些都不一一列舉了。總之,干這些活,我明白了許多,也成熟了許多,我會盡自己的努力做好自己的工作。
這兩個星期也感覺挺忙的,周一周三延點(diǎn)、周二周四培訓(xùn)、周六加班。彭師傅曾問我:“晚上培訓(xùn)精力上沒問題吧?對這個培訓(xùn)有什么看法?”我說:“精力上當(dāng)然沒問題,就是培訓(xùn)的有點(diǎn)快,有很多不是太懂,希望能講的慢一些,細(xì)一些。”彭師傅對此跟我詳細(xì)的說:“培訓(xùn)其實(shí)并不是都全部教懂,因?yàn)橛行〇|西是需要接觸,進(jìn)行具體的操作時才能真正的懂,培訓(xùn)的主要目的是把調(diào)試的主要內(nèi)容,具體方向,大多方面講一些,讓我們在業(yè)余有個學(xué)習(xí)的方向,這個主要靠的就是自己本身的努力。”聽后,我豁然開朗,明白了自己的努力方向。對調(diào)試的其他建議,說實(shí)話,還真不知道說什么,因?yàn)槲覀儾沤佑|這個調(diào)試,還處于懵懵懂懂之中,只有在遇到實(shí)際的問題時,我們才會具體的提出來,所以建議問題還是留到現(xiàn)學(xué)現(xiàn)問吧。
最后,想起了李師傅給我們的寄語:書山有路勤為徑、學(xué)海無涯苦作舟。是啊,學(xué)習(xí)如逆水推舟,不進(jìn)則退,獲得成功的途徑只有努力與付出。在此,在調(diào)試隊(duì)我要踐行我的誓言:人生難得一回闖,且看失敗與成長。
趙直2012年08月26日