论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
由图1可知,状态Sj和Sj 2/N在状态转移中同时得到两个新状态S2J和S2j 1。因此为了ACS能够同时取出这两个状态值,Sj和Sj 2/N必须存储在不同的RAM组中。同样,两个计算出来的新状态S2j和S2j 1也应如此。遵循这种准则,则时也简化接口电路,采用如下的分组算法:假设待分配状态=Sj=Sk-2Sk-1…S1S0,所对应的RAM组为Rm,由于RAM共分成4组,则m=(Sk-2S1)S0(两位二进制数表示)。状态分组图如图3所示,从中可以看出,从状态S128开始的后续状态都有规律地交错位置存储。由此,ACS单元和状态路径存储单元的接口电路只需采用两个2×2交换器,如图4所示。每一个交换器上连着两个ACS单元和两个RAM组。这两个交换器由输入状态Sj的最高位Sk-2控制。当Sk-2=1时,交换器交叉互联,如果Sk-2为0时,各ACS和RAM直接相连。这种接口设计十分容易实现。
在Viterbi译码算法中,译码状态的转移导致度量的读出和写入地址的不同,这样用FPGA实现时就需要两块RAM采用乒乓模式实现。本文更新路径存储采用原位运算方法,也就是找出状态转移的规律性,建立转移后的新状态和转移前的老状态际址映射关系,使度量的更新在原位上进行,使存储空间减小一半。
2.2幸存路径管理模块
幸存路径的存回溯是Viterbi算法关键的一步,最终的译码输出从对幸存的回溯中得到。由于采用基2的状态转移算法,当前时刻对应的前序时刻状态只有2个,所以在路径回溯中采用1bit指针算法。也就是说,在每个状态路径更新时,只需写1bit路径状态转移信