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

下載本文檔

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

文檔簡(jiǎn)介

1引言卷積碼的概率碼最早始于1961年由Wozencraft提出的序列譯碼,這是第一個(gè)實(shí)用的概率譯碼方法,1963年Fano對(duì)序列譯碼進(jìn)行改進(jìn),提出Fano算法,從而推動(dòng)了序列譯碼的實(shí)際應(yīng)用。1967年Viterbi提出了另一種概率譯碼算法:Viterbi算法,它是一種最大似然譯碼算法。在碼的約束比較小時(shí),它比序列譯碼算法效率更高、速度更快,譯碼器也較簡(jiǎn)單。因而自Viterbi算法提出以來,無論在理論上還是實(shí)踐上都得到了極其迅速的發(fā)展,并廣泛應(yīng)用于各種數(shù)據(jù)傳輸系統(tǒng),特別是衛(wèi)星通信系統(tǒng)中。1.1卷積碼的發(fā)展卷積碼是深度空間通信系統(tǒng)和無線通信系統(tǒng)中常用的一種編碼。卷積碼與分組碼不同,它的本碼組的校驗(yàn)元不僅與本組的信息元有關(guān),而且還與以前各時(shí)刻輸入至編碼器的信息組有關(guān)。在編碼過程中,卷積碼充分利用了各碼字間的相關(guān)性,而且它的信息元和校驗(yàn)元也比分組碼小,在與分組碼同樣的碼率R和設(shè)備復(fù)雜性條件下,無論從理論上還是從實(shí)踐上都證明卷積碼的性能至少不比分組碼差;而且卷積碼在實(shí)現(xiàn)最佳譯碼也較分組碼容易。所以從信道編碼定理來看,卷積碼是一種非常有前途的碼類。在IS-95.CDMA的無線數(shù)字蜂窩標(biāo)灘中都采用了卷積碼;在第三代無線通信系統(tǒng)的蜂窩結(jié)構(gòu)中所采用的Turbo碼,也是源自卷積碼。卷積碼是由伊利亞斯(P.Elias)發(fā)明的一種非分組碼。通常它更適用于前向糾錯(cuò),因?yàn)閷?duì)于許多實(shí)際情況它的性能優(yōu)于分組碼,而且運(yùn)算簡(jiǎn)單。卷積碼是一種線性樹碼,由于該碼的輸出序列是輸入序列和編碼器的沖擊響應(yīng)的離散時(shí)間卷積,故名卷積碼。其一般結(jié)構(gòu)包括:一個(gè)由N段組成的輸入移位寄存器,每段k個(gè),共Nk個(gè)移位寄存器、一組n個(gè)模2和相加器,一個(gè)由n級(jí)組成的輸出移位寄存器。對(duì)應(yīng)于每段k個(gè)比特的輸入序列,輸出n個(gè)比特。卷積碼常記為(n,k,N-1),當(dāng)k等于1時(shí),N-1就是寄存器的個(gè)數(shù)。卷積編碼器是由記憶的,即一組信息碼元的校驗(yàn)碼元不但取決于本組信息元,而且還與前m=N-1組信息碼元有關(guān)。其中m被稱為編碼存貯,N=m+1被稱為編碼約束長(zhǎng)度。一個(gè)卷積碼不但可以通過增加校驗(yàn)碼元(相應(yīng)地降低編碼效率)來改善糾錯(cuò)性能,更可以用增加編碼約束長(zhǎng)度的方法提高糾錯(cuò)能力[1]。卷積碼的概率譯碼方法主要有兩種:viterbi譯碼算法和序列譯碼算法(費(fèi)諾算法)。其中,viterbi算法的復(fù)雜度和編碼約束度成指數(shù)關(guān)系,所以只適合m較小的卷積碼或者誤碼率高于10-5的應(yīng)用。由于該算法的收斂性與信道干擾程度無關(guān),所以計(jì)算量是固定的,譯碼實(shí)時(shí)性較好;另外該算法適合軟判決譯碼,可以獲得額外的編碼增益。序列譯碼(費(fèi)諾算法)的復(fù)雜度與m無關(guān),適合大編碼約束長(zhǎng)度(即具有較大自由距離)的卷積碼或者誤碼率低于10-6的業(yè)務(wù)需求。這種算法的收斂速度與信道干擾程度有關(guān),譯碼實(shí)時(shí)性較差,使用軟判決較為復(fù)雜[2]。本文主要研究(2,1,7)卷積碼的viterbi譯碼,其中碼率為1/2,約束長(zhǎng)度為7,共有64個(gè)狀態(tài)。1.2數(shù)字信號(hào)處理(DSP)20世紀(jì)60年代以來,隨著大規(guī)模集成電路、數(shù)字計(jì)算機(jī)等信息技術(shù)的飛速發(fā)展。數(shù)字信號(hào)處理(DigitalSignalProcessing,DSP)技術(shù)應(yīng)運(yùn)而生并得到快速的發(fā)展。在過去的20多年里,DSP在理論和應(yīng)用方面不斷地進(jìn)步和完善,在越來越多的應(yīng)用領(lǐng)域中迅速取代傳統(tǒng)的模擬信號(hào)處理方法,并且開辟出許多新的應(yīng)用領(lǐng)域。目前數(shù)字信號(hào)處理技術(shù)已經(jīng)在通信、雷達(dá)、航空航天、工業(yè)控制、生物醫(yī)學(xué)工程、網(wǎng)絡(luò)及家電領(lǐng)域得到極為廣泛的應(yīng)用,數(shù)字時(shí)代正在到來。由于DSP技術(shù)應(yīng)用非常廣泛,迫切需要一種能高效完成復(fù)雜數(shù)字信號(hào)處理或數(shù)字系統(tǒng)控制,能夠作為DSP系統(tǒng)核心的器件。因此,眾多半導(dǎo)體廠商投入到高性能數(shù)字信號(hào)處理器(DigitalSignalProcessors,DSPs)芯片的研發(fā)當(dāng)中。1982年,美國(guó)德州儀器公司(TexasInstrumentsIncorporation,簡(jiǎn)稱TI公司)推出了該公司的第一款DSPs芯片,很快DSPs芯片就以其數(shù)字器件特有的穩(wěn)定性、可重復(fù)性、可大規(guī)模集成和易于實(shí)現(xiàn)DSP算法等優(yōu)點(diǎn),為數(shù)字信號(hào)處理技術(shù)帶來了更大的發(fā)展和應(yīng)用前景。采用各種類型DSPs實(shí)現(xiàn)系統(tǒng)的數(shù)字化處理和控制已經(jīng)成為了未來發(fā)展的趨勢(shì),并且隨著DSPs運(yùn)算能力的不斷提高,數(shù)字信號(hào)處理的研究重點(diǎn)也由最初的非實(shí)時(shí)應(yīng)用轉(zhuǎn)向高速實(shí)時(shí)應(yīng)用[3]。本文主要講用到TI公司的C54X系列的DSPs芯片,并將在CCS2000(for5000)平臺(tái)上進(jìn)行仿真、運(yùn)行。在TMS320C54系列DSP的應(yīng)用設(shè)計(jì)中,DSP的運(yùn)行速度是衡量系統(tǒng)性能的一項(xiàng)重要指標(biāo),要達(dá)到預(yù)期的運(yùn)行速度,就要給DSP系統(tǒng)的程序空間設(shè)計(jì)一個(gè)高速程序存儲(chǔ)空間。常用的存儲(chǔ)器件分為停電數(shù)據(jù)丟失和停電數(shù)據(jù)不丟失兩類。停電數(shù)據(jù)丟失的器件有RAM;停電數(shù)據(jù)不丟失的有ROM,EPROM,FLASH等,其中FLASH因讀寫方便快速而較常用。在對(duì)DSP硬件進(jìn)行編程時(shí),有時(shí)C語(yǔ)言不如匯編語(yǔ)言方便,有時(shí)根本不能用C語(yǔ)言進(jìn)行編程。因此,對(duì)實(shí)時(shí)性要求較高或需對(duì)硬件直接控制的功能,如A/D采用程序及數(shù)字信號(hào)處理的核心算法等,可由匯編語(yǔ)言實(shí)現(xiàn);而對(duì)運(yùn)行速度和代碼效率要求不高但要求可讀性強(qiáng)維護(hù)容易的程序,如系統(tǒng)初始化、用戶操作界面等,則用C語(yǔ)言編寫。因此,混合編程法已成為開發(fā)TMS320C54XDSP應(yīng)用程序的常用方法。要想開發(fā)基于C54XDSP系統(tǒng),首先要有C54XDSP的仿真器,才能實(shí)現(xiàn)程序的下載及調(diào)試。在沒有仿真器的情況下,也同樣可以開發(fā)DSP系統(tǒng),因?yàn)镃54XDSP提供JTAG口和HPI口用于程序的下載,可以根據(jù)相應(yīng)協(xié)議設(shè)計(jì)自己的開發(fā)系統(tǒng)。其中,HPI是8位的數(shù)據(jù)總線接口,由于C5000系列DSP是16位,所以與主機(jī)通信的數(shù)據(jù)都是由2個(gè)連續(xù)的字節(jié)組成[4]。C54X主要特點(diǎn)如下:具有先進(jìn)的多總線結(jié)構(gòu),一條程序總線三條16位數(shù)據(jù)總線和四條地址總線;40位算術(shù)邏輯單元(ALU),包括一個(gè)40位桶形移位器和兩個(gè)40位累加器;一個(gè)17*17乘法器和一個(gè)40位專用加法器,允許16位帶/不帶符號(hào)的乘法;整合viterbi加速器,用于提高viterbi編譯碼的速度;單周期正規(guī)化及指數(shù)譯碼;8個(gè)輔助寄存器及一個(gè)軟件棧,允許使用業(yè)界最先進(jìn)的定點(diǎn)DSPC語(yǔ)言編譯器;數(shù)據(jù)/程序?qū)ぶ房臻g1M*16bit,內(nèi)置4k*16bitROM和16k*16bitRAM;低功耗,工作電壓為1.8V/3.3V。1.3本文研究對(duì)象本文所設(shè)計(jì)的viterbi譯碼是基于C54XDSP實(shí)現(xiàn)的。在此之前,要先運(yùn)用matlab軟件對(duì)viterbi譯碼程序進(jìn)行仿真,再在ccs2000(for5000)環(huán)境下進(jìn)行軟件仿真。在viterbi譯碼器的設(shè)計(jì)中,采用了并行加比選(ACS)碟形算法來完成對(duì)分支度量、路徑度量的計(jì)算,以及對(duì)幸存路徑的選擇和路徑溢出的控制,在對(duì)幸存路徑的處理上,有兩種經(jīng)典的算法,一種是寄存器交換(registerexchange)算法,另一種是回溯(trace_back)算法,本文所設(shè)計(jì)的viterbi譯碼采用回溯算法。同時(shí)viterbi譯碼器還同時(shí)支持硬判決和軟判決。通過matlab和ccs上的仿真,我們將具體呈現(xiàn)viterbi譯碼的正確性和實(shí)用性,以及viterbi譯碼器的誤碼性能。

