工学FPGA电路设计实例_第1页
工学FPGA电路设计实例_第2页
工学FPGA电路设计实例_第3页
工学FPGA电路设计实例_第4页
工学FPGA电路设计实例_第5页
已阅读5页,还剩172页未读 继续免费阅读

下载本文档

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

文档简介

工学FPGA电路设计实例第1页/共177页8.1m序列产生器

在扩展频谱通信系统中,伪随机序列起着十分关键的作用。在直接序列扩频系统的发射端,伪随机序列将信息序列的频谱扩展,在接收端,伪随机序列将扩频信号恢复为窄带信号,进而完成信息的接收。因此,伪随机序列产生器是扩频系统的核心单元。在实际的扩频通信系统中,伪随机序列一般用二进制序列表示,每个码片(即构成伪随机序列的元素)只有“1”和“0”两种取值,分别对应电信号的高电平和低电平。第2页/共177页m序列又称为最长线性反馈移位寄存器序列,该序列具有很好的相关性能,所以在直接序列扩频系统中应用十分广泛。m序列的产生比较简单,可以利用r级移位寄存器产生长度为2r-1的m序列。m序列产生器的结构主要分为两类,一类称为简单型码序列发生器(SSRG,SimpleShiftRegisterGenerator),另一类称为模块型码序列发生器(MSRG,ModularShiftRegisterGenerator)。第3页/共177页

图8.1给出了这两种产生器的基本结构,其中(Cr,Cr-1,...,C0)和(D0,D1,...,Dr)为反馈系数,也是特征多项式系数。这些系数的取值为“1”或“0”,“1”表示该反馈支路连通,“0”表示该反馈支路断开。第4页/共177页图8.1m序列产生器的两种结构第5页/共177页r级移位寄存器的反馈路径由m序列的特征多项式决定,对于SSRG结构,m序列特征多项式的一般表达式为

fSSRG(x)=Grxr+Cr-1xr-1+...+C3x3+C2x2+C1x1+C0x0

(8-1)对于MSRG结构,m序列特征多项式的一般表达式为

fMSRG(x)=D0xr+D1xr-1+...+Dr-3x3+Dr-2x2+Dr-1x1+Drx0(8-2)第6页/共177页

可以看出,SSRG结构的特征多项式系数

(Cr,Cr-1,...,C0)与MSRG结构特征多项式系数(D0,D1,...,Dr)之间的对应关系为

Ci=Dr-i,其中i=0,1,2,...,r

特征多项式系数决定了一个m序列的特征多项式,同时也就决定了一个m序列。表8.1给出了部分m序列的反馈系数,这些反馈系数实际上就是m序列特征多项式系数的八进制表示。第7页/共177页

例如想要产生一个码长为31的m序列,码序列产生器的寄存器级数为5,从表8.1中查到有“45、67、75”三个反馈系数,可从中选择反馈系数“45”来构成m序列产生器。反馈系数“45”是一个八进制数,转换为二进制数为“100101”,这就是特征多项式的系数,对于SSRG结构,特征多项式系数的取值为

C5=C2=C0=1,C4=C3=C1=0

对于MSRG结构,特征多项式系数的取值为

D5=D3=D0=1,D4=D2=D1=0第8页/共177页表8.1m序列产生器反馈系数表寄存器级数厂m序列长度m序列产生器反馈系数37134152353l45,67,75663103,147,1557127203,211,217,235,277,313,325,345,3678255435,453,537,543,545,551,703,74795111021,1055,1131,t157,1167,11751010232011,2033,2157,2443,2745,3471ll20474005,4445,5023,5263,6211,736312409510123,11417,12515,13505,14127,1505323261,24633,30741,32535,37505第9页/共177页寄存器级数rm序列长度m序列产生器反馈系数141638342103,51761,55753,60153,71147,674011532767100003,110013,120265,133663,142305,1647051665535210013,233303,307572,311405,347433,37521317131071400011,411335,444257,527427,646775,714303182621431000201,1000241,1025711,1703601195242872000047,2020471,2227023,2331067,2570103,36103532010485754000011,4001051,4004515,600003l第10页/共177页

根据特征多项式的系数可以构造出该m序列,图8.2是采用SSRG结构的m序列产生器电路。在这里,利用D触发器级联的方式完成移位寄存器的功能。在系统清零后,D触发器输出状态均为低电平,为了避免m序列产生器输出“全0”信号,图8.2在“模二加”运算后添加了一个“非门”,这与图8.1中SSRG典型结构稍有不同。图8.3是该电路的仿真波形,“CLRN”为系统清零端(低电平有效),“CLK”为输入时钟,“OUT”为m序列输出端口。图中还给出了“A、B、C、D”四个节点的波形,从这些点均可得到同一m序列,只是序列的初始相位不同。第11页/共177页图8.2SSRG结构的m序列产生器第12页/共177页图8.3SSRG结构m序列产生器的仿真波形第13页/共177页

图8.4是采用MSRG结构实现的m序列产生器,图中在每个D触发器的输出端口上加了一个“非门”,使系统清零后各级D触发器的初始状态均为高电平,这样做同样可以避免输出“全0”情况的出现。图8.5是该电路的仿真波形。第14页/共177页图8.4MSRG结构的m序列产生器第15页/共177页图8.5MSRG结构m序列产生器的仿真波形第16页/共177页m序列虽然有很好的伪随机性和相关特性,但是数量太少,而基于m序列产生的Gold码继承了m序列的许多优点,更重要的是Gold码序列的数量较多,因此广泛应用于扩频通信系统中。利用m序列产生器可以很容易地构造出Gold码产生器,篇幅所限,这里就不详细介绍了,感兴趣的读者可参阅有关文献。第17页/共177页8.2

