您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术扩频通信中伪随机序列编解码器的FPGA实现 正文
扩频通信中伪随机序列编解码器的FPGA实现

扩频通信中伪随机序列编解码器的FPGA实现

点击数:7742 次   录入时间:03-04 11:56:25   整理:http://www.55dianzi.com   DSP/FPGA技术


3.5 decoder模块
    当接收到同步头结束信号0之后,就进入了同步解调主体部分。在coder模块中曾经说过,为了解决编码和解码时钟不完全一样的问题,在每发送480个数据之后重新进行一次同步查找过程。这由其中的一个计数器main_counter来控制,当查找到同步头结束0信号之后,开始对main_counter进行计数加1。当main_counter计数到480后,进行同步头再次检测,再次达到同步之后重复上面的步骤。所以每次解码只能得到480个数据,要进行多次的过程才可以将一个完整的信息完全发送到接收端。
    在这里需要对程序中的一些细节与对应的图像进行比较详细的说明。
    首先,在同步头的判断时选取的阈值是28。在寻找同步的过程中,如果接收到的31个信号和本地的31位M序列没有完全同步,则由于M序列的性质使得累加的结果比较小,一般小于10,即使在噪声的干扰下也不会超出20的水平;但是如果两者完全同步,累加的结果应当在30左右。所以在这里所选取的阈值为28。
    第二,在本模块中,不论是寻找同步头还是同步解码,对解码用到的累加器所赋的初始值都为50。也就是说,在上面介绍的判断同步头的过程中,在对每一个输入数据都进行累加之后,实际选取的阈值是50+28=78。这样做的目的很简单,为了方便计算和相应的判断。因为输入的信号可能是正的也可能是负的,所以所做的运算也可能是加法或减法。如果把基准值都赋为0,那么在电路实现的过程中,举个很简单的例子:9位的累加结果寄存器如果为0(二进制表示为2’b000000000),加上输入信号-2(即带符号的3’b110),本应当产生-2的结果,但是在实际硬件实现的时候却不能得到所要的答案。它的运算方法为:
      

    可以从上面的运算结果中清楚地看出,直接在0的基础上进行加减运算会出现预料之外的结果。这种方法只有通过相应的扩位运算才可以达到所要的结果。也就是说对于输入的3位信号(indata),必须将其扩充成为相应的9位值才可以跟sum进行加减运算。还是以上面数据为例,在indata(2’b110)数据一进来就将其扩展成为带符号位9位的数据(9’b111111110),两者都是表示带符号位的数据-2,但是后者和sum进行加减时就不会出现上面的问题。
   

    但是这样对于这种方法来说,远不如直接将累加器sum的初始值设定为50方便,这样一来就只在正数的范围内进行考虑。同样的到达同步解码状态后,实际也不是将0定为判断基准,而是50。通过如图9所示的图像可以看出来。


    上面的图形是在找到同步头之后进行同步解码的开始情况。最上面两个信号是输入信号indata和将输入信号经过绝对值运算得到的结果psumi,将带符号的3位信号转化为不带符号的2位数据,再根据与第j位+M序列符号位与输入数据符号位的比较,选取相应的加法或者减法运算。
  从上图中还可以看出,累加器sum的开始的基准值为50。每进入一个数据就在50的基准上进行加减法运算。最后当计数器j从0累加到31之后,就做一次相应的判决输出:如果sum值大于50就输出信号为1,如果小于50就输出为0,见图10。


    图中在计数器j达到30的时候,对应的sum值为12(小于50),于是outdata进行判断输出,输出信号为0(低电平)。这样就完成了计数累加判断的过程。
4 系统性能
    在加入差错控制编码后,传输20 000个字节未发现误码。



上一页  [1] [2] 


本文关键字:通信  解码器  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术