利用VHDL实现卷积码编码_第1页
利用VHDL实现卷积码编码_第2页
利用VHDL实现卷积码编码_第3页
利用VHDL实现卷积码编码_第4页
利用VHDL实现卷积码编码_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

专业课程设计报告题目:利用VHDL实现(2,1,2)卷积码编码姓名:专业:通信工程班级学号:同组人:指导教师:南昌航空大学信息工程学院2017年6月27日

专业课程设计任务书专业课程设计任务书20丝一2017学年第2学期第17周一19周题目利用VHDL实现(2,1,2)卷积码编码内容及要求设计一个(2,1,2)卷积码编码器。在FPGA上用VHDL硬件描述语言实现上述编码器和译码器。通在试验箱上过拨码开关输入信息序列,观察编码输出(即指示灯的亮灭)进度安排第17周:查阅资料,确定方案,完成原理图设计及仿真;第18周:领取元器件、仪器设备,制作、焊接电路,调试电路,完成系统的设计;第19周:检查设计结果、撰写课设报告。学生姓名:指导地点:E楼610室指导时间:第17〜19周指导地点:E楼610室任务下达2017年6月12日任务完成2017年6月30日考核方式1.评阅切2.答辩口3.实际操作□4.其它口指导教师夏思满系(部)主任徐新河指导教师夏思满系(部)主任徐新河摘要在现代数字通信中,为降低数据传输的误码率,提高通信质量及其可靠性,常在通信中采用纠错编码技术。其中卷积码就是一种具有较强纠错能力的纠错码。由于Vitebrbi译码算法比较容易实现,卷积码得到了广泛应用。本课题简明地介绍了用EDA技术实现卷积码编码器的实现。卷积码纠错性能常常优于分组码,是一种性能优越的信道编码。由于码字之间的相关性,其编码器要利用移位寄存器来存储状态。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。卷积码作为通信系统中重要的编码方式,以其良好的编码性能,合理的译码方式,被广泛应用。本文在阐述卷积码编码器基本工作原理的基础上,给出了(2,1,2)卷积编码器的VHDL设计,在QuartusII环境下进行了波形功能仿真,并下载到EP1C6T144C8N芯片上进行验证,最终实现输入四位序列,编码输出八位通过指示灯显示。关键词:卷积码QuartusIIEP1C6T144C8N目录:TOC\o"1-5"\h\z摘要4目录:5\o"CurrentDocument"第一章系统设计要求6\o"CurrentDocument"1.1系统设计要求6\o"CurrentDocument"第二章系统组成与工作原理6\o"CurrentDocument"2.1系统组成6\o"CurrentDocument"2.2编码器设计原理6\o"CurrentDocument"2.2.1结构图法描述编码器72.2.2(2,1,2)卷积码的状态转移图8\o"CurrentDocument"第三章编码器设计方案与对比选择9\o"CurrentDocument"第四章VHDL语言实现及仿真调试10\o"CurrentDocument"4.1编码器电路设计104.2VHDL描述编码器11\o"CurrentDocument"4.2调试12\o"CurrentDocument"第五章FPGA编程下载15\o"CurrentDocument"第六章实验心得16\o"CurrentDocument"参考文献17卬GA适配第一章系统设计要求1.1系统设计要求设计一个(2,1,2)卷积码编码器。卬GA适配在FPGA上用VHDL硬件描述语言实现上述编码器和译码器。通在试验箱上过拨码开关输入信息序列,观察编码输出(即指示灯的亮灭)第二章系统组成与工作原理2.1系统组成VHDL艾掳胃i2.2编码器设计原理卷积码也是分组码,但它的监督码元不仅与本组的信息码(k位)有关,而且还与前面若干组(m组)的信息码元有关。用(n,k,m)表示。卷积编码的原理框:□2-1□□□□□□□卷积编码的编码约束长度定义为:串行输入比特通过编码其所需的移位次数,它表示编码过程中相互约束的分支码数,所以具有m级移位寄存器的编码器得约束长度为m十1,有时也说(m十1)n为卷积编码的编码约束长度。与分组编码一样,卷积编码的编码效率也定义为R=k/n,与分组码具有固定码长n不同,卷积码没有,我们可通过周期性地截断来获得分组长度。为了达到清空编码移位寄存器数据bit的目的,需要在输入数据序列末尾附加若干0bit。由于附加的0不包含任何信息,因而,有效编码效率降至k/n以下,如果截断周期取值较大,则有效编码效率会逼近k/n。2.2.1结构图法描述编码器卷积码编码器主要由移位寄存器和模2加法器组成,(2,1,2)卷积码编码器结构图如下:□2-2-1□ZJZIIIIIIIIII