任意序列产生器m序列产生器的结构可由特征多项式得到,但对于非m序列的产生电路的设计就比较复杂。很多有关脉冲与数字逻辑电路设计的书籍中都介绍了任意序列产生器的结构设计,如移存型序列产生器和计数器型序列产生器。这些方法虽然能够以最少的硬件产生所需的序列,但在设计时需要写出状态转移表,并通过组合逻辑运算产生所需序列。如果序列很长的话,整个设计过程是非常繁琐的,而且输出信号有可能出现毛刺。第18页/共177页

利用FPGA器件产生任意序列有很多种方法,上面提到的移存型和计数器型序列产生器的设计方法当然是可行的,但在这里将介绍一种存储型任意序列产生器的设计方法。在设计存储型任意序列产生器时,设计人员不需要写状态转移表,也不需要进行组合逻辑运算,设计十分简便,而且不会出现逻辑冒险,保证了输出序列的质量。第19页/共177页

存储型任意序列产生器就是将所需的序列事先存储到序列产生器中,序列产生器在时钟的激励下将存储的序列循环输出。它有两种实现形式,一种是利用移位寄存器实现,另一种是基于查找表(利用FPGA内的存储器)实现。

“00110000011111011010100100010111”是一个长度为32位的伪随机序列,下面就分别利用移位寄存器和查找表设计该序列的产生器。第20页/共177页

图8.6是基于寄存器的32位任意序列产生器电路,它将4个8位并入串出移位寄存器“cshifreg”模块级联,构成一个32位循环移位寄存器。32位数据放在寄存器的输入端口上,其中“0”接“GND”,为低电平信号,“1”接“VCC”,为高电平信号。当“STLD”为低电平时,时钟脉冲将32位数据并行送入移位寄存器中,当“STLD”保持为高电平状态时,在时钟信号的激励下,32位数据在移位寄存器内循环移位,同时序列从“DATAOUT”端口输出。图8.7给出了仿真波形。第21页/共177页图8.6基于寄存器的32位任意序列产生器第22页/共177页图8.7基于寄存器的32位任意序列产生器仿真波形第23页/共177页

图8.8是基于查找表的32位任意序列产生器,整个电路由两部分组成:地址产生器和基于ROM的查找表。

“lpm_rom”的参数设置为

LPM_WIDTH=1LPM_WIDTHAD=5LPM_FILE=e:\max2work\m.mif

在“m.mif”文件中,从32位序列“00110000011111011010100100010111”的MSB到LSB依次对应地址“00000~11111”。第24页/共177页

地址产生器由“8count”构成,在时钟的激励下,“8count”的“QE~QA”端口循环产生信号“00000~11111”,将该信号作为地址信息在ROM中寻址,从而将32位序列从查找表中依次读出。第25页/共177页图8.8基于查找表的32位任意序列产生器第26页/共177页

图8.9是基于查找表的32位任意序列产生器仿真波形。“A[4..0]”是地址信号,取值区间是“00000~11111”,它与查找表中的32位数据一一对应。存储型任意序列产生器与移存型和计数器型序列产生器相比较,设计过程十分简单,但需要消耗较多的硬件,如触发器和存储器。由于FPGA拥有大量的逻辑单元和存储单元,因此FPGA器件非常适合于实现存储型任意序列产生器。在存储型任意序列产生器两种实现形式中,基于移位寄存器的实现方法,适于产生码长较短的序列,而基于查找表的实现方法,适于产生码长较长的序列。第27页/共177页图8.9基于查找表的32位任意序列产生器仿真波形第28页/共177页

8.3

数字相关器

数字相关器在通信信号处理中实质上是起到数字匹配滤波器的作用,它可对特定码序列进行相关处理,从而完成信号的解码,恢复出传送的信息。数字相关器与模拟相关器相比,其灵活性强、功耗低、易于集成,广泛用于帧同步字检测、扩频接收机、误码校正以及模式匹配等领域。数字相关器一般包括:输入序列移位寄存器、参考序列移位寄存器、相关运算阵列和相关求和网络。图8.10给出了数字相关器的结构框图。第29页/共177页图8.10数字相关器结构框图第30页/共177页

在数字相关器工作时,参考序列首先被送入参考序列移位寄存器中,而输入数据流则在时钟驱动下被送入输入序列移位寄存器中。相关运算阵列对输入序列与参考序列之间进行相关运算,输入序列移位寄存器每更新一位数据,相关运算阵列就进行一次相关运算,然后将相关运算结果送入相关求和网络,由相关求和网络计算出相关值。第31页/共177页

一般情况下,相关求和网络输出的相关值还需要与一个检测门限做比较,判断是否出现相关峰。当求和网络计算出的相关值高于检验门限时,就认为出现了相关峰。因此,检测门限的高低决定了相关峰虚警检测概率和漏警检测概率的大小。所谓虚警是指没有相关峰时,相关器误认为此时有相关峰出现,而漏警则是指当相关峰出现时,相关器误认为此时没有相关峰。最理想的情况是相关峰检测的虚警概率和漏警概率都较小,这样就能得到可靠的判决结果,但是虚警概率和漏警概率不会同时减小。第32页/共177页

如果把检测门限设置得较低,漏警概率降低,但虚警概率增大,反之,如果提高检测门限,虚警概率降低,但漏警概率却增大了。例如相关数据长度为32位,如果把门限设为32,则不会发生虚警,但是如果这32位中任意一位数据在传输中发生差错,即使有相关峰出现,由于此时的相关峰值低于32,就会误认为此时没有相关峰,以至于发生漏警。第33页/共177页