2卷積碼卷積碼至今尚未建立像線性分組碼那樣有嚴(yán)密而完整的數(shù)學(xué)分析體系,分析它的方法也很多,但都有一定的局限性。描述卷積碼的方法大致可以分為解析表示法和圖形表示法。解析法又分為生成矩陣法、碼多項(xiàng)式法等;圖形表示法也可以分為狀態(tài)圖法、樹圖法、網(wǎng)格圖法等。2.1卷積碼的編碼及其應(yīng)用2.1.1卷積碼的編碼表達(dá)形式對(duì)于一個(gè)信道,最不確定的因素就是噪聲干擾,引起差錯(cuò)的往往也是噪聲。就噪聲引發(fā)差錯(cuò)的統(tǒng)計(jì)規(guī)律而言可分為隨機(jī)差錯(cuò)信道和突發(fā)差錯(cuò)信道。對(duì)于隨機(jī)差錯(cuò)信道,它的差錯(cuò)主要是由加性高斯白噪聲(AWGN)引起的。根據(jù)編碼信道的輸出是二電平、多電平或是模擬量(多電平數(shù)的極限)它可分為:二進(jìn)制對(duì)稱信道(BSC)、離散無記憶信道(DMC)、離散輸入連續(xù)輸出信道。BSC信道輸入輸出都是二進(jìn)制的,也就是檢測(cè)器實(shí)行門限硬判決;DMC信道的輸入是二進(jìn)制輸出是多進(jìn)制的,也就是檢測(cè)器進(jìn)行多電平量化,亦即所謂軟判決:離散輸入連續(xù)輸出信道是DMC的極限情況。從香農(nóng)(Shannon)信道編碼定理可以看出要降低誤碼率,通過某種規(guī)則加入冗余信息(編碼)是常用途徑之一。常用的這些編碼“規(guī)則”有:分組編碼、卷積編碼等等。尋找好的編碼方法一直是信息論研究的重點(diǎn)與核心。在相同誤碼率的條件下,編碼比不編碼可以節(jié)省幾個(gè)dB的信號(hào)功率,也就是說在同樣的信噪比條件下編碼以后可以降低發(fā)射和接收功率。卷積編碼是在實(shí)際中應(yīng)用極為廣泛的一種編碼方法,可以用(n,k,m)來表示。其編碼器是一個(gè)由k個(gè)輸入端、n個(gè)輸出端且具有m-1級(jí)移位寄存器所構(gòu)成的有限狀態(tài)的有記憶系統(tǒng),m稱之為編碼約束長(zhǎng)度,它表示編碼碼字的產(chǎn)生受m個(gè)信息分組的制約;k/n表示編碼效率[5]。圖2.1是卷積碼的編碼流程,卷積碼至今尚未建立像線性分組碼那樣有嚴(yán)密而完整的數(shù)學(xué)分析體系,分析它的方法也很多,但都有一定的局限性。描述卷積碼的方法大致可以分為解析表示法和圖形表示法。解析法又分為生成矩陣法、碼多項(xiàng)式法等;圖形表示法也可以分為狀態(tài)圖法、樹圖法、網(wǎng)格圖法等。圖2.1卷積碼編碼程序流程圖下面結(jié)合(2,1,3)卷積碼來說明常用的幾種表示法:樹狀圖、狀態(tài)圖法和網(wǎng)格圖法。圖2.2(2,1,3)卷積碼樹狀圖按照習(xí)慣的做法,碼樹的起點(diǎn)節(jié)點(diǎn)位于左邊;移位寄存器的初始狀態(tài)為00,分別用a,b,c和d表示寄存器,的4種狀態(tài):00,01,10和11,作為樹狀圖中每條支路的節(jié)點(diǎn)。以全零狀態(tài)a為起點(diǎn),當(dāng)?shù)?位輸入信息為零時(shí),輸出碼元為00,寄存器保持狀態(tài)a不變。輸入第二個(gè)比特為1時(shí),輸出碼元為11,寄存器則轉(zhuǎn)移到狀態(tài)b。然后再分別以這兩條支路的終節(jié)點(diǎn)a和b作為處理下一位輸入信息比特的起點(diǎn),從而得到4條支路。以此類推,可以得到整個(gè)樹狀圖。顯然,對(duì)于第i個(gè)輸入信息比特,途中將會(huì)出現(xiàn)2i條支路。從第4位信息開始,樹狀圖的上半部和下半部完全相同,這意味著此時(shí)的輸出碼元己和第1位信息無關(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)和編碼輸出可能也只有兩個(gè)。四個(gè)圓圈內(nèi)的分別表示狀態(tài)及對(duì)應(yīng)的寄存器信息,狀態(tài)之間的連線與箭頭表示狀態(tài)轉(zhuǎn)移方向,分支上的數(shù)字表示狀態(tài)轉(zhuǎn)移時(shí)相應(yīng)的編碼輸出(碼字),而括號(hào)內(nèi)的數(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ī)。狀態(tài)轉(zhuǎn)移圖雖然表現(xiàn)了各狀態(tài)轉(zhuǎn)移的去向,但不能記錄狀態(tài)轉(zhuǎn)移隨時(shí)間的軌跡。另一種描述法一網(wǎng)格圖法(也稱柵格圖法)可以彌補(bǔ)這一缺陷.它可以將狀態(tài)轉(zhuǎn)移展開在時(shí)間軸上,使整個(gè)編碼的全過程躍然紙上。特別是在卷積碼的概率譯碼中,它起著極其重要的作用。網(wǎng)格圖以狀態(tài)為縱軸,以時(shí)間為橫軸,將平面分割成格狀就像網(wǎng)格一樣。狀態(tài)以及狀態(tài)轉(zhuǎn)移的定義和狀態(tài)轉(zhuǎn)移圖法一致,也是用箭頭表示轉(zhuǎn)移。箭頭上方標(biāo)出的是狀態(tài)轉(zhuǎn)移時(shí)的輸出碼字(輸入信息)。對(duì)于k=1的情況還可以用箭頭的虛實(shí)來表示導(dǎo)致狀態(tài)轉(zhuǎn)移的輸入是0還是1,實(shí)線表示0。虛線表示1。上一次轉(zhuǎn)移與下一次轉(zhuǎn)移在圖上首尾相連以體現(xiàn)時(shí)間的變化。如圖2.4所示的卷積碼網(wǎng)格圖。假設(shè)初始狀態(tài)為S0,輸入的信息序列仍為U=(1011100),則在網(wǎng)格圖上狀態(tài)轉(zhuǎn)移軌跡為S0->S1->S2->S1->S3->S3->S2->S0,相應(yīng)的編碼輸出為(11,01,00,10,01,10,11)。對(duì)于不同的輸入總能從網(wǎng)格圖上找到唯一的一條路徑(軌跡)與之相對(duì)應(yīng)反過來,如果知道了狀態(tài)轉(zhuǎn)移的路徑也就知道對(duì)應(yīng)的輸入信息。因此如果事先知道了狀態(tài)轉(zhuǎn)移路徑為S0->S2->S1->S2->S3->S3->S1->S0,則必然輸入的信息序列為(1011100)。這對(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)為例來討論生成矩陣[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可寫成矩陣形式(2.4)其中系數(shù)矩陣(2.5)由上看到,在第一和第二信息比特輸入時(shí),存在過渡過程,此時(shí)有(2.6)其中,,(2.7)類同線性碼的輸出序列矩陣與輸入序列矩陣的關(guān)系有(2.8)式2.8中=[……]為輸入序列矩陣=[……]為輸出序列矩陣為生成矩陣,這里和顯然是半無限矩陣。總括上面的編碼過程,生成矩陣應(yīng)該是(2.9)式2.9中矩陣空白區(qū)元素都為0。顯然,該生成矩陣是半無限矩陣,常記為。2.1.2.2多項(xiàng)式我們可以用多項(xiàng)式來表示輸入序列、輸出序列、編碼器中移位寄存器與模2和的連接關(guān)系。在一般情況下,輸入序列可表示為(2.10)這里……為二進(jìn)制表示(1或0)的輸入序列。常稱為移位算子或延遲算子,它標(biāo)志著位置狀況。我們可以用多項(xiàng)式表示移位寄存器各級(jí)與模2加的連接關(guān)系。若某級(jí)寄存器與模2加相連接,則相應(yīng)多項(xiàng)式的系數(shù)為1;反之,無連接線時(shí)的多項(xiàng)式項(xiàng)系數(shù)為0。以(3,1,3)編碼器為例[7],相應(yīng)的生成多項(xiàng)式為(2.11)利用生成多項(xiàng)式與輸入序列多項(xiàng)式相乘,可以產(chǎn)生輸出序列多項(xiàng)式,即得到輸出序列。設(shè)輸出序列為1101010111……,借助上述輸出多項(xiàng)式來求輸出序列如下。輸入序列多項(xiàng)式為(2.12)所以(2.13)即有序列=1101010111……=1110000010……=1000101001……(2.14)于是輸出序列=111,110,010,100,001,100,001,100,110,101,……為方便起見,人們常用八進(jìn)制序列和二進(jìn)制序列來表示生成多項(xiàng)式,比如(2.15)2.1.3卷積碼的應(yīng)用從信道編碼定理看,卷積碼是一種很有前途的能達(dá)到信道編碼定理所提出的碼型,廣泛應(yīng)用于各種領(lǐng)域如:數(shù)字衛(wèi)星通信系統(tǒng)、遙測(cè)外測(cè)系統(tǒng)、GSM(GroupSpecialMobile)、3G(第三代移動(dòng)通信)、各種數(shù)字電視標(biāo)準(zhǔn)等等。例如:絕大多數(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)咨詢委員會(huì))也把卷積碼作為實(shí)時(shí)要求較高業(yè)務(wù)的信息糾錯(cuò)編碼。此外卷積碼還和RS碼作為一對(duì)黃金搭檔常常級(jí)連使用,RS碼做為外碼卷積碼作為內(nèi)碼用于DVB(歐洲數(shù)字視頻廣播)標(biāo)準(zhǔn)和ATSC(美國(guó)先進(jìn)電視)標(biāo)準(zhǔn)等等。不同結(jié)構(gòu)的卷積碼有不同的特性,卷積碼也分成系統(tǒng)卷積碼和非系統(tǒng)卷積碼等等,但這些不是本文研究的范疇。本文主要研究viterbi譯碼在DSP中的仿真以及在matlab環(huán)境下的仿真實(shí)驗(yàn)。2.2卷積碼的譯碼原理卷積碼的譯碼方法可分為兩大類。一類是代數(shù)譯碼,利用編碼本身的代數(shù)結(jié)構(gòu)進(jìn)行譯碼,不考慮信道本身的統(tǒng)計(jì)特性。該方法的硬件實(shí)現(xiàn)簡(jiǎn)單,但性能較差,其中具有典型意義的是門限譯碼。另一類是概率譯碼,這種譯碼通常建立在最大似然準(zhǔn)則的基礎(chǔ)上。由于計(jì)算是用到了信道的統(tǒng)計(jì)特性。因而提高了譯碼性能,但這種性能的提高是以增加硬件的復(fù)雜度為代價(jià)的。常用的概率譯碼方法有維特比譯碼和序列譯碼。2.2.1代數(shù)譯碼代數(shù)譯碼[8]是從碼字本身的代數(shù)結(jié)構(gòu)出發(fā),不考慮信道統(tǒng)計(jì)特性,在每次的計(jì)算循環(huán)之內(nèi),可全部譯出一個(gè)碼的支路。在信道傳輸中碼字產(chǎn)生了錯(cuò)誤,如果錯(cuò)誤圖樣是已知的,則一定滿足R=C+E(R為接收碼元序列,C為發(fā)送碼元序列,E為誤碼序列)。根據(jù)碼元信息位與監(jiān)督位的關(guān)系,一個(gè)接收的碼字有沒有錯(cuò)誤可以用監(jiān)督矩陣H來檢驗(yàn),R,C,E之間有如式2.16關(guān)系式(2.16)因?yàn)槭且粋€(gè)碼字,所以有,則。令或,稱為伴隨式或校驗(yàn)字。當(dāng)時(shí),判無錯(cuò);當(dāng)時(shí),判有錯(cuò)。因此可以利用伴隨式的內(nèi)容對(duì)接收序列進(jìn)行檢錯(cuò)和糾錯(cuò)。伴隨式與信道所產(chǎn)生的錯(cuò)誤圖樣有關(guān),而與發(fā)送的是哪一個(gè)碼字無關(guān)。任何一個(gè)錯(cuò)誤圖樣都可由公式(2.16)算出相應(yīng)的伴隨式。譯碼器的任務(wù)就是根據(jù)伴隨式來確定錯(cuò)誤圖樣,得到最可能發(fā)送的碼字。適用于代數(shù)譯碼的卷積碼是具有快檢特性的系統(tǒng)卷積碼。代數(shù)譯碼方法很多,且各有特點(diǎn)和使用場(chǎng)合,常用的有門限譯碼法。2.2.2最大似然譯碼卷積碼概率譯碼的基本思路是[9]:以斷續(xù)的接收碼流為基礎(chǔ),逐個(gè)計(jì)算它與其他所有可能出現(xiàn)的、連續(xù)的網(wǎng)格圖路徑的距離,選出其中可能性(概率)最大的一條作為譯碼估值輸出。概率最大在大多數(shù)場(chǎng)合可解釋為距離最小,這種最小距離譯碼體現(xiàn)的正是最大似然的準(zhǔn)則。卷積碼的最大似然譯碼(NLD,MaximumLikelihoodDecoding)與分組碼的最大似然譯碼在原理上是一樣的,但實(shí)現(xiàn)方法上略有不同。主要區(qū)別在于:分組碼是孤立地求解單個(gè)碼組的相似度,而卷積碼是求碼字序列之間的相似度。顯然,序列的似然度與序列長(zhǎng)度有關(guān)。如果把碼組的似然度稱作分支量度(BM,BranchMetric),把序列的累積似然度稱為路徑量度(PM,PathMetric),那么在相同序列長(zhǎng)度下(長(zhǎng)度L應(yīng)足夠大),具有最大路徑的那個(gè)序列應(yīng)選作譯碼估值序列輸出。2.2.3維特比譯碼的原理維特比譯碼一種最大似然譯碼算法[13],最大似然譯碼過程就是根據(jù)接收序列,按最大似然譯碼準(zhǔn)則力圖找出編碼器在網(wǎng)格圖上所走過的路徑,這個(gè)過程也就是譯碼器計(jì)算、尋找最大似然函數(shù)(2.17)的過程,也可以說是計(jì)算、尋找有最大“度量”的路徑的過程。對(duì)BSC(二進(jìn)制對(duì)稱信道)而言,計(jì)算、尋找有最大度量的路徑,等價(jià)于尋找與R有最小漢明距離的路徑,即尋找(2.18)而對(duì)二進(jìn)制輸入Q進(jìn)制輸出的DMC信道而言,就是尋找與R有最小軟距離的路徑,此時(shí)的度量就是軟判決距離(2.19)式2.19中,與是接收序列R與序列的Q進(jìn)制表示。但是,用這種方法譯碼是非常難以實(shí)現(xiàn)的。例如L=50,=3,=2,則網(wǎng)格圖上共有=>條不同路徑;如果要在一秒鐘內(nèi)送出這=100個(gè)信息元,則信息傳輸率只有100bit/s,這是很低的。但即使在如此低的信息速率下,也要求譯碼器在一秒鐘內(nèi)計(jì)算、比較個(gè)似然函數(shù)(或漢明距離),這相當(dāng)于要求譯碼器計(jì)算每一似然函數(shù)的時(shí)間小于s,這根本無法實(shí)現(xiàn)。Viterbi譯碼算法正是在解決上述困難時(shí)所引入的一種最大似然譯碼算法。它并不是在網(wǎng)格圖上一次比較所有可能的條路徑,而是接收一段,計(jì)算、比較一段,選擇一段最可能的碼段,從而達(dá)到整個(gè)碼序列是一個(gè)有最大似然函數(shù)的序列。2.3卷積碼的譯碼卷積碼的譯碼方式主要有三種:1963年Massey提出的門限譯碼,這是一種基于碼代數(shù)結(jié)構(gòu)的代數(shù)譯碼,類似于分組碼中的大數(shù)邏輯譯碼。1963年有Fano改進(jìn)的序列譯碼,這是基于碼的樹狀圖結(jié)構(gòu)的一種準(zhǔn)最佳概率譯碼。1967年Viterbi提出的Viterbi算法,基于碼的網(wǎng)格圖基礎(chǔ)上的最大似然譯碼算法,是一種最佳概率譯碼。其中,代數(shù)譯碼,利用編碼本身的代數(shù)結(jié)構(gòu)進(jìn)行譯碼,不考慮信道本身的統(tǒng)計(jì)特性。該方法的硬件實(shí)現(xiàn)簡(jiǎn)單,但性能較差,其中具有典型意義的是門限譯碼。另一類是概率譯碼,這種譯碼通常建立在最大似然準(zhǔn)則的基礎(chǔ)上。由于計(jì)算是用到了信道的統(tǒng)計(jì)特性.因而提高了譯碼性能,但這種性能的提高是以增加硬件的復(fù)雜度為代價(jià)的。常用的概率譯碼方法有維特比譯碼和序列譯碼。維特比譯碼具有最佳性能,但硬件實(shí)現(xiàn)復(fù)雜;門限譯碼性能最差,但硬件簡(jiǎ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)合中。先說編碼(舉例約束長(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í),變成101001(其實(shí)就是移位寄存器)。并且輸出也是隨之而改變的。這樣解碼的過程就是逆過程。算法規(guī)定t時(shí)刻收到的數(shù)據(jù)都要進(jìn)行64次比較,就是64個(gè)狀態(tài)每條路有兩條分支(因?yàn)檩斎?或1),同時(shí),跳傳到不同的兩個(gè)狀態(tài)中去,將兩條相應(yīng)的輸出和實(shí)際接收到的輸出比較,量度值大的拋棄(也就是比較結(jié)果相差大的),留下來的就叫做幸存路徑,將幸存路徑加上上一時(shí)刻幸存路徑的量度然后保存,這樣64條幸存路徑就增加了一步。在譯碼結(jié)束的時(shí)候,從64條幸存路徑中選出一條量度最小的,反推出這條幸存路徑(叫做回溯),得出相應(yīng)的譯碼輸出。卷積碼概率譯碼的基本思路是:以接收碼流為基礎(chǔ),逐個(gè)計(jì)算它與其他所有可能出現(xiàn)的、連續(xù)的網(wǎng)格圖路徑的距離,選出其中可能性最大的一條作為譯碼估值輸出。概率最大在大多數(shù)場(chǎng)合可解釋為距離最小,這種最小距離譯碼體現(xiàn)的正是最大似然的準(zhǔn)則。卷積碼的最大似然譯碼與分組碼的最大似然譯碼在原理上是一樣的,但實(shí)現(xiàn)方法上略有不同。主要區(qū)別在于:分組碼是孤立地求解單個(gè)碼組的相似度,而卷積碼是求碼字序列之間的相似度?;诰W(wǎng)格圖搜索的譯碼是實(shí)現(xiàn)最大似然判決的重要方法和途徑。用網(wǎng)格圖描述時(shí),由于路徑的匯聚消除了樹狀圖中的多余度,譯碼過程中只需考慮整個(gè)路徑集合中那些使似然函數(shù)最大的路徑。如果在某一點(diǎn)上發(fā)現(xiàn)某條路徑已不可能獲得最大對(duì)數(shù)似然函數(shù),就放棄這條路徑,然后在剩下的“幸存”路徑中重新選擇路徑。在整個(gè)viterbi譯碼過程中一般是一下幾個(gè)步驟[10]:量化。將接收機(jī)接收的模擬信號(hào)轉(zhuǎn)化成數(shù)字信號(hào)。碼同步。檢測(cè)碼元幀的邊界以及碼元標(biāo)志。分支度量計(jì)算。計(jì)算各個(gè)狀態(tài)的接收碼元和本地碼元的漢明距離。狀態(tài)度量更新。用各個(gè)狀態(tài)新的路徑度量代替前一時(shí)刻的路徑度量。幸存路徑存儲(chǔ)。將Viterbi譯碼所需的網(wǎng)格圖上所走過的路徑記錄下來。輸出判決。根據(jù)幸存路徑存儲(chǔ)的信崽,產(chǎn)生譯碼序列的輸出。根據(jù)以上的步驟,不難知道看出在譯碼過程中將會(huì)有兩種信號(hào):數(shù)字信號(hào)處理部分和模擬信號(hào)處理部分,當(dāng)信號(hào)被接收后先經(jīng)過模擬信號(hào)部分進(jìn)行量化,然后在進(jìn)行數(shù)字信號(hào)部分的處理,最終用路徑回溯輸出方法將譯碼信息序列輸出。圖2.5為viterbi譯碼流程圖。圖2.5viterbi譯碼流程圖若以上節(jié)所說的(2,1,3)卷積碼為例,假設(shè)輸入的信息序列仍為U=(1011100),編碼器輸出C=(11,10,00,01,10,01,11),通過BSC信道送入譯碼器的的序列R=(10,10,00,01,11,01,11)出現(xiàn)兩個(gè)錯(cuò)誤,現(xiàn)在利用Viterbi算法來求U的估值序列U'?;趫D2.4的網(wǎng)格圖,Viterbi譯碼器接收序列R的過程如圖2.6所示。圖中畫出了各時(shí)刻進(jìn)入每一狀態(tài)的的留選路徑和其度量值d〔這里是最小漢明距離),以及相應(yīng)的譯碼估計(jì)信息序列U'。到了第七時(shí)刻,留選路徑就剩一條,相應(yīng)的信息估值序列為U'=(1011100)[11],接收時(shí)的兩個(gè)錯(cuò)誤得到糾正。圖2.6Viterbi譯碼器接收序列R的過程

