当前位置:首页 > 嵌入式 > 嵌入式硬件

摘要:频移键控(FSK)是用不同频率的载波来传递数字信号,并用数字基带信号控制载波信号的频率。提出一种基于流水线CORDIC算法的2FSK调制器的FPGA实现方案,可有效地节省FPGA的硬件资源,提高运算速度。最后,给出该方案的硬件测试结果,验证了设计的正确性。

0 引言

频移键控(FSK)是用不同频率的载波来传送数字信号,并用数字基带信号控制载波信号的频率。具有抗噪声性能好、传输距离远、误码率低等优点。在中低速数据传输中,特别是在衰落信道中传输数据时,有着广泛的应用。传统上以硬件实现载波的方法都是采用直接频率合成器(DDS)实现。但是DDS传统的实现方式是基于查找表思想,即通过查找预先存储的正余弦表来产生需要的正余弦值。当频率、精度要求越高,需要存储的值也就越多,考虑FPGA的RAM资源有限,传统的DDS实现方式就有了应用瓶颈。因此导致开发成本过高,甚至无法实现,不适合现代通信系统的发展。

本文提出了应用CORDIC(Coordinate Rotation Digital Computer)算法实时计算正弦值的方案,并基于CORDIC算法在FPGA芯片上设计了2FSK调制器。这不仅能够节省大量的FPGA逻辑资源,而且能很好地兼顾速度、精度、简单、高效等方面。

1 CORDIC算法原理及结构

1.1 CORDIC算法原理

CORDIC算法是由J.Volder于1959年提出的。该算法适用于解决一些三角学的问题,如平面坐标的旋转和直角坐标到极坐标的转换等。C-ORDIC算法的基本思想是通过一系列固定的、与运算基数有关的角度的不断偏摆以逼近所需的旋转角度。从广义上讲,CORDIC方法就是一种数值计算的逼近方法。该算法实现三角函数的基本原理如图1所示。

设初始向量(x0,y0)逆时针旋转角度θ后得到向量(xn,yn),如图1所示。则:

为了避免复杂的乘法运算,用一系列微旋转来处理,第i次旋转可表示为:

式中:θi表示第i次旋转的角度,并且满足tanθi=2-i;zi表示第i次旋转后与目标角度的差;δi表示向量的旋转方向,由zi的符号位来决定,即δi=sign zi。为每一级的校正因子,也就是每一级旋转时向量模长发生的变化,对于字长一定的运算,总的校正因子是一个常数。若总的旋转次数为n,则总校正因子用k表示为:

由式(7)可知:xn,yn分别为输入角θ的余弦和正弦值,故基于CORDIC算法可产生正弦载波信号,而且由式(5)可以看出所有运算简化成加减法和移位操作,因此很容易用硬件实现。

1.2 CORDIC流水线结构

CORDIC算法的实现方式有2种:简单状态机法和高速全流水线处理器法。如果计算时间的要求不严格,可以采用状态机结构。这一结构中最复杂的就是两个桶状移位器,而桶状移位器的面积大约和它所包含的传输门的数目成正比。尽管可以通过改进CORDIC算法来减小CORDIC处理器的总面积,但桶状移位器所占的面积并不能减小。另外,这种结构由于只在时间上复用资源,因此,数据吞吐率不高。

由于CORDIC算法的内部数据流规则,决定了在CORDIC处理器解决方案中非常适合采用流水线型微旋转结构。采用流水线可将一个算术操作分解成一些小规模的加减法和移位操作,并在多个比较高速的时钟内完成。另一方面,输出信号的精度只与CORDIC算法的旋转次数或流水单元数有关,即与级数有关。如需提高精度,只需简单地增加流水单元即可,其扩展性很好,而且这并不会大量增加FPGA的资源耗费。CORD-IC流水线结构的每一级迭代旋转的硬件实现基本单元如图2所示。

2 基于CORDIC算法正弦载波发生器的总体结构

正弦载波发生器系统结构如图3所示。

在该系统结构图中,CORDIC计算单元是核心。CORDIC计算单元的输入由相位加法器提供。相位加法器不间断地产生角度值,由CORDIC计算单元计算出相应的三角函数值,即可在其输出端产生连续的数字正弦载波。

通过频率控制字,改变相位累加器的步长,这样即可改变正弦载波的频率。具体的数学推导如下:

设相位累加器的字长为N,频率控制字即步长为step,则2N就相当于2π rad,N位中的最低有效位相当于2π/2N rad,即最小的相位增量,step对应的相位为step×(2π/2N)rad,完成一个周期的正弦载波输出需要2N/step个参考时钟周期。所以输出正弦载波的周期为:

可见改变相位累加器的步长step,可以改变正弦载波的频率;改变相位累加器的字长N,可控制正弦载波的频率分辨率。在相位累加器后加入相位加法器,通过改变相位控制字P,可以控制输出信号的相位;通过设置幅度控制字A,可控制最终输出的正弦载波的幅度大小。因此,通过对相位控制字、频率控制字或幅度控制字进行多路选择,可以形成不同进制的调制方式。可以看出,使用该结构可以很容易实现频率调制、相位调制和幅值调制。

3 2FSK调制器的FPGA设计

图4为2FSK调制器顶层工程原理图。该原理图主要由三个模块组成:2选1数据选择器MUX21、相位累加器adder、正弦载波生成模块eor-dic。其中,clk为系统时钟信号,rst为系统清零信号,step1,step2为2个不同的频率控制字,s为系统频率控制字选通端。2选1数据选择器的选通端s受基带信号控制,当基带信号为‘0’时,选通控制字step1;当基带信号为‘1’时,选通控制字step2。通过对step1,step2的选择,可以实现频率的切换。

在QuartusⅡ环境中,三个子模块均用VHDL语言进行设计,系统顶层工程采用原理图进行设计,对系统顶层工程进行器件选择、引脚锁定、编译、综合后下载到Cyclone系列EP1C12Q240C8器件中,通过在频率控制字的引脚选择不同参数即可在FPGA器件中完成2FSK调制器的设计。

4 系统硬件实时测试

调制器的输出信号为数字信号,经D/A转换后可以通过示波器进行测试,也可以直接采用QuartusⅡ软件中的嵌入式逻辑分析仪Signal-TapⅡ进行测试。

采用SignalTapⅡ进行芯片测试,用户无需外接专用仪器,就可以对FPGA器件内部所有信号和节点进行捕获分析,而又不影响原硬件系统的正常工作。经测试得到的实时波形如图5所示。测试结果表明,基于FPGA和CORDIC算法的2FSK调制器设计方案是正确可行的,且波形流畅,在转换处能快速进行切换。

5 结语

用FPGA和CORDIC算法实现信号调制,既克服了传统方法耗费资源、运行速度低等缺点,还具有静态可重复编程和动态在系统重构的特性,极大地提高了电子系统设计的灵活性和通用性,大大缩短了系统的开发周期。

作者:雷能芳 渭南师范学院 来源:现代电子技术

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM
关闭
关闭