合理设置检测门限,在相关器的虚警概率与漏警概率之间取一个折衷值是十分必要的,这样既不会明显降低相关器性能,又使得通信系统能够容忍少量的传输错误。在实际应用中,数字相关器前端一般都有一个预处理电路,如完成对接收信号的数字化处理、防混叠滤波、下采样等,进入到数字相关器中的样点值是用一定字长的二进制数表示的。本地参考序列如果包含有幅度信息的话,它的各个样点也是用一定字长的二进制数来表示的。第34页/共177页

输入数据序列与本地参考序列做相关运算,实际上就是这两个序列的对应位做乘法运算,然后再利用求和网络得到相关值。最简单的一种情况是序列中的各个样点都用一位二进制数表示,这样就可以用逻辑运算(如模二加)来取代复杂的乘法运算。第35页/共177页

我们知道,帧同步字用于指示帧的起始位置或结束位置,在典型的数字通信系统中,接收机需要在已解调的数据流中搜寻帧同步字,以确定帧的位置和帧定时信息。将数字相关器用于帧同步字检测的方法,特别适用于突发通信协议,如TDM。数字相关器是实现快速同步和锁定数据突发的关键。下面以一次群信号的帧同步字检测为例,讨论数字相关器的基本设计方法。第36页/共177页

根据CCITTG.732建议,A律30/32路(一次群)TDM-PCM传输标准的一个复帧包含16帧,一帧长为125μs,每一帧含256位,分成32个时隙(时隙0~时隙31),每个时隙包含8位数据。帧分为奇数帧和偶数帧,偶数帧时隙0的后7位为帧定位信号(FAS,FrameAlignmentSignal)“0011011”。也就是说,相邻的两个帧有一个帧同步码,相邻两个帧定位信号间距为512位。对一次群进行分接,首先要实现帧头的捕获,帧头捕获电路采用的数字相关检测方法,是数字相关器的一个典型作用。第37页/共177页表8.2一次群帧同步码检测电路引脚

引脚

功能DATAIN

数据输入CLK

数据时钟输入CLRN

系统复位端口DETECTION

相关峰信号输出SIGl

显示相关峰极性SIG0第38页/共177页

图8.11是一次群帧同步码检测电路,其中与“VCC”相连的线处于高电平,为“1”;与“GND”相连的线处于低电平,为“0”。表8.2给出了一次群帧同步码检测电路的引脚说明。该电路可以有效地检测出一次群信号数据流中的特殊码字“0011011”。输入一次群数据流首先进入7位移位寄存器中,然后与本地参考序列“0011011”的对应位进行“异或”逻辑运算,然后再统计7位输出结果中“1”和“0”的数目。第39页/共177页

需要指出的是,在二进制数据传输中,高电平信号“1”与低电平信号“0”只是一个相对的概念。如果相关结果全部为“1”,表明出现了相关峰;如果相关结果全部为“0”,同样也表明出现了相关峰,只不过是极性发生了翻转。认识到这一点,对于检测门限的设置是十分重要的。第40页/共177页

为了简便起见,这里将相关峰检测门限设为7,也就是说只有在输入数据流中出现“0011011”或“1100100”字段时,才会判决输出正或负的相关峰。因此在图8.11中用一个七输入的“与门”完成正极性相关峰的检测,用一个七输入的“或非门”完成负极性相关峰的检测。输出引脚“SIG1”和“SIG0”分别表示相关峰的极性,当出现正相关峰时,“SIG1”为高电平;当出现负相关峰时,“SIG0”为高电平。一次群帧同步码检测电路的波形仿真结果如图8.12所示,其中分别仿真了输入数据流中出现“0011011”和“1100100”字段时检测电路的输出结果。第41页/共177页图8.11一次群帧同步码检测电路第42页/共177页图8.12一次群帧同步码检测电路仿真波形第43页/共177页

由于参考序列“0011011”是一个固定序列,因此在电路设计中没有使用参考序列移位寄存器,这样可以节省片内资源。如果要求参考序列是可在线编程的,就需要将参考序列放入到移位寄存器中,以便实时更新。在上面的例子中,将相关峰检测门限设置为7是一种最简单的情况,在实际应用中如果将相关峰的检测门限设置为其它值,就需要用计数器或其它逻辑电路来统计相关结果中“1”或“0”的数目,从另一个角度看,也就是要计算相关结果的汉明距离。有关汉明距离的电路计算方法,将在8.4节中做详细介绍。第44页/共177页

8.4

汉明距离的电路计算

汉明距离是编码理论中的一个重要概念,它的定义是两个长为N的二元序列S和U之间对应位不相同的位数,用d(S,U)来表示。第45页/共177页

在扩频通信和数字突发通信(如TDMA)系统中,接收机进行的数字相关检测或独特码(UW)检测,实际上就是计算本地一组确定序列与接收到的未知序列之间汉明距离的过程。将汉明距离与事先确定的门限相比较,就可以得到检测结果,检测器结构如图8.13所示。设检测的序列长度为N,本地码型确定的序列为

U=(U1,U2,…,UN)第46页/共177页

图8.13检测器结构图第47页/共177页

接收机将接收到的数据连续不断地送入N位串行移位寄存器中,任一瞬间移位寄存器的内容为

S=(S1,S2,…,SN)

S与U的对应位进行模二加,当S与U的对应位相同时结果为“0”,不同时结果为“1”,最后得到

D=(D1,D2,…,DN)其中

Di=SiUi

(i=1,2,···,

N)

(8-3)第48页/共177页

序列D中“1”的数目就是S与U之间的汉明距离,可表示为(8-4)

二元序列D是序列S与U的比较结果,要得到汉明距离的数值,必须从序列D中计算出“1”的个数,其电路的实现方法有多种,下面一一进行分析。第49页/共177页

8.4.1