3viterbi譯碼器根據(jù)上面的算法,工程上實(shí)現(xiàn)Viterbi譯碼器的原理圖如圖3.1所示。從圖中可以看出整個(gè)譯碼器按照功能主要分成7個(gè)模塊。主要由路徑計(jì)算模塊(BMG,BranchMetricGeneration),加比選模塊(ACS,AdditionComparisonSelection),狀態(tài)路徑存儲(chǔ)管理模塊(MMU,MetricMemoryManagementUnit),路徑回溯模塊(TB,Traceback),路徑存儲(chǔ)模塊(SMU,SurvivorMemoryManagementUnit),輸入輸出模塊再加上一個(gè)控制電路模塊組成。圖3.1viterbi譯碼系統(tǒng)框圖由圖3.1可以看到整個(gè)viterbi譯碼的過程,下面將詳細(xì)介紹這些模塊的具體作用[12]。輸入輸出模塊:輸入輸出部分提供譯碼器與外部的接口。在無線通信中,接收端從信道中接收到信息序列,然后通過輸入端傳入譯碼器。經(jīng)過解碼之后,最后得到的解碼序列從輸出端送出,在經(jīng)過其他處理輸出。ACS模塊:AddCompareSelect模塊,即“加比選”模塊。它是Viterbi譯碼器中運(yùn)算量最大的部分,大量的運(yùn)算都是在這個(gè)模塊完成的。ACS接收原來的狀態(tài)度量和當(dāng)前的度量路徑值,每一狀態(tài)都有兩條路徑可以到達(dá),對(duì)每一狀態(tài)的兩條路徑的對(duì)應(yīng)值相加,將得到的兩個(gè)結(jié)果進(jìn)行比較,從中選取較小的一條,將它作為當(dāng)前的狀態(tài)度量。BMG模塊:BranchMetricGenerator模塊,即路徑度量模塊。這個(gè)模塊計(jì)算每一時(shí)刻各個(gè)狀態(tài)的路徑度量的,在BSC信道的硬判決Viterbi譯碼過程中,就是計(jì)算接收值與期望值之間的漢明距離。TB模塊:Traceback模塊,路徑回溯模塊。這個(gè)模塊當(dāng)譯碼開始一段序列后,按照路徑回溯算法,歷經(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模塊:控制電路模塊,主要負(fù)責(zé)提供各種控制信號(hào)給各個(gè)模塊,以保證時(shí)鐘上同步,流水線不堵塞,提高系統(tǒng)并行能力。由于在卷積碼的譯碼過程中,viterbi譯碼算法的復(fù)雜度和寄存器狀態(tài)數(shù)成正比,與約束長(zhǎng)度成指數(shù)增長(zhǎng)關(guān)系。因此解決計(jì)算復(fù)雜度大的問題是關(guān)鍵,所以整個(gè)譯碼器的重點(diǎn)是在ACS模塊、MMU模塊、SMU模塊和TB模塊上?;贒SP的viterbi譯碼實(shí)現(xiàn)過程分為歐幾里德計(jì)算(其中硬判決中計(jì)算漢明距離)、尋找最短距離、計(jì)算累加距離、跟蹤回溯路徑、微分等步驟。在viterbi譯碼實(shí)現(xiàn)過程中,用軟判決與硬判決的區(qū)別在于加比選部件(ACS),路徑計(jì)算部件(BMG)以及度量?jī)?chǔ)存模塊或者寄存器模塊的不同。當(dāng)然具體的軟判決與硬判決的優(yōu)缺點(diǎn)在本文中將不會(huì)涉及。本文主要介紹viterbi算法及其譯碼流程以及在C54XDSP上的實(shí)現(xiàn)。綜合以上,不難發(fā)現(xiàn)viterbi譯碼器設(shè)置的主要模塊是:加比選模塊、路徑度量存儲(chǔ)管理模塊、幸存路徑存儲(chǔ)管理模塊、路徑回溯模塊上,在下面的viterbi譯碼過程中重點(diǎn)考慮。

