RAM0的數據dataOO和RAM1的數據dataOl輸入蝶形運算單元21的BF0,生成蝶形 運算的結果dout00、dout01 ;RAM4的數據data20和RAM5的數據data21輸入蝶形運算單元21 的BF1,生成蝶形運算的結果(1〇此20、(1〇此21 ;1^12的數據(1&丨&10和1^13的數據(1&丨 &11輸入 蝶形運算單元21的BF2,生成蝶形運算的結果doutl0、doutll ;RAM6的數據data30和RAM7的 數據data31輸入蝶形運算單元21的BF3,生成蝶形運算的結果dout30、dout31; 步驟2,所述蝶形運算的結果dout輸入兩個選擇器22MUX中,并根據selO至sel3四種控 制狀態(tài)生成輸入數據ramdin; 步驟3,所述(1〇111:00、(1〇111:01、(1〇11丨20、(1〇11丨21輸入選擇器22的11^1,生成輸入數據 ramdinO、ramdin2、ramdin4、ramdin6; doutl0、doutl 1、dout30、dout31 輸入選擇器22的 MUX2,^fej^4f|ijAfjiiSramdinKramdin3Nramdin5Nramdin7; 步驟4,所述輸入數據ramdinO、ramdin2、ramdin4、ramdin6、ramdinl、ramdin3、 ramdin5、ramdin7 分別寫入存儲單元 4 的 RAMO、RAM2、RAM4、RAM6、RAMI、RAM3、RAM5、RAM7 中; 步驟5,重復步驟1至步驟4,需要計算的64個狀態(tài)在經過總計六次循環(huán)后回到初始狀 ??τ 〇
[0035] 所述控制狀態(tài)見附圖5,具體控制方法為: 控制狀態(tài)為8610時,輸入數據從111(1;!_11〇、從111(1;!_112、從111(1;!_114、從111(1;!_116、從111(1;!_111、從111(1;!_113、 以111(1;!_115、以111(1;!_117,分別對應蝶形運算的結果(1〇11切0、(1〇1^20、(1〇11切1、(1〇1^21、(1〇1^10、 dout30、、doutll、dout31; 控制狀態(tài)為8611時,輸入數據瓜111(1;[110、瓜111(1;[112、瓜111(1;[114、瓜111(1;[116、瓜111(1;[111、瓜111(1;[113、 ramdin5、ramdin7,分別對應蝶形運算的結果doutOl、dout21、dout00、dout20、dout 11、 dout31、、doutl0、dout30; 控制狀態(tài)為8612時,輸入數據瓜111(1;[110、瓜111(1;[112、瓜111(1;[114、瓜111(1;[116、瓜111(1;[111、瓜111(1;[113、 ramdin5、ramdin7,分別對應蝶形運算的結果dout20、dout00、dout21、dout01、dout30、 doutl0、dout31、doutll; 控制狀態(tài)為8613時,輸入數據瓜111(1;[110、瓜111(1;[112、瓜111(1;[114、瓜111(1;[116、瓜111(1;[111、瓜111(1;[113、 ramdin5、ramdin7,分別對應蝶形運算的結果dout21、dout01、dout20、dout00、dout31、 doutll、、dout30、doutl0。 64個狀態(tài)的數據,存儲于存儲單元4的RAMO至RAM7的八個長度的地址中,其初始狀態(tài)存 儲方式參見附圖7,八個周期的讀取與寫入方法見附圖8.
[0036] 本發(fā)明還包括路徑度量值的溢出保護: 路徑度量值總是隨著計算時間單調增長,所以在經過一段時間的比較計算后,必須考 慮路徑度量值的溢出問題。為了克服路徑度量累加值的溢出,傳統(tǒng)的處理方法對譯碼器增 加了歸一化處理模塊,即當路徑度量值累加到一定長度時,對當前所有狀態(tài)的累加路徑度 量值減去其中的最小值。這種處理方法要用到比較器、減法器,且模塊間的互連很多,需要 大量的全局連線資源,不適合于硬件實現,且在路徑度量值計算的過程中進行額外的溢出 處理,影響譯碼速度; 可以證明,在維特比算法中,任一節(jié)點的所有幸存路徑度量值之間的差值在一個有限 的范圍之內:(K-l) X Amax,K是約束長度,Amax是最大的分支度量值,利用這個特點,只 需對比較運算作簡單的修改,在計算時可以不必考慮加法運算的溢出問題,仍可以求出兩 個度量值的相對大小。具體做法是:選擇路徑度量值位寬rqiog^ml + l:,兩個路徑度 量值作差比較的結果在映射范圍內不會發(fā)生重疊現象,通過判斷比較結果的正負即可以判 斷數值大小。
[0037] 所述系統(tǒng)控制單元3產生系統(tǒng)中其他運算單元的控制信號,包括加比選單元2分八 次更新64個狀態(tài)的路徑度量值的狀態(tài)切換信號,回溯單元5的啟動、停止信號,存儲單元4的 讀寫控制信號, 通過系統(tǒng)控制單元3對各運算單元的控制,實現對維特比譯碼整體流程的控制,其處理 流程如下: 步驟1、當有待譯碼數據輸入,啟動一次數據處理; 步驟2、第1至8時鐘周期,控制加比選單元2計算幸存路徑,并將幸存路徑值寫入存儲單 元4; 步驟3、第9至11時鐘周期,從存儲單元4中讀取幸存路徑值以配合路徑回溯,控制回溯 單元5進行幸存路徑回溯,若回溯達到譯碼深度,將譯碼結果緩存; 步驟4、第12時鐘周期,輸出回溯單元5中緩存的lbit譯碼結果,輸出方式為后入先出。 存儲單元4在幸存路徑的計算過程中,存儲加比選單元2計算的幸存路徑;在路徑回溯 的過程中,輸出存儲的幸存路徑用于回溯。
[0038] 回溯單元5用于控制幸存路徑回溯,根據回溯路徑上的當前節(jié)點的狀態(tài)以及存儲 單元4中的幸存路徑,計算前一個節(jié)點的狀態(tài),不斷回溯直至到達譯碼深度后,輸出譯碼結 果; 根據回溯深度,將存儲單元劃分為四塊區(qū)域,每塊區(qū)域存儲1/2回溯深度的幸存路徑; 每輸入一個數據,用八個時鐘周期計算存儲新的幸存路徑外,再用三個時鐘周期進行路徑 回溯;每有存儲區(qū)域滿后,啟動一次新的回溯流程。
[0039] 參見附圖9至11,假設以3號存儲區(qū)域滿作為起始,分如下幾個步驟描述具體的操 作方法: 1、 每當輸入一組待譯碼數據,進行加比選單元2計算,將計算結果存儲于4號區(qū)域中,同 時回溯以3號區(qū)域的最后一個節(jié)點為起始,并回溯3個節(jié)點。隨著待譯碼數據的輸入,待4號 區(qū)域存滿1/3時,3號區(qū)域回溯完成;如圖9, 2、 繼續(xù)輸入數據,按照與步驟1相同的方法進行處理,待4號區(qū)域存滿2/3時,2號區(qū)域回 溯完成;如圖10, 3、 繼續(xù)輸入數據,按照與步驟1相同的方法進行處理,同時記錄回溯得到的幸存路徑, 作為譯碼結果供后續(xù)輸出。待4號區(qū)域存滿時,1號區(qū)域回溯完成,并完成譯碼;如圖11, 4、 通過上述3個步驟,在將幸存路徑存入4號區(qū)域的過程中,完成了對1號區(qū)域的譯碼。 待新的待譯碼數據輸入時,再次重復步驟1~3,將幸存路徑寫入1號區(qū)域中,同時對2~4號 區(qū)域進行路徑回溯,并記錄2號區(qū)域的譯碼結果,按照此方法循環(huán)往復。
[0040] 以上所述實施例僅表達了本發(fā)明的一種實施方式,其描述較為具體和詳細,但并 不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員 來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保 護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。
【主權項】
1. 一種北斗導航系統(tǒng)的維特比譯碼裝置及方法, 主要包括分支度量值計算單元(1)、加比選單元(2)、系統(tǒng)控制單元(3)、存儲單元(4)、 回溯單元(5),其特征是: 維特比譯碼器路徑度量值的更新由加比選單元(2)生成的新路徑度量值寫回到原來讀 出舊路徑度量值的地址中去,在譯碼過