高性能維特比在衛(wèi)星導(dǎo)航接收機(jī)中FPGA實(shí)現(xiàn)
2.2 加比選蝶形單元
加比選(ACS)單元是完成幸存路徑的延伸和判決向量的生成,計(jì)算過(guò)程包括度量值的累加、比較、選擇路徑操作。對(duì)(2,1,3)卷積碼而言,共4個(gè)狀態(tài),組成2個(gè)蝶形運(yùn)算單元;而(2,1,7)卷積碼則64個(gè)狀態(tài),組成32個(gè)蝶形單元。在K=7的卷積碼中,有64個(gè)狀態(tài)的路徑,所以根據(jù)待譯碼的長(zhǎng)度,適當(dāng)增加累加值的位寬,防止度量值溢出。
2.3 幸存路徑存儲(chǔ)單元
幸存路徑存儲(chǔ)是用來(lái)存儲(chǔ)每次蝶形運(yùn)算完成單元后所選擇的路徑,存儲(chǔ)單元的大小為譯碼深度乘以狀態(tài)個(gè)數(shù)。對(duì)每一個(gè)加比選過(guò)程的存儲(chǔ),實(shí)際就是對(duì)幸存路徑的存儲(chǔ)。
2.4 回溯單元
由VA算法可知,在網(wǎng)格圖上經(jīng)過(guò)大約5倍的約束長(zhǎng)度之后,所有幸存路徑將匯聚到一起。因此選擇合適的回溯長(zhǎng)度L,并從任一條路徑開(kāi)始(比如0狀態(tài))開(kāi)始回溯,當(dāng)回溯到L個(gè)節(jié)點(diǎn)時(shí)開(kāi)始輸出譯碼比特。
3 GPS L2和GALILEO E1接收機(jī)的高性能Viterbi譯碼具體模塊設(shè)計(jì)
根據(jù)GPS和GALILEO的接口文件,L2頻點(diǎn)電文采用(2,1,7)卷積碼的形式,碼多項(xiàng)式為(171,133)o,且與GALILEO E1的卷積碼格式相同,GALILEO采用分段卷積的形式,參與卷積的為每頁(yè)中不包含同步頭的部分,即120位進(jìn)行卷積。為了能同時(shí)作為GPS和GALILEO的譯碼器,設(shè)計(jì)譯碼深度為120的譯碼器。本文引用地址:http://www.ex-cimer.com/article/190478.htm
接收機(jī)的Viterbi譯碼模塊包括:地址譯碼模塊、數(shù)據(jù)加載模塊、Viterbi譯碼模塊、輸出控制模塊。為了提高譯碼器的性能,Viterbi譯碼模塊的加比選蝶形單元采用32個(gè)并行結(jié)構(gòu),提高運(yùn)算速度。
3.1 地址譯碼及數(shù)據(jù)加載
地址譯碼包括總線讀寫(xiě)譯碼,由于Viterbi模塊作為一個(gè)獨(dú)立模塊,內(nèi)部地址采用自己的譯碼設(shè)計(jì)。
深度為120的Viterbi譯碼器,需要輸入240個(gè)卷積碼,對(duì)于總線32位CPU,需要8次寫(xiě)入完成數(shù)據(jù)輸入。最少需要8個(gè)地址單元,Viterbi譯碼輸出最少需要4個(gè)地址單元,譯碼狀態(tài)中斷輸出,狀態(tài)位清除,即整個(gè)譯碼器模塊需要14個(gè)地址單元。地址線需要4根即可。
地址譯碼電路采用組合邏輯設(shè)計(jì)。譯碼狀態(tài)中斷輸出、狀態(tài)位清零采用不同時(shí)鐘域同步。
數(shù)據(jù)加載模塊是加載寄存器內(nèi)數(shù)據(jù),然后按照順序,1次按2位串行輸出。
3.2 Viterbi譯碼模塊
Viterbi譯碼模塊采用的譯碼深度為120的(171,133)o譯碼設(shè)計(jì),譯碼器結(jié)構(gòu)如圖6所示,由譯碼控制單元、度量值計(jì)算單元、蝶形運(yùn)算、幸存路徑存儲(chǔ)、回溯輸出單元構(gòu)成。
(1)蝶形運(yùn)算單元。按照(2,1,7),多項(xiàng)式為(171,133)卷積碼特點(diǎn),基本蝶形單元分布見(jiàn)圖7。對(duì)于約束長(zhǎng)度為7的卷積碼,共計(jì)64個(gè)狀態(tài),形成32個(gè)基2的蝶形運(yùn)算單元見(jiàn)圖8。
蝶形單元的輸入信號(hào)為上次的度量和,與接收碼本蝶形單元中理論輸出碼的碼距度量,如圖9所示。
評(píng)論