2.2.2(2,1,2)卷积码的状态转移图该状态图描述了编码器每输入一个信息元时,编码器各可能状态以及伴随状态的转移所产生的分支码字。输出分支字—*输入比特。输出分支字—*输入比特。.输人比特L图2-2-2(2,1,2)卷积编码器状态转移图图中的小框表示寄存器的状态,连接小框的箭头表示状态转移的方向,两线旁的数字表示:输出分支码字/输入信息比特。状态图简明的表示了在某一时刻编码器的输入比特和输出分支码字的关系。2.2.3(2,1,2)卷积码的生成多项式•卷积码编码器第i条支路的生成多项式g(i)(D)=g0(i)+g](i)D+g2(i)D2+...+gk(i)Dk,对于(2,1,2)卷积码其生成多项式为:g⑴(D)=1+D+D2,g(2)(D)=1+D2,a+aD+aD2+...+aDn—1012N—1,输出序列可根据v(D)=g⑴(D)/士白a,a,a.....a、lu石下^^二^习_»一,卜\一信息序列a=(o12n—1)也可表示为a(D)=相应的第a+aD+aD2+...+aDn—1012N—1,输出序列可根据v(D)=g⑴(D)•该(2,1,2)卷积码,一位输入有两位输出,两位都是检验位,信息位被隐藏。生成多项式为g1=x2+x+11110生成多项式为g1=x2+x+11110001100000000生成矩阵为G=111

