通信算法验证应用
Tags
Digital Signal Processing Design
Signal Processing Techniques
FPGA-Based Signal Processing
Last edited by
AI summary
本文讨论了通信算法的验证应用,主要包括通信的基本概念、信息表示、信号编码、通信要素、主流通信方式以及扩频通信的原理与实现。详细介绍了扩频调制编码设计、解码过程、汉明码的应用及其抗干扰性验证,强调了在数字电路设计中通信的重要性和复杂性。
Last edited time
Nov 27, 2024 01:58 PM
第一节:通信1.1 信息表示1.1.1 通信格式1.1.2 信号编码1.2 通信要素与主流通信1.2.1 通信三要素1.2.2 主流通信1.3 扩频通信1.3.1 扩频通信1.3.2 m序列1.3.2.1 本原始多项式1.3.2 m序列发生器电路1.3.2.3 m的特性第二节:扩频通信算法验证2.1 扩频调制编码设计2.1.1 扩频编码结构设计2.1.1.1 待调制序列发生器电路实现2.1.1.2 载波序列发生器电路实现2.1.1.3 调制编码电路实现2.2 扩频解码2.2.1 扩频解码架构设计2.2.2 序列恢复程序实现2.2.2.1 程序实现2.2.3 信息恢复程序设计实现2.2.3.1 汉明检纠错2.2.3.2 信息恢复程序实现2.3 扩频抗干扰性验证2.3.1 高斯噪声
第一节:通信
通信是数字电路设计中主要应用领域,简单的说就是在不同电路系统或者设备之间通过电路交换信息的过程。
通信从设计角度看,主要包括2个方面:
信息:有价值的东西,在电子设计中就是有价值(对我们生活有用)的数据,可以这样说只要是电路设计中的数据皆为信息。
交换:通过某种方式不同的电路系统或者设备之间交互价值,交换的方式可以理解为以下2种:
数字通信:将有价值的数据转话位数字信号,通过数字通信接口或者总线,传输信息
载体通信:将有价值的数据以某种波为载体,通过载体传播信息,常见的载体有
声音 :比如广播
光 :比如光纤
电信号 :比如电缆
在数字电路设计中只要我们涉及到以上应用,我们相对来说参与通信设计
1.1 信息表示
在通信中,信息在传递的时候有一定的格式,比如数字通信USB接口以包作为数据格式
在通信中,往往需要将原始数据编码为编码信息,在进行传输
1.1.1 通信格式
在一些复杂的通信中,信息一般以帧或者包作为数据结构传递,简单的通信可以以字节为单位传递信息,在数字通信中有的情况可以以比特传递信息。
1.1.2 信号编码
在一些通信中,往往需要将原始数据进行编码,按照编码的用途可以分为信道编码和信源编码。
信源编码:将原始数据进行压缩,提高通信效率,比如H264编码,JPEG编码,
信道编码:将原始数据添加多余的比特,为了提高通信的可靠性,信道编码按照编码方式分为如下2种:
卷积码
由于它的编码方式,编码不但与当前信息有关,还与之前的编码有关,它的表示为
Code=(N,K,L)
N:编码总长度
K:每个码中信息长度
L:记忆深度
分组码
由于它的编码方式,编码不但与当前信息有关,与之前的编码无关,它的表示为
Code=(N,K)
N:编码总长度
K:每个码中信息长度
1.2 通信要素与主流通信
1.2.1 通信三要素
在通信中参与通信的元素,即参与通信物理个体,概括起来如下3种
信源:发起信息的电路系统或者设备
信宿:信息的目的段的电路系统或者设备
传播介质:载体运动的介质,可以是无形或者有形
1.2.2 主流通信
- 卫星通信
通信在传播的时候,需要中继,当距离较远的的时候,地面中继建设难度大,以靠非地面中继,以卫星作为中继实现全球通信。
- 光纤通信
在常见载体中,光是传播最快的,在信源和信宿端加光电转换电路即可提高传输速率
- 扩频通信
在通信抗干扰解决方案中,扩频通信能够很好的满足抗干扰的要求
1.3 扩频通信
在通信中抗干扰是影响通信的重要因素,如何能够更好的解决通信抗干扰问题就在通信应用中比较重要。
香农很早提出了香农定理,它很好的阐述了关于通信抗干扰性的规律,定理如下:
Rmax(通信能力) :通信过程中所能达到的最大数据传输量
W(信号自身的一个参数) :带宽,指的是信号能量集中的频谱宽度
S:信号功率
N:噪声功率
S/N:信噪比,值越大信号质量越好,当S/N<1意味信号倍被噪声掩埋,换句话说接收到但是噪声信号,在正常通信过程中有时无法正常通信。
通过以上定理我们可以看出,当S/N值较小的情况,并且Rmax值已经最大(达到最大的通信能力),为了保证正常通信,我们需要将W值变大,即频谱展宽,也就我们所说的扩频。
以上香农定理应用到实际中,就能够解决通信抗干扰性问题,因此现在的通信中可以引入扩频机制,扩频是cdm的基础。
1.3.1 扩频通信
扩频通信是香农定理的实际应用,本质上就是增大通信信号的带宽,一般原始信息所表示的信号属于低频窄带信号。在应用中想办法将低频窄带信号调制到高频宽带信号上即可实现扩频。
实际中扩频方式有如下几种:
- Dsss(直接序列扩频)
Tz = seq_s + seq_x ;
Seq_s(低频序列):离散信号,信息的转化为离散信号,离散信号即原始序列,这里我们又叫做待扩频序列
Seq_x(高频序列):离散信号吗,输出序列频率固定,叫做载波序列
Tz:调制序列
- 跳频(FHSS)
Tz = seq_s + seq_x ;
Seq_s(低频序列):离散信号,信息的转化为离散信号,离散信号即原始序列,这里我们又叫做待扩频序列
Seq_x(高频序列):离散信号吗,叫做载波序列,该序列的频率不固定,每隔一段时间让序列的输出频率随机变化(随机码控制随机频率)
Tz:调制序列
- 跳时(TH)
Tz = seq_s + seq_x ;
Seq_s(低频序列):离散信号,信息的转化为离散信号,离散信号即原始序列,这里我们又叫做待扩频序列
Seq_x(高频序列):离散信号吗,输出序列频率固定,叫做载波序列
Tz:调制序列,随机改变TZ的时长
- 线性在调制
跳频的一种特殊情况
Tz = seq_s + seq_x ;
Seq_s(低频序列):离散信号,信息的转化为离散信号,离散信号即原始序列,这里我们又叫做待扩频序列
Seq_x(高频序列):离散信号吗,叫做载波序列,该序列的频率不固定,每隔一段时间让序列的输出频率线性变化
Tz:调制序列
1.3.2 m序列
在扩频通信中,有时用随机码或者随机序列,比如直接序列扩频就需要随机序列实现,m序列就是能够用于扩频的随机序列之一。
M序列是通过硬件电路产生的,它通过移位反馈电路产生PN序列,它的电路结构可以用数学模型表示。
(N表示阶,A表示移位寄存器。C表示本院多项式系数 ,+ 为模2加)
1.3.2.1 本原始多项式
原始多项式是系数的一种表示方式,在扩频m序列电路中,C必须用本原多项式
例如次数为5的本原多项式为x5+x2+1
C5 =1
C4=0
C3=0
C2=1
C1=0
C0=1
1.3.2 m序列发生器电路
比如N=5
(N表示阶,A表示移位寄存器。C表示本院多项式系数,+ 为模2加)
A5C0 + A4C1 + A3C2 + A2C3 + A1C4 + A0C5 =0
A5C0 =-(A4C1 + A3C2 + A2C3 + A1C4 + A0C5)
A5 =-(A4C1 + A3C2 + A2C3 + A1C4 + A0C5)
通过m序列发生器电路可以看出,当N=5的时候一共有31个m序列,我们把这31个m序列叫做等价相异的m序列。
练习:
实现31个N=5的m序列发生器电路,产生的这31个序列为等价相异的m序列。
把每个m序列前31比特打印文件中
1.3.2.3 m的特性
M序列所谓PN序列的一种,可以用来扩频,它也有自己的特性
- 周期性
M序列的周期是2N-1(N为阶)
例如:
0101010 0101010 0101010 0101010 0101010
- 均衡性
M序列在每个周期中,1的个数比0的个数多1个
- 游程特性
在m序列中,状态“0”或“1”连续出现的段称为游程。m序列的一个周期中,游程总数为2n-1,其中“0”和“1”各占一半。这种游程分布表现出随机性。
- 自相关特性
m序列具有尖锐的自相关特性,即序列与自身的时间延迟版本的相关性很高,而与其他序列的相关性很低。这使得m序列在通信中非常有用,因为它可以减少干扰和误码率。
第二节:扩频通信算法验证
2.1 扩频调制编码设计
要求:
- 采用包作为数据传输单位
- 信道编码采用汉明码,信源编码采用PCM码
- 通信同步采用最基本位同步的方式
- 不支持相位同步
- 通信数据格式
规定每512个信息位为一包数据,即129个汉明码,我们在每包数据之间附加分隔符,也可以当做包头使用,分隔符我们规定7b‘b000000’
- 汉明码
汉明码是最基本一种信道编码,是分组码的一种,表示为(7,4)
D6 | D5 | D4 | D3 | D2 | D1 | D0 |
信息位 | ㅤ | ㅤ | ㅤ | 监督位 | ㅤ | ㅤ |
D2= D6 + D5 + D4
D1= D6 + D5 + D3
D0= D6 + D4 + D3
- 通信同步
数字通信:主要依赖于时钟
载体通信:三方(基站,卫星)同步
不管人通信,同步是保证正常数据传输的前提,我们是发送方和接收方也需要进行同步,这里我们我们上电的时候进行一次同步,采用基本位同步方式
位同步 = 空闲序列+同步序列
空闲序列:为了在接收方和发送方之间预留足够的同步时间,这里我们规定10比特的1
同步序列:规定1比特0
2.1.1 扩频编码结构设计
2.1.1.1 待调制序列发生器电路实现
端口说明
信号名 | 描述 |
系统相关 | ㅤ |
clk_c | 信息时钟 |
rst_n | 系统复位 |
输入信息序列 | ㅤ |
info | 信息序列 |
ready_info | 当 ready_info==1 表示准备接收info |
输出待调制序列 | ㅤ |
seq_s | 待调制序列 |
flag_seq_s | 当 flag_seq_s==1 表示seq_s有效 |
2.1.1.2 载波序列发生器电路实现
端口说明
信号名 | 描述 |
系统相关 | ㅤ |
clk_cx | 载波序列时钟 |
rst_n | 系统复位 |
输出待调制序列 | ㅤ |
seq_x | 载波 |
flag_seq_s=x | 当 flag_seq_x==1 表示seq_x 有效 |
2.1.1.3 调制编码电路实现
信号名 | 描述 |
输入载波序列 | ㅤ |
seq_x | 载波序列 |
flag_seq_x | 当 flag_seq_x==1 表示seq_x 有效 |
输出待调制序列 | ㅤ |
seq_s | 待调制序列 |
flag_seq_s | 当 flag_seq_s==1 表示seq_s 有效 |
输出PCM码 | ㅤ |
Code[2:0] | PCM编码,默认精度3 |
2.2 扩频解码
扩频解码就是信宿经过一系列的通信把接收到的带噪声的编码数据,根据其特性恢复出原始信息。
扩频解码主要完成2个操作,分别是恢复序列,信息恢复
序列恢复:从带噪声的编码数据中,恢复出我们想要的序列
信息恢复:将序列按照包格式,通过信道编码,恢复出原始信息
2.2.1 扩频解码架构设计
2.2.2 序列恢复程序实现
序列恢复是从带噪声的编码数据中恢复恢复出我们想要的序列,如何才能恢复序列?下来我们就这个问探讨。
通过以上编码可以看出当带调制的码元为1的时候,编出输出的最高位与当前对应的载波序列相同,码元为0的时候,编出输出的最高位与当前对应的载波序列相反
假如高频载波序列的输出频率是待调制的低频序列的N倍
序列判定
sum | 恢复序列 |
>0 | 1 |
=0 | 不确定 |
<0 | 0 |
注意:m[cnt] 值得是当前序列,解码的时候我们必须需要个用于解码的m序列,为了信息保密,算法中用于解码的m序列只要与编码端的序列相关性较好就可以用来解码。
2.2.2.1 程序实现
端口说明
信号名 | 说明 |
系统相关 | ㅤ |
clk_dx | 序列恢复时钟 |
rst_n | 系统复位 |
编码输入(带噪声) | ㅤ |
code_noise[2:0] | [-3:+3]
带噪声的编码输入 |
输出恢复序列 | ㅤ |
seq_rc | 恢复序列 |
flag_seq_rc | 当 flag_seq_rc==1 表示seq_rc 有效 |
2.2.3 信息恢复程序设计实现
当我们从带噪声的数据中恢复出的序列,把序列转换为汉明码包数据,提取有效信息,并且输出。
2.2.3.1 汉明检纠错
汉明码是一种信道编码编码,这个码具备检错能力(接收方每次收到汉明码,能够判单收到的码是否正确),同时具备1比特的纠错能力(当接收方每次接收到的汉明如果7比特数据中错误了1个比特,汉明码是能够将该接收到的码进行矫正,如果7比特数据中错误2个或者2个以上的比特,汉明码是无法矫正)。
D6 | D5 | D4 | D3 | D2 | D1 | D0 |
信息位 | ㅤ | ㅤ | ㅤ | 监督位 | ㅤ | ㅤ |
D2= D6 + D5 +D4;
编码过程中,D2本质上是D6,D5,D4的偶校验位
D1= D6 + D5 +D3;
编码过程中,D1本质上是D6,D5,D3的偶校验位
D0= D6 + D4 +D3;
编码过程中,D0本质上是D6,D4,D3的偶校验位
假如定义S1,S2,S3,表示如下:
S1 = D6 + D5 +D4 + D2;
如果S1=0,D6,D5,D4,D2都是正确的,否则这4个数肯定有错误
S2 = D6 + D5 +D3 + D1;
如果S2=0,D6,D5,D3,D1都是正确的,否则这4个数肯定有错误
S3 = D6 + D4 +D3 + D0;
如果S3=0,D6,D4,D3,D0都是正确的,否则这4个数肯定有错误
这里我们把S1,S2,S3叫做叫校正子,假设汉明码完全没有错误,或者只错误1比特的情况下,可以得出如下结论:
{S1,S2,S3} | 错误位置 | {S1,S2,S3} | 错误位置 |
3’b000 | 完全正确 | 3’b011 | D3 |
3’b001 | D0 | 3’b101 | D4 |
3’b010 | D1 | 3’b110 | D5 |
3’b100 | D2 | 3’b111 | D6 |
以上结论不适用于错误2比特或者2比特以上,如果存在这种情况,我们认为我们收到的汉明码是错误的,在实际应用中,我们针对汉明码矫正采取以下措施:
- 完全正确,错误2比特或者2比特以上,直接输出信息位
- 错误1比特,按照以上的表格进行矫正(对应错误位取反)
2.2.3.2 信息恢复程序实现
端口说明
信号名 | 描述 |
系统相关 | ㅤ |
clk_d | 信息时钟 |
rst_n | 系统复位,低电平有效 |
扩频序列恢复有关 | ㅤ |
seq_rc | 扩频恢复的序列 |
flag_seq_rc | 当flag_seq_rc==1表示seq_rc有效 |
有效信息输出 | ㅤ |
info_data [7:0] | 有效信息 |
flag_Info_data | 当flag_Info_data==1表示Info_data有效 |
2.3 扩频抗干扰性验证
抗干扰性验证
我们通过统计误码率的方式验证抗干扰能力,当
mem_src[i] == mem_dec[i]
则会说明当前时刻解扩恢复的信息是正确的,否则错误,cnt_er计数器计数,假如一共测试`TESTNUM个数据,误码率 = ((cnt_er/`TESTNUM)*100)%原则上误码率越高抗干扰性越弱,反之越强。
2.3.1 高斯噪声
高斯噪声是一种常见的噪声,它的概率密度函数服从正态分布,在测试中我们使用的是随机噪声,这里我们讨论高斯噪声的FPGA实现思想。
硬件实现高斯噪声的核心是中心极限定理
Loading...