计数法在某一时刻,我们得到了一个二元序列D=(D1,D2,…,DN),它存在的时间基本上为一个时钟周期,在下一个时钟到来时,由于序列S发生了变化,从而将序列D更新。为了计算出每一个时钟周期内序列D中“1”的数目,首先将序列D并行送入一个“并入串出”的N位移位寄存器中,然后用一个高速时钟将数据送出,同时利用计数器来统计“1”的数目,最后用清洗脉冲将计数器清零,为下一周期的计数做好准备,参见图8.14。第50页/共177页

假设接收到的数据速率为R0,每位时间宽度为T0,则有

(8-5)由此可以确定计数时钟的最低速率为

(8-6)周期为(8-7)第51页/共177页

计数法的实现电路比较简单,但是当数据速率R0较高或N值较大时,计数时钟的速率R会很大,导致电路难以实现。因此,这种方法适合于低速数据,码序列不宜很长,而且需要有高速率的时钟和高速器件。第52页/共177页图8.14计数法原理图第53页/共177页8.4.2

逻辑函数法将序列D作为逻辑函数的输入变量,汉明距离作为输出变量,则输出变量的个数I为:

I=INT(log

2N)+1

(8-8)这里,N为序列D的长度,INT(X)表示取X的整数部分。根据输入变量值写出对应的输出变量值,得到其真值表,从而建立逻辑函数表达式。第54页/共177页

但它不是最简的,通常采用公式法或卡诺图法对其进行简化,得到最简的逻辑计算电路。在N值较大的情况下可采用系统简化法(又称Q-M法),这种方法适用于化简任意多变量的函数,并且具有较严格的算法,可以将此函数的简化问题编程,借助于计算机进行化简。第55页/共177页

逻辑函数法的计算电路使用了大量的与或非门,其计算速度决定于信号通过逻辑门的延迟时间及布线距离的长短,一般说来,可以达到较高的计算速度。但是随着N的增大,计算电路将越来越复杂,并且N值不同,实际电路结构也不相同,必须重新设计。同时,在电路设计中,必须消除逻辑冒险。第56页/共177页

8.4.3

查找表法所谓查找表法,就是将存储器做成一个查找表,把序列D作为地址信号,从表中查找出其对应的汉明距离。图8.15说明了这种方法。序列D的长度为N,存储单元的数据宽度为P,则

P=INT(log

2N)+1

(8-9)从而要求存储器的容量M为

M=2N×P

(8-10)第57页/共177页图8.15查找表法第58页/共177页

可见,随着序列长度N的增加,存储器容量成几何级数增长,当N>30时,存储量将超过5Gb,实际电路难以实现。所以,在码序列较短的情况下,使用查找表法比较方便。此方法的计算速度与存储器的寻址时间有关,选用高速器件,可以达到较高的计算速度。第59页/共177页

8.4.4

求和网络法求和网络法的原理图见图8.16所示,它的工作原理很简单,即将序列D中的各项逐个加在一起,最终累加结果便是汉明距离。求和网络法在网络结构上可分为并行求和网络和串行求和网络两种,这两种结构所需加法器的数目J是一样的,均为

J=N-1

(8-11)第60页/共177页

在一般情况下,为了保证计算结果的可靠性,需要将序列D用N位寄存器锁存。在求和网络中,信号每经过一次加法运算,就引入一定的延迟。但是,串行求和网络与并行求和网络的信号总延迟τ是不同的,显然

τ串行>τ并行

(8-12)因为信号总的延迟时间不能超过数据码元周期T0,即有

T0>τ串行>τ并行

(8-13)所以并行求和网络的工作速度要高于串行求和网络。第61页/共177页图8.16求和网络法原理图第62页/共177页

8.4.5组合应用

以上介绍了四种计算汉明距离的方法,它们各有优缺点,在具体应用中,如果将几种方法组合使用,计算电路会更加合理、高效。图8.17给出了计数-求和网络法的原理框图,在这里,我们重点讨论图8.18所示的查找表-求和网络法。第63页/共177页图8.17计数-求和网络法原理图第64页/共177页图8.18查找表-求和网络法原理图第65页/共177页

在查找表-求和网络法中,需要解决的问题是:怎样才能使存储器总容量与求和网络中加法器的数目达到最佳。如图8.18所示,可将查找表分解成若干个子查找表,分别由存储器1~K构成。首先将长度为N的序列D等间距地分成K段,为了便于分析并不失一般性,令

N=2m,K=2n

且m≥n≥0,m,n均为整数,第66页/共177页

那么存储器的地址线宽度为2m-n,每个存储单元的数据宽度为(m-n+1),则存储器1~K的容量均为

M=2m-n×(m-n+1)

(8-14)进而可以计算出存储器的总容量为

M总=K×M=2m-n×(m-n+1)

(8-15)显然,与(8-10)式相比,将一个大的查找表分割成若干个子查找表,可以减少存储器的容量。同样,由(8-11)式可知,求和网络中加法器的总数目为

J总=K-1=2n-1

(8-16)第67页/共177页图8.19m-J总-log

2M总关系曲线第68页/共177页

在上述讨论中,我们曾令{N=2m,K=2n,且m≥n≥0,m,n均为整数},当{2m≥N≥2m-1,2n≥K≥2n-1,且m≥n≥1,m,n均为整数}时,经同样分析(从略)可知,(8-11)、(8-16)式给出了此时存储器容量和加法器数目的上限。第69页/共177页

由(8-15)和(8-16)式可知,当n=m时,

M总=2n,J总=2m-1,原方法等效为求和网络法;当n=0时,M总=2N×(m+1),J总=0,原方法等效为查找表法。我们将(8-15)和(8-16)式结合起来,绘成m-J总-log

