综合

一種基于FPGA的AGWN信號生成器的設

2019-11-18 17:12:58来源:励志吧0次阅读

一种基于FPGA的AGWN信号生成器的设计 - FPGA/CPLD - 电子工程

在通信系统中分析计算系统抗噪声性能时,经常假定信道噪声为加性高斯型白噪声(AGWN)本文就是通过分析AGWN的性质,采用自顶向下的设计思路,将AGWN信号分成若干模块,最终使用Verilog硬件描述语言,完成了通信系统中AGWN信号发生电路的设计和仿真,其实质上是设计一个AGWN信号发生器该信号主要应用在数字通信系统中,所以只需要产生数字形式的AGWN信号,这样既便于信号产生,也便于在数字通信系统中运用

1 AGWN信号的产生

AWGN信号指同时满足白噪声和高斯噪声的条件的信号白噪声功率密度函数在整个频率域内是常数,即服从均匀分布完全理想的白噪声不存在高斯噪声指概率密度函数服从高斯分布(即正态分布)AGWN信号其实就是一个具有确定功率谱密度和概率分布函数的随机信号

由随机过程的理论可以知道,不相关随机序列的功率谱密度为常数(白噪声),伪随机序列(PN)就是这样的不相关序列再由中心极限定理,独立同分布的随机变量的和收敛于高斯随机变量这样就可根据PN序列的性质和中心极限定理来设计AWGN信号

为简单起见,设计用8个PN序列发生器产生8个独立的伪随机序列(每个分为实部和虚部),根据中心极限定理,将8个信号相加之后的信号,更加接近于AG-WN信号,最后再乘以一个可变系数,就产生了可在数字通信系统中直接引用的AGWN信号AGWN信号生成的总体框图如图1所示

在FPGA内部产生n位并行伪随机序列,可由n个并行的结构相同但初始态互不相同的线性反馈移位寄存器(LFSR)产生结构相同的LFSR在不同初始状态下产生的序列之间存在着一种移位关系,导致n个序列并非相互独立如果所期望的序列长度为k,那么只有在保证任一状态在k次移位操作之内都不会与其他状态发生重复后,这种方法才是可取的

在通信中,信号一般都表示为复数形式,所以该设计采用了实部与虚部的表示方法,AGWN信号分为实部与虚部,它们满足正交关系

2 模块的设计与实现

设计主要分为三大模块:PN序列产生模块,产生符合高斯型白噪声伪随机序列;加法器模块,将产生的8个PN序列相加产生更加符合AGWN信号的伪随机序列;乘法器模块,将加法器产生的伪随机序列乘以一个可变系数,得到最终的符合数字信号的伪随机序列

2.1 n个PN序列发生器的设计与实现

PN序列产生模块的主要功能就是产生PN序列而PN序列中m序列又是周期最大,伪随机性最好的一种移位寄存器序列m序列的自相关性、随机性特性很好地满足了AGWN信号的要求,故用其产生的序列可以来产生该设计中的信号

要产生m序列,就要求移位寄存器的反馈链路满足本原多项式,由,n个并行的结构相同但初始态互不相同的线性反馈移位寄存器(LFSR)产生的序列在其周期足够长的情况下可以把它们看作是独立的

设计中选取n=8,移位寄存器位数选取为25位,其m序列周期为33 554 431其信号实部抽头选取3,0,虚部抽头选取3,2,1,0,分别对应PN序列的特征多项式这样选取是因为一个移位寄存器的本原多项式有很多种,这里选取的两个抽头比较简单,对电路实现在资源、结构上都有优势PN发生器选择8个是考虑到资源利用率方面的问题,这样选取可使资源利用率达到最大

2.2 叠加电路设计与实现

根据中心极限定理,对于若干个独立同分布的随机变量,其和的极限分布是标准正态分布这样将产生的8个序列叠加将产生符合高斯特性的序列发生器串行输出的实部,虚部8个独立的码相异或即每8个一位二进制数相异或

2.3 乘法系数电路的设计与实现

2.3.1 设计思想

乘法器设计是FPGA设计中的一个难点,有很多种算法来实现它可以采用移位加实现,在GF(28)域上乘法是这样进行的:乘以2相当于将该8位二进制数向高位移一位,如果此8位二进制数的最高位为1,则需要将移位结果异或8位二进制数还有一种方法就是,在代码中直接将乘法写成*,让综合工具自己去综合出可用的硬件电路本文采用综合工具自带的模块电路

2.3.2 电路实现