4基于DSP的viterbi譯碼技術(shù)目前,卷積碼編碼和Viterbi算法的實(shí)現(xiàn)主要由兩種方法:數(shù)字信號(hào)處理器(DSP)實(shí)現(xiàn)和可編程專用集成電路(ASIC)實(shí)現(xiàn)。ASIC屬于硬件實(shí)現(xiàn),可以完成非常高速的Viterbi譯碼器的設(shè)計(jì)。DSP實(shí)現(xiàn)屬于軟件實(shí)現(xiàn),其運(yùn)算和存儲(chǔ)是按指令周期順序執(zhí)行,速度較專用集成電路要慢,但靈活性大,使用廣泛。4.1DSP芯片TMS320VC5409簡(jiǎn)介MS320VC5409是TI公司生產(chǎn)的低功耗、高性能的定點(diǎn)可編程DSP芯片,其主要應(yīng)用是無線通信系統(tǒng)等。其主要特點(diǎn)包括[14][16]:(1)運(yùn)算速度快。指令周期為lOns,運(yùn)算能力為100MIPS。(2)優(yōu)化的CPU結(jié)構(gòu)。采用改進(jìn)的哈佛結(jié)構(gòu),1條程序總線(PB),3條數(shù)據(jù)總線(CB、DB、EB),4條地址總線(PAB、CAB、DAB、EAB)和2個(gè)地址產(chǎn)生器;40位的算術(shù)邏輯單元(ALU)以及一個(gè)40位的桶形移位器和兩個(gè)40位的累加器(A、B),支持32位或雙16位的運(yùn)算;17位x17位的硬件乘法器與一個(gè)40位專用加法器相連,構(gòu)成乘法器/加法器單元,可以在一個(gè)流水線周期內(nèi)完成一次乘法和累加(MAC)運(yù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è)寫操作。此外,比較、選擇和存儲(chǔ)等單元能夠加速維特比譯碼的執(zhí)行。先進(jìn)的DSP結(jié)構(gòu)可高效地實(shí)現(xiàn)無線通信系統(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公司開發(fā)的新一代科學(xué)計(jì)算軟件;MATLAB是英文MATrixLABoratory(矩陣實(shí)驗(yàn)室);MATLAB是一個(gè)專門為科學(xué)計(jì)算而設(shè)計(jì)的可視化計(jì)算器。利用這個(gè)計(jì)算器中的簡(jiǎn)單指令,能很快速完成其他高級(jí)語(yǔ)言只有通過復(fù)雜編程才能實(shí)現(xiàn)的數(shù)值計(jì)算和圖形顯示。4.2.1matlab簡(jiǎn)介MATLAB[13]是一種既可交互使用又能解釋執(zhí)行的計(jì)算機(jī)編程語(yǔ)言。所謂交互使用,是指用戶輸入一條語(yǔ)句后立即就能得到該語(yǔ)句的計(jì)算結(jié)果,而無需像C語(yǔ)言那樣首先編寫源程序,然后對(duì)之進(jìn)行編譯、連接,才能最終形成可執(zhí)行文件。MATLAB語(yǔ)言可以用直觀的數(shù)學(xué)表達(dá)式來描述問題,從而避開繁瑣的底層編程,并把有限的時(shí)間和精力更多的花在要解決的問題上,因此可大大提高工作效率。MATLAB的編程語(yǔ)法與交互使用是一致的,因此交互使用時(shí)輸入的代碼能夠很方便地轉(zhuǎn)化為可重用的函數(shù)或過程。MATLAB是解決工程技術(shù)問題的計(jì)算平臺(tái)。利用它能夠輕松完成復(fù)雜的數(shù)值計(jì)算、數(shù)據(jù)分析、符號(hào)計(jì)算和數(shù)據(jù)可視化等任務(wù)。其中,符號(hào)計(jì)算能夠得到符號(hào)表達(dá)式的符號(hào)解和任意精度數(shù)值解。相對(duì)于數(shù)值計(jì)算,符號(hào)計(jì)算不會(huì)帶來任何機(jī)器誤差,但是需要耗費(fèi)更多的計(jì)算機(jī)內(nèi)存和時(shí)間。另外,利用MATLAB軟件包中的Simulink等組件,能夠?qū)Ω鞣N動(dòng)態(tài)系統(tǒng)進(jìn)行仿真分析,并且能為多種實(shí)時(shí)目標(biāo)生成可執(zhí)行代碼,這顯然有利于縮短軟硬件系統(tǒng)的研發(fā)周期。MATLAB軟件是由主包和各種工具箱構(gòu)成。其中,主包基本上是一個(gè)用C/C++等語(yǔ)言編寫成的函數(shù)庫(kù)。該函數(shù)庫(kù)提供矩陣(或數(shù)組)的各種算法以及建立在此基礎(chǔ)上的各種應(yīng)用函數(shù)和一些相關(guān)的用戶友好操作界面。而工具箱則從深度和廣度上大大擴(kuò)展了MATLAB主包的功能和應(yīng)用領(lǐng)域。從使用角度看,這些工具箱可分為功能性工具箱和學(xué)科性工具箱兩大類。前一類工具箱通用于各個(gè)學(xué)科領(lǐng)域,如“符號(hào)工具箱”;后一類工具箱則與專門學(xué)科密切相關(guān),如“信號(hào)處理工具箱”、“神經(jīng)網(wǎng)絡(luò)工具箱”、“金融分析工具箱”等。此外,市場(chǎng)上還有大量不斷涌現(xiàn)的基于MATLAB的第三方軟硬件產(chǎn)品。本次viterbi譯碼的程序主要將用到關(guān)于卷積的庫(kù)函數(shù),這樣大大減少了程序代碼的書寫以及資源的浪費(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為輸入,codeout為輸出。我們?cè)谶M(jìn)行viterbi譯碼的時(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位的以為數(shù)組。但在之后的譯碼時(shí),輸出codeout與輸入m1驚人的相識(shí),這說明viterbi譯碼是一種糾錯(cuò)能力很強(qiáng)的譯碼方法。從上述的幾段主要代碼我們可以看出matlab在軟件仿真上的巨大優(yōu)勢(shì),直接調(diào)用函數(shù)庫(kù)就可以輕松完成編碼、譯碼的函數(shù)編寫。4.3維特比譯碼算法的處理過程維特比譯碼算法的處理過程如圖4.2所示。輸入序列輸入序列度量值更新回溯輸出序列圖4.2維特比譯碼算法的處理過程首先輸入的序列是編碼后的序列,得到這些序列可以是軟判決輸入或硬判決輸入。度量值更新可以獲得整個(gè)編碼的路徑選擇信息,然后通過回溯即可得到恢復(fù)編碼過程,得到原信息序列。接下來詳細(xì)分析每個(gè)步驟的處理過程。4.3.1分支度量值的更新度量值的更新部分包括:(1)計(jì)算每一個(gè)可能路徑的每一步的距離值;(2)對(duì)每個(gè)新狀態(tài),將分支度量值與舊狀態(tài)的度量值相加,得到新狀態(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ài)的分支度量值。在這之前首先計(jì)算出局部碼距,根據(jù)輸入數(shù)據(jù)不同的形式可以采用不同的方法。當(dāng)輸入數(shù)據(jù)是單比特時(shí),可以采用硬判決輸入,分支度量值可用漢明距表示;當(dāng)輸入數(shù)據(jù)是多個(gè)比特時(shí)采用軟判決輸入,分支度量值用歐式距離表示。在相同的誤碼率情況下,采用軟判決輸入信噪比可以提高2.2dB(4比特?cái)?shù)據(jù)),這是因?yàn)榻邮盏降臄?shù)據(jù)包含數(shù)據(jù)可靠性的信息。表4.1列出了三個(gè)比特量化時(shí)的數(shù)值及有效位[13]。這些數(shù)值來自維特比方程式,可以減少符號(hào)間的沖突,通過比較接收數(shù)據(jù)與期望數(shù)據(jù)的不同度可以獲得接收數(shù)據(jù)的可信度。程序中采用軟判決,對(duì)于編碼速率為R=1/C的卷積碼來說,其歐式距離為(4.1)其中,代表序列的第位,表示接收序列,為網(wǎng)格圖上每個(gè)路徑狀態(tài)的期望輸入值,是路徑指示值,為編碼速率的倒數(shù)[9]。表4.1軟判決數(shù)值數(shù)值意義011最可信的正值010001000最不可信的正值沒有值111最不可信的負(fù)值110101100最可信的負(fù)值將式4.1展開得(4.2)對(duì)于所有的分支來說,和都是一樣的。在進(jìn)行路徑度量值比較時(shí),可以不加以考慮。這樣就有簡(jiǎn)化的分支度量值(4.3)省去式4.3中前面的負(fù)號(hào),則在分支度量值比較時(shí)應(yīng)取大值。對(duì)于編碼率為1/2的卷積碼,其分支度量值為(4.4)其中,與均用雙極性表示,即0用+1表示,而1用-1表示。在DSP編程中,分別用TO和T1寄存器來表示,即,。我們稱此過程為獲得輸入符號(hào)到各個(gè)信號(hào)點(diǎn)之間的局部碼距。

