用fpga实现维特比译码
基于FPGA的卷积码Viterbi译码器实现方法

1 卷 积码和格型图
设 计某 ( 3 , 2 , 3 ) 卷 积码 V i t e r b i 译码器 , 图 1为 该 编码 器 的编码 方框 图 。
译码算法等 。由于卷积码具有 网格编码 的特点 ,
维特 比 ( V i t e r b i ) 提 出 了最 大 似 然 ( Ma x i m u m L i k e l i . h o o d ,ML ) 译 码 算 法 J , 它 易 于 对 约 束 长 度 小 的卷 积码 实 现软判 决 译码 。文 献 [ 4] 基 于 状 态 机设 计 了 V i t e r b i 译码 器 , 该 方 法 需 要将 状 态 转 移矩 阵 和输 出
@ 2 0 1 3 S c i . T e c h . E n g r g .
基于 F P G A的卷积码 V i t e r b i 译码器实现方法
李 明阳 ’ 柏 鹏 屈 鹏 , 张毓 桐。
( 空军工程大学装备管理与安全工程学院 , 综合 电子信息系统与电子对抗技术研究 中心 , 理学院。 , 西安 7 1 0 0 5 1 )
有
h +m 一1 h+ m 一1
M ( r I ) =∑ M ( r ) =∑l g P ( r )
f =0 2 =0
( 2 ) ∞一 一 O 吣 O m 1 ∞ l m O 叭 O ¨ 1 叭 l ¨ 可 以将 一条 路径 的前 t 个 分 支 的部 分路 径 量度
矩阵存储 在查找 表 中, 译码 过程 中需 要搜 索查 找 表, 增加了译码 时间。文献 [ 5 , 6 ] 分析 了资源 复用
和译 码 时 间 的关 系 并 设 计 了相 应 的译 码 器 。本 文
借鉴该文思路设计 了一个码率 为 2 / 3的卷积码 的
卷积编码及Viterbi译码的低时延FPGA设计实现

