摘要:首先簡(jiǎn)介傳送流語(yǔ)法和TMS320C5402 DSP芯片,然后重點(diǎn)介紹該芯片在復(fù)用器中的應(yīng)用,最后談?wù)剬?duì)象芯片進(jìn)行軟件編程的體會(huì)。
關(guān)鍵詞:傳送流 TMS320C5402 復(fù)用器
引言
隨著信息技術(shù)的發(fā)展,電視信號(hào)的數(shù)字化編碼、數(shù)字化存儲(chǔ)、數(shù)字化處理已經(jīng)越來(lái)越廣泛。新開(kāi)發(fā)的數(shù)字有限電視廣播系統(tǒng)主要包括MPEG-2編碼器、數(shù)字傳輸復(fù)用器、數(shù)字調(diào)制器以及機(jī)頂盒。復(fù)用器是該系統(tǒng)的重要組成部分,完成對(duì)多路符合MPEG-2系統(tǒng)層標(biāo)準(zhǔn)ITU-TREC.H.222.1|ISO/IEC13818-1的TS流(Transport Stream)的復(fù)用,經(jīng)過(guò)64 QAM調(diào)制后,以便在1路6MHx的帶寬中傳送多路數(shù)字化節(jié)目??紤]到處理的實(shí)時(shí)性,我們使用美國(guó)德州儀器公司(TI)的TMS320C5402(簡(jiǎn)稱(chēng)C5402)DSP作為主控芯片。本文首先介紹TS流的結(jié)構(gòu)、C5402芯片、復(fù)有器的組成,然后重點(diǎn)介紹該芯片在復(fù)用器的應(yīng)用,最后就利用CCS開(kāi)發(fā)仿真器一經(jīng)驗(yàn)介紹。
1 TS流簡(jiǎn)介
主要包括分組方法、程序特殊信息(PSI)表以及程序參考時(shí)鐘(PCR)的提取。
(1)分組方法
傳送流分組長(zhǎng)度固定為188字節(jié),分組由分組首部及有效負(fù)載組成,如圖1所示。
(2)PSI
PSI被分成4類(lèi)表。如表1所示,每個(gè)表可被分成1段或多段置于傳送流中。這4類(lèi)表是:程序關(guān)聯(lián)表PAT(Program Association Table)、程序映射表PMT(Program Map Table)、網(wǎng)絡(luò)信表NIT(Network Information Table)、條件訪問(wèn)表CAT(Conditional Access Table)。這4類(lèi)表中包含進(jìn)行多路解調(diào)和顯示程序的必要和足夠的信息。
表1 程序特殊信息
系統(tǒng)層解復(fù)用,首先要獲取PAT表。PAT表中包含了該傳送流中所有程序的一個(gè)清單。通過(guò)PAT表,就可獲取該傳送中所包含每個(gè)程序的PMT表。
在每個(gè)程序的PMT表中,就有該程序中各個(gè)原始流的信息,包括PID、原始流類(lèi)型以及該程序中包含有效PCR字段的傳送流中PID。通過(guò)PAT及PMT表,就可掌握傳送流中每個(gè)程序以及每個(gè)程序中各原始之間的關(guān)系。
(3)PCR
在傳送流中,解碼的同步實(shí)現(xiàn)是靠相應(yīng)的程序參考時(shí)間PCR值。PCR是將比特流本身的時(shí)序編碼的時(shí)間標(biāo)簽,它可以由同一道程序的視頻和音頻的PTS所用的共同時(shí)間基點(diǎn)推出。由于每道程序都有自己的時(shí)間基點(diǎn),所以含有多道程序的傳送流的每一道程序都有獨(dú)立的PCR字段。
2 C5402介紹
C5402是TI公司1999年10月推出的性?xún)r(jià)比較高的定點(diǎn)數(shù)字信號(hào)處理器,其主要特點(diǎn)如下:
*先進(jìn)的改造型哈佛結(jié)構(gòu),操作速率可達(dá)100MIPS;
*先進(jìn)的多總線(xiàn)結(jié)構(gòu),3條16位數(shù)據(jù)存儲(chǔ)器總線(xiàn)和1條程序存儲(chǔ)器總線(xiàn);
*40位算術(shù)邏輯單元(ALU),包括1個(gè)40位桶形移位器和2個(gè)40位累加器;
*1個(gè)17×17乘法器和1個(gè)40位專(zhuān)用加法器,允許16位帶(或不帶)符號(hào)的乘法;
*8個(gè)輔助寄存器及1個(gè)軟件棧,允許使用業(yè)界最先進(jìn)的定點(diǎn)DSP C語(yǔ)言編譯器;
*數(shù)據(jù)/程序?qū)ぶ房臻g1M×6bit,內(nèi)置4K×16bit ROM和16K×16bit RAM。
*內(nèi)置可編程等待狀態(tài)發(fā)生器、鎖相環(huán)時(shí)鐘產(chǎn)生器、2個(gè)多通道緩沖串行口、1個(gè)8位并行與外部處理器通信的HPI口、2個(gè)16位定時(shí)器以及6通道DMA控制器;
*低功耗,工作電源有3V和1.8V(內(nèi)核使用)。
3 復(fù)用器硬件框圖及流程
復(fù)用器硬件框圖如圖2所示。
(1)合成控制卡(主卡)流程
主卡流程:主要完成6塊卡處理的實(shí)施監(jiān)控,生成PSI等信息并周期性發(fā)送。主卡的PSI信息:6個(gè)PMT的PID以及每個(gè)子卡輸入來(lái)的視頻、音頻、PCR的PID號(hào)是事先規(guī)定好的。
(2)單路TS流處理卡(子卡)流程
子卡流程:TS流進(jìn)入FIFO緩存,由DSP進(jìn)行PSI信息的提取和碼率的計(jì)算;將有關(guān)信息送入合成處理卡進(jìn)行分析、綜合;根據(jù)需要從輸入的流中提取1路視頻、1路音頻和PCR包,并將它們的PID改為事先規(guī)定的。子卡的功能相當(dāng)于一個(gè)簡(jiǎn)易的碼流分析儀,而且可以提供1路單獨(dú)的TS流。
4 C5402的幾個(gè)典型應(yīng)用
C5402在該系統(tǒng)中的應(yīng)用:對(duì)輸入的TS流進(jìn)行分析;對(duì)6路碼流進(jìn)行均勻交織和PSI信息的重置;主卡與子卡之間通過(guò)C5402 HPI接口進(jìn)行通信;利用C5402串口與計(jì)算機(jī)RS232串口相連。
4.1 輸入的TS流分析
DSP從FIFO中讀取TS流到內(nèi)部RAM中去,如圖3所示,根據(jù)13位的PID號(hào)0x000找到PAT表,在PAT表中獲得PMT的ID號(hào)和NIT的ID號(hào);根據(jù)PMT_PID獲得視頻、音頻、PCR的PID號(hào)以及其它私有信息的PID號(hào);根據(jù)PCR_PID和pcr_flag,找到PCR包;根據(jù)公式計(jì)算出碼率:
其中i‘、i’‘為相鄰2個(gè)PCR包,求得多個(gè)碼率,然后求算術(shù)平均,獲得平均碼率。利用FIFO進(jìn)行數(shù)據(jù)傳輸,速率在10~25MB/s之間。由于DSP處理能力為100MIPS,子卡中DSP傳輸數(shù)據(jù)量是大為2MB/s,約耦時(shí)0.1~0.2s,這樣處理時(shí)間足夠(0.8~0.9s)。子卡輸入FIFO采用8KB大小,在其半滿(mǎn)時(shí),DSP等待時(shí)間最大為(188/10 000)×6=0.1128ms,期間FIFO的填充量為0.112 8×1=0.112 KB,遠(yuǎn)不能輸入碼流將子卡的輸入FIFO填充滿(mǎn)而導(dǎo)致溢出。
4.2 碼流交織和PSI信息配置
為了將6塊子卡輸入的TS流復(fù)合成1路TS流,主卡DSP的功能就是將6路TS流均勻交織。主卡數(shù)據(jù)通過(guò)HPI送到主卡的DSP內(nèi)部RAM中,再寫(xiě)到外部FIFO中。由于各種碼流的PID叫可能相同,需要對(duì)各路TS流的ID號(hào)進(jìn)行重新設(shè)置。主卡根據(jù)預(yù)先設(shè)置的所有PID生成新的PSI表,并按照一定時(shí)間間隔發(fā)送到外部的FIFO中去。主卡的CPU以100MHz運(yùn)行,輸出FIFO的大小為8KB,以固定5MHz的碼率發(fā)送,子卡填寫(xiě)的數(shù)據(jù)不會(huì)導(dǎo)致主卡上溢。當(dāng)主卡的輸出FIFO沒(méi)有達(dá)半滿(mǎn)時(shí),填充空包,使FIFO不會(huì)下溢。
在子卡中根據(jù)分析得到的PSI信息,可以提取1路或者多路的節(jié)目流,并將PID號(hào)改為事先規(guī)定的,通過(guò)HPI通信接口傳送到主卡。
4.3 HPI接口
HPI(Host Port Interface)接口可以方便地實(shí)現(xiàn)主卡與子卡之間的通信,而不需要額外的器件。C5402的HPI操作是8位的。當(dāng)C5402運(yùn)行在100MHz主頻時(shí),通信速度可達(dá)到25MB/s。HPI接口具有3個(gè)16bit寄存器:HPIA(地址寄存器)、HPID(數(shù)據(jù)寄存器)、HPIC(控制寄存器)。主卡與子卡的DSP芯片之間的連接如圖4所示:HD0~HD7是8位數(shù)據(jù)線(xiàn),直接接到主設(shè)備的數(shù)據(jù)線(xiàn)上;HCS為選通信號(hào);HDS1~HDS2為數(shù)據(jù)鎖存信號(hào),在主設(shè)備的存取周期控制數(shù)據(jù)的傳輸,一般連到設(shè)備的數(shù)據(jù)選通;HR/W是讀寫(xiě)信號(hào);HCNTL0/HCNL1用于主設(shè)備選擇存取HPI的哪一個(gè)寄存器和對(duì)寄存器的存取類(lèi)型,連至主設(shè)備的地址線(xiàn)。由于HPI寄存器是16位的,
而HPI與主設(shè)備僅以8位數(shù)據(jù)線(xiàn)相連,因而用HBIL決定當(dāng)前存取的是1個(gè)字的第1個(gè)字節(jié)還是第2個(gè)字節(jié),連到主設(shè)備地址線(xiàn)。
對(duì)HPI操作首先將控制字寫(xiě)入HPIC,然后將要存取的地址寫(xiě)入HPIA,最后豐取HPID,就可從HPI存儲(chǔ)塊或?qū)?shù)據(jù)寫(xiě)入HPI存儲(chǔ)塊。此外,還可選擇HPIA自動(dòng)增加方式,將初始地址寫(xiě)入HPIA,可不再操作HPIA,每存取1次數(shù)據(jù),地址都會(huì)自動(dòng)加1,因而加快了存取速度。
4.4 主卡DSP與計(jì)算機(jī)接口
為了實(shí)現(xiàn)系統(tǒng)自檢、碼率以及節(jié)目信息提取、輸出,我們通過(guò)DSP的串口與計(jì)算機(jī)的串口進(jìn)行通信。如圖5所示,采用的是異步通信方式。其中75C189和75C188為電平轉(zhuǎn)換芯片,C5402有2個(gè)McBSP(多通道緩沖串行口)。McBSP提供了全雙工的通信制以及雙緩存的發(fā)送寄存器和三級(jí)存的接收寄存器,允許連續(xù)的數(shù)據(jù)流傳輸,數(shù)據(jù)長(zhǎng)度可以為8、12、16、20、24、32;同時(shí)還提供了A-律和μ-律壓擴(kuò),多達(dá)128個(gè)通道的發(fā)送和接收。數(shù)據(jù)經(jīng)McBSP與外設(shè)的通信通過(guò)DR和DX引腳相連??刂菩盘?hào)則由CLKX、CLKR、FSX、FSR四條引腳來(lái)實(shí)現(xiàn)。
4.5 DSP程序BOOTL0ADER的實(shí)現(xiàn)
BOOTLOADER是為了在上電時(shí),將用戶(hù)代碼從外部加載到內(nèi)部的存儲(chǔ)器以加快運(yùn)行速度。我們使用C5402外部8位并行I/O口實(shí)現(xiàn)BOOTLOADER程序。C5402讀I/O口0xffff,這里面存放著外部存儲(chǔ)器的首地址(數(shù)據(jù)區(qū))。若在這個(gè)首地址內(nèi)讀到了關(guān)鍵字08 AA,就進(jìn)行8位加載;若是10AA則表示16位加載。硬件系統(tǒng)就是加了1片3.3V的Flash,程序用編程器燒入Flash。
5 C5402的軟件編程體會(huì)
(1)C語(yǔ)言與匯編混合編程
在運(yùn)算能力不是十分緊張的情況下,用C語(yǔ)言開(kāi)發(fā)DSP程序不僅使DSP開(kāi)發(fā)的速度大大加快,而且開(kāi)發(fā)出來(lái)的DSP程序的可讀性和可移植性大大加強(qiáng),程序修改也極為方便。采用C編譯器的優(yōu)化功能可以增加C代碼的效率。
一般情況下,采用C語(yǔ)言和匯編混合編程方法有3種:①獨(dú)立編寫(xiě)C程序和匯編程序;②直接在C語(yǔ)言程序的相應(yīng)位置嵌入?yún)R編語(yǔ)句;③對(duì)C程序進(jìn)行編譯生成相應(yīng)匯編程序,然后對(duì)匯編程序進(jìn)行手工優(yōu)化和修改??梢詮腃程序中訪問(wèn)匯編程序的變量和常量,也可以在匯編程序中訪問(wèn)C程序變量。
(2)預(yù)防流水線(xiàn)沖突
流水線(xiàn)操作是DSP實(shí)現(xiàn)高速度、高效率的關(guān)鍵技術(shù)之一。在TMS320C54X中采用了深度與6級(jí)的流水線(xiàn)操作,因此流水線(xiàn)沖突不可避免的。一般情況下,當(dāng)發(fā)生流水線(xiàn)沖突時(shí),由DSP自動(dòng)插入延遲解剖沖突問(wèn)題,但有時(shí)需要程序員通過(guò)調(diào)整程序語(yǔ)句的次序或在程序中插入一定量的NOP來(lái)解決。例如:
STLM A,BRC
NOP
RPTB LOOP
語(yǔ)句
LOOP
(3)存儲(chǔ)空間要正確分配
C5402總共有192K字大小存儲(chǔ)空間,64K字的程序區(qū)、64K字的數(shù)據(jù)區(qū)和64K字的I/O區(qū)。當(dāng)寄存器PMST的OVLY=0時(shí),片內(nèi)RAM在數(shù)據(jù)區(qū)內(nèi)可訪問(wèn),在程序區(qū)不可訪問(wèn);當(dāng)OVLY=1時(shí),片內(nèi)RAM映射到程序區(qū)和數(shù)據(jù)區(qū),但數(shù)據(jù)頁(yè)(地址從0H~7FH)不映射到程序空間。我們?cè)诔绦蚓幊讨羞x用后種模式。程序和數(shù)據(jù)同一塊片內(nèi)RAM,在編寫(xiě)CMD文件時(shí)程序和數(shù)據(jù)區(qū)間不能發(fā)生重疊。
(4)指令的使用
①TMS320C54X的匯編有算術(shù)指令和程序指令,2種指令可以互換。當(dāng)外部端口操作時(shí)使用端口指令PORTW和PORTR。
②利用DADST和DSADT指令,可以同時(shí)在1個(gè)累加器中進(jìn)行2次運(yùn)算。
③利用DADD和DSUB可實(shí)現(xiàn)32的加減法。
④利用CMPS、SACCD、SRCCD、STRCD四個(gè)條件存儲(chǔ)指令,以減少條件判斷指令的開(kāi)銷(xiāo);利用MAX、MIN、FIRS、LMS可以減少運(yùn)算所需的指令周期;利用C54的并行指令可以省去多次數(shù)據(jù)存儲(chǔ),提高編程的效率。
⑤充分利用*(IK)尋址(在數(shù)據(jù)區(qū)內(nèi)指明所要訪問(wèn)的地址),可以減少輔助寄存器的使用。
(5)少用函數(shù)和子程序調(diào)用
雖然結(jié)構(gòu)化程序給軟件和調(diào)試帶來(lái)方便,但一個(gè)函數(shù)和子程序的調(diào)用和返回都將使C5402產(chǎn)生1次流水線(xiàn)刷新,增加了指令周期,因而在存儲(chǔ)空間足夠時(shí),應(yīng)多使用宏結(jié)構(gòu);但在編程時(shí)又必須考慮程序的大小,所以在對(duì)設(shè)備處理速度影響不大的情況下,也可以使用函數(shù)和子程序。
(6)關(guān)于中斷服務(wù)程序的編寫(xiě)
中斷有軟中斷和硬中斷。在編寫(xiě)中斷服務(wù)程序時(shí),最重要的是將中斷向量表放置正確。首先在PMST寄存中設(shè)置IPTR,然后把INT放到規(guī)定的位置,將中斷模式INTM=0;將中斷使能寄存器的對(duì)應(yīng)位置1。
-
芯片
+關(guān)注
關(guān)注
460文章
52520瀏覽量
441108 -
音頻
+關(guān)注
關(guān)注
30文章
3044瀏覽量
83454 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7663瀏覽量
90828
發(fā)布評(píng)論請(qǐng)先 登錄
跪求 TMS320C5402 的pcb 原理
小弟做畢業(yè)設(shè)計(jì),找tms320c5402的PCB庫(kù)
利用EPLD實(shí)現(xiàn)TMS320C5402與SDRAM接口
如何利用EPLD實(shí)現(xiàn)TMS320C5402與SDRAM接口?
TMS320C5402,pdf,TMS320C5402 datasheet
TMS320C5402 在電視數(shù)字傳輸復(fù)用器中的應(yīng)用
TMS320C5402 DSP 在嵌入式測(cè)控系統(tǒng)中的應(yīng)用
基于TMS320C5402的數(shù)據(jù)通訊系統(tǒng)的設(shè)計(jì)
Using the TMS320C5402 DMA Chan
Interfacing the TMS320C5402 DS
Using the TMS320C5402 DMA Chan
Interfacing the TMS320C5402 DS
基于TMS320C5402的語(yǔ)音信號(hào)壓縮存儲(chǔ)系統(tǒng)設(shè)計(jì)
TMS320C5402與MAX147的接口設(shè)計(jì)(部分源程序)

基于TMS320C5402的交流采樣裝置設(shè)計(jì)

評(píng)論