4.3.1.2蝶形運(yùn)算由大多數(shù)卷積編碼器的格狀圖可以看出卷積碼編譯碼是由若干個(gè)蝶形結(jié)構(gòu)組成的,這樣就可以采用類似于快速Fourier變換(FFT)的蝶形運(yùn)算來簡(jiǎn)化運(yùn)算過程。在(133,171)卷積碼譯碼中,共有64個(gè)狀態(tài),這樣就會(huì)有32個(gè)蝶形。在描述編碼器狀態(tài)時(shí),我們用編碼器寄存器的數(shù)值來表示,如、等。(133,171)卷積碼譯碼的基本蝶形如圖4.3所示。圖4.3(133,171)卷積碼基本蝶形圖在信道均衡和解碼中經(jīng)常會(huì)使用到Viterbi算法,C54x為此提供了專門的硬件和指令。根據(jù)輸入信號(hào)確定分支似然概率增加量D1/D2,放在T寄存器中,TRN存儲(chǔ)信號(hào)譯碼輸出路徑信息。所以只需在進(jìn)行加比選(ACS)運(yùn)算時(shí),更改T寄存器中的數(shù)值就可以順利完成每次32次的蝶形運(yùn)算。(1)狀態(tài)的變更:在(133,171)卷積碼編碼中,總共有個(gè)狀態(tài)。我們可以通過MATLAB軟件編程仿真來獲得編碼過程。%encode217.mG0=[1111001];G1=[1011011];input=[0000000];output0=mod(conv(input,G0),2);outputl=mod(conv(input,G1),2);順序改變input[]中的數(shù)值即得到所要獲得的狀態(tài)更改與編碼輸出過程。根據(jù)圖4.3中蝶形的有關(guān)性質(zhì),我們只需知道前32個(gè)狀態(tài)的編碼過程,所以我們獲得寄存器狀態(tài)為S0至S31時(shí)的編碼過程,這在后面的確定蝶形運(yùn)算結(jié)構(gòu)是必須的。更改INPUT數(shù)組中的數(shù)值,運(yùn)行MATLAB卷積碼程序,即得到表4.2中的編碼過程[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ǔ)的順序:在應(yīng)用蝶形來簡(jiǎn)化運(yùn)算時(shí),蝶形的左側(cè)并不是順序的,而蝶形的右側(cè)卻是順序的。圖4.4數(shù)據(jù)存儲(chǔ)順序示意由圖4.4可知,只要將蝶形右側(cè)的下面數(shù)據(jù)往后加32個(gè)地址空間存儲(chǔ)即可,這樣原有度量值和新的度量值的順序是一樣的,可以周期的重復(fù)運(yùn)算。每接收到2個(gè)的數(shù)據(jù)就通過上述的32個(gè)蝶形運(yùn)算,將選擇的路徑信息存儲(chǔ)起來。4.3.2回溯在進(jìn)行蝶形運(yùn)算后整個(gè)路徑選擇的信息就通過TRN存儲(chǔ)下來了,通過讀取這些信息,就可以選出最佳路徑。TRN中數(shù)據(jù)各位代表含義如表4.3所示[9]。表4.3TRN各位代表含義各個(gè)比特的順序15141312111098TRN字002k-212k-2+122k-2+232k-2+3182k-2+892k-2+9A2k-2+AB2k-2+B2102k-2+10112k-2+11122k-2+12132k-2+13……2k-2-12k-2-82k-2-82k-2-72k-2-72k-2-62k-2-62k-2-52k-2-5各個(gè)比特的順序76543210TRN字042k-2+452k-2+562k-2+672k-2+71C2k-2D2k-2+DE2k-2+EF2k-2+F2142k-2152k-2+15162k-2+16172k-2+17……2k-2-12k-2-42k-2-42k-2-32k-2-32k-2-22k-2-22k-2-12k-2-1首先,在編碼的時(shí)候,每一幀數(shù)據(jù)的最后N-1位為零,那么編碼結(jié)束之后肯定是狀態(tài)S0。這樣在回溯的時(shí)候,可以肯定的將初始狀態(tài)定為零。在進(jìn)行(133,171)譯碼時(shí),總共64個(gè)狀態(tài),每個(gè)存儲(chǔ)器的長(zhǎng)度為16比特,所以需要四個(gè)字來存儲(chǔ)路徑信息,具體的,對(duì)于K=7來說各位代表的含義如表4.4所示[10]。

