英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料
基于FPGA的BPSK和QPSK实现使用地址反向累加器的调制器
阿曼·萨菲(Amean Al Safi)和布拉德利·巴祖因(Bradley Bazuin)
(西密歇根大学)
摘 要:数字调制器在现场可编程门阵列(FPGA)上实现是最近受到广泛关注的研究领域。大多数研究集中于在FPGA上实现简单的数字调制器,例如幅移键控(ASK),频移键控(FSK)和相移键控(PSK)。本文提出一种使用反向寻址累加器的技术来实现正交相移键控(QPSK)和二进制PSK(BPSK)的新方法。BPSK调制器的实现需要两个具有180度相移的正弦信号。使用基于直接数字合成器(DDS)技术的查找表(LUT)获得第一个信号。通过使用相同的LUT,但在累加器的最高有效位反相以获得异相信号之后,获得了第二个信号。 对于QPSK调制器,需要四个正弦波。 仅使用一个LUT,就获得了这些波。前两个波是通过使用两个累加器产生的,该两个累加器工作在理想的两倍频率方波时钟的上升沿和下降沿,导致相移90度。在反转每个波的最高有效位后,其他波是从相同的累加器获得的。整个系统的实现是通过超高速集成电路硬件描述语言(VHDL)完成的,而无需像许多论文一样借助Xilinx System Generator或DSP Builder工具。
关键词:PSK;BPSK ;QPSK;FPGA;VHDL;SDR;数字调制器
I 引 言
软件定义无线电(SDR)最初是约瑟夫·米托拉提出的,是一种实现可编程和可重新配置的无线电收发器的方法,现已成为一种实现各种通信系统的广泛使用的方法。随着低成本硬件终端的巨大发展,基于SDR的系统的优势变得更加明显。这些可重新配置的终端硬件,例如通用软件无线电外围设备(USRP),是任何基于SDR的系统中的主要组件。USRP本身由FPGA,数模转换器(DAC),模数转换器(ADC)和混频器组成,其中FPGA对基于SDR的系统执行关键的滤波和数据速率处理工作。 扩展此概念以合并其他调制和解调操作,是否有可能使用FPGA,简单甚至嵌入式CPU以及其他低成本电子产品来构建基于SDR的系统?可以通过着眼于该方向上的一些研究活动来找到这些问题的答案,该研究活动着重于使用FPGA实现数字调制器。
在过去的几年中,在FPGA上实现数字调制器已经做出了许多研究贡献,但是仍然有大量工作要做。以前的大多数工作都集中在简单数字调制器(例如ASK,FSK和PSK)的实现上。Quadri和Tete介绍了该领域的主要研究论文,并提供了一些使用Xilinx System Generator的实现示例。这里将总结一些研究,特别是那些与正在报告的工作有关的研究。
2014年,Bhore和Sarde提出了在SPARTAN -3 FPGA上实现BPSK调制器和解调器的方法。他们使用MATLAB SIMULINK来构建他们的整个系统,并使用Xilinx System Generator来生成模型的VHDL实现。BASK,BFSK和BPSK调制器是由Erdogan等人在Veralog的Altera开发和教育板上实现的。他们使用DDS生成频率为1KHz的正弦波载波。他们的系统直接在Verilog中实现,而无需使用Xilinx System Generator工具。 BPSK也由Popescu等在SPARTAN -3入门套件板上实现。 MATLAB SIMUINK和Xilinx系统生成器用作生成VHDL实现模块的工具。Chye等人介绍了如何在Virtex-4 FPGA开发板上设计和实现BPSK发送器的详细指南,该开发板上带有在P240模拟模块上可用的DAC。软件和设计工具(例如MATLAB SIMULINK和Xilinx System Generator)用于验证在行为,功能,综合,时序和约束区域方面的设计输出。该实现是在Xilinx SystemGenerator生成的Verilog中完成的。
Rajaram和Gayathre展示了基于FPGA实现不同的数字通信方案,例如正交幅度调制(QAM),BASK,BFSK和BPSK。一种SPARTAN-3 FPGA被用作实现的基础。坐标旋转数字计算机(CORDIC)算法用于生成正弦波载波。本文的独特之处在于,所有操作都是在VHDL中完成的,而不是像其他论文一样在MATLAB和Xilinx System Generator中完成的。专研等人用一种新颖的“全数字发射机”将软件定义功能的概念扩展到了射频。全数字发射机使用脉冲宽度调制(PWM)方法,从而可以在数字域中直接合成二进制格式的射频(RF)信号。 PWM信号处理的低速率使其适合使用FPGA实现。通过组合通用QAM调制器和RF脉宽调制器,他们展示了具有实时RF信号的实时QAM发射机系统,并使用了逼真的信令格式。
不仅如前几节所述,数字调制器还使用各种基于FPGA的开发板实现了模拟调制器。 这些研究中的一些已经达到了他们认为在效率,功耗和资源利用方面的最佳解决方案。
尽管已经取得了一些进展,但仍有工作需要做。这项工作将集中于实现更复杂的调制方案,为当前实现的方案寻找更有效的设计,并开发不需要专用软件工具或库的解决方案。提出了一种在FPGA上使用累加器实现BPSK和QPSK模块的新方法。到目前为止,还没有人在基于FPGA的调制器方面提出或使用这种思想。本文的其余部分组织如下:第二部分是对该方向研究工作的回顾,第三部分是提出的实施方法,第四部分是实施结果,第五部分是结论和未来的工作。
II 相关工作
简单通信调制器的成功实现为更复杂的系统如QPSK和QAM的实现打开了大门。本文重点研究了使用反向寻址累加器实现BPSK和QPSK。关于用FPGA实现BPSK的论文有几篇,但是没有一篇提到使用反向地址累加器来消除相位正弦信号的技术。此外,利用FPGA实现QPSK调制器的研究论文很少。
2015年,Gaikwad等人在FPGA上实现了QPSK收发系统。他们在论文中提出的概念与此类似,但使用了不同的方法。Song和Yao还提出了一种基于FPGA的QPSK调制解调器。它们不显示或报告生成模拟或射频信号输出,但直接将数字I和Q调制解调器输出连接到I和Q接收的输入。总的来说,没有给出足够的细节利用和实施。Thombare和Shah提出了一种使用16和64 ROM存储器[20]实现QPSK调制器的有效方法。它们依赖于I(同相分量)和Q(正交分量)数据的当前值和下一个值,从ROM表中存储的符号生成下一个符号。尽管他们没有提及,他们的概念非常类似于之前获得专利的Feher QPSK调制技术。Kazaz等人在Altera Cyclone IV FPGA上提出了一种基于SDR的QPSK调制器的高效设计与实现。为了设计和实现QPSK调制器,他们使用Altera DSP Builder工具结合MATLAB Simulink、Modelsim和Quartus II设计工具。作为可重构的硬件平台,他们使用了一个带有ADC/DAC子卡的Altera DE2- 115开发与教育委员会。他们在MATLAB SIMULINK中创建了他们的项目,然后使用Altera DSP Builder工具将系统转换为VHDL。Elamary等人提出了一种基于VHDL的QPSK调制器在Altera板上的实现方法。他们使用移相器从一个输入正弦波[23]产生四个信号。这些信号被用作多路复用器的输入,多路复用器根据消息信号选择其中之一。在实际测试之前,他们将系统与MATLAB中的仿真模型进行了比较。生成的QPSK信号在传输前经过模拟滤波处理。Kolankar和Sakhare提出了一种利用Xilinx系统生成器实现QPSK调制器功耗的有效方法。他们在MATLAB SIMULINK中设计了整个系统,然后使用Xilinx system Generator生成了该模型的VHDL实现。他们借助Xilinx System Generator实现了MATLAB中的一个新特性——硬件协同仿真,以确保实现的系统在性能和硬件实现上都是高效的。
我们实现系统的方式是新颖的,并且与下一节将展示的其他方式不同。我们使用一个LUT和一个时钟信号,并使用累加器输出在不同的相移时产生不同的信号。
III 提出IMPLEMENTTION方法
A. BPSK:
BPSK是PSK的最简单形式。它使用两个180度相移的信号来产生符号。图1是BPSK的星座图。
BPSK的一般方程为:
其中Es为每个符号的能量,Ts为符号持续时间,fc为载波频率。根据n的值,可以产生两个信号:
这意味着必须生成两个正弦波才能在VHDL中实现BPSK。为此,使用了DDS技术。在DDS方法中,一个24位的带LUT的累加器被用来产生正弦波。蓄电池在时钟的上升沿上工作。将累加器的8位最有效位作为地址,从LUT中选择相应的正弦信号幅度。由于使用的地址有8位宽,LUT必须有256个样本值,覆盖一个周期的正弦信号。这256个样本值是在MATLAB中生成的,并以文本文件的形式导出到VHDL中。它们也可以使用其他软件生成,如Microsoft Excel。根据前面的描述,累加器和LUT只能给我们一个信号。对于BPSK,我们需要找到一种方法来获得与第一个信号相比相位相差180度的另一个信号。最简单的方法是将第一个信号乘以(-1)它对应于180度的相移。不幸的是,在VHDL中,程序员会尽量避免乘法,因为这会消耗大量的资源。另一种选择是反转或反转累加器中最有效的位。为了解释这个技术是如何被发现的,我们假设累加器的8个最重要的位从“00000000”开始到“11111111”,其中“00000000”是第一个地址,“00000001”是第二个地址,“11111111”是256address。th 第一个地址对应的是零度角,最后一个地址对应的是角(360256* 255)度。两个相邻地址之间的角度差为360256。这意味着180度角对应地址“10000000”。如果我们将这个地址与对应于0度角的地址(“00000000”)进行比较,我们会发现它们唯一的区别是最有效的位。因此,与原始信号相比,将累加器的最有效位反转会产生180度的反相信号。为了灵活性和测试,此操作由专用的or (XOR)执行逻辑门的功能。
在得到两个非相位正弦信号后,使用多路复用器生成输出BPSK信号,如图2所示。选择S0、S1和BPSK输出的宽度为16位。一个8位宽可以使用,但我们试图得到一个更高的精度输出驱动DAC。BPSK实现的框图如图2所示。
B. 正交
相移编码
QPSK,也被称为quadrature PSK, 4-PSK,或4 QAM,使用星座图上的四个不同点来表示其符号。每个符号可以用两位编码。图3是QPSK的星座图。从数学上讲,与使用相同带宽的BPSK相比,QPSK可以将数据速率提高一倍。这意味着与BPSK相比,QPSK在给定的带宽内可以传输两倍的数据速率。无花果。解释如何从数据流生成QPSK信号。QPSK符号的一般形式为:
根据式(4)中n的值,可以产生四种不同的信号。这些信号之间的相位相差90度。因此,QPSK调制器的实现需要产生四个正弦信号,这些信号与之前的信号相移为90度。要做到这一点,可以使用在时钟上升沿上工作的累加器和LUT生成上一节描述的第一个信号。第二个信号是使用相同的LUT产生的,但此时使用的是另一个工作在50%占空比时钟下降沿上的累加器。与第一个相比,这个累加器产生一个90度相移的信号。其他两个信号是通过反转第一和第二累加器中的最有效位并使用相同的LUT来产生的。
四种信号生成后,QPSK调制器可以作为下一步的实现。输入的二进制数据必须从串行数据转换为并行数据,如图5所示.这个过程很容易在VHDL中完成。实现的最后一步是使用一个多路复用器,它将根据消息信号的并行版本(如图所示)在生成的四个正弦信号中进行选择。S0、S1、S2、S3和QPSK输出信号被选择为16位宽。
图1: BPSK星座图
图2: BPSK在VHDL中的实现框图
图3:QPSK星座图
图4:QPSK框图
图5:VHDL中QPSK实现的方框图
IV IMPLEMENTTION结果
在详细描述了VHDL的实现之后,使用ModelSim和MATLAB作为工具来可视化输出信号。对于BPSK部分,调制器的输出波形是使用基于消息信号(m=010010011001000)的ModelSim获得的。实现结果也以文本文件的形式输出到MATLAB中,用于生成波形和BPSK输出信号。生成的正弦波如图所示。在MATLAB中绘图。很明显,所产生的波具有180度相移。生成的BPSK信号如图7所示。根据传入的消息,可以清楚地看出信号在什么地方反转了相位。
对于执行的QPSK部分,遵循上一节的详细程序。VHDL实现时使用Xilinx ISE作为软件,ModelSim和MATLAB作为可视化输出信号的工具。生成的QPSK信号使用ModelSim基于BPSK部分中相同的输入消息。生成的4个正弦波以文本文件的形式输出到MATLAB中,检查它们是否符合我们需要的规范。很明显,它们满足图中所示的90度相移的所有规范。8.输出的QPSK信号也以文本文件的形式输出到MATLAB中,如图所示。9.由于ModelSim结果不容易可
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[246048],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。