基于C54某DSP的viterbi譯碼技術(shù)_第1頁(yè)
基于C54某DSP的viterbi譯碼技術(shù)_第2頁(yè)
基于C54某DSP的viterbi譯碼技術(shù)_第3頁(yè)
基于C54某DSP的viterbi譯碼技術(shù)_第4頁(yè)
基于C54某DSP的viterbi譯碼技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

{管理信息化BI商務(wù)智能}基于C54某DSP的viterbi譯碼技術(shù)1引言卷積碼的概率碼最早始于1961年由Wozencraft1963年FanoFano1967年Viterbi提出了另一種概率譯碼算法:Viterbi它比序列譯碼算法效率更高、速度更快,譯碼器也較簡(jiǎn)單。因而自Viterbi應(yīng)用于各種數(shù)據(jù)傳輸系統(tǒng),特別是衛(wèi)星通信系統(tǒng)中。1.1卷積碼的發(fā)展的碼率R從信道編碼定理來(lái)看,卷積碼是一種非常有前途的碼類(lèi)。在IS-95.CDMA的所采用的Turbo碼,也是源自卷積碼。卷積碼是由伊利亞斯(P.Elias)發(fā)明的一種非分組碼。通常它更適用于前向糾錯(cuò),因?yàn)閷?duì)于許多實(shí)際情況它的性能優(yōu)于分組碼,而且運(yùn)算簡(jiǎn)單。N段組成的輸入移位寄存器,每段k個(gè),共Nk個(gè)移位寄存器、一組n個(gè)模2和相加器,一個(gè)由nknn,k,N-1k等于1時(shí),N-1就是寄存器的個(gè)數(shù)。息元,而且還與前m=N-1組信息碼元有關(guān)。其中m被稱(chēng)為編碼存貯,N=m+1力[1]。卷積碼的概率譯碼方法主要有兩種:viterbi譯碼算法和序列譯碼算法viterbi只適合m較小的卷積碼或者誤碼率高于10-5與m率低于10-6時(shí)性較差,使用軟判決較為復(fù)雜[2]。2,1,7viterbi1/2長(zhǎng)度為7,共有64個(gè)狀態(tài)。1.2數(shù)字信號(hào)處理(DSP)20世紀(jì)60年代以來(lái),隨著大規(guī)模集成電路、數(shù)字計(jì)算機(jī)等信息技術(shù)的飛速發(fā)展。數(shù)字信號(hào)處理(DigitalSignalProcessing,DSP)技術(shù)應(yīng)運(yùn)而生20多年里,DSP在理論和應(yīng)用方面不斷地進(jìn)步字時(shí)代正在到來(lái)。由于DSPDSP投入到高性能數(shù)字信號(hào)處理器(DigitalSignalProcessors,DSPs發(fā)當(dāng)中。1982TexasInstrumentsIncorporation,簡(jiǎn)稱(chēng)TI公司)推出了該公司的第一款DSPs芯片,很快DSPs芯片就以其數(shù)字器件特有的穩(wěn)定性、可重復(fù)性、可大規(guī)模集成和易于實(shí)現(xiàn)DSP算法等優(yōu)點(diǎn),為數(shù)字信號(hào)處理技術(shù)帶來(lái)了更大的發(fā)展和應(yīng)用前景。采用各種類(lèi)型DSPs實(shí)現(xiàn)系統(tǒng)的數(shù)字化處理和控制已經(jīng)成為了未來(lái)發(fā)展的趨勢(shì),并且隨著DSPs運(yùn)速實(shí)時(shí)應(yīng)用[3]。本文主要講用到TI公司的C54X系列的DSPs芯片,并將在CCS2000(for5000TMS320C54系列DSP的應(yīng)用設(shè)計(jì)中,DSP的運(yùn)行速度是衡量系統(tǒng)性能的一項(xiàng)重要指標(biāo),要達(dá)到預(yù)期的運(yùn)行速度,就要給DSP為停電數(shù)據(jù)丟失和停電數(shù)據(jù)不丟失兩類(lèi)。停電數(shù)據(jù)丟失的器件有RAM;停電數(shù)據(jù)不丟失的有ROM,EPROM,FLASHFLASH因讀寫(xiě)方便快速而較常用。在對(duì)DSPC能用C如A/D用戶(hù)操作界面等,則用C語(yǔ)言編寫(xiě)。因此,混合編程法已成為開(kāi)發(fā)TMS320C54XDSP應(yīng)用程序的常用方法。要想開(kāi)發(fā)基于C54XDSPC54XDSPDSPC54XDSP提供JTAG口和HPIHPI是8C5000系列DSP是16位,所以與主機(jī)通信的數(shù)據(jù)都是由2個(gè)連續(xù)的字節(jié)組成[4]。C54X主要特點(diǎn)如下:具有先進(jìn)的多總線結(jié)構(gòu),一條程序總線三條16位數(shù)據(jù)總線和四條地址總線;40位算術(shù)邏輯單元(ALU40位桶形移位器和兩個(gè)4017*17乘法器和一個(gè)40位專(zhuān)用加法器,允許16位帶/viterbi加速器,用于提高viterbi編譯碼的速度;單周期正規(guī)化及指數(shù)譯碼;8個(gè)輔助寄存器及一個(gè)軟件棧,允許使用業(yè)界最先進(jìn)的定點(diǎn)DSPC/程序?qū)ぶ房臻g1M*16bit,內(nèi)置4k*16bitROM和16k*16bitRAM;低功耗,工作電壓為1.8V/3.3V。1.3本文研究對(duì)象本文所設(shè)計(jì)的viterbi譯碼是基于C54XDSP用matlab軟件對(duì)viterbi譯碼程序進(jìn)行仿真,再在ccs2000(for5000)環(huán)境下進(jìn)行軟件仿真。在viterbi譯碼器的設(shè)計(jì)中,采用了并行加比選(ACS)交換(registerexchange)(trace_back)計(jì)的viterbiviterbi譯碼器還同時(shí)支持硬判決和軟判決。通過(guò)matlab和ccs上的仿真,我們將具體呈現(xiàn)viterbi譯碼的正確性和實(shí)用性,以及viterbi譯碼器的誤碼性能。2卷積碼卷積碼至今尚未建立像線性分組碼那樣有嚴(yán)密而完整的數(shù)學(xué)分析體系,形表示法也可以分為狀態(tài)圖法、樹(shù)圖法、網(wǎng)格圖法等。2.1卷積碼的編碼及其應(yīng)用2.1.1卷積碼的編碼表達(dá)形式聲。就噪聲引發(fā)差錯(cuò)的統(tǒng)計(jì)規(guī)律而言可分為隨機(jī)差錯(cuò)信道和突發(fā)差錯(cuò)信道。對(duì)于隨機(jī)差錯(cuò)信道,它的差錯(cuò)主要是由加性高斯白噪聲(AWGN)引起的。(多電平數(shù)的極限)它可分(BSC)(DMC)BSC信道輸入輸出都是二進(jìn)制的,也就是檢測(cè)器實(shí)行門(mén)限硬判決;DMC信道軟判決:離散輸入連續(xù)輸出信道是DMC的極限情況。從香農(nóng)(Shannon)信道編碼定理可以看出要降低誤碼率,通過(guò)某種規(guī)則加入冗余信息(編碼)是常用途徑之一。常用的這些編碼“規(guī)則有:分組編相同誤碼率的條件下,編碼比不編碼可以節(jié)省幾個(gè)dB的信號(hào)功率,也就是說(shuō)在同樣的信噪比條件下編碼以后可以降低發(fā)射和接收功率。卷積編碼是在實(shí)際中應(yīng)用極為廣泛的一種編碼方法,可以用(n,k,m)來(lái)表示。其編碼器是一個(gè)由k個(gè)輸入端、n個(gè)輸出端且具有m-1級(jí)移位寄存器所構(gòu)成的有限狀態(tài)的有記憶系統(tǒng),m稱(chēng)之為編碼約束長(zhǎng)度,它表示編碼碼字的產(chǎn)生受m個(gè)信息分組的制約;k/n表示編碼效率[5]。圖2.1嚴(yán)密而完整的數(shù)學(xué)分析體系,分析它的方法也很多,但都有一定的局限性。圖法等。圖2.1卷積碼編碼程序流程圖下面結(jié)合(2,1,3)卷積碼來(lái)說(shuō)明常用的幾種表示法:樹(shù)狀圖、狀態(tài)圖法和網(wǎng)格圖法。圖2.2(2,1,3)卷積碼樹(shù)狀圖00abc和d4種狀態(tài):000110和11a1位輸入信息為零時(shí),輸出碼元為00a1為11ba和b作4到整個(gè)樹(shù)狀圖。i2i4位信第1位信息無(wú)關(guān),由此可以看出把卷積碼的約束長(zhǎng)度定義為N-1的意義。顧名思義,狀態(tài)圖法就是對(duì)編碼寄存器做相應(yīng)的狀態(tài)標(biāo)定,然后討論編碼規(guī)則的方法[6]。圖2.3(2,1,3)卷積碼的狀態(tài)圖從圖2.3可以看出寄存器總的狀態(tài)數(shù)為4種,其狀態(tài)標(biāo)號(hào)為S0=00,S1=10,S2=01,S3=11。由于每次的輸入有兩種可能:0或者1,所以每字表示狀態(tài)轉(zhuǎn)移時(shí)相應(yīng)的編碼輸出(碼字)入信息。例如,假定初始狀態(tài)為s0(00),若輸入信息位為1,則輸出碼字為11,下一時(shí)刻的狀態(tài)為S1(10);若輸入信息位為0,則輸出碼字00,下一時(shí)刻的狀態(tài)仍舊是S0(00)。它實(shí)際上就是一個(gè)有限狀態(tài)機(jī)。的軌跡。另一種描述法一網(wǎng)格圖法(也稱(chēng)柵格圖法)可以彌補(bǔ)這一缺陷.它可碼字(輸入信息)k=1的情況還可以用箭頭的虛實(shí)來(lái)表示導(dǎo)致?tīng)顟B(tài)轉(zhuǎn)移的輸入是0還是101上首尾相連以體現(xiàn)時(shí)間的變化。如圖2.4S0為U=()S0->S1->S2->S1->S3->S3->S2->S0應(yīng)的編碼輸出為(11,01,00,10,01,10,11)找到唯一的一條路徑(軌跡)也就知道對(duì)應(yīng)的輸入信息。因此如果事先知道了狀態(tài)轉(zhuǎn)移路徑為S0->S2->S1->S2->S3->S3->S1->S0,則必然輸入的信息序列為()。這對(duì)于卷積碼的Viterbi譯碼中很重要,譯碼時(shí)就是根據(jù)最大似然準(zhǔn)則找到這條路徑,找了這條路徑也就找到了相應(yīng)的輸入信息序列。圖2.4(2,1,3)卷積碼的網(wǎng)格圖上述三種表示方法各有千秋,是理解卷積碼編譯碼方法的基礎(chǔ)。2.1.2卷積碼的解析表示2.1.2.1生成矩陣一個(gè)卷積碼完全由一個(gè)監(jiān)督矩陣H或生成矩陣G積碼的生成矩陣。以(3,1,3)為例來(lái)討論生成矩陣[7]。當(dāng)?shù)谝恍畔⒈忍剌斎霑r(shí),若移位寄存器起始狀態(tài)全為零。那么三個(gè)輸出比特為(2.1)第二個(gè)信息比特輸入時(shí),右移一位,那么輸出比特為(2.2)當(dāng)?shù)趈個(gè)(j3)信息比特輸入時(shí),輸出為:(2.3)式2.1可寫(xiě)成矩陣形式(2.4)其中系數(shù)矩陣(2.5)由上看到,在第一和第二信息比特輸入時(shí),存在過(guò)渡過(guò)程,此時(shí)有(2.6)(2.7)類(lèi)同線性碼的輸出序列矩陣與輸入序列矩陣的關(guān)系有(2.8)式2.8中=[……]為輸入序列矩陣=[……]為輸出序列矩陣為生成矩陣,這里和顯然是半無(wú)限矩陣??偫ㄉ厦娴木幋a過(guò)程,生成矩陣應(yīng)該是(2.9)式2.9中矩陣空白區(qū)元素都為0。顯然,該生成矩陣是半無(wú)限矩陣,常記為。2.1.2.2多項(xiàng)式模2和的連接關(guān)系。在一般情況下,輸入序列可表示為(2.10)這里……為二進(jìn)制表示(1或0它標(biāo)志著位置狀況。我們可以用多項(xiàng)式表示移位寄存器各級(jí)與模2存器與模2加相連接,則相應(yīng)多項(xiàng)式的系數(shù)為1;反之,無(wú)連接線時(shí)的多項(xiàng)式項(xiàng)系數(shù)為0。以(3,1,3)編碼器為例[7],相應(yīng)的生成多項(xiàng)式為(2.11)得到輸出序列。設(shè)輸出序列為111……,借助上述輸出多項(xiàng)式來(lái)求輸出序列如下。輸入序列多項(xiàng)式為(2.12)所以(2.13)即有序列=111……=010……=001……(2.14)于是輸出序列=111,110,010,100,001,100,001,100,110,101,……為方便起見(jiàn),人們常用八進(jìn)制序列和二進(jìn)制序列來(lái)表示生成多項(xiàng)式,比如(2.15)2.1.3卷積碼的應(yīng)用出的碼型,廣泛應(yīng)用于各種領(lǐng)域如:數(shù)字衛(wèi)星通信系統(tǒng)、遙測(cè)外測(cè)系統(tǒng)、GSM(GroupSpecialMobile)3G(第三代移動(dòng)通信)例如:絕大多數(shù)衛(wèi)星通信采用的是(2,1,7)卷積碼:GSM采用了(2,1,5)卷積CDMA的IS-95標(biāo)準(zhǔn)采用的是(2,1,9)3GPP(第三代移動(dòng)通信伙伴關(guān)系)的WCDMA正向信道采用的是(2,l,9)(3,1,9)卷積碼;CCSDS(空間數(shù)據(jù)系統(tǒng)咨詢(xún)委員會(huì))也把卷積碼作為實(shí)時(shí)要求較高業(yè)RS碼作為一對(duì)黃金搭檔常常級(jí)連使用S碼做為外碼卷積碼作為內(nèi)碼用于DVB(歐洲數(shù)字視頻廣播)標(biāo)準(zhǔn)和ATSC(美國(guó)先進(jìn)電視)標(biāo)準(zhǔn)等等。積碼等等,但這些不是本文研究的范疇。本文主要研究viterbi譯碼在DSP中的仿真以及在matlab環(huán)境下的仿真實(shí)驗(yàn)。2.2卷積碼的譯碼原理用的概率譯碼方法有維特比譯碼和序列譯碼。2.2.1代數(shù)譯碼代數(shù)譯碼[8]誤,如果錯(cuò)誤圖樣是已知的,則一定滿(mǎn)足R=C+E(R為接收碼元序列,C為發(fā)送碼元序列,E為誤碼序列)碼字有沒(méi)有錯(cuò)誤可以用監(jiān)督矩陣H來(lái)檢驗(yàn),RCE之間有如式2.16關(guān)系式(2.16)因?yàn)槭且粋€(gè)碼字,所以有,則。令或,稱(chēng)為伴隨式或校驗(yàn)字。當(dāng)時(shí),判無(wú)錯(cuò);當(dāng)時(shí),判有錯(cuò)。所產(chǎn)生的錯(cuò)誤圖樣有關(guān),而與發(fā)送的是哪一個(gè)碼字無(wú)關(guān)。任何一個(gè)錯(cuò)誤圖樣都可由公式(2.16)使用場(chǎng)合,常用的有門(mén)限譯碼法。2.2.2最大似然譯碼卷積碼概率譯碼的基本思路是[9]它與其他所有可能出現(xiàn)的、連續(xù)的網(wǎng)格圖路徑的距離,選出其中可能性(概率)最大的一條作為譯碼估值輸出。概率最大在大多數(shù)場(chǎng)合可解釋為距離最(NLDMaximumLikelihoodDecoding)與分組碼的最大似然譯碼在原理上是一組的相似度,而卷積碼是求碼字序列之間的相似度。度(BMBranchMetric)(PMPathMetric),那么在相同序列長(zhǎng)度下(長(zhǎng)度L應(yīng)足夠大)譯碼估值序列輸出。2.2.3維特比譯碼的原理維特比譯碼一種最大似然譯碼算法[13],最大似然譯碼過(guò)程就是根據(jù)接個(gè)過(guò)程也就是譯碼器計(jì)算、尋找最大似然函數(shù)(2.17)BSC(二進(jìn)制對(duì)稱(chēng)信道)而言,計(jì)算、尋找有最大度量的路徑,等價(jià)于尋找與R有最小漢明距離的路徑,即尋找(2.18)而對(duì)二進(jìn)制輸入Q進(jìn)制輸出的DMCR有最小軟距離的路徑,此時(shí)的度量就是軟判決距離(2.19)式2.19中,與是接收序列R與序列的Q進(jìn)制表示。L=50=3=2圖上共有=>=100個(gè)信息元,則信息傳輸率只有100bit/s(或漢明距離)計(jì)算每一似然函數(shù)的時(shí)間小于s,這根本無(wú)法實(shí)現(xiàn)。Viterbi譯碼算法正是在解決上述困難時(shí)所引入的一種最大似然譯碼算函數(shù)的序列。2.3卷積碼的譯碼卷積碼的譯碼方式主要有三種:1963年Massey1963年有Fano改進(jìn)的序列譯碼,這是基于碼的樹(shù)狀圖結(jié)構(gòu)的一種準(zhǔn)最佳概率譯碼。1967年Viterbi提出的Viterbi法,是一種最佳概率譯碼。于計(jì)算是用到了信道的統(tǒng)計(jì)特性.因而提高了譯碼性能,但這種性能的提高硬件簡(jiǎn)單;序列譯碼在性能和硬件方面介于維特比譯碼和門(mén)限譯碼之間。viterbi譯碼算法是一種卷積碼的解碼算法。缺點(diǎn)就是隨著約束長(zhǎng)度的增加算法的復(fù)雜度增加很快。約束長(zhǎng)度N為7時(shí)要比較的路徑就有64條,為8時(shí)路徑變?yōu)?28條。(2<<(N-1))viterbi譯碼一般應(yīng)用在約束長(zhǎng)度小于10的場(chǎng)合中。先說(shuō)編碼(舉例約束長(zhǎng)度為7):編碼器7個(gè)延遲器的狀態(tài)(0,1)組成了整個(gè)編碼器的64個(gè)狀態(tài)。每個(gè)狀態(tài)在編碼器輸入0或1時(shí),會(huì)跳轉(zhuǎn)到另一個(gè)之中。比如110100輸入1時(shí),變成101001t時(shí)刻收到的數(shù)據(jù)都要進(jìn)行6464入0或164條幸存路徑就增加了一步。在譯碼結(jié)束的時(shí)候,從64條幸存路徑中選出卷積碼概率譯碼的基本思路是:以接收碼流為基礎(chǔ),逐個(gè)計(jì)算它與其他然譯碼在原理上是一樣的,但實(shí)現(xiàn)方法上略有不同。主要區(qū)別在于:分組碼能獲得最大對(duì)數(shù)似然函數(shù),就放棄這條路徑,然后在剩下的“幸存路徑中重新選擇路徑。在整個(gè)viterbi譯碼過(guò)程中一般是一下幾個(gè)步驟[10]:(1)量化。將接收機(jī)接收的模擬信號(hào)轉(zhuǎn)化成數(shù)字信號(hào)。(2)碼同步。檢測(cè)碼元幀的邊界以及碼元標(biāo)志。(3(4)狀態(tài)度量更新。用各個(gè)狀態(tài)新的路徑度量代替前一時(shí)刻的路徑度量。(5)幸存路徑存儲(chǔ)。將Viterbi譯碼所需的網(wǎng)格圖上所走過(guò)的路徑記錄下來(lái)。(6)輸出判決。根據(jù)幸存路徑存儲(chǔ)的信崽,產(chǎn)生譯碼序列的輸出。息序列輸出。圖2.5為viterbi譯碼流程圖。圖2.5viterbi譯碼流程圖2,1,3U=(),編碼器輸出C=(11,10,00,01,10,01,11)BSC信道送入譯碼器的的序列R=(10,10,00,01,11,01,11)Viterbi算法來(lái)求U的估值序列U'?;趫D2.4的網(wǎng)格圖,Viterbi譯碼器接收序列R的過(guò)程如圖2.6所示。圖中畫(huà)出了各時(shí)刻進(jìn)入每一狀態(tài)的的留選路徑和其度量值d〔這里是最小漢明距離),以及相應(yīng)的譯碼估計(jì)信息序列U'。到了第七時(shí)刻,留選路徑就剩一條,相應(yīng)的信息估值序列為U'=()[11],接收時(shí)的兩個(gè)錯(cuò)誤得到糾正。圖2.6Viterbi譯碼器接收序列R的過(guò)程3viterbi譯碼器根據(jù)上面的算法,工程上實(shí)現(xiàn)Viterbi譯碼器的原理圖如圖3.1所示。從圖中可以看出整個(gè)譯碼器按照功能主要分成7塊(BMG,BranchMetricGeneration),加比選模塊(ACS,AdditionComparisonSelection),狀態(tài)路徑存儲(chǔ)管理模塊(MMU,MetricMemoryManagementUnit,路徑回溯模塊(TB,Traceback儲(chǔ)模塊(SMU,SurvivorMemoryManagementUnit,輸入輸出模塊再加上一個(gè)控制電路模塊組成。圖3.1viterbi譯碼系統(tǒng)框圖由圖3.1可以看到整個(gè)viterbi的具體作用[12]。后,最后得到的解碼序列從輸出端送出,在經(jīng)過(guò)其他處理輸出。ACS模塊:AddCompareSelect模塊,即“加比選”模塊。它是Viterbi譯碼器中運(yùn)算量最大的部分,大量的運(yùn)算都是在這個(gè)模塊完成的。ACS接收較小的一條,將它作為當(dāng)前的狀態(tài)度量。BMG模塊:BranchMetricGenerator模塊,即路徑度量模塊。這個(gè)模塊BSC信道的硬判決Viterbi譯碼過(guò)程中,就是計(jì)算接收值與期望值之間的漢明距離。TB模Traceback模塊,路徑回溯模塊。這個(gè)模塊當(dāng)譯碼開(kāi)始一段序列后,按照路徑回溯算法,歷經(jīng)各個(gè)狀態(tài),得到譯碼輸出。MMU模MetricMemoryManagementUnit,路徑度量存儲(chǔ)管理模塊。這個(gè)模塊主要負(fù)責(zé)對(duì)路徑度量的存取進(jìn)行管理,負(fù)責(zé)幸存路徑的存儲(chǔ)和讀取。SMU模SurvivorMemoryManagementUnit,幸存路徑存儲(chǔ)管理模塊。這個(gè)模塊負(fù)責(zé)對(duì)幸存路徑RAM進(jìn)行管理,負(fù)責(zé)幸存路徑的存儲(chǔ)和讀取。Control以保證時(shí)鐘上同步,流水線不堵塞,提高系統(tǒng)并行能力。由于在卷積碼的譯碼過(guò)程中,viterbi譯碼算法的復(fù)雜度和寄存器狀態(tài)ACS模塊、MMU模塊、SMU模塊和TB模塊上?;贒SP的viterbi在viterbi(ACS),路徑計(jì)算部件(BMG)以及度量?jī)?chǔ)存模塊或者寄存器模塊的不同。當(dāng)然具體的軟判決與硬判決的優(yōu)缺點(diǎn)在本文中將不會(huì)涉及。本文主要介紹viterbi算法及其譯碼流程以及在C54XDSP上的實(shí)現(xiàn)。綜合以上,不難發(fā)現(xiàn)viterbi譯碼器設(shè)置的主要模塊是:加比選模塊、的viterbi譯碼過(guò)程中重點(diǎn)考慮。4基于DSP的viterbi譯碼技術(shù)目前,卷積碼編碼和Viterbi理器(DSP)實(shí)現(xiàn)和可編程專(zhuān)用集成電路(ASIC)實(shí)現(xiàn)。ASIC屬于硬件實(shí)現(xiàn),可以完成非常高速的Viterbi譯碼器的設(shè)計(jì)。DSP實(shí)現(xiàn)屬于軟件實(shí)現(xiàn),其運(yùn)算用廣泛。4.1DSP芯片TMS320VC5409簡(jiǎn)介MS320VC5409是TI公司生產(chǎn)的低功耗、高性能的定點(diǎn)可編程DSP芯片,其主要應(yīng)用是無(wú)線通信系統(tǒng)等。其主要特點(diǎn)包括[14][16]:(1)運(yùn)算速度快。指令周期為lOns,運(yùn)算能力為100MIPS。(2)優(yōu)化的CPU結(jié)構(gòu)。1條程序總線(PB)3條數(shù)據(jù)總線(CBDBEB),4條地址總線(PAB、CAB、DAB、EAB)和240位的算術(shù)邏輯單元(ALU)以及一個(gè)40位的桶形移位器和兩個(gè)40位的累加器(A、B),支持32位或雙1617位x17位的硬件乘法器與一個(gè)40位專(zhuān)用加法器相連,構(gòu)成乘法器/加法器單元,可以在一個(gè)流水線周期內(nèi)完成一次乘法和累加(MAC)運(yùn)算;專(zhuān)用的指數(shù)編碼器(EXPencoder)能夠在一個(gè)周期內(nèi)完成累加器中40位數(shù)值的指數(shù)運(yùn)算;單獨(dú)的數(shù)據(jù)地址產(chǎn)生單元(DAGEN)和程序地址(PAGEN)產(chǎn)生單元,能夠同時(shí)進(jìn)行三個(gè)讀操作和一個(gè)寫(xiě)操作。此外,比較、DSP結(jié)構(gòu)可高效地實(shí)現(xiàn)無(wú)線通信系統(tǒng)中的許多功能。(3)大的存儲(chǔ)空間。TMS320VC5409有192K字16位的存儲(chǔ)器空間:64K字的程序空間,64K字的數(shù)據(jù)空間和64K字的I/O空間。(4)智能片內(nèi)外設(shè)。TMS320VC5409還提供了3個(gè)多通道緩沖串行口McBSP(Multi-channelBufferedSerialPort)和1個(gè)增強(qiáng)的8位主機(jī)接口(HPI-8),方便與外部器件的數(shù)據(jù)傳輸。4.2matlab環(huán)境下viterbi譯碼仿真實(shí)驗(yàn)MATLAB是美國(guó)Mathworks公司開(kāi)發(fā)的新一代科學(xué)計(jì)算軟件;MATLAB是英文MATrixLABoratory(矩陣實(shí)驗(yàn)室);MATLAB是一個(gè)專(zhuān)門(mén)為科學(xué)計(jì)算而設(shè)語(yǔ)言只有通過(guò)復(fù)雜編程才能實(shí)現(xiàn)的數(shù)值計(jì)算和圖形顯示。4.2.1matlab簡(jiǎn)介MATLAB[13]是一種既可交互使用又能解釋執(zhí)行的計(jì)算機(jī)編程語(yǔ)言。所謂需像C可執(zhí)行文件。MATLAB工作效率。MATLAB代碼能夠很方便地轉(zhuǎn)化為可重用的函數(shù)或過(guò)程。MATLAB帶來(lái)任何機(jī)器誤差,但是需要耗費(fèi)更多的計(jì)算機(jī)內(nèi)存和時(shí)間。另外,利用MATLAB軟件包中的Simulink等組件,能夠?qū)Ω鞣N動(dòng)態(tài)系統(tǒng)進(jìn)行仿真分析,發(fā)周期。MATLAB軟件是由主包和各種工具箱構(gòu)成。其中,主包基本上是一個(gè)用C/C++等語(yǔ)言編寫(xiě)成的函數(shù)庫(kù)。該函數(shù)庫(kù)提供矩陣(或數(shù)組)的各種算法以箱則從深度和廣度上大大擴(kuò)展了MATLAB主包的功能和應(yīng)用領(lǐng)域。從使用角箱通用于各個(gè)學(xué)科領(lǐng)域,如“符號(hào)工具箱”等。此外,市場(chǎng)上還有大量不斷涌現(xiàn)的基于MATLAB的第三方軟硬件產(chǎn)品。本次viterbi了程序代碼的書(shū)寫(xiě)以及資源的浪費(fèi)。4.2.2matlab仿真本文主要將用到matlab中的函數(shù)庫(kù)主要程序是:Viterbi的編碼函數(shù):Trellis=poly2trellis(7,[133,171]);Code=convenc(m1,trellis);其中m1為輸入,code為輸出,poly2trellis為matlab自帶的函數(shù)庫(kù),convenc為matlab自帶的卷積運(yùn)算函數(shù)。Viterbi譯碼函數(shù):Codeout=vitdec(code,trellis,tbl,'term','hard');圖4.1matlab下viterbi譯碼函數(shù)仿真圖在圖4.1中m1為輸入,codeoutviterbi譯碼的時(shí)候,將主要將m1與codeout進(jìn)行對(duì)比,看看他們的相似度是多少,是否完全相同。在進(jìn)行仿真時(shí),由上述的viterbi編碼程序可以得到當(dāng)m1=[1,0,1,0,1,0,0]時(shí),code(即編碼后的輸出序列)為[1,1,0,1,0,0,1,0,0,0,0,0,0,0]一共14輸出codeout與輸入m1驚人的相識(shí),這說(shuō)明viterbi譯碼是一種糾錯(cuò)能力很強(qiáng)的譯碼方法。從上述的幾段主要代碼我們可以看出matlab在軟件仿真上的巨大優(yōu)勢(shì),直接調(diào)用函數(shù)庫(kù)就可以輕松完成編碼、譯碼的函數(shù)編寫(xiě)。4.3維特比譯碼算法的處理過(guò)程維特比譯碼算法的處理過(guò)程如圖4.2所示。圖4.2維特比譯碼算法的處理過(guò)程首先輸入的序列是編碼后的序列,得到這些序列可以是軟判決輸入或硬可得到恢復(fù)編碼過(guò)程,得到原信息序列。接下來(lái)詳細(xì)分析每個(gè)步驟的處理過(guò)程。4.3.1分支度量值的更新度量值的更新部分包括:(1)計(jì)算每一個(gè)可能路徑的每一步的距離值;(2)對(duì)每個(gè)新?tīng)顟B(tài),將分支度量值與舊狀態(tài)的度量值相加,得到新?tīng)顟B(tài)的度量值;(3)選擇并且保存累加值最小的那條路徑;(4)每收到一個(gè)符號(hào)就進(jìn)行狀態(tài)轉(zhuǎn)移。4.3.1.1分支度量計(jì)算Viterbi譯碼算法必須計(jì)算前一個(gè)狀態(tài)到各個(gè)新?tīng)顟B(tài)的分支度量值。在當(dāng)輸入數(shù)據(jù)是多個(gè)比特時(shí)采用軟判決輸入,分支度量值用歐式距離表示。2.2dB(4比特4.1列出了三個(gè)比特量化時(shí)的數(shù)值及有效位[13]。這些數(shù)值來(lái)自維特比方程式,可以減少符號(hào)間的沖突,通過(guò)比較接收數(shù)據(jù)與期望數(shù)據(jù)的不同度可以獲得接收數(shù)據(jù)的可信度。程序中采用軟判決,對(duì)于編碼速率為R=1/C的卷積碼來(lái)說(shuō),其歐式距離為(4.1)入值,是路徑指示值,為編碼速率的倒數(shù)[9]。表4.1軟判決數(shù)值數(shù)值意義011最可信的正值010001000最不可信的正值沒(méi)有值111最不可信的負(fù)值110101100最可信的負(fù)值將式4.1展開(kāi)得(4.2)不加以考慮。這樣就有簡(jiǎn)化的分支度量值(4.3)省去式4.3率為1/2的卷積碼,其分支度量值為(4.4)其中,與均用雙極性表示,即0用+1表示,而1用-1表示。在DSPTO和T1獲得輸入符號(hào)到各個(gè)信號(hào)點(diǎn)之間的局部碼距。4.3.1.2蝶形運(yùn)算由大多數(shù)卷積編碼器的格狀圖可以看出卷積碼編譯碼是由若干個(gè)蝶形結(jié)構(gòu)組成的,這樣就可以采用類(lèi)似于快速Fourier變換(FFT)的蝶形運(yùn)算來(lái)簡(jiǎn)化運(yùn)算過(guò)程。在(133,171)卷積碼譯碼中,共有64個(gè)狀態(tài),這樣就會(huì)有32個(gè)蝶形。在描述編碼器狀態(tài)時(shí),我們用編碼器寄存器的數(shù)值來(lái)表示,如、等。(133,171)卷積碼譯碼的基本蝶形如圖4.3所示。圖4.3(133,171)卷積碼基本蝶形圖在信道均衡和解碼中經(jīng)常會(huì)使用到Viterbi算法,C54x為此提供了專(zhuān)門(mén)的硬件和指令。根據(jù)輸入信號(hào)確定分支似然概率增加量D1/D2,放在T寄存器中,TRN(ACS)運(yùn)算時(shí),更改T寄存器中的數(shù)值就可以順利完成每次32次的蝶形運(yùn)算。(1)狀態(tài)的變更:在(133,171)卷積碼編碼中,總共有個(gè)狀態(tài)。我們可以通過(guò)MATLAB軟件編程仿真來(lái)獲得編碼過(guò)程。%encode217.mG0=[];G1=[];input=[];output0=mod(conv(input,G0),2);outputl=mod(conv(input,G1),2);順序改變input[]中的數(shù)值即得到所要獲得的狀態(tài)更改與編碼輸出過(guò)程。根據(jù)圖4.3中蝶形的有關(guān)性質(zhì),我們只需知道前32個(gè)狀態(tài)的編碼過(guò)程,所以我們獲得寄存器狀態(tài)為S0至S31時(shí)的編碼過(guò)程,這在后面的確定蝶形運(yùn)算結(jié)構(gòu)是必須的。更改INPUT數(shù)組中的數(shù)值,運(yùn)行MATLAB卷積碼程序,即得到表4.2中的編碼過(guò)程[15]。表4.2(2,1,7)卷積碼編碼狀態(tài)轉(zhuǎn)移表狀態(tài)S0S1S2S3S4S5S6S7S8S9S10輸入0編碼輸出0001111011100001000111編碼后狀態(tài)S0S2S4S6S8S10S12S14S16S18S20輸入1編碼輸出1110000100011110111000編碼后狀態(tài)S1S3S5S7S9S11S13S15S17S19S21狀態(tài)S11S12S13S14S15S16S17S18S19S20S21輸入0編碼輸出1011100001101101000100編碼后狀態(tài)S22S24S26S28S30S32S34S36S38S40S42輸入1編碼輸出0100011110010010111011編碼后狀態(tài)S23S25S27S29S61S33S35S37S39S41S43狀態(tài)S22S23S24S25S26S27S28S29S30S31輸入0編碼輸出10111011010001001011編碼后狀態(tài)S44S46S48S50S52S54S56S58S60S62輸入1編碼輸出01000100101110110100編碼后狀態(tài)S45S47S49S51S53S55S57S59S61S63(2)蝶形運(yùn)算數(shù)據(jù)存儲(chǔ)的順序:是順序的。圖4.4數(shù)據(jù)存儲(chǔ)順序示意由圖4.4可知,只要將蝶形右側(cè)的下面數(shù)據(jù)往后加32個(gè)地址空間存儲(chǔ)每接收到2個(gè)的數(shù)據(jù)就通過(guò)上述的32儲(chǔ)起來(lái)。4.3.2回溯在進(jìn)行蝶形運(yùn)算后整個(gè)路徑選擇的信息就通過(guò)TRN些信息,就可以選出最佳路徑。TRN中數(shù)據(jù)各位代表含義如表4.3所示[9]。表4.3TRN各位代表含義各個(gè)比特的順序15141312111098002k-212k-2+122k-2+232k-2+3182k-2+892k-2+9A2k-2+AB2k-2+B

T2102k-2+10112k-2+11122k-2+12132k-2+13

R……

N字2k-2-12k-2-82k-2-82k-2-72k-2-72k-2-62k-2-62k-2-52k-2-5各個(gè)比特的順序76543210042k-2+452k-2+562k-2+672k-2+71C2k-2D2k-2+DE2k-2+EF2k-2+FT2142k-2152k-2+15162k-2+16172k-2+17

RN……字2k-2-12k-2-42k-2-42k-2-32k-2-32k-2-22k-2-22k-2-12k-2-1N-1后肯定是狀態(tài)S0。這樣在回溯的時(shí)候,可以肯定的將初始狀態(tài)定為零。1331716416比特,K=7來(lái)說(shuō)各位代表的含義如表4.4所示[10]。表4.4K=7時(shí)TRN各位代表含義各個(gè)比特的順序151413121110980032133234335TRN184094110421143字21648174918501951……2456255726582759各個(gè)比特的順序765432100436537638739TRN11244134514461547字22052215322542355……2860296130623163為7的編碼器,有64個(gè)狀態(tài),可用N-1位表示。如圖4.5所示,最高有效位N-2位和最低3個(gè)有效位一起表示了狀態(tài)的“位號(hào),其余的位表示“字號(hào)”。我們可以通過(guò)下面的公式計(jì)算出相應(yīng)的字值和比特值。WORD#=(STATE>3)&MASK其中,MASK=BIT#=2*STATE+[STATE>k-2]&1圖4.5狀態(tài)變量描述關(guān)系5系統(tǒng)程序設(shè)計(jì)實(shí)現(xiàn)5.1卷積碼編碼程序設(shè)計(jì)根據(jù)卷積碼編碼的原理編寫(xiě)卷積碼編碼程序。其中,函數(shù)的參數(shù)為信息圖如圖5.1所示。圖5.1編碼程序流程圖對(duì)于(133,171)卷積碼的編碼,異或操作得到G0、G1,有(5.1)(5.2)比較G0、G1的運(yùn)算結(jié)構(gòu),G0與G1中只有和不同。設(shè)(5.3)5.4)這里的加是模二加,有一個(gè)非常有用的性質(zhì)(5.5)首先得到G,而后算出(5.6)由式5.6轉(zhuǎn)化得(5.7)算出(5.8)編碼程序如下:LD*frame_ptr+,16,A;OR*frame_ptr-,A;裝載輸入序列LD*frame_ptr+,16,B;OR*frame_ptr,B;裝載輸入序列XORB,2,A;XORB,3,A;XORB,6,A;XORB,5,A;STHA,*output_ptr+;保存G0XORB,5,A;XORB,1,A;STHA,*output_ptr+;保存G15.2維特比譯碼程序設(shè)計(jì)根據(jù)卷積碼的原理編寫(xiě)卷積碼的維特比譯碼程序,譯碼的流程圖如圖5.2所示。圖5.2維特比譯碼函數(shù)流程圖在度量值更新過(guò)程,首先要獲得局部碼距,這一部分的程序如下:LD*AR2+,16,A;A=SD(2*i)SUB*AR2,16,A,B;B=SD(2*i)-SD(2*i+1)STHB,*sp(DIFF);保存差A(yù)DD*AR2+,16,A,B;B=SD(2*i)+SD(2*i+1)STHB,*sp(SUM);保存和接著要獲得各個(gè)編碼的路徑選擇信息,采用蝶形算法來(lái)簡(jiǎn)化運(yùn)算。程序如下:BFLY_DIR.macroDADST*oldm_ptr,ADSADT*oldm_ptr+%,BCMPSA,*newm_ptr+%CMPSB,*m_ptr+%.endmBFLY_REV.macroDSADT*oldm_ptr,ADADST*oldm_ptr+%,BCMPSA,*newm_ptr+%CMPSB,*m_ptr+%.endm根據(jù)確定的數(shù)據(jù)存儲(chǔ)順序,就可以根據(jù)對(duì)應(yīng)的編碼過(guò)程選擇蝶形結(jié)構(gòu),完成度量值的更新,蝶形運(yùn)算程序如下(以前四個(gè)蝶形為例):LD*sp(SUM),TBFLY_DIRLD*sp(DIFF),TBFLY_REVLD*sp(SUM),TBFLY_DIRLD*sp(DIFF),TBFLY_REV通過(guò)度量值的更新過(guò)程得到卷積碼的路徑選擇信息,通過(guò)回溯讀取這些信息來(lái)獲得原始的信息序列。在卷積碼的編碼時(shí),編碼的一幀序列的最后N-1位為零,這樣編碼結(jié)束的最終狀態(tài)為S0,所以在回溯的時(shí)候,將初狀態(tài)定為S0。接下來(lái)就可以通過(guò)當(dāng)前狀態(tài)和存儲(chǔ)下來(lái)的路徑選擇信息得到下一個(gè)狀態(tài),并獲得譯碼輸出。程序如下:SFTLA,-5,B;B=STATE>>(K-2)AND#1,B;B=B&1=MSBofSTATEADDA,1,B;BIT#=2*STATE+[STATE>k-2]&1STLMB,T;保存比特值SFTLA,-3,B;B=STATE>>3AND#3,B;B=B&MASKSTLMB,AR0;保存字值MAR*+AR2(-4)MAR*AR2+0BITT*AR2-0;ROLTCA;獲得對(duì)應(yīng)比特位路徑轉(zhuǎn)移值5.3程序測(cè)試完成各個(gè)程序函數(shù)的編寫(xiě)之后,需要測(cè)試程序的功能是否可以實(shí)現(xiàn)。5.3.1編碼測(cè)試編碼函數(shù)是將輸入序列進(jìn)行卷積碼編碼,而后輸出。所以如果程序功能正確,輸入測(cè)試序列即可得到正確編碼數(shù)據(jù)。輸入編碼序列為intframe[FRAME_WORD_SZ]={0x0000,0xACDC,0x2345,0xBABE,0x789A};其中,有效的比特位為70個(gè),最后的6比特?cái)?shù)據(jù)為零。這樣,調(diào)用卷積碼編碼函數(shù)后得到編碼數(shù)據(jù)為0x0039,0x002D,0xD5C1,0x17FD,0x0DA7,0x239B,0x7DE5,0x5F56,0x6BE2,0x8996。5.3.2維特比譯碼測(cè)試當(dāng)回溯深度為64646比特0結(jié)尾,共70比特。當(dāng)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論