表4.4K=7時(shí)TRN各位代表含義各個(gè)比特的順序15141312111098TRN字003213323433518409411042114321648174918501951……2456255726582759各個(gè)比特的順序76543210TRN字04365376387391124413451446154722052215322542355……2860296130623163確定各位含義之后,還需要在所得的數(shù)據(jù)中提取有用的信息。約束長(zhǎng)度為7的編碼器,有64個(gè)狀態(tài),可用N-1位表示。如圖4.5所示,最高有效位N-2位和最低3個(gè)有效位一起表示了狀態(tài)的“位號(hào)”,其余的位表示“字號(hào)”。我們可以通過下面的公式計(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ù)卷積碼編碼的原理編寫卷積碼編碼程序。其中,函數(shù)的參數(shù)為信息序列首地址、編碼輸出序列存儲(chǔ)首地址和一幀信息序列的字?jǐn)?shù)。編碼的流程圖如圖5.1所示。開始開始異或操作得G0異或操作得G1載入數(shù)據(jù)一幀結(jié)束返回NY圖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+;保存G1

5.2維特比譯碼程序設(shè)計(jì)根據(jù)卷積碼的原理編寫卷積碼的維特比譯碼程序,譯碼的流程圖如圖5.2所示。圖5.2維特比譯碼函數(shù)流程圖在度量值更新過程,首先要獲得局部碼距,這一部分的程序如下: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è)編碼的路徑選擇信息,采用蝶形算法來簡(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)的編碼過程選擇蝶形結(jié)構(gòu),完成度量值的更新,蝶形運(yùn)算程序如下(以前四個(gè)蝶形為例):LD*sp(SUM),TBFLY_DIRLD*sp(DIFF),TBFLY_REVLD*sp(SUM),TBFLY_DIRLD*sp(DIFF),TBFLY_REV通過度量值的更新過程得到卷積碼的路徑選擇信息,通過回溯讀取這些信息來獲得原始的信息序列。在卷積碼的編碼時(shí),編碼的一幀序列的最后N-1位為零,這樣編碼結(jié)束的最終狀態(tài)為S0,所以在回溯的時(shí)候,將初狀態(tài)定為S0。接下來就可以通過當(dāng)前狀態(tài)和存儲(chǔ)下來的路徑選擇信息得到下一個(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ù)的編寫之后,需要測(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)回溯深度為64時(shí)為最佳回溯深度,所以選擇一幀信息為64位,外加6比特0結(jié)尾,共70比特。當(dāng)譯碼恢復(fù)原信息序列時(shí)可以直接譯出64比特(4個(gè)字)的信息序列即可。調(diào)用卷積碼的維特比譯碼函數(shù),得到原始的信息序列為0xACDC,0x2345,0xBABE,0x789A。這與輸入的測(cè)試序列完全相同,說明整個(gè)函數(shù)的功能完全正確。結(jié)論運(yùn)用軟件編程實(shí)現(xiàn)viterbi譯碼仿真,使得viterbi譯碼的實(shí)現(xiàn)更加方便靈活適用面更廣泛。而本文所論述的關(guān)于Viterbi譯碼器實(shí)現(xiàn)的算法、譯碼器回溯深度的確定以及譯碼器性能的測(cè)試等方法具有普遍意義,可以廣泛應(yīng)用于不同的Viterbi譯碼器設(shè)計(jì)之中。在本課題研究中,做了以下幾方面工作:一、深入分析了卷積碼編碼的基本原理和數(shù)字信號(hào)處理(DSP)的發(fā)展,對(duì)卷積編碼、Viterbi譯碼作了詳細(xì)的分析。二、利用MATLAB仿真軟件,仿真了信息通過卷積碼編碼、維特比譯過程,對(duì)MATLAB軟件有了一定的了解,并觀察viterbi仿真結(jié)果。三、基于TI公司的可編程定點(diǎn)DSP芯片TMS320C54X,在CCS環(huán)境下進(jìn)行了軟件仿真,實(shí)現(xiàn)了輸入測(cè)試序列的卷積碼編碼,維特比譯碼恢復(fù)過程,整個(gè)過程完全符合理論分析情況。由于還未得到實(shí)際應(yīng)用,有可能存在著未知的不足,在實(shí)際應(yīng)用中還需要與其他的模塊構(gòu)成系統(tǒng),考慮的內(nèi)容會(huì)變得復(fù)雜,還有待于今后在實(shí)踐中發(fā)現(xiàn)和完善。

致謝本科生階段的學(xué)習(xí)即將結(jié)束,在臨近畢業(yè)之際,深深地感到我所取得的每一點(diǎn)收獲,都與老師、同學(xué)和家人的支持和幫助是分不開的,在此向他們表示誠(chéng)摯的謝意!我衷心感謝我的指導(dǎo)老師芮義斌教授,從論文選題到程序仿真,我都得到了芮老師的精心指導(dǎo)和熱情幫助,他對(duì)我的嚴(yán)格要求,悉心教導(dǎo)使我受益匪淺。芮老師廣博而扎實(shí)的學(xué)識(shí),敏銳的洞察力、嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,實(shí)事求是的研究作風(fēng),對(duì)事物重心的犀利的判斷力給我留下了深刻的印象,使我從中受益匪淺。同時(shí)感謝胡琳娜老師,身為我們的聯(lián)系人老師,她教導(dǎo)我們?cè)趺礃诱_地書寫論文。在前期材料和中期檢查這段時(shí)間給予我們幫助和知道,她的悉心知道使我受益匪淺。感謝我的同窗學(xué)友,在課題研究的理論探討過程中和共同的科研工作中,他們給予了我大量的鼓勵(lì)和支持,與他們一起工作和學(xué)習(xí)是我的榮幸。在論文完成之際,謹(jǐn)向在我本科學(xué)習(xí)階段給予我?guī)椭?、支持、鼓?lì)的所有老師、同學(xué)和朋友致以深深地謝意!感謝紫金學(xué)院為我們提供了優(yōu)良的學(xué)習(xí)環(huán)境,讓我們得以順利的完成畢業(yè)設(shè)計(jì)。

參考文獻(xiàn)[1]張立軍,等譯.數(shù)字通信(第四版)[M].北京:電子工業(yè)出版社,2003.272-389.[2]張博.卷積碼的譯碼研究及DSP實(shí)現(xiàn)[D].天津:天津大學(xué),2008.[3]王忠勇,陳恩慶,等.DSP原理與應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,2010.1-2.[4]鄧思豪,曾春年.C54XDSP的HPI與PC機(jī)[J].系統(tǒng)工程與電子技術(shù),2004,11(2):66-68.[5]王建新,于貴智.Viterbi譯碼器回溯算法實(shí)現(xiàn)研究[J].電子與信息學(xué)報(bào),2007,29(2):278-282.[6]TRUONGTK,ShihMING-TANG,REEDIS,andetc.AVLSIdesignforatrace-backViterbidecoder[J].IEEETransactionsonCommunications,1992,40(3):616-624.[7]丁志中,蔣建國(guó),夏娜.卷積碼編碼原理的解釋[J].電氣電子教學(xué)學(xué)報(bào),2007,29(4):21-22.[8]袁金仕.Viterbi算法:分析與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2004.[9]何翠俠.信道糾錯(cuò)編碼的理論研究及其DSP實(shí)現(xiàn)[D].南京:南京理工大學(xué),2004.[10]徐英杰.卷積編碼及基于DSP的Viterbi譯碼器設(shè)計(jì)[D].北京:北方工業(yè)大學(xué),2005.[11]李鵬輝.“銀河飛騰-DSP”Viterbi譯碼協(xié)處理器(VCP)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2006.[12]趙冰.卷積編碼及基于DSP的Viterbi譯碼器設(shè)計(jì)[J].信息與控制,2002,31(5):473-476.[13]袁東風(fēng),李作為,張鋒.Punctured(2,1,N)系列卷積碼的編碼及其Viterbi譯碼的軟件實(shí)現(xiàn)[J].山東大學(xué)學(xué)報(bào):自然科學(xué)版,2002,37(1):48-53.[14]林耿趨,余麗瓤.TMS320C54X在擴(kuò)頻通信系統(tǒng)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2001,7(2):57-58.[15]美國(guó)德州儀器公司著,梁曉雯,裴小平,李玉虎編譯.TMS320C54X系列DSP的CPU與外設(shè)[M].北京:清華大學(xué)出版社,2006.9-12.[16]劉益成編著.TMS320C54X系列DSP應(yīng)用程序設(shè)計(jì)與開發(fā)[M].北京:北京航空航天大學(xué)出版社,2002.5-8.本科畢業(yè)設(shè)計(jì)說明書(論文)第52頁(yè)共52頁(yè)ExcelXP的八則快速輸入技巧如果我們?cè)谟肊xcelXP處理龐大的數(shù)據(jù)信息時(shí),不注意講究技巧和方法的話,很可能會(huì)花費(fèi)很大的精力。因此如何巧用ExcelXP,來快速輸入信息就成為各個(gè)ExcelXP用戶非常關(guān)心的話題,筆者向大家介紹幾則這方面的小技巧。1、快速輸入大量含小數(shù)點(diǎn)的數(shù)字如果我們需要在ExcelXP工作表中輸入大量的帶有小數(shù)位的數(shù)字時(shí),按照普通的輸入方法,我們可能按照數(shù)字原樣大小直接輸入,例如現(xiàn)在要在單元格中輸入0.05這個(gè)數(shù)字時(shí),我們會(huì)把“0.05”原樣輸入到表格中。不過如果需要輸入若干個(gè)帶有小數(shù)點(diǎn)的數(shù)字時(shí),我們?cè)侔凑丈厦娴姆椒ㄝ斎氲脑?,每次輸入?shù)字時(shí)都需要重復(fù)輸入小數(shù)點(diǎn),這樣工作量會(huì)變大,輸入效率會(huì)降低。其實(shí),我們可以使用ExcelXP中的小數(shù)點(diǎn)自動(dòng)定位功能,讓所有數(shù)字的小數(shù)點(diǎn)自動(dòng)定位,從而快速提高輸入速度。在使用小數(shù)點(diǎn)自動(dòng)定位功能時(shí),我們可以先在ExcelXP的編輯界面中,用鼠標(biāo)依次單擊“工具”/“選項(xiàng)”/“編輯”標(biāo)簽,在彈出的對(duì)話框中選中“自動(dòng)設(shè)置小數(shù)點(diǎn)”復(fù)選框,然后在“位數(shù)”微調(diào)編輯框中鍵入需要顯示在小數(shù)點(diǎn)右面的位數(shù)就可以了。以后我們?cè)佥斎霂в行?shù)點(diǎn)的數(shù)字時(shí),直接輸入數(shù)字,而小數(shù)點(diǎn)將在回車鍵后自動(dòng)進(jìn)行定位。例如,我們要在某單元格中鍵入0.06的話,可以在上面的設(shè)置中,讓“位數(shù)”選項(xiàng)為2,然后直接在指定單元格中輸入6,回車以后,該單元格的數(shù)字自動(dòng)變?yōu)椤?.06”,怎么樣簡(jiǎn)單吧?2、快速錄入文本文件中的內(nèi)容現(xiàn)在您手邊假如有一些以純文本格式儲(chǔ)存的文件,如果此時(shí)您需要將這些數(shù)據(jù)制作成ExcelXP的工作表,那該怎么辦呢?重新輸入一遍,大概只有頭腦有毛病的人才會(huì)這樣做;將菜單上的數(shù)據(jù)一個(gè)個(gè)復(fù)制/粘貼到工作表中,也需花很多時(shí)間。沒關(guān)系!您只要在ExcelXP中巧妙使用其中的文本文件導(dǎo)入功能,就可以大大減輕需要重新輸入或者需要不斷復(fù)制、粘貼的巨大工作量了。使用該功能時(shí),您只要在ExcelXP編輯區(qū)中,依次用鼠標(biāo)單擊菜單欄中的“數(shù)據(jù)/獲取外部數(shù)據(jù)/導(dǎo)入文本文件”命令,然后在導(dǎo)入文本會(huì)話窗口選擇要導(dǎo)入的文本文件,再按下“導(dǎo)入”鈕以后,程序會(huì)彈出一個(gè)文本導(dǎo)入向?qū)?duì)話框,您只要按照向?qū)У奶崾具M(jìn)行操作,就可以把以文本格式的數(shù)據(jù)轉(zhuǎn)換成工作表的格式了。3、快速輸入大量相同數(shù)據(jù)如果你希望在不同的單元格中輸入大量相同的數(shù)據(jù)信息,那么你不必逐個(gè)單元格一個(gè)一個(gè)地輸入,那樣需要花費(fèi)好長(zhǎng)時(shí)間,而且還比較容易出錯(cuò)。你可以通過下面的操作方法在多個(gè)相鄰或不相鄰的單元格中快速填充同一個(gè)數(shù)據(jù),具體方法為:首先同時(shí)選中需要填充數(shù)據(jù)的單元格。若某些單元格不相鄰,可在按住Ctrl鍵的同時(shí),點(diǎn)擊鼠標(biāo)左鍵,逐個(gè)選中;其次輸入要填充的某個(gè)數(shù)據(jù)。按住Ctrl鍵的同時(shí),按回車鍵,則剛才選中的所有單元格同時(shí)填入該數(shù)據(jù)。4、快速進(jìn)行中英文輸入法切換一張工作表常常會(huì)既包含有數(shù)字信息,又包含有文字信息,要錄入這樣一種工作表就需要我們不斷地在中英文之間反復(fù)切換輸入法,非常麻煩,為了方便操作,我們可以用以下方法實(shí)現(xiàn)自動(dòng)切換:首先用鼠標(biāo)選中需要輸入中文的單元格區(qū)域,然后在輸入法菜單中選擇一個(gè)合適的中文輸入法;接著打開“有效數(shù)據(jù)”對(duì)話框,選中“IME模式”標(biāo)簽,在“模式”框中選擇打開,單擊“確定”按鈕;然后再選中輸入數(shù)字的單元格區(qū)域,在“有效數(shù)據(jù)”對(duì)話框中,單擊“IME模式”選項(xiàng)卡,在“模式”框中選擇關(guān)閉(英文模式);最后單擊“確定”按鈕,這樣用鼠標(biāo)分別在剛才設(shè)定的兩列中選中單元格,五筆和英文輸入方式就可以相互切換了。5、快速刪除工作表中空行刪除ExcelXP工作表中的空行,一般的方法是需要將空行都找出來,然后逐行刪除,但這樣做操作量非常大,很不方便。那么如何才能減輕刪除工作表中空行的工作量呢?您可以使用下面的操作方法來進(jìn)行刪除:首先打開要?jiǎng)h除空行的工作表,在打開的工作表中用鼠標(biāo)單擊菜單欄中的“插入”菜單項(xiàng),并從下拉菜單中選擇“列”,從而插入一新的列X,在X列中順序填入整數(shù);然后根據(jù)其他任何一列將表中的行排序,使所有空行都集中到表的底部。刪去所有空行中X列的數(shù)據(jù),以X列重新排序,然后刪去X列。按照這樣的刪除方法,無論工作表中包含多少空行,您就可以很快地刪除了。6、快速對(duì)不同單元格中字號(hào)進(jìn)行調(diào)整在使用ExcelXP編輯文件時(shí),常常需要將某一列的寬度固定,但由于該列各單元格中的字符數(shù)目不等,致使有的單元格中的內(nèi)容不能完全顯示在屏幕上,為了讓這些單元格中的數(shù)據(jù)都顯示在屏幕上,就不得不對(duì)這些單元格重新定義較小的字號(hào)。如果依次對(duì)這些單元格中的字號(hào)調(diào)整的話,工作量將會(huì)變得很大。其實(shí),您可以采用下面的方法來減輕字號(hào)調(diào)整的工作量:首先新建或打開一個(gè)工作簿,并選中需要ExcelXP根據(jù)單元格的寬度調(diào)整字號(hào)的單元格區(qū)域;其次單擊用鼠標(biāo)依次單擊菜單欄中的“格式”/“單元格”/“對(duì)齊”標(biāo)簽,在“文本控制”下選中“縮小字體填充”復(fù)選框,并單擊“確定”按鈕;此后,當(dāng)你在這些單元格中輸入數(shù)據(jù)時(shí),如果輸入的數(shù)據(jù)長(zhǎng)度超過了單元格的寬度,ExcelXP能夠自動(dòng)縮小字符的大小把數(shù)據(jù)調(diào)整到與列寬一致,以使數(shù)據(jù)全部顯示在單元格中。如果你對(duì)這些單元格的列寬進(jìn)行了更改,則字符可自動(dòng)增大或縮小字號(hào),以適應(yīng)新的單元格列寬,但是對(duì)這些單元格原設(shè)置的字體字號(hào)大小則保持不變。7、快速輸入多個(gè)重復(fù)數(shù)據(jù)在使用ExcelXP工作表的過程中,我們經(jīng)常要輸入大量重復(fù)的數(shù)據(jù),如果依次輸入,無疑工作量是巨大的。現(xiàn)在我們可以借助ExcelXP的“宏”功能,來記錄首次輸入需要重復(fù)輸入的數(shù)據(jù)的命令和過程,然后將這些命令和過程賦值到一個(gè)組合鍵或工具欄的按鈕上,當(dāng)按下組合鍵時(shí),計(jì)算機(jī)就會(huì)重復(fù)所記錄的操作。使用宏功能時(shí),我們可以按照以下步驟進(jìn)行操作:首先打開工作表,在工作表中選中要進(jìn)行操作的單元格;接著再用鼠標(biāo)單擊菜單欄中的“工具”菜單項(xiàng),并從彈出的下拉菜單中選擇“宏”子菜單項(xiàng),并從隨后彈出的下級(jí)菜單中選擇“錄制新宏”命令;設(shè)定好宏后,我們就可以對(duì)指定的單元格,進(jìn)行各種操作,程序?qū)⒆詣?dòng)對(duì)所進(jìn)行的各方面操作記錄復(fù)制。8、快速處理多個(gè)工作表有時(shí)我們需要在ExcelXP中打開多個(gè)工作表來進(jìn)行編輯,但無論打開多少工作表,在某一時(shí)刻我們只能對(duì)一個(gè)工作表進(jìn)行編輯,編輯好了以后再依次編輯下一個(gè)工作表,如果真是這樣操作的話,我們倒沒有這個(gè)必要同時(shí)打開多個(gè)工作表了,因?yàn)槲覀兺瑫r(shí)打開多個(gè)工作表的目的就是要減輕處理多個(gè)工作表的工作量的,那么我們?cè)撊绾螌?shí)現(xiàn)這樣的操作呢?您可采用以下方法:首先按住“Shift"鍵或“Ctrl"鍵并配以鼠標(biāo)操作,在工作簿底部選擇多個(gè)彼此相鄰或不相鄰的工作表標(biāo)簽,然后就可以對(duì)其實(shí)行多方面的批量處理;接著在選中的工作表標(biāo)簽上按右鍵彈出快捷菜單,進(jìn)行插入和刪除多個(gè)工作表的操作;然后在“文件”菜單中選擇“頁(yè)面設(shè)置……”,將選中的多個(gè)工作表設(shè)成相同的頁(yè)面模式;再通過“編輯”菜單中的有關(guān)選項(xiàng),在多個(gè)工作表范圍內(nèi)進(jìn)行查找、替換、定位操作;通過“格式”菜單中的有關(guān)選項(xiàng),將選中的多個(gè)工作表的行、列、單元格設(shè)成相同的樣式以及進(jìn)行一次性全部隱藏操作;接著在“工具”菜單中選擇“選項(xiàng)……”,在彈出的菜單中選擇“視窗”和“編輯”按鈕,將選中的工作表設(shè)成相同的視窗樣式和單元格編輯屬性;最后選中上述工作表集合中任何一個(gè)工作表,并在其上完成我們所需要的表格,則其它工作表在相同的位置也同時(shí)生成了格式完全相同的表格。高效辦公Excel排序方法"集中營(yíng)"排序是數(shù)據(jù)處理中的經(jīng)常性工作,Excel排序有序數(shù)計(jì)算(類似成績(jī)統(tǒng)計(jì)中的名次)和數(shù)據(jù)重排兩類。本文以幾個(gè)車間的產(chǎn)值和名稱為例,介紹Excel2000/XP的數(shù)據(jù)排序方法。一、數(shù)值排序1.RANK函數(shù)RANK函數(shù)是Excel計(jì)算序數(shù)的主要工具,它的語(yǔ)法為:RANK(number,ref,order),其中number為參與計(jì)算的數(shù)字或含有數(shù)字的單元格,ref是對(duì)參與計(jì)算的數(shù)字單元格區(qū)域的絕對(duì)引用,order是用來說明排序方式的數(shù)字(如果order為零或省略,則以降序方式給出結(jié)果,反之按升序方式)。例如圖1中E2、E3、E4單元格存放一季度的總產(chǎn)值,計(jì)算各車間產(chǎn)值排名的方法是:在F2單元格內(nèi)輸入公式“=RANK(E2,$E$2:$E$4)”,敲回車即可計(jì)算出鑄造車間的產(chǎn)值排名是2。再將F2中的公式復(fù)制到剪貼板,選中F3、F4單元格按Ctrl+V,就能計(jì)算出其余兩個(gè)車間的產(chǎn)值排名為3和1。如果B1單元格中輸入的公式為“=RANK(E2,$E$2:$E$4,1)”,則計(jì)算出的序數(shù)按升序方式排列,即2、1和3。需要注意的是:相同數(shù)值用RANK函數(shù)計(jì)算得到的序數(shù)(名次)相同,但會(huì)導(dǎo)致后續(xù)數(shù)字的序數(shù)空缺。假如上例中F2單元格存放的數(shù)值與F3相同,則按本法計(jì)算出的排名分別是3、3和1(降序時(shí))。2.COUNTIF函數(shù)COUNTIF函數(shù)可以統(tǒng)計(jì)某一區(qū)域中符合條件的單元格數(shù)目,它的語(yǔ)法為COUNTIF(range,criteria)。其中range為參與統(tǒng)計(jì)的單元格區(qū)域,criteria是以數(shù)字、表達(dá)式或文本形式定義的條件。其中數(shù)字可以直接寫入,表達(dá)式和文本必須加引號(hào)。仍以圖1為例,F(xiàn)2單元格內(nèi)輸入的公式為“=COUNTIF($E$2:$E$4,">"&E2)+1”。計(jì)算各車間產(chǎn)值排名的方法同上,結(jié)果也完全相同,2、1和3。此公式的計(jì)算過程是這樣的:首先根據(jù)E2單元格內(nèi)的數(shù)值,在連接符&的作用下產(chǎn)生一個(gè)邏輯表達(dá)式,即“>176.7”、“>167.3”等。COUNTIF函數(shù)計(jì)算出引用區(qū)域內(nèi)符合條件的單元格數(shù)量,該結(jié)果加一即可得到該數(shù)值的名次。很顯然,利用上述方法得到的是降序排列的名次,對(duì)重復(fù)數(shù)據(jù)計(jì)算得到的結(jié)果與RANK函數(shù)相同。3.IF函數(shù)Excel自身帶有排序功能,可使數(shù)據(jù)以降序或升序方式重新排列。如果將它與IF函數(shù)結(jié)合,可以計(jì)算出沒有空缺的排名。以圖1中E2、E3、E4單元格的產(chǎn)值排序?yàn)槔?,具體做法是:選中E2單元格,根據(jù)排序需要,單擊Excel工具欄中的“降序排序”或“升序排序”按鈕,即可使工作表中的所有數(shù)據(jù)按要求重新排列。假如數(shù)據(jù)是按產(chǎn)值由大到?。ń敌颍┡帕械模窒胭x予每個(gè)車間從1到n(n為自然數(shù))的排名。可以在G2單元格中輸入1,然后在G3單元格中輸入公式“=IF(E3=E2,G3,G3+1)”,只要將公式復(fù)制到G4等單元格,就可以計(jì)算出其他車間的產(chǎn)值排名。二、文本排序選舉等場(chǎng)合需要按姓氏筆劃為文本排序,Excel提供了比較好的解決辦法。如果您要將圖1數(shù)據(jù)表按車間名稱的筆劃排序,可以使用以下方法:選中排序關(guān)鍵字所在列(或行)的首個(gè)單元格(如圖1中的A1),單擊Excel“數(shù)據(jù)”菜單下的“排序”命令,再單擊其中的“選項(xiàng)”按鈕。選中“排序選項(xiàng)”對(duì)話框“方法”下的“筆畫排序”,再根據(jù)數(shù)據(jù)排列方向選擇“按行排序”或“按列排序”,“確定”后回到“排序”對(duì)話框(圖2)。如果您的數(shù)據(jù)帶有標(biāo)題行(如圖1中的“單位”之類),則應(yīng)選中“有標(biāo)題行”(反之不選),然后打開“主要關(guān)鍵字”下拉列表,選擇其中的“單位”,選中排序方

溫馨提示

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

評(píng)論

0/150

提交評(píng)論