基于FPGA的交织器设计与实现-深圳大学电子科学与技术学院..doc
- 文档编号:30810010
- 上传时间:2024-01-30
- 格式:DOC
- 页数:23
- 大小:685.50KB
基于FPGA的交织器设计与实现-深圳大学电子科学与技术学院..doc
《基于FPGA的交织器设计与实现-深圳大学电子科学与技术学院..doc》由会员分享,可在线阅读,更多相关《基于FPGA的交织器设计与实现-深圳大学电子科学与技术学院..doc(23页珍藏版)》请在冰豆网上搜索。
深圳大学
本科毕业论文(设计)
题目:
基于FPGA的交织器设计与实现
姓名:
陈子聪
专业:
电子科学与技术
学院:
电子科学与技术
学号:
2005111111
指导教师:
刘春平
职称:
副教授
2009年5月20日
深圳大学本科毕业论文(设计)诚信声明
本人郑重声明:
所呈交的毕业论文(设计),题目《基于虚拟现实技术的滑盖手机外形件设计》是本人在指导教师的指导下,独立进行研究工作所取得的成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明。
除此之外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。
本人完全意识到本声明的法律结果。
毕业论文(设计)作者签名:
日期:
年月日
目录
【内容摘要】 1
【关键词】 1
1.引言 1
2.交织器的原理、分类与应用 1
2.1交织器的原理 1
2.2交织器的分类 1
2.2.1按交织对象分 1
2.2.2按交织方式可分 2
2.2.3随机交织器 3
2.3交织技术的应用 3
3.系统设计的软硬件环境 3
3.1QuartusII 3
3.2关于VHDL硬件描述语言 4
3.3关于FPGA元件可编程逻辑门阵列 5
4.交织器的FPGA实现 6
4.1设计流程 6
4.2设计思路 6
4.3设计中各模块的VHDL描述 8
4.3.17位计数器(地址产生器) 8
4.3.28x8的RAM 11
4.3.3伪随机码发生器 12
4.3.44选2选择器 13
5.系统的检验和仿真 14
6.总结 18
【参考文献】 18
致谢 19
【Abstract】 19
【Keywords】 19
深圳大学本科毕业论文——基于FPGA的交织器设计与实现
基于FPGA的交织器设计与实现
陈子聪学号:
2005111111
(深圳大学电子科学与技术学院电子科学与技术专业)
【内容摘要】数字信号在传输过程中通常总会遇到各种干扰而使信号失真,如大部分实际信道:
短波,散射等信道中,不可避免地会产生突发性错误,面对这类错误需要很长的码字,信道纠错编码是无能为力。
所以可以在信道编码后加入交织技术,使得突发错误被离散成随机错误,接收端就可以用较短的码字进行纠错。
文中介绍了一种基于FPGA实现8X8、按行一位输入,按列两位输出的交织器方法,主要思路为由伪随机码发生器产生数据源,地址产生器控制双8x8ram的读写地址顺序完成交织过程。
文中提供了交织器中各模版的VHDL详细语言描述,最后通过仿真验证了其可行性。
【关键词】交织器FPGAVHDLQUARTUSII伪随机码
1.引言
在现实数字通信中,为了提高通信的质量和可靠性,通常会对传输的信息进行纠错编码,然而信道编码仅仅在检测和校正单个差错和不太长的差错串时才有效。
但是实际上,信道中产生的错误往往是突发错误或突发错误与随机错误并存的,这就很可能超出了纠错码的纠错能力范围。
为了解决这个问题,人们想到如果首先把突发错误离散成随机错误,然后再去纠随机错误,那么系统的抗干扰性能就会进一步得到提高,由此交织器就应运而生了。
2.交织器的原理、分类与应用
2.1交织器的原理
交织器的作用就是将比较长的突发错误或多个突发错误离散成随机错误,即把错误离散化,使得交织前后的数据序列的相干性减少。
这样,在信息的传输过程中及时发生成串差错,恢复成一条相继比特串的消息时,差错也就变成单个离散的差错,从而进入了信道编码纠错功能力所能及的范围了。
2.2交织器的分类
数字通信中常用的交织器按照交织对象可以分为符号交织和比特交织,按照交织的方式可以分为伪交织和周期性交织。
2.2.1按交织对象分
比特交织:
比特交织是将N路并行的比特流中每一路的顺序按照不同得规则置换,这样交织后N比特数据与交织前比特间的对应关系是错位的。
符号交织:
符号交织则是对数据符号的位置按一定规则进行倒乱交织。
2.2.2按交织方式可分
伪随机交织器:
伪随机交织器实际上也可以看成是分组交织器,只是数据是经过伪随机排序处理的,要注意的是每个码元只能一次。
伪随机交织器由于没有固定的周期,对于各种信道特性均有很强的适应能力,尤其是当信道上存在对敌方的有意干扰时,更能显示其优越性,故多数应用于扩频通信和保密通信。
周期性交织器:
周期性交织器的交织排列关系是时间的周期函数。
有两种常用结构:
块交织和卷积交织。
它们都是同步交织器,每时刻存入一个数据,同时读出一个数据。
数字通信中一般采用的同步交织有两种:
1)块交织
1
2
…………
m
M+1
m+2
…………
2m
………
………
………
………
(n-1)m+1
(n-1)m+2
………
nm
按行输出
按列输出
图2-1块交织原理图
由图2-1可见,数据为被按行填入数据存储矩阵中,而在发送时却是按列读出的,这样就产生了对原始数据位以m个比特为周期进行分隔的效果。
这实际上是一个存储器阵列。
将数据按行写入,然后按列读出,完成交织。
在接收端解交织操作则是相反进行的,即是按列写入,按行读出。
这种形式的交织器结构简单,但是数据延迟时间长,所以需要的存储容量大。
2)卷积交织
(n2,n1)的卷积交织器满足如下要求:
在该交织器输出的任何一个长度为n2的数据串中不包含交织前原来数据序列中相距小于n,的任何两个数据。
显然,在发送端采用交织器,在接受端就要用解交织器把数据恢复过来。
可以证明(n2,n1)的交织器相对应的交织器自身是一个(n1,n2)的交织器。
对于(n1,n2)的卷积交织器来说,有两个性能是设计着所关心的:
一个是编码延迟D,它定义为从数据经过交织和解交织后所引起的最大延迟。
另一个是交织器和解交织器的存储容量S和Su个符号单元。
对于(n2,n1)的交织器有如下
关系:
D≧n2x(nl-1)
S+Su≧D
设计交织器时,希望其D和S,Su尽量小。
2.2.3随机交织器
随机交织器是最近刚刚兴起的一种交织器,其实也可以说它是随着Turbo码的产生而被日益广泛的应用起来的。
顾名思义,随机交织器应该实现的思想便是随机交织过程,但是现在所说的随机交织器大部分恰当的来讲应该称之为伪随机交织器。
这是因为译码器中的交织器是要与编码器中的交织器相对应的。
而分组交织器是以规则的顺序进行交织,所以在收发两端可以通过一定的协议来确定交织器的工作方式。
但是在采用了随机交织器的Turbo码系统中,由于对于每一组信息序列所产生的交织后的结果是随机性的,而译码器则要求对每帧数据都要有相应的交织顺序,所以在传输编码序列的同时,在信道上还要传输交织器的信息,这不仅会加大译码器的复杂度,而且也加大了信道负载,而且如果在中途若交织信息出现错误,则会使译码的误码增多,所以现在所采用的随机交织器都是伪随机的,是事先经过随机选择而生成的一种性能较好的交织方式,然后将其做成表的形式存储起来而进行读取的。
随机交织器主要分为:
s随机交织器,t随机交织器和s-t随机交织器。
2.3交织技术的应用
交织技术结合纠错码技术广泛应用于深空通信、卫星通信、移动通信,数字存储设备、数字电视等领域,交织技术的使用,极大提高了纠错码的纠错能力。
在MPEG-2视频标准中,使用了复杂的差错控制,特别是在DAB/DMB(DigitalAudio/MultimediaBroadcast).DVB(DigitalVideoBroadcast)中,使用7级联码。
深空信道,由于它可以近乎精确地模型化为无记忆AWGN(AdditiveWhiteGaussianNoise)信道,而且信道的频带资源丰富,其次是功率受限,由于传输距离远,信号衰减严重,需要采用纠错能力强的码。
数字电视传输系统,要求高可靠性和高效率,而数字信道和广播信道都是带限信道,为了提高在传播过程中的信号衰落,也采用了交织技术。
3.系统设计的软硬件环境
本次设计是在ALTERA公司提供的QUARTUSII软件平台下进行的,芯片选择CYCLONEII的EP2C35F672C6,并运用VHDL语言实现。
3.1QuartusII
QuartusII是Altera公司推出的CPLD/FPGA开发工具,QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
芯片(电路)平面布局连线编辑;
LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;
功能强大的逻辑综合工具;
完备的电路功能仿真与时序逻辑仿真工具;
定时/时序分析与关键路径延时分析;
可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;
支持软件源文件的添加和创建,并将它们链接起来生成编程文件;
使用组合编译方式可一次完成整体设计流程;
自动定位编译错误;
高效的期间编程与验证工具;
可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;
能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
3.2关于VHDL硬件描述语言
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。
但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为ANSI/IEEE的标准(IEEE STD 1076-1987)。
1993年更进一步修订,变得更加完备,成为ANSI/IEEE的ANSI/IEEE STD 1076-1993标准。
目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。
VHDL的英文全写是:
VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language.翻译成中文就是超高速集成电路硬件描述语言。
因此它的应用主要是应用在数字电路的设计中。
VHDL语言的结构
VHDL语言主要组成构件有设计实体(Entity)、结构体(Architecture)、子程序(FunctionProcedure)、集合包(Package)和库(Library),前四种称为可编译的设计单元。
一个VHDL设计就是有这四种构件的组成,编译之后将它们放在制定的库中共享。
其中,实体用于描述设计的接口界面信号,它规定端口数目,端口方向和端口类型。
它与硬件电路设计中的符号相对应。
而结构体指定设计的真实行为,性能和结构,与硬件电路设计中的原理图相对应。
子程序是可被调用的执行某一特定功能算法的集合。
集合包则是为了使常用的数据类型、常数和子程序对于其他设计块可用而集中充放的一批设计单元和约定。
设计实体
实体的定义语法为:
entity实体名is
[端口说明];
end实体名;
端口说明书写格式如下:
port(端口名{,端口名}:
方向数据类型名;
结构体
用于描述系统内部的结构和行为。
构造体部分定义了设计单元的具体功能(行为)。
构造体句法如下:
architecture构造体of实体is
[定义语句]内部信号,常数,数据类型,函数等的定义;
begin
[并行处理语句];
end构造体名;
3.3关于FPGA元件可编程逻辑门阵列
FPGA的原文是FieldProgrammableGateArray元件可编程逻辑门阵列,是一个含有可编辑元件的半导体设备,是一个可供使用者程式化的逻辑门元件。
目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)。
早在1980年代中期,FPGA已经在PLD设备中扎根。
CPLD和FPGA包括了一些相对大数量的可以编辑逻辑单元。
CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。
CPLD和FPGA的主要区别是他们的系统结构。
CPLD是一个有点限制性的结构。
这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。
这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。
而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。
CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。
一个因此有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。
允许他们的设计随着系统升级或者动态重新配置而改变。
一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行
4.交织器的FPGA实现
了解设计项目
4.1设计流程
构思设计方案
选择设计平台
不
通
过
语言编写
仿真与检验
设计成功
图4-1设计流程
4.2设计思路
时钟输入
本设计本设计中采用的是ALTERA公司的CYCLONEII系列的FPGA芯片EP2C35F672C6,VHDL语言描述,运用块交织的模式,按行向存储单元写入数据,按列从存储单元中读出数据,完成交织过程。
同步时钟
地址发生器
控制RAM读写地址
形成交织
图4-2设计思路图
时钟输入
输出信号(交织后)
输入信号
读写存储器
RAM
信号发生器
如图4-2所示,考虑到如果用单RAM读写数据,在写入数据的同时,不能读数据;在读数据的时候,不能写入数据。
这样处理数据不但浪费时间,而且读写效率低下。
因此采用双RAM为数据缓存,双RAM交替读写,当一个RAM按行写入时,另外一个RAM按列读出,以达到并行处理读写信号,提高了处理数据效率的要求。
在数据处理交织方式上,本设计采用的是地址发生器控制双RAM的读写地址的产生而形成交织。
这种方式不但易于理解和实现,同时也使得系统比较精简,稳定性提高。
下面以图4-34x4大小的RAM为模型,说明一下本设计中RAM的读写地址情况。
A1
A2
A3
A4
B1
B2
B3
B4
C1
C2
C3
C4
D1
D2
D3
D4
列地址
00011011
00
图4-3
4x4模型
01
行地址
10
11
一位按行写地址的顺序为:
0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111.
则信息写入顺序为:
A1,A2,A3,A4,B1,B2,B3,B4,C1,C2,C3,C4,D1,D2,D3,D4.
两位按列读地址的顺序为:
0000,0100,1000,1100,0010,0110,1010,1110.
0001,0101,1001,1101,0011,0111,1011,1111.
则信息读出顺序为:
A1,B1,C1,D1,A3,B3,C3,D3.
A2,B2,C3,D4,A4,B4,C4,D4.
在本设计中8x8的交织器,我们运用了7位计数器产生读写地址与读写控制端。
则用低6位确定地址单元,高1位控制读写状态。
4.3设计中各模块的VHDL描述
下面是设计的顶层原理图:
图4-4顶层原理图
如图4-4所示,器件1为7位计数器提供读写地址,器件2为伪随机码发生器提供传输数据,器件3、4为RAM起数据缓存作用,器件5为选择器提供4选2功能。
4.3.17位计数器(地址产生器)
图4-5七位计数器
程序中使用了两个proecss,第一个process进程中的输出的为一位写地址,第二个process进程中输出为双线一位读地址,即两位地址。
Rst为复位输入端,高电平有效;Clk为时钟输入;output为ram提供写地址;control为读写控制端;scan,scan1为双线读地址。
7位计数器的VHDL描述如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycounteris
port(rst,clk:
instd_logic;
output:
outstd_logic_vector(5downto0);
control:
outstd_logic;
scan,scan1:
outstd_logic_vector(5downto0));
endentitycounter;
architecturebehaveofcounteris
signaltemp2:
std_logic_vector(6downto0);
begin
process(rst,clk)
variabletemp1:
std_logic_vector(6downto0);
begin
ifrst='1'thentemp1:
=(others=>'0');
else
ifclk'eventand(clk='1')and(clk'last_value='0')then
iftemp1<127then
temp1:
=temp1+1;
else
temp1:
=(others=>'0');
endif;
endif;
endif;
control<=temp1(6);――――高1位赋给控制端
output<=temp1(5downto0);――――低6位为RAM提供写地址
endprocess;
process(rst,clk)――――这一进程提取奇数列地址
variablek:
std_logic_vector(6downto0);
begin
ifrst='1'thenk:
=(others=>'0');
else
ifclk'eventand(clk='1')and(clk'last_value='0')then
ifk>=62then
k:
=(others=>'0');
elsifk>=56then
k:
=k-54;
elsek:
=k+8;
endif;
endif;
endif;
temp2<=k+1;――――提取偶数列地址
scan(5)<=k(5);
scan(4)<=k(4);
scan(3)<=k(3);奇数列地址赋予scan端输出
scan
(2)<=k
(2);
scan
(1)<=k
(1);
scan(0)<=k(0);
scan1(5)<=temp2(5);
scan1(4)<=temp2(4);
scan1(3)<=temp2(3);偶数列地址赋予scan1端输出
scan1
(2)<=temp2
(2);
scan1
(1)<=temp2
(1);
scan1(0)<=temp2(0);
endprocess;
endarchitecturebehave;
图4.-6
上图4-6为7位计数器仿真情况,时钟周期设置为10ns,复位端使用低电平。
Control为低电平,给ram“写”指示。
Rst为低电平,不工作状态。
可以看到,output(写地址)按照行顺序输出。
Scan,scan1(双线读地址)按照列输出
图4-7计数器仿真结果
上图4-7所示,时钟周期用10ns模拟,control在output显示63后,从低电平变为高电平,表示ram读写状态的转变。
即ram1如果在output计数到63前为写状态,则63后变为读状态。
4.3.28x8的RAM
图4-88x8ram
Addr输入对应计数器的outpu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 交织 设计 实现 深圳大学 电子 科学 技术学院