2M总关系曲线,如图8.19所示。值得注意的是,在序列长度确定的条件下(即m确定),M总与J总的大小是可以相互转换的,这个特点对于采用可编程逻辑器件计算汉明距离尤为重要。第70页/共177页

因为可编程逻辑器件的存储单元和逻辑单元属于两种不同的芯片资源,它们是有限的。加法器一般可由逻辑单元构成。在较复杂的专用集成电路设计中,其它功能模块可能已经占用了较多的存储单元,或者占用了较多的逻辑单元,而汉明距离的计算电路则可根据有效的芯片资源,恰当地选择M总与J总值,使整个系统的资源利用率达到最佳。下面我们给出查找表-求和网络法的一个应用实例。第71页/共177页图8.2032位序列汉明距离计算电路原理图第72页/共177页

在某通信系统的检测单元中,需要实时计算出长度为32位的接收序列与本地序列之间的汉明距离,同时要求实际电路能够充分利用Altera公司EPF10K10芯片内的存储单元,尽量节省逻辑单元以容纳其它的功能模块。EPF10K10芯片的存储单元由三个EAB块组成,每个EAB块的存储容量为2048位,可以配置成512×4的查找表,其中地址线宽度为9,数据线宽度为4。第73页/共177页

设序列D=(D1,D2,…,D32),分别将(D6,D7,…,D14),(D15,D16,…,D23),(D24,D25,…,D32)作为查找表的地址线,由此可以计算出序列(D6,D7,…,D32)的汉明距离。序列(D1,D2,…,D5)的汉明距离可以采用逻辑函数法获得。图8.20给出了32位序列汉明距离电路计算原理图。

由(8-8)式可知,逻辑计算电路有三个二进制输出变量,由最高有效位到最低有效位依次设为A、B、C,其逻辑表达式为第74页/共177页第75页/共177页

图8.21是32位汉明距离计算的电路图,其中用三个“lpm_rom”模块构建查找表,用“c5in3out”模块完成逻辑电路计算功能,最后用三个加法器将各项相加,就得到最终计算结果。整个计算电路使用了芯片100%的存储单元和5%的逻辑单元,其中,逻辑计算电路占2%,加法器占3%。如果完全采用逻辑函数法,则需要占用芯片15%的逻辑单元,因此图8.21所示的汉明距离计算电路为该通信系统的检测单元节省了10%的逻辑单元。第76页/共177页图8.2132位序列汉明距离计算电路图

第77页/共177页

图8.22给出了部分电路仿真波形,其中序列D从端口“DATAIN[31..0]”输入,用十六进制数表示,计算结果从“OUT[3..0]”输出,用十进制数表示。第78页/共177页图8.2232位序列汉明距离计算电路仿真波形第79页/共177页8.5交织编码器

8.5.1交织编码的原理

数字通信系统进行数据传输时,不可避免地会在接收端产生差错。在这种情况下,如果单纯通过改进信道的性能来降低误码率,在某些情况下是不切实际或不经济的。因此,数字通信系统通常采用前向纠错编码的方法来纠正在传输过程中产生的误码。第80页/共177页

目前常用的纠错码包括分组码和卷积码,它们都是按一定规律在原始信息序列中有意加上一些不含信息的多余比特,其作用是监督所有码组经过信道传输后是否有差错,以便在接收端根据码组中规定的监督关系对出现差错的码组进行纠错。第81页/共177页

每一种纠错码都只具备有限的纠错能力。当连续误码个数超过它的纠错能力之后,接收端的纠错译码便不能有效地降低信道误码率,甚至还会造成某种程度的恶化。为了克服信道中出现突发性差错,需要使用交织编码技术,其作用就是将连续误码分散成非连续误码,增大纠错码的约束长度。数字通信系统采用纠错码和交织编码,就具有了既能纠正随机差错,又能克服突发性差错的功能,大大提高了通信质量。此外,交织编码器在Turbo码设计中也起着十分重要的作用。第82页/共177页

图8.23是纠错编码与交织编码电路连接关系图。交织编码根据交织图案形式的不同,可分为线性交织、卷积交织和伪随机交织。其中线性交织编码是一种比较常见的形式,在这里,我们主要向大家讲述线性交织编码器的FPGA设计。第83页/共177页图8.23纠错编码与交织编码的连接关系第84页/共177页

图8.24n×m交织矩阵第85页/共177页

所谓线性交织编码器,是指把纠错编码器输出信号均匀分成m个码组,每个码组由n段数据构成,这样就构成一个n×m的矩阵。我们把这个矩阵称为交织矩阵,如图8.24所示。数据以a11,a12,...,a1n,a21,a22,...,a2n,...,aij,...,am1,am2,...,amn(i=1,2,...,m;

j=1,2,...,n)的顺序进入交织矩阵,再以a11,a21,...,am1,a12,a22,...,am2,...,aij,...,a1n,a2n,...,amn的顺序从交织矩阵中送出,这样就完成了对数据的交织编码。第86页/共177页

当然还可以按照其它顺序从交织矩阵中读取数据,不管采用哪种形式,其最终目的都是把输入数据的次序打乱。如果aij只包含一个数据比特,称为按位交织;如果aij包含多个数据比特,则称为按字交织。接收端的交织译码同交织编码过程相类似,也是通过图8.24的交织矩阵来完成,它们的结构是一样的。在这里,我们只讨论交织编码器,当然它也可以用来做交织译码。第87页/共177页

根据Altera公司FLEX系列器件的内部结构特点,可以采用两种方法设计交织编码器。一种方法是利用FLEX器件的逻辑单元,用移位寄存器完成交织;另一种方法是利用EAB资源,用存储器实现交织编码。下面分别进行讨论。第88页/共177页

8.5.2

利用移位寄存器实现交织编码图8.25所示为利用移位寄存器实现4×4交织编码器(m=n=4)工作原理方框图,输入移位寄存器和输出移位寄存器的容量均为16比特,该交织器每次完成16比特数据的交织编码。图8.26为4×4交织编码器的交织矩阵。设“0~15”为输入16比特数据的编号,输入数据在时钟的作用下,按照“0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15”的顺序进入“输入移位寄存器”,在时序控制单元的控制下,经过交织网络,进入“输出移位寄存器”,然后以“0、4、8、12、1、5、9、13、2、6、10、14、3、7、11、15”的顺序输出,从而完成交织编码。第89页/共177页图8.25基于移位寄存器的交织编码器工作原理方框图第90页/共177页表8.3基于移位寄存器的交织编码器引脚

引脚

功能DATAIN数据输入CLK数据时钟输入CLRN系统复位端口DATAOUT交织编码数据输出CLKOUT交织编码数据时钟输出第91页/共177页图8.264×4交织矩阵第92页/共177页图8.27利用移位寄存器实现的交织编码器第93页/共177页图8.27利用移位寄存器实现的交织编码器第94页/共177页

图8.27是利用移位寄存器所实现的交织编码器电路图,表8.3给出了交织编码器的引脚关系。“输入移位寄存器”由两个“74164”级联实现,“输出移位寄存器”由两个“cshifreg”级联实现。表8.4为输入数据和输出数据编号的对应关系,利用对应关系将相应编号的端口相连接,就构成了“交织网络”。时序控制单元是一个模16同步计数器,当“输入移位寄存器”读入16比特数据后,时序控制单元产生一个脉冲信号,将这些数据通过“交织网络”送入“输出移位寄存器”,此时该移位寄存器内的数据已经按照交织编码后的顺序排列。在时钟的驱动下,将“输出移位寄存器”内数据顺序送出,即为交织编码后的数据。第95页/共177页

图8.28是该交织编码器的仿真波形,节点“Q”处的脉冲信号每16个时钟周期出现一次,“输入移位寄存器”中的数据在脉冲信号控制下被送入“输出移位寄存器”,同时在交织网络中完成交织编码。时钟“CLKOUT”是输入时钟“CLK”的反相时钟,其上升沿对应着数据信号的中间位置,这样可以保证数据的可靠读取。“DATAIN”是数据输入端,系统清零后输入的前16个数据比特为“1101010001001110”,经交织后,“DATAOUT”输出的数据比特为“1001111100011000”。第96页/共177页表8.4输入数据和输出数据编号的对应关系第97页/共177页图8.28交织编码器仿真波形(一)第98页/共177页8.5.3利用存储器实现交织编码

FPGA器件中的EAB可以实现复杂的逻辑功能,当用作存储器时,其存储数据的宽度和深度可由设计人员任意指定,甚至还可以把若干个EAB连接起来组成容量更大的存储单元。因此利用存储器可以方便地构造出交织深度很大的交织编码器。第99页/共177页图8.29基于存储器的交织编码器工作原理方框图第100页/共177页

图8.29是利用双端口RAM实现的交织编码器工作原理方框图,由图可看出,交织编码器设计的关键在于“读/写地址”的产生。一般说来,有两种设计“读/写地址”的方法:一种方法是“顺序写入、乱序读出”,即输入数据以顺序地址写入存储器,然后再以交织地址从存储器中读出;另一种方法是“乱序写入、顺序读出”,即输入数据以交织地址写入存储器,然后再以顺序地址从存储器中读出。这两种方法是等效的,在下面的例子中,我们采用“顺序写入,乱序读出”的方法。第101页/共177页

将双端口RAM存储空间划分为两部分,在交织器工作时,这两部分存储空间交替进行读/写操作。图8.30是4×4交织编码器的电路图,双端口RAM由“lpm_ram_dp”宏模块构成,该模块的逻辑参数见表8.5和表8.6所示。第102页/共177页图8.30利用双端口RAM实现的交织编码器第103页/共177页图8.30利用双端口RAM实现的交织编码器第104页/共177页表8.5“lpm_ram_dp”宏模块的基本逻辑参数(一)第105页/共177页表8.6“lpm_ram_dp”宏模块的基本逻辑参数(二)第106页/共177页

图8.30中“lpm_ram_dp”宏模块的参数设置为

LPM_WIDTH=1LPM_WIDTHAD=5

输入输出数据线的宽度为“1”,读/写地址线的宽度为“5”,5位“写地址”为“WRADDRESS[4..0]”,5位“读地址”为“RDADDRESS[4..0]”,总寻址空间为“32”比特。

第107页/共177页

“写地址”的低4位“WRADDRESS[3..0]”由计数器“4count”的输出端口“QA~QD”产生。“读地址线”的产生比较复杂,需要通过状态转移图得到。我们已经知道,交织器编码数据按照“0、4、8、12、1、5、9、13、2、6、10、14、3、7、11、15”的顺序输出,其地址(低4位地址)状态转移图为第108页/共177页表8.7“读地址”与时钟对应关系

读地址

与时钟对应关系RDADDRESS4

时钟的32分频RDADDRESS3

时钟的4分频RDADDRESS2

时钟的2分频RDADDRESS工

时钟的16分频RDADDRESS0

时钟的8分频第109页/共177页

由状态转移图可以得到“读地址”的低4位“RDADDRESS[3..0]”与数据时钟之间有表8.7所述的对应关系。因此,可以很容易地用分频器得到“读地址”。

“读/写地址”的最高位“RDADDRESS4/WRADDRESS4”是反相关系,使存储器在“00000~01111”和“10000~11111”两段地址空间内交替“读/写”操作。这两段空间交替“读/写”一次对应32个数据时钟周期,所以“RDADDRESS4/WRADDRESS4”可由数据时钟的32分频得到。第110页/共177页

