维特比译码器(Viterbi Decoder)硬件架构(三)–硬件结构描述及RTL源代码
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操作。
3. 接口信号

您的这个开源viterbi解码器很棒。看得出来博主您也是经验丰富的业内人士。
我是openwifi项目的作者(https://github.com/open-sdr/openwifi)。现在openwifi使用的是xilinx的试用版viterbi解码器(每隔两三个小时就要过期)。我正在考虑是否用你的解码器替换掉它。但首先想问的是,您的开源viterbi解码器项目的license是什么?您可以选择一个license在github上吗?这样我们就可以知道是否可以集成。
1.我放了GNU LGPL声明在项目介绍里
2.如果您的项目属于非商业用途,可以自由使用。