卷积编码及Viterbi译码的低时延FPGA设计实现张健,吴倩文,高泽峰,周志刚(杭州电子科技大学电子信息学院袁浙江杭州310018)摘要:针对毫米波通信的高速率和低时延设计要求,设计实现1/2码率(2,1,7)卷积码的低时延译码。
采用高度并行优化实现框架、低延时的最小值选择方式,获得Viterbi硬判决译码算法的输出遥利用基于Xilinx公司的Artix7-xc7a200t芯片综合后,译码器的数据输出延时约89个时钟周期,最高工作频率可达203.92MHz遥结果表明,该译码器可支持吉比特级的数据传输速率,实现了低延时、高速率的编译码器遥关键词:毫米波通信;卷积码;Viterbi译码;system generator中图分类号:TN911.22文献标识码:A DOI:10.16157/j.issn.0258-7998.201025中文引用格式:张健袁吴倩文,高泽峰袁等.卷积编码及Viterbi译码的低时延FPGA设计实现[J].电子技术应用,2021,47 (6):96-99.英文弓I用格式:Zhang Jian,Wu Qianwen,Gao Zefeng,et al.Low-latency FPGA design and implementation of convolutional coding and Viterbi decoding[J].Application of Electronic Technique,2021,47(6):96-99.Low-latency FPGA design and implementation of convolutionalcoding and Viterbi decodingZhang Jian,Wu Qianwen,Gao Zefeng,Zhou Zhigang(School of Electronic Information,Hangzhou Dianzi University,Hangzhou310018,China)Abstract:Aiming at the high-speed and low-delay design requirements of millimeter wave communications,this paper designs low-delay decoding of convolutional codes with1/2code rate(2,1,7).A highly parallel optimization implementation framework and a low-latency minimum selection method are adopted to obtain the output of the Viterbi hard decision decoding algorithm.After synthesis using the Artix7-xc7a200t chip based on Xilinx,the data output delay of the decoder is about89clock cycles,and the highest operating frequency can reach203.92MHz.The results show that the decoder can support gigabit-level data transmission rates,and realizes a low-latency,high-rate codec.Key words:millimeter wave communication;convolutional code;Viterbi decoding;system generator0引言近年来,5G移动通信技术的发展受到人们的广泛关注,高速率、高可靠、低时延的高能效通信成为毫米波通信中的重要因素[1-2」。
viterbi译码算法详解

viterbi译码算法详解Viterbi译码算法详解Viterbi译码算法是一种在序列估计问题中广泛应用的动态规划算法。
它被用于恢复在一个已知的输出序列中最有可能的输入序列。
该算法最初由Andrew Viterbi在1967年提出,并被广泛应用于各种领域,如语音识别、自然语言处理、无线通信等。
Viterbi译码算法的基本思想是在一个已知的输出序列中寻找最有可能的输入序列。
它通过计算每个可能的输入序列的概率,并选择概率最大的输入序列作为最终的估计结果。
该算法的关键是定义一个状态转移模型和一个观测模型。
状态转移模型描述了输入序列的转移规律,即从一个输入状态转移到另一个输入状态的概率。
观测模型描述了输入序列和输出序列之间的关系,即给定一个输入状态,产生一个输出状态的概率。
在Viterbi译码算法中,首先需要进行初始化。
假设有n个可能的输入状态和m个可能的输出状态,我们需要初始化两个矩阵:状态概率矩阵和路径矩阵。
状态概率矩阵记录了每个时刻每个状态的最大概率,路径矩阵记录了每个时刻每个状态的最大概率对应的前一个状态。
接下来,我们通过递归的方式计算状态概率和路径矩阵。
对于每个时刻t和每个可能的输入状态i,我们计算当前状态的最大概率和对应的前一个状态。
具体的计算方式是通过上一个时刻的状态概率、状态转移概率和观测概率来计算当前时刻的状态概率,并选择其中最大的概率作为当前状态的最大概率。
我们通过回溯的方式找到最有可能的输入序列。
从最后一个时刻开始,选择具有最大概率的状态作为最终的估计结果,并通过路径矩阵一直回溯到第一个时刻,得到整个输入序列的最有可能的估计结果。
Viterbi译码算法的优势在于它能够处理大规模的状态空间和观测空间。
由于使用动态规划的思想,该算法的时间复杂度为O(nmT),其中n和m分别为可能的输入状态和输出状态的数量,T为输出序列的长度。
因此,在实际应用中,Viterbi译码算法能够高效地处理各种序列估计问题。
卷积码编码及译码实验 浅谈卷积编码下的FPGA实现

卷积码编码及译码实验浅谈卷积编码下的FPGA实现
卷积编码是现代数字通信系统中常见的一种前向纠错码,区别于常规的线性分组码,卷积编码的码字输出不仅与当前时刻的信息符号输入有关,还与之前输入的信息符号有关。
本文主要是关于卷积码编码及译码实验的相关介绍,并着重分析阐述了基于卷积编码下的FPGA实现。
卷积编码卷积码的编码分为两类:前馈和反馈,在每类中又可分为系统和非系统形式。
我们这里只考虑非系统形式的前馈编码器。
‘
上图是WLAN 802.11a协议中采用的卷积编码器结构,输入比特k=1,输出n=2,存储器长度m=6,编码输出不仅与当前输入有关,还与存储器存储的之前的输入数据有关,具体由之前的哪些数据得到编码输出呢,由生成多项式确定其连接关系。
这里,生成多项式为g0=133(八进制)和g1=171(八进制)(右边是最高位),输出数据A的生成多项式为:
输出数据B的生成多项式为:
生成多项式确定了卷积编码器输出的连接关系。
根据多项式的系数,在相应项进行连接。
生成多项式写成二进制序列的形式分别为:g0 = [1 0 1 1 0 1 1]和g1 = [1 1 1 1 0 0 1](右边是最高位)。
我们假设信息序列u,两个编码器输出序列分别为v(0)和v(1),编码器可以看成一个线性系统,系统的信道响应脉冲最多持续m+1个时间单元,编码输出可以写成编码输入与信道脉冲响应的卷积(即生成多项式),即
其中需要注意的是,所有的加法都是模2加运算。
卷积码编码及译码实验基本原理
1、卷积码编码
卷积码是一种纠错编码,它将输入的k个信息比特编成n个比特输出,特别适合以串行形。
高性能维特比在卫星导航接收机中FPGA实现

高性能维特比在卫星导航接收机中FPGA实现作者:王千喜李秋凤杨晓昆翟羽佳胡强来源:《现代电子技术》2012年第06期摘要:卫星定位接收机中卷积码译码即维特比译码器,在处理器中面临占有资源较多、处理时间过长等问题,为了减少处理器资源的占用和提高处理速度,采用并行加比选蝶形单元的的方法,在FPGA平台上用硬件描述语言设计一种高性能维特比译码器,作为GPS L2频点和GALILEO E1频点接收机的通用译码器,在GPS和GALILEO接收机上运用,大大减少资源使用,提高接收机的处理速度。
关键词:Viterbi译码器; GPS /GALILEO接收机;卷积码; FPGA中图分类号:文献标识码:A文章编号:navigation(General Department, China Aerospace Science & Industry Academy of Information Technology, Beijing 100070, China)Abstract:ionmethod of using parallel plus selection butterfly unit is adopted to reduce the ocupation of processer resource and increase the processing speecd. A hihardwaredescription language on the FPGA platform. It works on GPS and GALILEO receiver as a general decoder of GPS L2 and Galileo E1 frequency point receiver, and can reduce the resource occupation and improve the processing speed of receivers.Keywords: Viterbi decoder; GPS /GALILEO receiver; convolutional code; FPGA收稿日期:引言在现代通信系统中,要使信号能够更可靠地在信道中传输,往往需要在信道编码中采用纠错码来降低信号受噪声的影响,以降低传输的误码率。
viterbi译码器通讯原理

viterbi译码器通讯原理Viterbi译码器通信原理引言:在通信系统中,译码器是一种重要的设备,用于将接收到的信号转换为原始信息。
其中,Viterbi译码器是一种常用的译码器,其基本原理是使用Viterbi算法来实现最大似然译码。
本文将介绍Viterbi 译码器的通信原理及其工作过程。
一、Viterbi译码器的基本原理1.1 译码器的作用译码器在通信系统中扮演着重要的角色,其主要作用是将接收到的信号转换为原始信息。
在数字通信系统中,译码器通常用于纠正或解决信道中产生的误码问题。
1.2 Viterbi译码器的优势Viterbi译码器是一种基于状态转移的译码器,相比于其他传统译码器,具有以下优势:- 具有较高的译码性能:Viterbi译码器能够有效地纠正信道中的错误,提高译码性能。
- 具有较低的复杂度:Viterbi译码器的算法相对简单,可以较快地进行译码操作。
- 可以应用于多种通信系统:Viterbi译码器适用于不同类型的通信系统,包括无线通信、卫星通信等。
二、Viterbi译码器的工作原理2.1 状态转移图Viterbi译码器的工作原理基于状态转移图。
状态转移图是一种表示状态和状态转移关系的图形模型,其中每个状态代表译码器的一个内部状态,状态之间的转移表示译码器的状态迁移过程。
2.2 序列似然度计算在Viterbi译码器中,首先需要计算接收到的信号序列与每个可能的码字之间的似然度。
利用接收到的信号和码字的对应关系,可以计算得到每个码字的似然度。
2.3 动态规划过程Viterbi译码器使用动态规划的方法来选择最优的译码路径。
动态规划的基本思想是将问题分解为子问题,并利用子问题的最优解来求解原问题的最优解。
在Viterbi译码器中,通过比较不同状态的路径似然度,选择具有最大似然度的路径,即为最优路径。
通过递归地比较不同状态的路径似然度,可以得到整个信号序列的最优译码路径。
2.4 回溯路径在Viterbi译码器中,回溯路径是译码器输出的信号序列。
基于FPGA的串行RS+Viterbi级联译码器的设计与实现
始化 网络 、 支度 量 计 算 、 比选 、 分 加 累计度 量储 存 、 存路 径 储 存 和 回 溯等 主要 部 分 ; S译 码 采 用 欧 几 里 德 算 法 。 幸 R 给 出了伴 随 式 计 算 、 误 位 置 和错 误 值 多项 式计 算 ( 搜 索计 算 错 误 位 置 、 尼 算 法计 算 错 误 值 )模 二 和 计 算 解 码 输 错 钱 福 、
上
海 航
天
5 3
20 0 7年 第 4期 文章 编 号 :0 61 3 (0 7 0 —0 30 10 —60 2 0 )40 5 —5
AEROS ACE S P HANGHAI
基 于 F G 的 串行 R P A S+Vi ri tb e 级 联 译 码器 的设计 与实 现
d c ig emao at fte ag rtm ,sc ss n rm aclt n eo n .Th jrp rso h loi d h u h a y d o clua i ,mut o a cluain o ro o io n o l n mil ac lt fer rp st n a d i o i
出等 关键 部 分 。
关 键 词 : 联 码 ; S码 ;卷积 码 ;欧 几 里德 算 法 ;维 特 比 算 法 ;现 场 可 编程 逻 辑 阵 列 级 R
中图 分 类 号 : N 1 .2 T 9 1 2 文 献标 识码 : A
De i n a d I p e e t to fS ra sg n m lm n a i n o e i lRS+ Vie b n a e a e c d r Ba e n FPGA t r iCo c t n td De o e s d o
基于FPGA的卫星导航信号viterbi译码方法
DATA_OUT 即为译码后的结果 , 其速率是译码前 数据bit的1/2。
CLK C E DATA _IN0 DATA _IN1
D0_ 0 D1_ 0
D0_ 1 D1_ 1
D0_ 2 D1_ 2
ቤተ መጻሕፍቲ ባይዱ1.2 viterbi 译码
卷积编码的译码需要在一个预定的时间内 , 通过迭代算法选择各种可能的路径 , 以找到最佳 路径。通过把支路度量(局部距离)加到两个原状 态的最佳路径度量上 , 得到到达新状态 (J) 的两条 路径的度量值 , 从这两条路径的度量中选择一条 新状态(J)的路径和度量。Viterbi译码算法提供了 一种使数据-符号序列(格子路径)度量最小化的方 法。作为一种最大似然算法解码器,Viterbi译码算 法从接收序列中确定码序列 , 并使其和原发送序 列的匹配概率最高。 通常,Vit-erbi译码算法可分为 分支度量(局部距离)计算、状态度量更新和回溯跟 踪3个过程。 在卷积码译码中,Viterbi译码算法是纠错能力 很强的一种,已广泛应用于卫星通信系统。Viterbi 译码算法是一种最大似然译码算法。 Viterbi译码算法的步骤: 1) 根据接收码符号,计算出相应的分支量度 值; 2) 将进入某一状态的2条分支量度与其前面 的状态量度累加求和; 3) 比较到达同一状态的2条新的路径量度的 大小,选择最小者作为新的状态量度存储起来,并 记住与此路径(幸存路径)对应的信息码元; 4) 对所有的2m个状态都实施上述相加/比较 / 选择 (ACS) 运算; 路径量度最小的一条路径 ( 约为 以前码元长度的5倍)作为译码数据输出; 5) 将译码时刻向前延伸一步,重复以上步骤, 直至译码结束。
图1
(2,1,8)卷积码编码器基本结构
U ( D)G0 ( D ) 与时域运算 C1=u*g1 和 C0=u*g0 是等
LTE中卷积码的译码器设计与FPGA实现
LTE中卷积码的译码器设计与FPGA实现李冬冬【摘要】Based on Tail-biting convolutional code of LTE, Viterbi Algorithm which is a optimal decoding algorithm of convolutional codes is introduced. The fixed-delay decoding scheme is adopted to reduce the decoding complexity according to the circular property of Tail-biting convolutional code. By using all parallel structure and simple trace back memory method, a fixed-delay decoder with higher speed and lower complexity is designed. The decoder was implemented and verified with FPGA. The results of verification show that the performance of the decoder meets the requirements of LTE syetem.%基于长期演进(LTE)的Tail-biting卷积码,介绍了维特比译码算法,它是一种最优的卷积码译码算法.由于Tail-biting卷积码的循环特性,采用固定延迟译码的方法,降低了译码复杂度.通过使用全并行的结构及简单的回溯存储方法,设计了一个具有高速和低复杂度的固定延迟译码器.在FPGA上实现并验证,验证结果表明译码器的性能满足了LTE系统的要求.【期刊名称】《现代电子技术》【年(卷),期】2011(034)013【总页数】4页(P46-48,52)【关键词】LTE;Tail-biting卷积码;维特比译码算法;固定延迟译码;FPGA 【作者】李冬冬【作者单位】北京工业大学北京市嵌入式系统重点实验室,北京 100124【正文语种】中文【中图分类】TN919.3-340 引言LTE(Long Term Evolution)[1]是“准4G”的技术,以OFDM/FDMA和MIMO为其核心技术。
matlab卷积编码与viterbi译码的实现
matlab卷积编码与viterbi译码的实现MATLAB中viterbi译码算法讨论⼤家可以再评论区交流!!!MATLAB中实现viterbi译码的函数为:convenc其中:code = convenc(msg,trellis)vitdec其中:vitdec(code,trellis,tblen,opmode,dectype)code卷积编码,trellis⽹格表,tblen回溯长度,opmode:cont、term、trunc,dectype:unquant、hard、soft;本⼈最近在做⼀个关于viterbi译码算法,最终在FPGA中实现,在FPGA中最终的实现⽅案为xillinx IP核实现。
在此之前⽤MATLAB进⾏仿真验证。
matlab程序:Tre = poly2trellis(7,[133 171]);通过poly2trellis⽣成逻辑关系图,如下图所⽰。
逻辑关系图%卷积编码:msg = [0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 0 0 1];code = convenc(msg,Tre);%code = [0,0,1,1,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,0,1,1,1,1,0];%这是通过convenc函数⽣成的卷积码%vitdec译码:%在vitdec译码过程中采⽤硬判决,通过不同的tblen和opmode来找出其中关系。
%(1) opmode = conttblen = 12;msg_dat = vitdec(code,Tre,tblen,'cont','hard');%msg_dat =[ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 ];%通过了解到cont模式中,vitdec译码会有延迟,延迟的长度为tblen长度,所以在此对vitdec进⾏修改code_temp = [code,zeros(1,24)];msg_temp = vitdec(code_temp ,T,12,'cont','hard')msg_dat = msg_temp(13:end);%msg_dat = [ 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 0 0 1];%此时vitdec译码出来的数据和信源⼀样tblen = 18;code_temp = [code,zeros(1,24)];msg_temp = vitdec(code_temp ,T,12,'cont','hard')msg_dat = msg_temp(13:end);%msg_dat = [ 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0];%此时vitdec译码出来的数据和信源在后⾯最后⼀位不⼀样%(2) opmode = termtblen = 12;msg_dat = vitdec(code,Tre,tblen,'term','hard');%msg_dat = [0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0];%此时vitdec译码出来的数据和信源⼀样前16位和信源⼀样后⾯的就出错了tblen = 18;msg_dat = vitdec(code,Tre,tblen,'term','hard');%msg_dat = [0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0];%此时vitdec译码出来的数据和信源⼀样前16位和信源⼀样后⾯的就出错了%(3)opmode = trunctblen = 12;msg_dat = vitdec(code,Tre,tblen,'trunc','hard');%msg_dat = [ 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 0 0 1];%此时vitdec译码出来的数据和信源⼀样tblen = 18;msg_dat = vitdec(code,Tre,tblen,'trunc','hard');%msg_dat = [ 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 0 0 1];%此时vitdec译码出来的数据和信源⼀样总结:以上通过⽐较tblen和opmode模式的不同对产⽣的结果,其中cont和trunc的模式总结起来就是cont有tblen延迟,但是trunc没有。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FPGA Implementation of Viterbi DecoderHEMA.S, SURESH BABU.V, RAMESH P Dept of ECE, College of Engineering TrivandrumKerala University Trivandrum, Kerala.INDIAAbstract: - Convolutional encoding with Viterbi decoding is a powerful method for forward error correction. It has been widely deployed in many wireless communication systems to improve the limited capacity of the communication channels. The Viterbi algorithm, which is the most extensively employed decoding algorithm for convolutional codes. In this paper, we present a field-programmable gate array implementation of Viterbi Decoder with a constraint length of 11 and a code rate of 1/3. It shows that the larger the constraint length used in a convolutional encoding process, the more powerful the code produced.Key-Words: - Convolutional codes, Viterbi Algorithm, Adaptive Viterbi decoder, Path memory, Register Exchange, Field-Programmable Gate Array (FPGA) implementation.Hema S. is M.Tech scholar with the Department of ECE,College of Engineering Trivandrum.E-mail: hemarajen@ Suresh Babu V. is with the Department of ECE, College of Engineering Trivandrum.E-mail:vsb_sreeragam@yahoo.co.inRamesh P is with the Dept of ECE,,Munnar Engineering. Email : ramp1718009@1 IntroductionWith the growing use of digital communication, there has been an increased interest in high-speed Viterbi decoder design within a single chip. Advanced field programmable gate array (FPGA) technologies and well-developed electronic design automatic (EDA) tools have made it possible to realize a Viterbi decoder with the throughput at the order of Giga-bit per second, without using off-chip processor(s) or memory. The motivation of this thesis is to use VHDL, Synopsys synthesis and simulation tools to realize a Viterbi decoder having constraint length 11 targeting Xilinx FPGA technology.[5]The Viterbi algorithm develops as an asymptotically optimal decoding algorithm for convolutional codes. It is nowadays commonly using for decoding block codes. Viterbi Decoding has the advantage that it has a fixed decoding time. It is well suited to hardware decoderimplementation.Viterbi decoding of convolutional codes found to be efficient and robust. Although the viterbi algorithm is, simple it requires O (2n-k ) words of memory, where n is the length of the code words and k is the message length, so that n k −is the number of appended parity bits. In practical situations, it is desirable to select codes with the highest minimum Hamming distance that decodes within a specified time and an increased minimum Hamming distance min d implies an increased number of parity bits. Our viterbi decoder necessarily distributes the memory required evenly among processing elements [1].2. Convolutional Code2.1 Convolutional EncodingConvolutional code is a type of error-correcting code in which each (n ≥m) m -bit information symbol (each m -bit string) to be encoded is transformed into an n -bit symbol, where m/n is the code rate (n ≥m) and thetransformation is a function of the last k information symbols, where K is the constraint length of the code. To convolutionally encode data, start with k memory registers, each holding 1 input bit. Unless otherwise specified, all memory registers start with a value of 0.The encoder has n modulo-2 adders, and n generator polynomials—one for each adder (see figure1).An input bit m1is fed into the leftmost register. Using the generator polynomials and the existing values in the remaining registers, the encoder outputs n bits [1].Figure 1: The rate ½ Convolutional encoder2.2Viterbi AlgorithmA. J. Viterbi proposed an algorithm as an ‘asymptotically optimum’ approach to the decoding of convolutional codes in memory-less noise. The Viterbi algorithm (VA) is knows as a maximum likelihood (ML)-decoding algorithm for convolutional codes. Maximum likelihood decoding means finding the code branch in the code trellis that was most likely to be transmitted. Therefore, maximum likelihood decoding is based on calculating the hamming distances for each branch forming encode word. The most likely path through the trellis will maximize this metric.[7]Viterbi algorithm performs ML decoding by reducing its complexity. It eliminates least likely trellis path at each transmission stage and reduce decoding complexity with early rejection of unlike pathes.Viterbi algorithm gets its efficiency via concentrating on survival paths of the trellis. The Viterbi algorithm is an optimum algorithm for estimating the state sequence of a finite state process, given a set of noisy observations.[2]The implementation of the VA consists of three parts: branch metric computation, path metric updating, and survivor sequence generation. The path metric computation unit computes a number of recursive equations. In a Viterbi decoder (VD) for an N-state convolutional code, N recursive equations are computed at each time step (N = 2k-1, k= constraint length). [12] Existing high-speed architectures use one processor per recursion equation. The main drawback of these Viterbi Decoders is that they are very expensive in terms of chip area. In current implementations, at least a single chip is dedicated to the hardware realization of the Viterbi decoding algorithm The novel scheduling scheme allows cutting back chip area dramatically with almost no loss in computation speed.[15]3. Viterbi DecoderA viterbi decoder uses the Viterbi algorithm for decoding a bitstream that has been encoded using Forward error correction based on a code. There are other algorithms for decoding a convolutionally encoded stream (for example, the Fano algorithm). The Viterbi algorithm is the most resource consuming, but it does the maximum likelihood decoding. Figure 2 shows the block diagram of viterbi decoderIt consists of the following modules: [7]Branch Metrics, ACS, register exchange, maximum path metric selection, and output registerselection.Figure:2 Block Diagram of Viterbi Decoder3.1. Branch MetricsThe branch metric computation block compares the received code symbol with the expected code symbol and counts the number of differing bits .Figure 3 showsthe block diagram of branch metrics[7]Figure: 3 Branch Metrics of viterbi decoder3.2. Add-Compare-Select (ACS)The two adders compute the partial path metric ofeach branch, the comparator compares the two partial metrics, and the selector selects an appropriate branch. The new partial path metric updates the state metric of state, and the survivor path-recording block records the survivor path.[7]Figure 4 shows the block diagram of ACS blockFigure:4 ACS block3.3. Path Metric Calculation and Storage The ACS circuit consisting of adders, a comparator, a selector, and several registers calculates the path metric of each convolutional code state. The number of “states” N, of a convolutional encoder which generates n encoded bits is a function of the constraint length K and input bits b .The path metric calculations just assigned the measurement functions to each state, but the actual Viterbi decisions on encoder states is based on a traceback operation to find the path of states. The important characteristic is that if every state from a current time is follow backwards through its maximum likelihood path, all of the paths converge at a point somewhere previous in time. This is how traceback decisively determines the state of the encoder at a given time, by showing that there is no better choice for an encoder state given the global maximum likelihood path.[6]3.4 .Register-exchange and TracebackThe register-exchange approach assigns a register to each state. The register records the decoded output sequence along the path starting from the initial state to the final state, which is same as the initial state. This approach eliminates the need to traceback, since the register of the final state contains the decoded output sequence. Hence, the approach may offer a high-speed operation, but it is not power efficient due to the need to copy all the registers in a stage to the next stage.[10] The other approach called traceback records the survivor branch of each state. It is possible to traceback the survivor path provided the survivor branch of each state is known. While following the survivor path, the decoded output bit is ‘0’ (‘1’) whenever it encounters an even (odd) state. A flip-flop is assign to each state tostore the survivor branch and the flip-flop records ‘1’ (‘0’) if the survivor branch is the upper (lower) path. [6] 3.4.1) Traceback read (tb)There are three types of operations performed inside a TB decoder:This is one of the two read operations and consists of reading a bit and interpreting this bit in conjunction with the present state number as a pointer that indicates the previous state number (i.e. state number of the predecessor) .[4]3.4.2) Decode read (dc)This operation proceeds in exactly the same fashion as the traceback operation, but operates on older data, with the state number of the first decode read in a memory bank being determined by the previously completed traceback. Pointer values from this operation are the decoded values and are sent to the bit-order reversing circuit.3.4.3) Writing new data (wr)The decisions made by the ACS write into locations corresponding to the states. The write pointer advances forward as ACS operations move from one stage to the next in the trellis, and data are written to locations just freed by the decode read operation . 3.4.5) Selective Update and Shift UpdateIt is possible to form registers by collecting the flip-flops in the vertical direction or in the horizontal direction. When a register is formed in vertical direction, it is referred to as “selective update”. When a register is formed in horizontal direction, it is referred to as “shift update”. In selective update, the survivor path information is filling from the left register to the right register as the time progresses. In contrast, survivor path information is applied to the least significant bits of all the registers in “shift update”. Then all the registers perform a shift left operation. Hence, each register in the shift update method fills in survivor path information from the least significant bit toward the most significant bit.[9]3.4.6) Survivor Path MemoryTo implement the survivor path memory architecture, three types of path memory management schemes are commonly used: register-exchange (RE), trace-back (TB), and RE-TB-combined. The RE approach is suitable for fast decoders, but occupies large silicon real estate and consumes lots of power. On the other hand,the TB path memory usually consumes less power, but is slower than its RE counterpart, or requires a clock rate higher than the decoding throughput. The RE-TB-combined approach, is a good alternative to the RE approach for high-speed applications. [7]4. The Field Programmable Gate Array (FPGA)A Field Programmable Gate Array (FPGA) is a semiconductor device containing programmable logic components and programmable interconnects. The programmable logic components can be programmed to duplicate the functionality of basic logic gates such as AND, OR, XOR, NOT or more complex combinational functions such as decoders or simple math functions. In most FPGAs, these programmable logic components (or logic blocks, in FPGA parlance) also include memory elements, which may be simple flip-flops or more complete blocks of memories. Each process is assigned to a different block of the FPGA and operates independently. A shared register between the processors implements the arcs, which represent the transmission of the weights and paths for each state to another processor. All systems were implementing in behavioral VHDL.A synthesis tool is used to construct the RTL level VHDL for the decoders. This synthesized unit is then simulated using a commercial simulation tool for VHDL.In VHDL the initial conditions such as the location of the weights and paths needed to update a state are readily coded and so don’t need to be calculated for each cycle of the decoding process. The received message is fan out into all the processors a bit at a time and this is the logical clock for the machine. On receiving each input bit, each processor reads the shared registers, updates the weights and paths and writes the results to the shared registers. [11]FPGAs originally began as competitors to CPLDs and competed in a similar space, that of glue logic for PCBs. As their size, capabilities and speed increase, they began to take over larger and larger functions to the state where they are now market as competitors for full systems on chips. They now find applications in any area or algorithm that can make use of the massive parallelism offered by their architecture.[2]The typical basic architecture consists of an array of configurable logic blocks (CLBs) and routing channels. Multiple I/O pads may fit into the height of one row or the width of one column. Generally, all the routing channels have the same width (number of wires).An application circuit must be map into an FPGA with adequate resources. The typical basic architecture consists of an array of configurable logic blocks (CLBs) and routing channels. Multiple I/O pads may fit into the height of one row or the width of one column. Generally, all the routing channels have the same width (number of wires). [13]FPGAs are an extremely valuable tool in learning VLSI design. While the traditional techniques of full- and semi-custom design certainly have their places for analog, high performance or complex applications, the prospect of putting “their” chip to the decisive test of a real hardware environment motivates students tremendously. [10]To define the behavior of the FPGA the user provides a hardware description language (HDL) or a schematic design. Common HDLs are VHDL and Verilog. Then, using an electronic design automation tool, a technology-mapped netlist generates. The netlist can then be fitted to the actual FPGA architecture using a process called place-and-route, usually performed by the FPGA Company’s proprietary place-and-route software. The user will validate the map, place and route results via timing analysis, simulation, and other verification methodologies. Once the design and validation process is complete, the binary file generated (also using the FPGA company's proprietary software) is used to (re)configure the FPGA device. Figure: 5 show the design flow of FPGA. [2]Figure: 5 Design flow of FPGATo simplify the design of complex systems in FPGAs, there exist libraries of predefined complex functions and circuits that have been tested and optimized to speed up the design process. These predefined circuits are called IP cores, and are available from FPGA vendors and third-party IP suppliers (rarely free and typically released under proprietary licenses).In a typical design flow, an FPGA application developer will simulate the design at multiple stages throughout the design process. Initially the RTL description in VHDL or Verilog is simulated by creating test benches to stimulate the system and observe results. Then, after the synthesis engine has mapped the design to a netlist, the netlist is translated to a gate level description where simulation is repeated to confirm the synthesis proceeded without errors. Finally, the design is laid out in the FPGA at which point propagation delays can be added and the simulation run again with these values back annotated onto the netlist.The typical FPGA logic block consists of a 4-input lookup table (LUT), and a flip-flop, as shown in Figure 6.[3]Figure:6 Logic Block of FPGA5. ConclusionIn this paper, a Viterbi algorithm based on the strongly connected trellis decoding of binary convolutional codes has been presented. The use of error-correcting codes has proven to be an effective way to overcome data corruption in digital communication channels. The adaptive Viterbi decoders are modeled using VHDL, and post synthesized by Xilinx Design Manager FPGA logic. The design simulations have been done based on both the VHDL codes at RTL and the VHDL codes generated by Xilinx design manager after post synthesis.We can implement a higher performance Viterbi decoder with such as pipelining or interleaving. So in the future, with Pipeline or interleave the ACS and the trace-back and output decode block, we can make it better.References[1].”FPGA Design and Implementation of a Low-PowerSystolic Array-Based Adaptive ViterbiDecoder”,IEEE Transactions on circuits andsystemsi: regular papers, vol. 52, no. 2, February2005.[2]. ”A Parallel Viterbi Decoder for Block Cyclic andConvolution Codes”, Department of Electronicsand Computer Science, University of Southampton.April 2006[3]. ”A Dynamically Reconfigurable Adaptive ViterbiDecoder”, International Symposium on FPGA2002.[4]. ”A Reconfigurable, Power-Efficient AdaptiveViterbi Decoder”, This work was sponsored byNational Science Foundation grants.[5]. X.Wang and S.B.Wicker,”An Artificial NeuralNet Viterbi Decoder,” IEEEmunications,vol.44,no.2,pp.165-171,February 1996.[6]. D. Garrett and M. Stan, ” Low power architectureof the soft-output Viterbi algorithm,”Electronic-Letters, Proceeding 98 for ISLEPD 98, p 262-267, 1998.[7]. ”RTL implementation of Viterbi decoder”, Dept. ofComputer Engineering at Linkpings universitet.June 2006[8]. Ranjan Bose ,“Information theory coding andCryptography”, McGraw-Hill.[9]. G. Marcone and E. Zincolini. ”An efficient neuraldecoder for convolutional codes.” European Trans.Telecomm.,6(4):439-445, July-August 1995.[10]. J.G. Proakis. ”Digital Communications.”McGraw-Hill,second edition, 1989.[11]. A. J. Viterbi,”Convolutional codes and theirperformance in communication systems,” IEEETrans. Commun., vol. COM-19, pp. 751 -772,Oct.,1971.[12]. LM Dong, SONG Wentao, LIU Xingzhao, LUOHanwen, XU Youyun, ZHANG Wenjun ”Neural Networks Based Parallel Viterbi Decoder by Hybrid Design” Department of Electronic Engineering, Shanghai Jiaotong University. [13]. C. B. Shung, H-D. Lin, R. Cypher, P. H. Siege1and H. K. Thapar, ”Area-efficient architecture for the Viterbi algorithm Part 11: Applications,” IEEE Trans. Commun.,vol. 41, pp. 802-807, May 1993.[14]. Shuji Kubota, Shuzo Kato, Member, IEEE, andTsunehachi Ishitani, ”Novel Viterbi Decoder VLSI Implementation and its Performance.”IEEE Transactions on Communications, VOL. 41, NO. 8, AUGUST 1993.[15]. Stevan M. Berber, Paul J. Secker, Zoran A.Salcic, ”Theory and application of neural networks for 1/n rate convolutional decoders”,School of Engineering, The Department of Electrical and Computer Engineering, The University of Auckland,New Zealand.14 July 2005。