图8.30用5个D触发器构成了一个32分频器,从各级D触发器输出端可得到5位“读地址”以及“写地址”的最高位“WRADDRESS4”。表8.8给出了基于RAM结构的交织编码器的引脚关系,为了便于测试,将“读/写地址”和“模16计数信号”也用输出管脚引出。“CLKOUT”是时钟“CLK”的反相信号。“读/写”地址转换的时候会出现许多“毛刺”信号,用“CLKOUT”作为存储器“读/写”时钟可以避免“毛刺”的影响,保证数据的可靠读取。第111页/共177页

“读地址线”的产生比较复杂,需要通过状态转移图得到。我们已经知道,交织器编码数据按照“0、4、8、12、1、5、9、13、2、6、10、14、3、7、11、15”的顺序输出,其地址(低4位地址)状态转移图为由状态转移图可以得到“读地址”的低4位“RDADDRESS[3..0]”与数据时钟之间有表8.7所述的对应关系。因此,可以很容易地用分频器得到“读地址”。第112页/共177页

表8.8基于RAM的交织编码器引脚

引脚

功能DATA工N

数据输入ClK数据时钟输入CLRN系统复位端口DATAOUT

交织编码数据输出CLKOUT

交织编码数据时钟输出Q模16计数信号WRADDRESS[4.。0]

写地址RDADDRESS[4..0]

读地址第113页/共177页

图8.31是交织编码器的仿真波形。从图中的局部放大图可以看到“读/写”地址的对应关系与交织矩阵完全一致。图中还标出了输入的前16个数据比特为“1100111000100101”,经交织后,“DATAOUT”输出的数据比特为“1100110101100001”。从图8.28和图8.31的仿真波形中还可看到,交织编码器在数据输出前存在一段延时,延时的大小与交织矩阵有关,交织矩阵越大,延时越大。延时会对通信带来不利的影响,但可以通过对交织器的精心设计来降低延时,它的实现方法我们在这里就不详细讨论了。第114页/共177页图8.31交织编码器仿真波形(二)第115页/共177页

通过本节的讲述可知,我们既可以利用FLEX系列芯片的逻辑单元,用寄存器阵列实现交织编码,又可以利用它的EAB资源,用存储器实现交织编码。相比较而言,第一种方法控制电路简单而易于实现,第二种方法的地址电路比较复杂,但能构造出约束长度很长的交织矩阵。需要指出的是,m和n是设计交织编码的重要参数,必须根据信道中突发误码的长度、出现的频率以及纠错码的约束长度、纠错能力适当选择。第116页/共177页

假设选用的纠错码具有纠正t个随机差错的能力,则在发生突发差错的情况下,允许突发性差错的最大长度b=mt。显然,在n不小于纠错码译码长度的条件下,增大m可以提高系统克服突发差错的能力。所以,m、n选得越大,信道编码的约束长度越大,从而对付信道中长突发差错的能力也就越强。第117页/共177页

如果采用按位交织,要实现连续数据流的交织,交织编码器需要有2×m×n比特的存储空间。相应地在发、收端对信号进行交织编、译码处理时,分别会引入m×n个码元的延时,这一点可以从仿真波形中清楚地看到。从另一个角度讲,m、n选得越大,就需要越大的存储空间,同时会引入更长的延时,所以应根据数字通信系统的实际情况选择合适的m和n值。第118页/共177页8.6直接数字频率合成

1971年,美国学者J.Tierncy、C.M.Rader和B.Gold提出了以全数字技术、从相位概念出发直接合成所需波形的一种新的频率合成原理。随着技术和器件水平的提高,一种新的频率合成技术——直接数字频率合成(DDS,DirectDigitalSynthesis)得到了飞速的发展。DDS技术是一种把一系列数字形式的信号通过DAC转换成模拟形式的信号的合成技术,目前使用最广泛的一种DDS方式是利用高速存储器作查找表,然后通过高速DAC输出已经用数字形式存入的正弦波。第119页/共177页DDS的主要优点是:相位连续、频率分辨率高、频率转换速度快以及良好的可复制性能,它以有别于其它频率合成方法的优越性能和特点成为现代频率合成技术中的姣姣者。DDS广泛用于接收机本振、信号发生器、仪器、通信系统、雷达系统等,尤其适合于跳频无线通信系统。第120页/共177页

图8.32是DDS的基本原理框图,频率控制字M和相位控制字分别控制DDS输出正(余)弦波的频率和相位。DDS系统的核心是相位累加器,它由一个累加器和一个N位相位寄存器组成。每来一个时钟脉冲,相位寄存器以步长M增加。相位寄存器的输出与相位控制字相加,其结果作为正(余)弦查找表的地址。第121页/共177页

图8.32中正(余)弦查找表由ROM构成,内部存有一个完整周期正弦波的数字幅度信息,每个查找表的地址对应正弦波中0°~360°范围的一个相位点。查找表把输入的地址信息映射成正(余)弦波幅度信号,同时输出到数模转换器(DAC)的输入端,DAC输出的模拟信号经过低通滤波器(LPF),可得到一个频谱纯净的正(余)弦波。第122页/共177页图8.32DDS基本原理框图第123页/共177页图8.33DDS核心单元的FPGA电路设计图第124页/共177页

相位寄存器每经过2N/M个fc时钟周期后回到初始状态,相应地正(余)弦查找表经过一个循环回到初始位置,DDS输出一个正(余)弦波。输出的正(余)弦波周期为Tout=(2N/M)Tc,频率为fout=(M/2N)fc。DDS的最小分辨率为Δfmin=fc/2N,当M=2N-1时,DDS最高的基波合成频率为foutmax=fc/2。第125页/共177页

