1. 綜述
發展到現在,Viterbi譯碼器的硬件結構以及很成熟了。這裏要描述的Viterbi譯碼器採用了一個成熟的規整化的硬件的硬件架構,可根據配置寄存器來對:
- LTE,NB-IOT及GSM/GPRS/EDGE中使用的卷積碼進行譯碼。
- 支持tail-bits和tail-biting兩種形式。
- 前向回溯的滑窗技術可以減小倖存路徑的緩存器深度.
- 可配的網格結構支持約束長度爲4~7,編碼效率爲1/2,1/3,1/4,1/5,1/6的卷積碼譯碼。
該項目RTL源代碼及驗證的testcase已經在github上開源:
https://github.com/coole198669/viterbi_decoder
2. 硬件結構
包含的子模塊:
- BMU Branch Metric Unit, 對各個路徑計算BM值。一共有64個BM模塊。
- ACS Add Compare Select,
加比選
模塊,用以產生當前狀態的倖存路徑(Surviving Path)及狀態路徑。當前時刻各狀態對應的倖存路徑拼接成64 bit寬的data 放入 PM buffer。其深度爲64,即該譯碼器支持的最大回溯深度爲64。 - PM normalize block: 對PM 進行歸一化處理,防止溢出。
- Traceback:負責回溯時的地址產生及譯碼比特輸出等
- PM Register: 包含64各PM 寄存器用來存儲各個狀態的狀態度量,是以原址計算的形式進行ACS操作。