0g2=x2+1100011110011生成矩阵每一行都是码字,即分别是1000,0100,0010,0001四种输入的编码输出,输入其他任意四位序列,其编码输出可以由对应行模2加得到。以输入序列1101为例,其编码过程如下:时刻110000输入:以输入序列1101为例,其编码过程如下:时刻110000输入:1101=1000㊉0100㊉0001输入:揄出;110输出:11101000=11101100㊉00111011㊉00000011第三章编码器设计方案与对比选择根据前面对卷积码的描述,实现(2,1,2)编码器主要采用以下两种方案•方案一:(2,1,2)卷积码总共只有四种状态,对其采用二进制编码00,01,10,11,任意时刻输入0/1,其输出都在四种状态间跳转。利用编码后的状态作为输出显示。•方案二:用(2,1,2)卷积码两个生成多项式分别与输入信号卷积得到两位编码输出。其间要设置寄存器的状态,并在输入时刻实现寄存器的移位功能。最终通过模2加得到两位输出再通过中间存储输出最终序列。实验箱上通过一位拨码开关控制输入,两个指示灯显示编码输出的跳换。•对比选择两种方案的VHDL语言实现都较为简单。都需要最初控制复位信号对寄存器清零。但是最终实现下来,发现方案一较为局限。虽然仿真结果成功,输入任意随机序列,可以达到编码效果,但是在实验箱上控制发现,因其只有一个输入,所以只用通过一位拨码开关实现输入,而实验箱上时钟频率过高,最后分频虽然能得到正确的编码输出,但输入太局限只能是一串i或0,最终显示灯停在io或者00状态,想要实现输入任意序列对时钟频率的要求过高,短时间难以实现。而方案二通过改进,实现起来简单,可以直接通过四个拨码开关控制输入,显示灯直接显示8位编码后的输出。所以综合优缺点,最终以方案二进行设计。第四章VHDL语言实现及仿真调试4.1编码器电路设计(2,1,2)卷积码编码器模型图4.2VHDL描述编码器libraryieee;useieee.std_logic_arith.all;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjuanji1isport(clk,rst:instd_logic;d:instd_logic_vector(3downto0);s:outstd_logic_vector(9downto0));endentity;--编码器输入输出端口architecturebehaveofjuanji1issignaltemp:std_logic_vector(9downto0);signalc1:std_logic_vector(4downto0);signalc2:std_logic_vector(4downto0);--中间变量,存储输出signalm:std_logic_vector(2downto0);--寄存器状态存储signaln:integerrange0to7;--signalrst1:std_logic;--只截取一次编码输出,截断后面的编码--signalcnt:std_logic_vector(3downto0);begin--process(rst,clk)--begin--if(clk'eventandclk='1')then--if(cnt(3)='0')then--rst1<='0';--cnt<=cnt+1;--else--rst1<='1';--endif;--endif;--elsif(rst='1')then--rst1<='1';--endif;--endprocess;--控制复位信号,截断后续编码process(rst,clk)beginif(rst='1')thenm<="000";n<=0;--寄存器初始清零else

if(clk'eventandclk='1')thenm(0)<=m(1);m(1)<=m(2);m(2)<=d(n);--时钟上升沿输入一位信息temp(2*n)<=c1(n);temp(2*n+1)<=c2(n);--暂存输出n<=n+1;endif;endif;endprocess;c1(n)<=m(0)xorm(1)xorm(2);c2(n)<=m(0)xorm(2);--编码输出逻辑描述s<=temp;endbehave;4.2调试c1(n)<=m(0)xorm(1)xorm(2);c2(n)<=m(0)xorm(2);ELeedl:QuartuaIIAnalyaiaELeedl:QuartuaIIAnalyaia&SyntheaiawasunauGGeaaful.2errdes,0warninga+]Q后查书发现,这两句属于简单信号赋值语句,属于并行语句,要放在结构体中,进程中是顺序语句,所以出错。修改后虽然编译成功,也能仿真,但是8位输出中,前两位始终是0,而第四个信息位并没有实现编码,这是因为结构体中这两句复制信号并行执行,所以最开始就会把最低两位赋值,始终占据最低两位。要想最后一位也编码,必须扩大输出,最终将8位输出扩大为10位后,成功得到编码。仿真如下:.11,•JpiLDDm30.Dnx30Dni40ni.J5elk曰d讶1ml--疯-dM-dM质目昨日f3t1回!coiolo1]i»由上个仿真结果清楚地看到,虽然得到正确编码,但因为复位信号的无效,所以

一直在输入状态,编码并不止一次,而由于卷积码编码是利用码字之间的相关性,后续编码实在是不好分析,最终通过控制复位信号实现截断,使之只产生一次编码,最终仿真如下:图仿真实现了输入图仿真实现了输入1101,输出11010100。•后续编码分析(不截断)三EhliI戢虹cHEbTrrrSwHEbTrrrSw(f,~~=为正确分析后续编码,将中间变量n添加进来。temp(n)是个一维数组型变量,用来暂存输出。n是个整形变量范围是04;quartus中自动用三位二进制数表示,三位二进制最大可以表示8个数,按照我们设定的temp的值,n只能取其中的五个数。分析后发现,其取了n为001,010,011,100,101时刻的值对应为0,1,2,3,4,之后赋值输出。n寄存器状态输出输出的存储000000S0S1110011S2S3201010S4S5310100S6S7411001S8S9

511110不输出601101不输出710100不输出011001S0S1111110S2S3201101S4S5310100S6S7411001S8S9511110不输出601101不输出710100不输出011001S0S1111110S2S3201101S4S5310100S6S7411001S8S9511110不输出601101不输出710100不输出011001S0S1111110S2S3201101S4S5310100S6S7411001S8S9511110不输出601101不输出710100不输出011001S0S1・・・・・・・・・・因为第一次编码后并没有实现寄存器清零,在每个时钟上升沿到的时候都会实现寄存器的移位,输入并进去,而由于n和temp的范围界定,当n为5,6,7时中间寄存器已满,所以输出赋值不进去,在仿真中也能看到在110,111,000三个时钟上升沿到来时,输出维持之前5个时刻的值不变,而当等到n计数完恢复为最原始的0时,temp再次开始存储,而此时寄存器由于保持之前的状态,在此状态的基础上,实现后续编码。最终输出稳定是由于输入不断的补入,实现循环。从上表也可以清楚地看到。第五章FPGA编程下载仿真出实验结果后,利用FPGA开发板进行适配与编程下载。该编码器主要用到了实验箱上的拨码开关与指示灯。而与实验箱配套的是Quartus13.0,首次下载配置上很复杂.首先,选用本次试验用到的芯片EP1C6T144C8N进行管脚配置,如下:端口号引脚号功能rstPin27拨码开关8d[0]Pin36拨码开关1d[1]Pin35拨码开关2d[2]Pin34拨码开关3d[3]Pin33拨码开关4s[2]Pin59LED10(低亮)s[3]Pin58LED11(低亮)s[4]Pin56LED12(低亮)s[5]Pin57LED13(低亮)s[6]Pin53LED14(低亮)s[7]Pin52LED15(低亮)s[8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论