图8.32中虚方框内的部分是DDS的核心单元,它可以采用FPGA器件来实现,图8.33给出了DDS核心单元的FPGA电路设计图,其中字长N=10。为了便于大家理解,图8.33中各个功能单元的名称已在图中标明,其中在输出引脚“out_c[7..0]”和“out_s[7..0]”前分别放置了一个8位D触发器。正(余)弦查找表分别由两个ROM宏模块“lpm_rom”构成,有关查找表的设计方法,请读者参阅6.3.3节的内容。第126页/共177页

图8.34是DDS电路的MAX+PLUSⅡ波形仿真结果。实际上,从MAX+PLUSⅡ波形仿真结果中我们很难直观地看出DDS输出正(余)弦波的情况。为了便于调试设计电路,我们可以利用计算机高级语言将MAX+PLUSⅡ波形仿真结果转换为波形曲线,这就需要借助于MAX+PLUSⅡ的表格文件(.tbl文件)。第127页/共177页图8.34DDS电路的波形仿真结果第128页/共177页MAX+PLUSⅡ的设计软件中的.tbl文件是纯文本文件,它包含了.scf文件或.wdf文件中的所有信息。.tbl文件的生成很简单,在MAX+PLUSⅡ波形仿真结束后,打开.scf文件,然后从“File”菜单中选择“CreateTableFiles”选项,就可产生.tbl文件。.tbl文件的基本格式如表8.9所示,文件的结构可分为四大部分,其中第三和第四部分对我们来说是最关键的,我们可以从中获取仿真波形数据,并利用计算机高级语言处理这些数据,将其转换为直观的波形曲线。需要读者注意的是,每做一次MAX+PLUSⅡ波形仿真,都要重新生成一次.tbl文件,以更新.tbl文件内的数据。第129页/共177页表8.9.tbl文件基本格式第130页/共177页

图8.35给出了DDS电路波形仿真结果所对应的.tbl文件的第三和第四部分内容。.tbl文件的第三部分按照.scf文件(参见图8.34)中显示的输入输出引脚的排列顺序,从左至右依次列出输入引脚和输出引脚。.tbl文件的第四部分给出了仿真数据,这些数据按时间顺序排列,并与相应的输入/输出引脚处于同一列,输入引脚数据与输出引脚数据之间用“=”隔开。仔细观察图8.35,我们可以发现当“CLK”取值为“0”时,此时的输出数据是我们希望得到的,所以可编程将这些数据抽取出来并将其转换为十进制,就可获得直观的仿真波形。第131页/共177页图8.35.tbl文件的部分内容第132页/共177页图8.35.tbl文件的部分内容第133页/共177页

下面给出了一段用Matlab语言编写的程序,它首先读取“dds.tbl”文件,将输入引脚“CLK=0”时的输出数据抽取出来并转换为十进制数,然后绘出DDS电路的仿真波形曲线,该曲线如图8.36所示。第134页/共177页图8.36Matlab绘出的DDS电路仿真波形第135页/共177页数据抽取和数值转换程序(Matlab语言)clearall;fid=fopen(′e:\max2work\dds.tbl′,′r′);data=fscanf(fid,′%s′);fclose(fid);b=find(data==′=′);number=length(b);j=0;fori=1:numberifdata(b(i)-1)==′0′第136页/共177页j=j+1;c_c(j,1)=data(b(i)+1);c_c(j,2)=data(b(i)+2);c_s(j,1)=data(b(i)+3);c_s(j,2)=data(b(i)+4);endendd_c=hex2dec(c_c);%hex--->dec,d_c是out_c引脚上的数据d_s=hex2dec(c_s);%hex--->dec,d_s是out_s引脚上的数据第137页/共177页figure(1);subplot(2,1,1);plot(d_c);%DDS输出的余弦波subplot(2,1,2);plot(d_s);%DDS输出的正弦波第138页/共177页8.7误码率在线测试

8.7.1误码检测电路的设计

某数字通信系统需要误码率在线测试单元,要求能够实时显示接收数据的误码率,并提供备份设备的切换标准。图8.37是设计的误码率在线测试电路的总体框图。第139页/共177页

图8.37中的阴影部分是误码检测电路,它是整个误码率在线测试电路中的核心单元。该通信系统具有独特的帧结构,每一帧长为2ms,速率为19.2Mb/s,其中同步头为连续7个128位的伪随机码。误码检测电路的目的就是要检测出同步头的误码个数,将结果送往CPU进行算法处理,得到实时误码率。第140页/共177页图8.37误码率在线测试电路总体框图第141页/共177页图8.38误码检测电路原理方框图第142页/共177页

误码检测电路实现的难度在于数据速率高,帧结构特殊。如果采用常规电路设计方法,需要几十块集成电路,并且在19.2Mb/s的速率上实现困难很大,各个器件之间的延迟很难掌握和处理,电路的调试难度就可想而知。因此,我们选择FPGA器件来实现误码检测电路,其原理方框图如图8.38所示。第143页/共177页

电路原理说明如下:解调后的19.2Mb/s的基带数据流(data)和时钟(clk)输入到同步电路和128位移位寄存器(16个74164)中,首先同步电路开始搜索同步头,以128位伪随机码的前16位作为同步头初捕译码电路,如在数据流中捕捉到相同的16位数据,则送出初同步信号w1,在开关电路1打开的情况下,送出真正的帧同步信号w11,w11打开开关电路2并使所有的计数器清零后开始计数,同时将128位伪随机码进行“‘1’取反,‘0’不变”处理后的数据读到另外128位移位寄存器(16个8shiftreg)中。如果有误码,则读入数据对应位为“1”,如果没有误码,则读入数据对应位为“0”。

温馨提示

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

评论

0/150

提交评论