设计对时序要求较严格乘法器电路必须用到三个寄存器以用来保存加法器串行输出的连续8个PN码,乘法系数和乘积

在reset之后,PN序列发生电路已经产生第一个输出码,同时加法器也将结果运算出来,但这时乘数寄存器中只有最低位是有用的刚传进来的一位码,其他位还是无用信号,只有到了8个时钟信号之后,乘数寄存器中才保存了8个连续的有用的PN码,这时必须很快地进行乘法运算并将结果保存在乘积寄存器中,第9个时钟信号到来时乘法运算必须进行完毕,空闲出来的乘数寄存器用来寄存后面的8个连续的PN码,然后一直这样循环工作8个乘数寄存器保存PN码时钟信号后,立即进行乘法运算并保存乘积,这就要求乘积寄存器空出来,为了空出乘积寄存器,第8个时钟到来时必须将乘积寄存器中的数据一位一位串行输出乘积寄存器中有16位二进制数,这就要求一个时钟信号的2倍频信号作为乘积寄存器串行输出的时钟信号基于以上问题的考虑,乘法电路用综合工具自己生成的8位乘法器,该模块电路中还要用到一个2倍频电路,这也用综合工具自带的模块电路

3 综合、仿真结果

在QuartusⅡ集成了多种设计输入方式,并可使用Assignment Editor(分配器)方便地设定管脚约束和时序约束,正确地使用时序约束可以得到设计的详细时序报告,便于分析设计是否满足时序要求在整个设计流程中,完成了设计输入以及成功综合、布局布线,只能说明设计符合一定的语法规范,但其是否满足设计者的功能要求并不能保证,这需要通过仿真进行验证

3.1 功能仿真

功能仿真(前仿真),不带时延信息,对电路物理行为进行仿真,速度较快

图2是对顶层模块(AGWN模块)进行功能仿真后在不同时段的波形由图中可以看出,输出序列具有随机性

图3~图5分别是对各个分模块进行前仿真后的波形图图3是8个PN序列发生器的仿真波形图

图4是加法器模块的仿真波形:因为reset之后的第一个clk上升沿输出的是PN序列的第二个码字,第一个码字在reset同时已经输出,加法电路是一个组合电路,所以加法器的输出(addi/addq)在系统刚启动时不会出现不确定值

图5是系统正常运行后乘法模块的仿真波形值得注意的是在系统刚开始运转时,reset信号之后,由于PN序列发生器和加法器中的串行输出数据,还没有传递到乘法器模块中的被乘数寄存器(multiregi/multi-regq)和乘积寄存器中,这时从乘积寄存器中串行输出一些不确定值

3.2 综合、布局布线

综合是指将HDL语言,原理图等设计输入翻译成由与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑连接,并根据目标及要求优化所生成的逻辑,最后输出edf或vqm表文件供布局布线用

布局布线是将综合生成的逻辑表适配到具体器件中,并把工程的逻辑和时序要求与器件的可用资源相匹配,它将每个逻辑功能分配给最好的逻辑单元位置,进行布线和时序,并选择相应的互边路径和管脚分配

3.3 时序仿真

时序仿真也称后仿真,即通过加入综合后表及时延信息对电路进行综合仿真,速度较慢前后仿真与综合、布局布线的关系是一脉相承的,又相辅相成功能仿真与综合、时序分析形成一个反馈工作过程,只有过程收敛之后的综合、布局布线等环节才有意义,孤立的功能仿真即使通过也是没有意义的,如果在时序分析中发现时序不满足需要更改代码,则功能仿真必须重新进行图6是在QuartusⅡ中综合布局布线之后的时序仿仿真波形由于用了2倍频电路,所以系统只用了一个时钟信号clk,a为8位的系数为观察产生的AGWN的随机性,截取的图形是同一仿真在不同时段的波形图

4 结 语

本文使用Verilog硬件设计语言,采用自顶下的设计思路,将整个设计分为了不同的小模块,分别实现每一个模块的功能,最终设计出AGWN信号产生的Ver-ilog电路,并实现了功能仿真、综合、布局布线、时序仿真该电路实现了在数字通信系统中常用的AGWN信号,由于数字通信系统中用到的是数字信号,可以直接在数字通信系统中加载所产生的数字信号使用如果需要用到模拟的AGWN信号,可将产生的数字信号通过A/D转换器转换为模拟信号再进行使用

生物谷药业
肠道感染腹泻的原因
减肥药排行榜10强
儿童咳嗽专用药有几种
分享到: