1、第9章伪随机序列与误码检测原理、建模与设计n内容提要n本章介绍伪随机序列的概念、m序列的产生原理及其性质,还介绍了m序列产生器的建模与设计方法。本章的第二部分内容是就通信中的误码检测技术介绍了误码性能指标、误码测试信号、误码测试方式以及误码检测原理及误码检测器等。本章的第三部分内容是以简单的逐位比较型误码检测器为例,重点介绍了逐位比较误码检测原理、状态搜索与同步保护等模块的VHDL建模与程序设计。n知识要点1. .伪随机序列的概念、m序列的产生原理及其性质。2.m序列产生器的VHDL建模与设计方法;3.误码性能指标、误码测试信号、误码测试方式;4.误码检测原理、误码检测器的种类及工作原理;5.
2、简单误码检测器的建模与VHDL程序设计n教学建议1.掌握伪随机序列的概念与应用、m序列的产生原理与性质。2.分析和理解m序列产生器的建模与设计方法。 3.熟悉通信中误码性能指标,了解误码测试信号和误码测试方式;4.掌握误码检测的基本原理以及简单误码检测器的建模与设计方法,强调位同步与状态同步技术在误码检测以及误码检测器设计中的重要性。5.建议学时数为6学时。9.1引言n伪随机噪声具有类似于随机噪声的一些统计特性,同时又便于重复产生和处理,因而获得广泛的应用。目前最广泛应用的伪随机噪声都是由数字电路产生的周期序列得到的。这种周期性序列称为伪随机序列。n由于在信道中噪声的加入,使得在数字通信中在接
3、收端不可避免地会出现误码,误码率是检验通信设备传输质量的重要指标,误码的检测在通信中必不可少,由此,产生了各种各样的误码检测器。n误码测试的方法可分为两大类:中断通信业务的误码测试和不中断通信业务的误码测试。第一种主要用于产品性能鉴定、系统工程交验和通信电路的定期维护和检修等;第二种主要用于系统运行的质量监测、可靠性统计等。n在对通信系统的性能进行误码检测的设备中,码组发生器作为代替数字信息输入的信号源是一种不可缺少的装置。常用的码组发生器有两类:一类是伪随机码发生器。它产生的序列具有接近纯随机数字序列的特性;另一类是规则码发生器。它可通过选择开关或按键来确定规则码的构成。规则码发生器的序列周
4、期一般较短,主要用做单元部件和整机性能的测试序列。n本章将在介绍伪随机序列产生的基础上,重点讨论误码检测原理、建模与设计。9.2伪随机序列及其产生原理与VHDL设计n伪随机序列或称伪随机码,它是模仿随机序列的随机特性而产生的一种码字,也称为伪噪声序列或伪噪声码。在数字通信中,伪随机序列有许多种,限于篇幅, 这里以被广泛使用的m序列为重点进行介绍。n在通信工程应用中,常采用二进制伪随机序列,因此在序列中只有“0”和“1”两种状态。二进制伪随机序列一般是通过移位寄存器加反馈电路共同来产生的。这种反馈移位寄存器可分为线性反馈和非线性的反馈移位寄存器两种。其中由线性反馈移位寄存器产生的周期最长的二进制
5、数字序列叫做最大长度线性反馈移位寄存器序列,也称m序列。 n对于伪随机序列有如下几点要求:1. 应具有良好的伪随机性,即应具有和随机序列类似的随机性。2. 应具有良好的自相关、互相关和部分相关特性,即要求自相关峰值尖锐,而互相关和部分相关值接近于零。这是为了接收端的准确检测,以减小差错。3. 要求随机序列的数目足够多,以保证在码分多址的通信系统中,有足够多的地址提供给不同的用户。4.要求设备简单,易实现,成本低。9.2.1 伪随机序列发生器n m序列是最被广泛采用伪随机序列之一,除此之外,还用到其它伪随机序列,如Gold序列、M序列等。本章重点介绍m序列。 1. 最大长度线性反馈移位寄存器序列
6、(m序列)的产生 m序列产生的一般结构模型如图9-1所示。其中1,2,3,n是移位寄存器的编号, 是各移位寄存器的状态, 对应各移存器的反馈系数, k-i1,2,aini1,2,c inn 表示该级移存器参与反馈, 表示该级移存器不参与反馈。其中 和 不能等于0,这是因为 意味着移位寄存器无反馈,而 则意味着反馈移存器蜕化为级或更少级的反馈移存器。 i1c i0c 0cnc00c n0c 图9-1 反馈移位寄存器的结构模型 反馈函数为 (模2加) (9-1) 上述的反馈函数是一个线性递归函数。当级数(n)和反馈系数一旦确定,则反馈移位寄存器的输出序列就确定了。反馈移存器的级数n不同,则m序列的
7、反馈系数也不同,表9-1(来源于参考文献9)列出了部分的m序列发生器的反馈系数,供读者使用时参考。表中给出的是八进制数值,经转换成二进制数值后,可求出相应的反馈系数。m序列的一个重要的性质k1k-12k-2nk-nac ac ac an是:任一m序列的循环移位仍是一个m序列,序列长度为:n (9-2)n21m 表 9-1 部分 m 序列发生器的反馈系数 级数(n) 序列长度 反馈系数 3 7 13 4 15 23 5 31 45,67,75 6 63 103,147,155 7 127 203,211,217,235,277,313,325,345,367 8 255 435,453,537,
8、543,545,551,703,747 9 511 1021,1055,1131,1157,1167,1175 10 1023 2011,2033,2157,2443,2745,3471 11 2047 4005,4445,5023,5263,6211,7363 12 4095 10123,11417,12515,13505,14124,15053 13 8191 20033,23261,24633,30741,32535,37505 14 16383 42103,51761,55753,60153,71147,67401 15 32767 100003,110013,120265,13366
9、3,142305,164705 16 65535 210013,233303,307572,311405,347433,375213 17 131071 400011,411335,444257,527427,646775,714303 18 262143 1000201,1002241,1025711,1703601 19 524287 2000047,2020471,2227023,2331067,2570103,3610353 20 1048575 4000011,4001151,4004515,6000031 2.m序列的性质(1)均衡性 m序列在在一个周期内“1”和“0”的个数基本相
10、等。具体来说,m序列的一个周期中的“0”的个数比“1”的个数少一个。(2)游程分布 我们把伪随机序列中取值(“0”或“1”)相同的一段码位称为一个游程。在一个游程中包含的位数称为游程长度。把取值为“0”的游程称为“0”n游程,取值为“1”的游程称为“1”游程。在m序列中的一个周期内,游程的总个数等于 ,而且“0”游程的数目与“1”游程的数目相等,即各占一半。n一般来说,在m序列中,长度为1的游程占游程总数的一半;长度为2的游程占游程总数的1/4;依次类推,长度为k的游程数目占游程总数的 ,其中, 而且“0”游程,长为“1”。21n2k1(2)knn 例例9-19-1对于一个 , 的m序列100
11、01111010110010其中n表示移位寄存器的个数,m表示伪随机序列的周期。该伪随机序列的总游程数为个。其中,长为4的游程一个,即“1111”;长为3的游程一个,即“000”;长为2的游程2个,即“11”和“00”;长为1的游程4个,即2个“1”游程和2个“0”游程。4n 15m 4 128(3)移位相加特性 (9-3)n一个m序列Mp与其经任意次迟延移位产生的另一不同序列Mr,模2相加,得到的仍是Mp的某次迟延移位序列Ms,即(4)相关函数n 设 为一个m序列, 为m序列的第i位的取值,(令“0”和“1”分别对应“+1”和“-1”),由自相关函数的定义有 (9-4)MpMrMs ixix
12、 221limTTxRx t x tdtTn式中T为m序列的周期。 令当 时的 记为 ,其中 为码元宽度, 。这样,式(9-4)可表示为n 0j( )R( )R j00,1,(1)jn000(1)101( )( ) ()niiiR jx t x tjdtn00(1)101niiijiix xdtn(9-5)式中,n为m序列的长度, 的下标按模n运算,即 。把 进行归一化,可得其归一化相关函数为: (9-7)根据m序列的延时相加特性可知, 11niijix xnxn kkxx0j01( )iijiijxxxxR jn的个数的个数 iijxxn仍然是一个m序列,因此上式分子就是“0”的个数与“1”
13、的个数之差;又由m序列的均衡性可知,m序列的一个周期中的“0”的个数比“1”的个数少一个,实际上,上式的分子等于-1。因此,式(9-6)可写为:n (9-7)n在 的范围内,自相关函数为:n , (9-8) 1,01/1,2,1jR jnjn001( )1nRn 0于是 (9-9)将自相关函数画成曲线如图9-2所示。00011( )1nnRnn 图9-2 m序列的自相关函数n上面讨论的m序列由于具有很好的伪噪声性质,并且产生方法比较简单,所以受到广泛的应用。不过,它也有一个很大缺点,就是其周期限制于(2n一1),nl、2、3、。当n较大时,相邻周期相距较远,有时不能从m序列得到所需周期的伪随机
14、序列。另外一些伪随机序列的周期所必须满足的条件与m序列的不同,因此可以得到一些其他周期的序列;即使周期与m序列相同,其结构也不一定相同。这些不同周期和结构的序列可以互相补充,提供我们选用。9.2.2m序列发生器的建模与设计举例n从表9-1中选m序列的级数为 ,序列长度为 ,若选反馈系数的八进制数值为235,转换成二进制数值为:10011101,即:n反馈移位寄存器的结构模型如图9-3所示。7n 721127m 7654321010011101CCCCCCCC图9-3 n=7的反馈移位寄存器的结构模型nVHDL建模思想: n根据图9-3的结构模型,设置敏感信号(时钟信号CLK和操作控制信号LOA
15、D),在时钟的上升沿控制下,当LOAD=“1”时,给移位寄存器预置初始信号“100000”;当LOAD=“0”时,将按图9-3的模型规律进行操作,具体赋值顺序参看下列程序。 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PS7 IS 实体名为 “PS7”PORT(CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; Q :OUT STD_LOGIC); 定义实体接口END PS7;ARCHITECTURE BEHAV OF PS7 ISSIGNAL C0,C1,C2,C3,C4,C5,C6,C7:STD_LOGIC;BEGI
16、NPROCESS(CLK,LOAD) 设置敏感量BEGINIF CLKEVENT AND CLK=1 THENIF (LOAD=1) THENC7=0;C6=0;C5=0;C4=0;C3=0;C2=0;C1=0;C0=1;Q =C7;ELSEC1=C0;C2=C1; C3=C2; C4=C3;C5=C4;C6=C5;C7=C6;C0=C7 XOR C4 XOR C3 XOR C2; 设置反馈方式Q=C7;END IF;END IF;END PROCESS;END BEHAV;nn=7的伪随机序列产生器的时序仿真波形如图9-4所示。 图9-4 n=7的伪随机序列产生器的时序仿真波形n图中的“LO
17、AD”在“1”电平期间对伪随机序列发生器置初始信号,在“0”电平期间伪随机序列发生器进行移位操作;“CLK”表示移位寄存器的位同步信号;“Q”表示串行伪随机序列信号输出。9.3通信中的误码检测9.3.1概述 无论是设备故障、传播衰落、码间干扰、邻近波道干扰等因素都可能造成系统性能恶化甚至造成通信中断,其结果都可通过误码的形式表现出来。对数字通信接收系统,判决电路是不可缺少的,造成判决错误的基本原因可归纳为以下几点:1.判决电平的偏移造成误判;2.抽样时刻偏移造成误判;3.叠加噪声造成误判。 在数字微波中继通信设备中通常设置误码监测电路。另外,为了对生产设备进行调试、验收或维护,通常也要使用误码
18、检测装置来进行误码检测。9.3.2误码性能指标1.误码劣化分 是指在一分钟的统计时间内,误码率超过1x10-6的分钟数以及相应的时间百分比。它是一个低误码率指标。2.严重误码秒 指在一秒的统计时间内,误码率超过1x10-3的秒数,以及相应的时间百分数。它是高误码率指标。3.误码秒 指在一秒内出现一个或多个误码的秒数以及相应的时间百分数。4.平均误码率 指在一个较长的时间内进行统计所得到的平均误码率。 9.3.3误码性能测试1.1.误码测试信号误码测试信号n误码测试的方法可分为两大类:中断通信业务的误码测试和不中断通信业务的误码测试。第一种主要用于产品性能鉴定、系统工程交验和通信电路的定期维护和
19、检修等;第二种主要用于系统运行的质量监测、可靠性统计等。n在对通信系统的性能进行误码检测的设备中,码组发生器作为代替数字信息输入的信号源是一种不可缺少的装置。常用的码组发生器有两类:一类是伪随机码发生器。它产生的序列具有接近纯随机数字序列的特性;另一类是规则码发生器。它可通过选择开关或按键来确定规则码的构成。规则码发生器的序列周期一般较短,主要用做单元部件和整机性能的测试序列。2.误码检测器n 误码检测器,又称误码仪。构成误码检测器的方案有多种形式。总体来说误码检测器的工作过程可概括为以下几个过程和步骤:(1)以某种方式产生和发送码组相同的码型。以相同相位的本地码组作为比较标准;(2)将本地码
20、组与接收码组逐个进行比较,并输出误码脉冲信号;(3)对误码脉冲信号进行统计,并给出相应的误码率。根据本地码组发生器的构成方式不同,将误码检测器分为以下几种类型:(1)收发自检式误码检测器n 它的特点是,本地码组直接由发送码组给出,不需要另外设置本地码组发生器。在误码检测器中,同时将发送码组和接收码组进行比较。这种检测方式要求发送码组和接收码组在同一地点,因此只能用于室内测试。 这种设备的码组产生器和误码检测器可做在同一套装置上,电路较为简单。测试时,将发送码组分为两路:一路送给被侧通信系统;另一路送给误码检测器。由于接收码组和发送码组到达误码检测器的时间不同,存在延时误差,因此需要对发送码组进
21、行延时调整,以便使两路码组信号的相位一致。(2)帧同步式的误码检测器n这种误码检测器的基本原理是在测试序列中插入帧同步码组,在接收端进行帧同步识别,并依靠帧同步信号控制本地码发生器,产生与测试序列相位一致,且起止位置一致的本地码组。(3)随动同步式误码检测器n这种误码检测器不需要帧同步系统,当然也就不需要在发端插入帧同步码组。它的基本原理是将接收到的m序列首先逐位存入一定级数的收码移位寄存器中,此时相当于寄存器中记录了m序列的部分子序列,将子序列写入本地码发生器的各级,就能使本地码和接收码保持同步。为了在建立同步后,保持同步的稳定性,设置一个写入控制门。让受码寄存器的自序列在写入本地码发生器前
22、必须先经过写入控制门。只有在子序列无误和本地码失步的情况下,控制门才打开。(4)逐位检测式误码检测器n 逐位误码检测器的基本工作原理是:本地的m序列发生器产生的m序列和所接收的m序列进行逐位比较,若两个m序列同步,则比较器输出传输误码;若两m序列不同步,则比较器输出的是由于失步造成的误码。由于失步造成的误码较大(根据m序列的特性,其误码率应为0.5),因此可根据误码率门限来区分检测系统是否失步,若失步,则让本地m序列发生器等待一个位时钟周期,依次逐位比较,并逐位控制本地m序列发生器的等待时间,直至两序列完全同步为止。 3.两种误码测试方式n根据测试环境条件和目的,把误码测试分为两种测试方式。n
23、一种是基于生产和产品检验的误码测试,通常是室内测试;n另一种是基于监测和维护的现场测试。n针对数字微波中继设备的终端部分,如中频调制与解调单元、收发数字逻辑单元、中频或基带的自适应均衡单元以及纠错单元等的室内误码测试采用中频自环测试方法。其测试方法是将误码测试设备中的码组发生器产生的码组信号(伪随机序列或规则序列)和时钟信号送入中频调制器,在接收端,从中频解调器输出定时信号和信码,并送给误码检测器进行误码检测。n针对整个微波中继设备的误码性能的测试,则将码组发生器产生的码组信号和时钟信号送入发射机,在接收端,从接收机终端输出定时信号和信码,并送给误码检测器进行误码测试。n 现场误码测试有两种方
24、法:单向测试法和环路测试法。这两种测试方法的连接框图如图9-5所示。图9-5 现场误码测试的两种方法9.4 简单误码检测器的建模与设计举例9.4.1 误码检测器系统的构成n本节将介绍一种简单的逐位比较型误码检测器的建模与设计方法。n逐位比较型误码检测器的基本原理是用通过发端和收端两列类型相同的序列经过同步处理之后逐个码元进行比较,若出现误码,那么两列码序列中本来相同的码元就会变得不同,利用这种差异性,在位同步时钟的控制下通过异或门逐个码元进行比较,将比较的结果通过计数器送到显示电路进行显示。其原理框图如图9-6所示。n位随机序列是在时钟的控制下进行移位的,若本地伪码序列和接收的伪码序列不同步,
25、则无法实现两序列的正确比较,因此,首先要从接收序列中提取位同步信号。关于位同步信号的提取方法,已在第6章做详细介绍,本章重点介绍误码检测方法,因此,我们把误码检测器中的位同步信号看成是已经与接收序列同步的时钟信号。图中的停扣时钟电路的功能是当序列对应位状态不一致,即状态不同步时,同步和保护电路输出一个控制信号,通过停扣时钟电路扣除一个时钟脉冲。这样经过停扣时钟电路的时钟信号来触发本地伪码发生器,相当于本地位码序列延迟一个时钟周期,也就是说,本地位码序列等待一个时钟周期。n若连续发现本地序列和接收序列状态不同,则通过同步与保护电路、停扣时钟电路,使本地位码序列继续处于等待状态,直至本地序列和接收
26、序列的状态同步为止。同步与保护电路的功能一方面是起同步控制作用,另一方面是在系统状态同步后,一旦出现误码或短时的不同步,也不马上进行同步捕获,而是设置了一定的失锁保护时间,以保证系统同步的稳定性。图9-6 简单逐位比较型误码检测器模型n误码的特点是它们在序列中出现的位置和时间以及长度情况都是不确定的,因此必须针对性地设计其特别的同步系统。综合分析误码仪的特点,设计主要分为以下几个重要的模块:(1)针对误码仪工作特点的位同步部分。基于CPLD/FPGA的数字设计,我们常采用数字锁相环法来提取位同步信号,并设法保证位同步信号提取可靠性。关于数字锁相法位同步提取的原理和具体的VHDL建模与设计已在第
27、6章单独做详细。(2)本地序列和接收序列的状态同步:状态同步的检测是为了判别误码,并进行计数输出。这是本章的建模与VHDL设计的核心内容。(3)计数器输出:可以有两种方式:一种是用硬件数码管或液晶显示;另外一种是通过提供一个并口,让计算机从这里读取误码信号识别,经过可视化编程软件的处理,在计算机上显示。9.4.2 位同步信号提取n基于CPLD/FPGA的位同步信号提取,常采用数字锁相法。本节简单介绍采用超前、滞后型数字锁相环提取位同步信号的原理框图。n根据数字锁相理论,超前、滞后型数字锁相环把接收端输入的数字码元以及本地时钟信号送入鉴相器得到的超前和滞后脉冲,分别送到添加门和扣除门里,对分频器
28、进行调整得到与发端时钟相位相差很小的提取时钟。这里的关键在于鉴相器的设计。在VHDL程序设计中,可设计上下边缘触发子程序,所以通过这个程序可以设计数字微分器,从而获得相位信息,然后与分频器分出来的时钟进行相位的比较,出现超前脉冲就通过滞后门进行扣除,从而实现对位同步时钟的提取。图9-7是数字锁相环提取时钟的基本原理方框图。n根据同步误差理论,位同步的误差由本地晶振和分频时钟的分频系数决定,晶振的振荡频率越高,分频系数越大,则时钟抖动度则会越小,其误差计算式为 ,n为分频器的分频系数,一般要取120分频才能达到抖动度在3度的精度要求。360/n图9-7 数字锁相环法提取位同步信号的基本框图模型9
29、.4.3 简单误码检测器的建模n误码仪的同步除了位同步以外,还有一个状态同步的问题。现在来分析一下状态同步。n由于发送端和接收端没有严格的时间约定,接收端的m序列和发送端的m序列尽管类型相同,但若两序列的状态不同步的话,则无法进行检测。状态同步的基本思想利用m序列的有多个许多个不同状态,即子序列或部分序列,利用子序列作为同步帧,逐帧比较、确认同步之后发出同步信号,送到由位时钟控制的判决电路进行比较判决。n基本的状态同步控制是采用时钟停等扣除,即发现状态不同的时候就让本地的m序列驱动时钟停住。这样的话,发送的m序列的就会向前挪动一个时钟周期,然后又比较。由于发送的m序列会带有不确定的误码,那么还
30、得要经过同步确认处理之后才可以认为是真正地同步了。具体的模型框图如图9-8所示。图9-8 简单误码检测器模型n模型框图说明:接收序列分为两路。n一路送给位时钟提取电路以提取位同步信号;n另一路移位寄存器进行移位和串并变换,其串行输出送至D触发器经本地时钟触发整形,其并行输出送至并行输入与状态控制电路。n本地时钟经时钟停扣控制电路后送给本地伪随机序列产生电路,其并行输出送入并行输入与状态控制电路,其串行输出送入D触发器,以保持与接收序列的位置一致性。n两D触发器的输出送给逐位状态比较器进行异或比较,若接收序列与本地序列不一致,则输出“1”脉冲,经误码计数器,可通过显示器来显示误码个数。n图中的并
31、行输入与状态控制、状态并行比较、连“1”状态计数器和时钟停扣控制电路共同构成状态同步搜索和同步保护电路。n在同步搜索期间,并行输入与状态控制将接收并行序列和本地并行序列信号并行地输出给状态比较器,若对应的比较位都相同,则输出“1”,否则输出“0”。当并行状态比较器的输出为“1”时,时钟停扣控制电路不进行时钟停扣,让时钟信号原样送给本地序列产生器;当并行状态比较器的输出为“0”时,时钟停扣控制电路进行时钟停扣,此时,本地序列产生器等待时钟出发,其输出状态保持不变。n连“1”计数器与输出控制电路的功能有两个:一是对状态比较器输出的连“1”状态进行计数,当计数器的计数量达到设置值时,计数器输出为“1
32、”,并控制“并行输入与状态控制”电路,使之的各并行输出位置“0”,这样,状态比较器的各输入位皆为“0”,则其输出为“1”,表示状态已同步;若状态不同步,则连“1”计数器的输出始终为“0”。连“1”计数器的另一功能是当其输出为“1”时,才使误码计数器进行计数。n若在整个系统已同步后,出现了状态失步,则通过图中的误码统计与门限检测电路的输出状态控制连“1”计数器。若两m序列不同步,则比较器给出的是由于失步造成的误码,根据m序列的特点,其误码率为0.5。误码门限检测电路通过误码门限用来识别是否两序列失步,若状态失步,误码检测器输出低电平,使连“1”计数器清零,系统进入重新捕获状态。9.5 简单误码检
33、测器中主要单元模块的程序设计在下面的各模块的VHDL程序设计中,没有涉及时钟提取模块和误码计数器模块。我们只需把本系统所用的时钟信号看成一个相位同步的外时钟源。误码计数器模块的设计方法有多种形式,若不考虑转换成误码率,则只需一个常规的计数器即可。9.5.1移位与串并变换模块1.1.建模建模在本章的误码检测器的设计中,为了设计简单,我们采用四位移位寄存器来对接收序列进行移位和串并变换,其VHDL建模符号如图9-9所示。n其具体工作过程是:在时钟“CLK”的上升沿触发下,从“inp”端输入接收m序列,按顺序inpA3A2A1A0进行移位,同时把A3、A2、A1、A0的输出分别输出给B3、B2、B1
34、、B0端,从而完成串并变换的功能。Q端的信号取自A0的输出端,作为移位4位后的串行m序列信号。n图9-9中:clk输入时钟信号;inp接收序列信号输入;Q串行序列输出;B0B3四位并行序列输出。图9-9 四位移位与串并变换器的VHDL建模符号2.程序设计-文件名:MOV4LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Mov4 IS PORT(CLK:IN STD_LOGIC; inp:in std_logic; Q:OUT STD_LOGIC; B0:OUT STD_LOGIC; B1:OUT STD_LOGIC; B2:OUT STD_LOG
35、IC; B3:OUT STD_LOGIC);END Mov4;ARCHITECTURE BEHAV OF Mov4 IS SIGNAL A0,A1,A2,A3:STD_LOGIC; BEGIN PROCESS(CLK) BEGINIF (CLKEVENT AND CLK=1) THEN A3=INP; B3=A3; A2=A3; B2=A2; A1=A2; B1=A1; A0=A1; B0=A0; Q=A0; END IF; END PROCESS; END BEHAV; 3.时序仿真依据上述的VHDL设计程序得到的时序仿真波形如图9-10所示。图中的信号输入输出端子的定义与图9-9中的对应。
36、图9-10 位移位与串并变换器的 时序仿真波形9.5.2 逐位比较检测模块1. 1. 建模建模建模思想:n从图9-8中可知,接收和本地序列分别经过D触发器整形后,然后送入逐位比较模块。 n逐位比较检测模块的VHDL建模符号如图9-11所示。在时钟“CLK0”的的上升沿到来时,若比较控制信号“EN”=“1”时,则将A路序列和B路序列逐位进行异或比较,从Z端输出其比较结果。n图中:EN比较控制信号,高电平时进行逐位异或比较;A输入序列1;B输入序列2;CLK0时钟信号;Z比较输出。图9-11 移位比较器的VHDL建模符号2. 2. 程序设计程序设计-逐位比较器的文件名:TXORLIBRARY IE
37、EE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TXOR IS PORT(EN,A,B:IN STD_LOGIC; CLK0:IN BIT; Z:OUT STD_LOGIC);nEND TXOR;ARCHITECTURE BH OF TXOR ISBEGIN PROCESS(CLK0,EN) BEGIN IF CLK0EVENT AND CLK0=1 THEN IF EN=1 THEN -EN的高电平时开始比较 Z=A XOR B; -异或运算END IF; END IF;END PROCESS;END BH;3. 3. 时序仿真n根据以上VHDL源程序所得到的逐位
38、比较器的时序仿真波形如图9-12所示。从图可看出当两n序列的状态不同时,比较器的输出为“1”。图9-12 逐位比较器的时序仿真波形9.5.3 状态并行比较模块1.1.建模建模n图9-8中的状态并行比较模块的VHDL建模符号如图9-13所示。该模块的工作原理是把来自n并行输入与状态控制模块的两组并行输出信号进行高低位对应的电平比较。若对应状态相同则输出为“1”,否则为“0”。n图中:A0A3A组并行码;B0B3组并行码;时钟信号;比较输出。图9-13 并行状态比较器的VHDL建模符号2.2.程序设计-文件名:TCMP4LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL
39、L;ENTITY TCMP4 IS PORT (EN:IN STD_LOGIC; A0:IN STD_LOGIC; A1:IN STD_LOGIC;A2:IN STD_LOGIC;A3:IN STD_LOGIC;B0:IN STD_LOGIC;B1:IN STD_LOGIC;B2:IN STD_LOGIC;B3:IN STD_LOGIC; CLK0:IN STD_LOGIC; Z:OUT STD_LOGIC);END TCMP4;ARCHITECTURE BH OF TCMP4 ISBEGIN PROCESS (CLK0) BEGIN IF CLK0EVENT AND CLK0=1 THEN
40、IF EN=0 THEN Z=Z; END IF; IF EN=1 THEN IF (A0=B0 AND A1=B1 AND A2=B2 AND A3=B3) THEN Z=1; ELSE Z=0; END IF; END IF; END IF; END PROCESS;END BH;3. 3. 时序仿真时序仿真n根据以上设计程序得到的并行状态比较器的时序仿真波形如图9-14所示。图中的各路信号对应的输入输出端子定义和图9-13中的一致。图9-14 并行状态比较器的时序仿真波形9.5.4 本地m序列产生模块1. 1. 建模建模n本地m序列产生模块的VHDL建模符号如图9-15所示。其基本工作原
41、理是在“LOAD”为“1”时,向移位寄存器置初值;当“LOAD”为“0”时,m序列产生器按预定的反馈规律(参阅设计程序)进行移位,从而产生具有一定规律的伪随机m序列信号。图中的“Q”表示m序列串行输出端;B0B3为四路并行输出。图9-15 m序列产生器的VHDL建模符号2.2.程序设计程序设计-文件名:M4LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY M4 IS PORT(CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; Q :OUT STD_LOGIC; B0:OUT STD_LOGIC; B1:OUT STD_LOG
42、IC; B2:OUT STD_LOGIC; B3:OUT STD_LOGIC);END M4;ARCHITECTURE BEHAV OF M4 IS SIGNAL A0,A1,A2,A3:STD_LOGIC; BEGIN PROCESS(CLK,LOAD) BEGIN IF CLKEVENT AND CLK=1 THEN IF (LOAD=1) THEN -置初值 A0=0; A1=0; A2=0; A3=1; Q =A0;ELSE A2=A3; -移位 B3=A3; B2=A2; A1=A2; B1=A1; A0=A1; B0=A0; A3=A3 XOR A0; -反馈连接 Q=A0; EN
43、D IF; end if; END PROCESS; END BEHAV; 3. 时序仿真n按照上述VHDL源程序得到的m序列产生器的时序仿真波形如图9-16所示。图9-16 m序列产生器的时序仿真波形9.5.5 并行输入与状态控制模块1. 1. 建模建模n根据图9-8的框图功能,在同步搜索期间,并行输入与状态控制将接收并行序列和本地并行序列信号并行地输出给状态比较器,若对应的比较位都相同,则状态比较器输出“1”,否则输出“0”。n完成这一功能的并行输入与状态控制器的建模符号如图9-17所示。其建模思想是: 当EN=“0”时,该模块照原样将两组并行输入信号送到输出端,即A0A00、A1A11、
44、A2A22、A3A33、B0B00、B1B11、B2B22、B3B33;当EN=“1”时,将所有输出信号置“0”。这时,图9-8中的状态比较器的所有输入信号都电位相同并输出高电平,以表示系统已同步,进入同步保护状态。 图9-17 并行输入与状态控制器的VHDL建模符号2.程序设计文件名:en8library ieee;use ieee.std_logic_1164.all;entity en8 isport( EN:IN std_logic; A0,A1,A2,A3:in std_logic; B0,B1,B2,B3:IN STD_LOGIC; A00,A11,A22,A33: out std
45、_logic; B00,B11,B22,B33:OUT STD_LOGIC);END en8;ARCHITECTURE BH OF EN8 ISBEGIN PROCESS begin IF (EN=0) THEN A00=A0; A11=A1; A22=A2; A33=A3; B00=B0; B11=B1; B22=B2;B33=B3; END IF;IF(en=1) THEN A00=0; A11=0; A22=0; A33=0; B00=0; B11=0; B22=0; B33=0; END IF;END PROCESS;END BH; 3.3.时序仿真时序仿真 n并行输入与状态控制模块的
46、时序仿真波形如图9-18所示。图中显示了EN=“1”和EN=“0”n两种控制电平下的输 出 状 态 , 即 当EN=“0”时,送输入信号给输出端;当EN=“1”时,输出端置“0”。图9-18 并行输入与状态控制模块的时序仿真波形9.5.6 误码统计与门限检测模块1.1.建模建模n图9-8中的误码统计与门限检测模块的VHDL建模符号如图9-19所示。该模块的建模原理是:“en”表示误码脉冲信号,clk为时钟信号。在时钟的节拍下,对误码脉冲进行计数,同时对时钟脉冲也进行计数,然后,比较误码个数与时钟个数,若误码个数占时钟个数的百分之三十以上,则可初步认为误码率很高,说明系统的两序列的状态不同步,此
47、时,门限检测器将输出为outp=“0”,需要进行同步搜索。若误码个数占的比例较低,则outp=“1”,说明此时检测到的是真正的序列误码,并说明系统已状态同步,不再进行同步搜索。图9-19 误码统计与门限检测模块的VHDL建模符号2.2.程序设计程序设计-文件名:wumajishulibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity wumajishu is port (en,clk:in std_logic; outp:out std_logic);end wumajishu;archit
48、ecture bh of wumajishu issignal sum:std_logic_vector(6 downto 0);signal sumx:std_logic_vector(6 downto 0);signal w:std_logic;begin process(clk)begin if clkevent and clk=1 then sumx=sumx+1; -对时钟计数if (en=1) then sum=sum+1; -对误码脉冲计数elsesum=sum;sumx=sumx+1; -对时钟计数end if; if (sumx=1000000) then sum=00000
49、00; sumx20 then -判决门限 w=1; elsif sum=20 then w=0 ; end if; end if; end if;outp= not w;end process;end bh;3.时序仿真根据以上设计程序得到的时序仿真波形如图9-20所示。图中的输出“outp”表示有大误码情况下,在进行一定数量的误码计数后,其输出电平变为“0”。在这种状态下,outp=“0”将控制同步搜索器,进行同步搜索,直到outp=“1”为止,即系统的两序列状态同步。图9-20 误码统计与门限检测器的时序仿真波形9.5.6 连“1”状态计数器模块1.1.建模建模 图9-8中的连“1”计数
50、器与输出控制电路的功能有两个:n一是对状态比较器输出的连“1”状态进行计数,当计数器的计数量达到设置值时,计数器输出为“1”,并控制“并行输入与状态控制”电路,使之的各并行输出位置“0”。这样,状态比较器的各输入位皆为“0”,则其输出为“1”,表示状态已同步;若状态不同步,则连“1”计数器的输出始终为“0”。n连“1”计数器的另一功能是当其输出为“1”时,才使误码计数器进行计数。 若在整个系统已同步后,出现了状态失步,则通过图中的误码统计与门限检测电路的输出状态控制连“1”计数器。图9-8中的连“1”状态计数器的建模符号如图9-21所示。“en”端的信号来自状态并行比较器的输出;“clr”来自